| {{/* |
| Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. |
| You may obtain a copy of the License at |
| http://www.apache.org/licenses/LICENSE-2.0 |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. See accompanying LICENSE file. |
| */}} |
| |
| |
| {{ define "main" }} |
| <div class="blog-content"> |
| <h2>{{ T "blog-title" }}</h2> |
| {{ $data := index $.Site.Data.authors }} |
| {{ $pages := .Pages }} |
| {{ $.Scratch.Set "categories" (slice ) }} |
| {{ $.Scratch.Set "noCategories" 0 }} |
| |
| {{ range .Pages}} |
| {{ with .Params.categories }} |
| {{ if eq ( printf "%T" . ) "string" }} |
| {{ if ( not ( in ($.Scratch.Get "categories") . ) ) }} |
| {{ $.Scratch.Add "categories" . }} |
| {{ end }} |
| {{ else if eq ( printf "%T" . ) "[]string" }} |
| {{ range . }} |
| {{ if ( not ( in ($.Scratch.Get "categories") . ) ) }} |
| {{ $.Scratch.Add "categories" . }} |
| {{ end }} |
| {{ end }} |
| {{ end }} |
| {{ else }} |
| {{ $.Scratch.Add "noCategories" 1 }} |
| {{ end }} |
| {{ end }} |
| |
| <div class="category-buttons restricted"> |
| {{ range $.Scratch.Get "categories" }} |
| <button xx class="category-button" id='category-{{ . | replaceRE "[.]" "_" | urlize }}' onclick="applyFilter(this)"> |
| {{ . }} |
| </button> |
| {{ end }} |
| {{ if gt ( $.Scratch.Get "noCategories") 0 }} |
| <button xx class="category-button" id="category-no-author" onclick='htf.checkFilter("no-author", "category-")'> |
| without category |
| </button> |
| {{ end }} |
| </div> |
| |
| <div class="posts-list"> |
| {{ range $pages.ByPublishDate.Reverse }} |
| <a class="post-card tf-filter-item" href="{{ .RelPermalink }}" data-categories='{{ with .Params.categories }}{{ if eq ( printf "%T" . ) "string" }}{{ . | replaceRE "[.]" "_" | urlize }}{{ else if eq ( printf "%T" . ) "[]string" }}{{ range . }}{{ . | replaceRE "[.]" "_" | urlize }} {{end}}{{end}}{{else}}no-author{{end}}' |
| > |
| <div class="post-info post-category"> |
| <p> |
| {{ delimit .Params.categories ", " " & " }} |
| </p> |
| <p>{{ .Date.Format "2006/01/02" }}</p> |
| </div> |
| <p class="post-title">{{ .Title }}</p> |
| <p class="post-info"> |
| {{ $authors := .Params.authors }} |
| {{ with $authors }} |
| {{ range $i, $item := $authors }} |
| {{ if not (isset $.Site.Data.authors $item) }} {{ errorf "Author '%s' is not defined. Please add them to 'website/www/site/data/authors.yml'" $item }} {{end}} |
| {{ $author := index $data $item }} |
| {{ if eq $i (sub (len $authors) 1) }} |
| {{ $author.name }} |
| {{ else if eq $i (sub (len $authors) 2) }} |
| {{ $author.name }} & |
| {{ else }} |
| {{ $author.name }}, |
| {{ end }} |
| {{ end }} |
| {{ end }} |
| </p> |
| <div class="post-summary">{{ .Summary | plainify | chomp }}</div> |
| </a> |
| {{ end }} |
| </div> |
| <div class="category-buttons"> |
| <button id="load-button" class="load-button">{{ T "blog-loadmore" }}</button> |
| </div> |
| |
| </div> |
| {{ $categoriesFilter := resources.Get "js/categories-filter.js" | minify| fingerprint }} |
| <script src="{{ $categoriesFilter.RelPermalink }}"></script> |
| <script> |
| var htfConfig = { |
| filters: [ |
| { |
| name: 'categories', |
| prefix: 'category-', |
| buttonClass: 'category-button', |
| allSelector: '#selectAllAuthors', |
| attrName: 'data-categories', |
| } |
| ], |
| showItemClass: "show-item", |
| filterItemClass: "tf-filter-item", |
| activeButtonClass: "active", |
| populateCount: true, |
| setDisabledButtonClass: "disable-button" |
| } |
| var htf = new CategoriesFilter(htfConfig); |
| $("#load-button").click(function(){ |
| $(this).toggleClass('tf-filter-item'); |
| htf.showMore(); |
| htf.showCheck(htfConfig.filters[0].name, false); |
| }); |
| |
| function applyFilter (element) { |
| var category = element.id.split('category-'); |
| htf.resetCount(); |
| htf.checkFilter(category[1],'category-'); |
| } |
| |
| </script> |
| |
| {{ end }} |