Merge pull request 'merge filter & frontpage redesign' (#1) from filter into main

Reviewed-on: #1
main
rra 4 months ago
commit 5a1766deec
  1. 5
      config.toml
  2. 81
      themes/lumbung-theme/layouts/_default/baseof.html
  3. 74
      themes/lumbung-theme/layouts/_default/list.html
  4. 39
      themes/lumbung-theme/layouts/events/list.html
  5. 41
      themes/lumbung-theme/layouts/index.html
  6. 74
      themes/lumbung-theme/layouts/partials/book_card.html
  7. 2
      themes/lumbung-theme/layouts/partials/calendar_card.html
  8. 2
      themes/lumbung-theme/layouts/partials/card.html
  9. 1
      themes/lumbung-theme/layouts/partials/data/authors.html
  10. 1
      themes/lumbung-theme/layouts/partials/data/categories.html
  11. 1
      themes/lumbung-theme/layouts/partials/data/contributors.html
  12. 1
      themes/lumbung-theme/layouts/partials/data/sources.html
  13. 1
      themes/lumbung-theme/layouts/partials/data/tags.html
  14. 19
      themes/lumbung-theme/layouts/partials/event_list_item.html
  15. 202
      themes/lumbung-theme/layouts/partials/filter-nav.html
  16. 2
      themes/lumbung-theme/layouts/partials/footer.html
  17. 1
      themes/lumbung-theme/layouts/partials/head.html
  18. 18
      themes/lumbung-theme/layouts/partials/header.html
  19. 4
      themes/lumbung-theme/layouts/partials/pen_card.html
  20. 92
      themes/lumbung-theme/layouts/partials/shout_card.html
  21. 94
      themes/lumbung-theme/layouts/partials/social_card.html
  22. 2
      themes/lumbung-theme/layouts/partials/video_box.html
  23. 648
      themes/lumbung-theme/static/css/main.css
  24. 21
      themes/lumbung-theme/static/img/logo-big.svg

@ -14,10 +14,10 @@ paginate = 20
title = 'lumbung dot space'
bundleCss = "/bundle.css"
bundleJs = "/bundle.js"
mainSections = ['social', 'shouts', 'calendar', 'tv', 'pen']
mainSections = ['social', 'shouts', 'events', 'tv', 'pen', 'pages']
[markup.goldmark.renderer]
unsafe = true
unsafe = true
[taxonomies]
author = "authors"
@ -25,6 +25,7 @@ unsafe = true
tag = "tags"
source = "sources"
timeline = "timelines"
[permalinks]
timelines = "/timeline/:slug/"

@ -11,6 +11,8 @@
{{- partial "news-ticker.html" . -}}
{{- partial "footer.html" . -}}
</body>
<script src="{{ "js/hugotagsfilter-1.2.2.min.js" | relURL}}"></script>
<script>
function toggleDescription(id) {
document.querySelector(id).classList.toggle("collapsed");
@ -33,19 +35,84 @@
if (document.querySelector('[aria-label="Previous"]')) {
document.querySelector('[aria-label="Previous"]').parentElement.classList.add('previous-page-link')
}
// for toggling submenus in mobile navigation drawer
let submenuLinks = document.querySelectorAll('.drawer .has-submenu');
[...submenuLinks].forEach(submenuLink => {
submenuLink.addEventListener('click', function() {
submenuLink.querySelector('.submenu').classList.toggle('opened')
})
})
// footer random color
var color = ['orange','green','blue'];
var footer = document.getElementById("footer");
var rand = Math.floor(Math.random() * color.length);
footer.classList.add(color[rand]);
// mobile menu
document.getElementById("menu-button").onclick=function(){
this.classList.toggle("active");
document.getElementById("menu").classList.toggle("active");
}
// mobile menu - submenu
submenuLinks = document.querySelectorAll(".has-submenu");
[...submenuLinks].forEach((t=>{
t.addEventListener("click",(function(){t.querySelector(".submenu").classList.toggle("active")}))
}));
// mobile mainfilter
document.getElementById("filter-link").onclick=function(){document.getElementById("filter").classList.toggle("active")};
// mobile filter
filterButtons=document.querySelectorAll(".filter-buttons");
[...filterButtons].forEach((t=>{
t.addEventListener("click",(function(){t.querySelector(".filter-buttons-dropdown").classList.toggle("active");
t.querySelector(".filter-by").classList.toggle("active")}))
}));
// load more cards
document.getElementById("load-more").onclick=function(){
document.getElementById('load-more-paginator').click();
}
// filter config
var htfConfig = {
filters: [
{
name: 'tags',
prefix: 'tag-',
buttonClass: 'tag-button',
allSelector: '#selectAllTags',
attrName: 'data-tags',
selectedPrefix: 'stags-',
},
{
name: 'section',
prefix: 'sect-',
buttonClass: 'sect-button',
allSelector: '#selectAllSections',
attrName: 'data-section',
selectedPrefix: 'ssect-',
},
{
name: 'contributors',
prefix: 'cont-',
buttonClass: 'cont-button',
allSelector: '#selectAllContributors',
attrName: 'data-contributors',
selectedPrefix: 'scont-',
},
{
name: 'sources',
prefix: 'src-',
buttonClass: 'src-button',
allSelector: '#selectAllSources',
attrName: 'data-sources',
selectedPrefix: 'ssrc-',
}
],
showItemClass: "show-item",
filterItemClass: "filter-item",
activeButtonClass: "active",
counterSelector: "selectedItemCount",
populateCount: true,
setDisabledButtonClass: "disable-button"
}
var htf = new HugoTagsFilter(htfConfig);
</script>
</html>

@ -1,40 +1,48 @@
{{ define "main" }}
<main>
<section class='entries'>
<div class="h-feed">
{{ range where (.Paginator 13).Pages "Params.hidden" "ne" "true" }}
{{if eq .Section "tv"}}
{{- partial "video_box.html" . -}}
{{ else if eq .Section "events" }}
{{- partial "partials/calendar_card.html" . -}}
{{ else if eq .Section "shouts" }}
{{ if in .Params.sources "pen.lumbung.space" }}
{{- partial "pen_card.html" . -}}
{{ else }}
{{- partial "shout_card.html" . -}}
{{ end }}
{{ else if eq .Section "social" }}
{{- partial "social_card.html" . -}}
<div class="h-feed">
{{ $range := where .Pages "Params.hidden" "ne" "true" }}
{{ $paginator := .Paginate $range }}
{{ $pageSize := $paginator.PageSize }}
{{ $totalPostsToShow := mul $paginator.PageNumber $pageSize }}
{{ range $index, $el := (first $totalPostsToShow $range) }}
{{ else if eq .Section "publications"}}
{{- partial "book_card.html" . -}}
{{ else if eq .Section "sounds"}}
{{- partial "sounds_card.html" . -}}
{{ else }}
{{- partial "card.html" . -}}
{{ end }}
<div class='post {{if eq .Section "tv"}}tv{{ end }}' {{ if eq $index (sub $totalPostsToShow $pageSize) }}id="newpage"{{ end }}>
{{if eq .Section "tv"}}
{{- partial "video_box.html" . -}}
{{ else if eq .Section "events" }}
{{- partial "partials/calendar_card.html" . -}}
{{ else if eq .Section "shouts" }}
{{ if in .Params.sources "pen.lumbung.space" }}
{{- partial "partials/pen_card.html" . -}}
{{ else }}
{{- partial "partials/shout_card.html" . -}}
{{ end }}
{{ else if eq .Section "social" }}
{{- partial "partials/social_card.html" . -}}
{{ else if eq .Section "publications"}}
{{- partial "partials/book_card.html" . -}}
{{ else if eq .Section "sounds"}}
{{- partial "sounds_card.html" . -}}
{{ else }}
{{- partial "card.html" . -}}
{{ end }}
</div>
{{ end }}
</div>
<nav class="pagination">
{{ template "_internal/pagination.html" . }}
</nav>
<div class="page-nav">
{{ if and (gt $paginator.TotalPages 1) ($paginator.HasNext) }}
<a id="load-more-paginator" class="nextpage" href="{{ $paginator.Next.URL }}#newpage">load more</a>
{{ end }}
</div>
</section>
</main>
{{ end }}
{{ end }}

@ -0,0 +1,39 @@
{{ define "main" }}
<main>
<section class='entries'>
{{ $now := (now.Format "060102" ) }}
{{ $upcoming := slice }}
{{ $past := slice}}
{{ range .Pages }}
{{ $t := (substr .Params.event_end 2 8) }}
{{ $time := ( replace $t "-" "") }}
{{ if ge $time $now }}
{{ $upcoming = $upcoming | append . }}
{{ else if gt $now $time }}
{{ $past = $past | append . }}
{{ end }}
{{ end }}
{{ with $upcoming }}
<div class="upcoming event-list">
<div class='tape-label'><span>upcoming events</span></div>
{{ range $upcoming}}
{{- partial "event_list_item.html" . -}}
{{end}}
</div>
{{end}}
{{ with $past }}
<div class="past event-list">
<div class='tape-label'><span>past events</span></div>
{{ range $past }}
{{- partial "event_list_item.html" . -}}
{{ end }}
</div>
{{ end }}
</section>
</main>
{{ end }}

@ -1,13 +1,16 @@
{{ define "main" }}
<main>
<section class='entries'>
<div class="h-feed">
{{ range (.Paginate (.Site.RegularPages.GroupByDate "January 2006") 20 ).PageGroups }}
<span class="date-marker">{{ .Key }}</span>
{{ range .Pages }}
{{if eq .Section "tv"}}
<div class="h-feed">
{{ $range := .Site.RegularPages }}
{{ $paginator := .Paginate $range }}
{{ $pageSize := $paginator.PageSize }}
{{ $totalPostsToShow := mul $paginator.PageNumber $pageSize }}
{{ range $index, $el := (first $totalPostsToShow .Site.RegularPages) }}
<div class='post {{if eq .Section "tv"}}tv{{ end }}' {{ if eq $index (sub $totalPostsToShow $pageSize) }}id="newpage"{{ end }}>
{{if eq .Section "tv"}}
{{- partial "video_box.html" . -}}
{{ else if eq .Section "events" }}
@ -15,16 +18,16 @@
{{ else if eq .Section "shouts" }}
{{ if in .Params.sources "pen.lumbung.space" }}
{{- partial "pen_card.html" . -}}
{{- partial "partials/pen_card.html" . -}}
{{ else }}
{{- partial "shout_card.html" . -}}
{{- partial "partials/shout_card.html" . -}}
{{ end }}
{{ else if eq .Section "social" }}
{{- partial "social_card.html" . -}}
{{- partial "partials/social_card.html" . -}}
{{ else if eq .Section "publications"}}
{{- partial "book_card.html" . -}}
{{- partial "partials/book_card.html" . -}}
{{ else if eq .Section "sounds"}}
{{- partial "sounds_card.html" . -}}
@ -32,13 +35,16 @@
{{ else }}
{{- partial "card.html" . -}}
{{ end }}
{{ end }}
</div>
{{ end }}
</div>
<div class="page-nav">
{{ if and (gt $paginator.TotalPages 1) ($paginator.HasNext) }}
<a id="load-more-paginator" class="nextpage" href="{{ $paginator.Next.URL }}#newpage">load more</a>
{{ end }}
</div>
<nav class="pagination-container">
{{ template "_internal/pagination.html" . }}
</nav>
<div class="lumbung-radio-player" onclick="window.open('https://lumbungradio.stationofcommons.org', 'Lumbung Radio', 'height=800,width=450')">
<svg class="lumbung-radio-play-button" width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M7 4V20L20 12L7 4Z" fill="#CA14D4" stroke="#CA14D4" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
@ -46,5 +52,8 @@
<span>lumbung radio</span>
<img src="/img/lumbung-radio-logo.png" alt="" height="30">
</div>
</section>
</main>
{{ end }}

@ -1,39 +1,39 @@
<div class='book card'>
<article class="h-entry book">
<div class="tape-label book"><span><time class="dt-published" datetime="{{ .Date.Format `Jan 02 2006` }}">{{ .Date.Format "Jan 02, 2006" }}</time></span><div></div></div>
{{ $postPermalink := .Permalink}}
</header>
<div class='book card filter-item'>
<article class="h-entry book">
<div class="tape-label book"><span><time class="dt-published" datetime="{{ .Date.Format `Jan 02 2006` }}">{{ .Date.Format "Jan 02, 2006" }}</time></span><div></div></div>
{{ $postPermalink := .Permalink}}
</header>
{{ with (index (.Resources.ByType "image") 0) }}
{{ $height := add .Height 0.0}}
{{ $ratio := div $height .Width}}
{{ $thumb := .Fit "540x540 q80 webp"}}
<div class="p-summary{{if gt $ratio 1 }} portrait {{else}} landscape {{end}}">
<div class="summary-image {{if gt $ratio 1 }} portrait {{else}} landscape {{end}}">
<a href="{{ $postPermalink }}"><img src="{{ $thumb.Permalink }}" alt="{{ .Title }}"> </a>
</div>
{{ else }}
<div class="p-summary">
{{ end }}
<header>
<h2 class="p-name"><a href="{{ .Permalink }}" class="u-url">
{{.Title}}</a></h2>
</header>
<div class="summary-text">
{{ .Summary }}
</div>
</div>
<div class="shout-source"></div>
<footer class='post-footer'>
<div class='footer-metadata'>
<span class="from p-author">{{ if .Params.authors }}By {{range .Params.authors}}<b> <a href='{{ "/authors/" | relLangURL }}{{ . | urlize }}/'> {{ . }}</a> {{end}}</b> on{{ end }}</span>
{{ if .Truncated }}
<div class="footer-filler"></div>
<div class='read-more'><a href="{{ .RelPermalink }}">Read More…</a></div>
{{ end }}
</footer>
</article>
{{ with (index (.Resources.ByType "image") 0) }}
{{ $height := add .Height 0.0}}
{{ $ratio := div $height .Width}}
{{ $thumb := .Fit "540x540 q80 webp"}}
<div class="p-summary{{if gt $ratio 1 }} portrait {{else}} landscape {{end}}">
<div class="summary-image {{if gt $ratio 1 }} portrait {{else}} landscape {{end}}">
<a href="{{ $postPermalink }}"><img src="{{ $thumb.Permalink }}" alt="{{ .Title }}"> </a>
</div>
{{ else }}
<div class="p-summary">
{{ end }}
<header>
<h2 class="p-name"><a href="{{ .Permalink }}" class="u-url">
{{.Title}}</a></h2>
</header>
<div class="summary-text">
{{ .Summary }}
</div>
</div>
<div class="shout-source"></div>
<footer class='post-footer'>
<div class='footer-metadata'>
<span class="from p-author">{{ if .Params.authors }}By {{range .Params.authors}}<b> <a href='{{ "/authors/" | relLangURL }}{{ . | urlize }}/'> {{ . }}</a> {{end}}</b> on{{ end }}</span>
{{ if .Truncated }}
<div class="footer-filler"></div>
<div class='read-more'><a href="{{ .RelPermalink }}">Read More…</a></div>
{{ end }}
</footer>
</article>
</div>

@ -1,5 +1,5 @@
{{ $t := (time .Params.event_end) }}
<div class='card calendar {{ if $t.Before now }}past{{end}}'>
<div class='card calendar {{ if $t.Before now }}past{{end}} filter-item' data-section="{{ .Section }}" data-sources='{{- partial "data/sources.html" . -}}' data-contributors='{{- partial "data/contributors.html" . -}}' data-tags='{{- partial "data/tags.html" . -}}'>
<div class='date tape-label'><span> {{ substr .Params.date 0 11}}</span></div>
<article class="h-event calendar ">
<header>

@ -1,4 +1,4 @@
<div class='card'>
<div class='card filter-item' data-section="{{ .Section }}" data-sources='{{- partial "data/sources.html" . -}}' data-contributors='{{- partial "data/contributors.html" . -}}' data-tags='{{- partial "data/tags.html" . -}}'>
<article class="h-entry">
<header>
<h2 class="p-name"><a href="{{ .Permalink }}" class="u-url">{{ .Title }}</a></h2>

@ -0,0 +1 @@
{{ with .Params.authors }}{{ if eq ( printf "%T" . ) "string" }}{{ . | replaceRE "[.]" "_" | urlize }}{{ else if eq ( printf "%T" . ) "[]string" }}{{ range . }}{{ . | replaceRE "[.]" "_" | urlize }} {{end}}{{end}}{{else}}no-author{{end}}

@ -0,0 +1 @@
{{ with .Params.categories }}{{ if eq ( printf "%T" . ) "string" }}{{ . | replaceRE "[.]" "_" | urlize }}{{ else if eq ( printf "%T" . ) "[]string" }}{{ range . }}{{ . | replaceRE "[.]" "_" | urlize }} {{end}}{{end}}{{else}}no-cat{{end}}

@ -0,0 +1 @@
{{ with .Params.contributors }}{{ if eq ( printf "%T" . ) "string" }}{{ . | replaceRE "[.]" "_" | urlize }}{{ else if eq ( printf "%T" . ) "[]string" }}{{ range . }}{{ . | replaceRE "[.]" "_" | urlize }} {{end}}{{end}}{{else}}no-contributor{{end}}

@ -0,0 +1 @@
{{ with .Params.sources }}{{ if eq ( printf "%T" . ) "string" }}{{ . | replaceRE "[.]" "_" | urlize }}{{ else if eq ( printf "%T" . ) "[]string" }}{{ range . }}{{ . | replaceRE "[.]" "_" | urlize }} {{end}}{{end}}{{else}}no-sources{{end}}

@ -0,0 +1 @@
{{ with .Params.tags }}{{ range . }}{{ . | replaceRE "[.]" "_" | urlize }} {{ end }}{{ else }} tfuntagged{{ end }}

@ -0,0 +1,19 @@
{{ $t := (time .Params.event_end) }}
<div class='event-list-item'>
<div class='date-start'><span> {{ substr .Params.event_begin 0 11}}</span></div>
<div class='title'><h2 class="p-name"><a href="{{ .Permalink }}" class="u-url">{{ .Title }}</a></h2></div>
<div class='time'>
<div class='start-scroller'>
<marquee behavior="scroll" direction="left">
{{ .Params.localized_begin | markdownify }}
</marquee>
</div>
</div>
<div class='duration'>Duration: <b>{{ .Params.duration }}</b></div>
<div class='location'>{{ .Params.location | markdownify }}</div>
<input class='descr_button' type='checkbox' id='toggle-{{ .Params.uid }}'/>
<label class='calendar' for='toggle-{{ .Params.uid }}'></label>
<div class='calendar description p-description' id='event-{{ .Params.uid }}'>
{{.Content}}
</div>
</div>

@ -1,121 +1,91 @@
<div class="filter-link"><svg class="filter-icon" enable-background="new 0 0 510.2 512" version="1.1" viewBox="0 0 510.2 512" xmlns="http://www.w3.org/2000/svg"><path d="m499.1 0c2.8 2.2 6.2 4 8.3 6.8 4.4 5.8 3.5 12.6-1.9 19.2-15.7 19.4-31.5 38.8-47.3 58.2-41.2 50.8-82.5 101.6-123.8 152.4-2 2.4-3.9 3.4-7.1 3.4-48.2-0.1-96.3-0.1-144.5 0-3.2 0-5.1-1-7.1-3.4-56.4-69.6-112.9-139.1-169.4-208.7-9.7-11.9-8.3-20.3 4.8-27.9h488z"/><path d="m206.1 512c-8.7-4-11.2-10.8-11.1-20.2 0.3-71.8 0.1-143.6 0.1-215.4v-6.2h120v5.5c0 57.6-0.1 115.3 0.1 172.9 0 8.7-3.3 14.4-11.1 18.2-29.9 14.6-59.6 29.6-89.4 44.4-0.3 0.1-0.4 0.5-0.6 0.7-2.7 0.1-5.3 0.1-8 0.1z"/></svg><span>Filter</span></div>
{{ $pages := where .Site.RegularPages "Type" "in" .Site.Params.mainSections }}
{{ $sections := .Site.Params.mainSections }}
{{ $.Scratch.Set "authors" (slice ) }}
{{ $.Scratch.Set "noAuthors" 0 }}
{{ range where .Site.RegularPages "Type" "in" .Site.Params.mainSections }}
{{ with .Params.authors }}
{{ if eq ( printf "%T" . ) "[]string" }}
{{ if ( not ( in ($.Scratch.Get "authors") . ) ) }}
{{ $.Scratch.Add "authors" . }}
{{ end }}
{{ else if ( printf "%T" . ) "[]string" }}
{{ range . }}
{{ if ( not ( in ($.Scratch.Get "authors") . ) ) }}
{{ $.Scratch.Add "authors" . }}
{{ end }}
{{ end }}
{{ end }}
{{ else }}
{{ $.Scratch.Add "noAuthors" 1 }}
{{ end }}
{{ end }}
{{ $.Scratch.Set "cats" (slice ) }}
{{ $.Scratch.Set "nocat" 0 }}
{{ range where .Site.RegularPages "Type" "in" .Site.Params.mainSections }}
{{ with .Params.categories }}
{{ if eq ( printf "%T" . ) "[]string" }}
{{ if ( not ( in ($.Scratch.Get "cats") . ) ) }}
{{ $.Scratch.Add "cats" . }}
{{ end }}
{{ end }}
{{ else }}
{{ $.Scratch.Add "nocat" 1 }}
{{ end }}
{{ end }}
{{ $tags := $.Site.Taxonomies.tags.ByCount }}
{{ $.Scratch.Set "untagged" 0 }}
{{ range $pages }}
{{ with .Params.tags }}{{ else }}{{ $.Scratch.Add "untagged" 1 }}{{ end }}
{{ end }}
<div class="filter-buttons-container">
<div class="filter-buttons-container-header">
<div><span id="selectedItemCount"></span> Items</div>
<a href="" class="load-all">Load all Items</a>
</div>
<div class="filter-buttons">
<button xx id="selectAllSections" onclick="htf.showAll('section')">
All Sections
</button>
{{ range $sections }}
<button xx class="sect-button filter-button" id="sect-{{ . | urlize }}" onclick="htf.checkFilter('{{ . | urlize }}', 'sect-')">
{{ . | title }} <span id="ssect-{{ . | urlize }}"> -count-</span> | <span id="csect-{{ . | urlize }}"> -count-</span>
</button>
<div class="filter" id="filter">
<div class="filter-link" id="filter-link"><svg class="filter-icon" enable-background="new 0 0 510.2 512" version="1.1" viewBox="0 0 510.2 512" xmlns="http://www.w3.org/2000/svg"><path d="m499.1 0c2.8 2.2 6.2 4 8.3 6.8 4.4 5.8 3.5 12.6-1.9 19.2-15.7 19.4-31.5 38.8-47.3 58.2-41.2 50.8-82.5 101.6-123.8 152.4-2 2.4-3.9 3.4-7.1 3.4-48.2-0.1-96.3-0.1-144.5 0-3.2 0-5.1-1-7.1-3.4-56.4-69.6-112.9-139.1-169.4-208.7-9.7-11.9-8.3-20.3 4.8-27.9h488z"/><path d="m206.1 512c-8.7-4-11.2-10.8-11.1-20.2 0.3-71.8 0.1-143.6 0.1-215.4v-6.2h120v5.5c0 57.6-0.1 115.3 0.1 172.9 0 8.7-3.3 14.4-11.1 18.2-29.9 14.6-59.6 29.6-89.4 44.4-0.3 0.1-0.4 0.5-0.6 0.7-2.7 0.1-5.3 0.1-8 0.1z"/></svg><span>filter</span></div>
{{ $pages := where .Site.RegularPages "Type" "in" .Site.Params.mainSections }}
{{ $sections := .Site.Params.mainSections }}
{{ $tags := $.Site.Taxonomies.tags.ByCount }}
{{ $.Scratch.Set "untagged" 0 }}
{{ range $pages }}
{{ with .Params.tags }}{{ else }}{{ $.Scratch.Add "untagged" 1 }}{{ end }}
{{ end }}
</div>
<div class="filter-buttons">
<button xx id="selectAllAuthors" onclick="htf.showAll('authors')">
All Authors
</button>
{{ range .Site.Taxonomies.authors }}
<button xx class="auth-button filter-button" id="auth-{{ .Page.Title | replaceRE "[.]" "_" | urlize }}" onclick="htf.checkFilter('{{ .Page.Title | replaceRE "[.]" "_" | urlize }}', 'auth-')">
{{ .Page.Title }} <span id="sauth-{{ .Page.Title | replaceRE "[.]" "_" | urlize }}"> -count-</span> | <span id="cauth-{{ .Page.Title | replaceRE "[.]" "_" | urlize }}"> -count-</span>
</button>
{{ end }}
{{ if gt ( $.Scratch.Get "noAuthors") 0 }}
<button xx class="auth-button" id="auth-no-author" onclick="htf.checkFilter('no-author', 'auth-')">
No Author <span id="sauth-no-author"> -count-</span> | <span id="cauth-no-author"> -count-</span>
</button>
{{ end }}
</div>
<div class="filter-buttons">
<button xx id="selectAllCats" onclick="htf.showAll('cats')">
All Categories
</button>
{{ range .Site.Taxonomies.categories }}
<button xx class="cat-button filter-button" id="cat-{{ .Page.Title | replaceRE "[.]" "_" | urlize }}" onclick="htf.checkFilter('{{ .Page.Title | replaceRE "[.]" "_" | urlize }}', 'cat-')">
{{ .Page.Title }} <span id="scat-{{ .Page.Title | replaceRE "[.]" "_" | urlize }}"> -count-</span> | <span id="ccat-{{ .Page.Title | replaceRE "[.]" "_" | urlize }}"> -count-</span>
</button>
{{ end }}
{{ if gt ( $.Scratch.Get "nocat") 0 }}
<button xx class="cat-button" id="cat-no-cat" onclick="htf.checkFilter('no-cat', 'cat-')">
No Categories <span id="scat-no-cat"> -count-</span> | <span id="ccat-no-cat"> -count-</span>
</button>
{{ end }}
<div class="filter-container">
<div class="filter-information">
<div><span id="selectedItemCount"></span> Cards</div>
<div id="load-more">load more cards</div>
</div>
<div class="filter-buttons-container">
<div class="filter-buttons">
<button class="filter-by">
by sections
</button>
<div class="filter-buttons-dropdown">
{{ range $sections }}
<button xx class="sect-button filter-button" id="sect-{{ . | urlize }}" onclick="htf.checkFilter('{{ . | urlize }}', 'sect-')"><svg enable-background="new 0 0 14.9 14.9" version="1.1" viewBox="-2 -2 18.9 18.9" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><path d="m11.8 1.9c-0.8-1.2-2.1-1.8-3.8-1.6-0.8-0.3-1.6-0.4-2.4-0.1-2.3 0.8-3.9 2.4-5 4.5-1.4 2.6-0.5 6.8 2.4 8.1h0.1c0.2 0.2 0.5 0.3 0.8 0.4 0.4 0.6 0.9 1.1 1.6 1.3 1.9 0.7 4.1 0.1 5.5-1.2 0.9-0.6 1.6-1.4 2-2.4 1-0.9 1.6-2.2 1.8-3.5 0.3-2.2-0.7-4.7-3-5.5z"/></svg> <span class="filter-title">{{ . | title }}</span> <span id="ssect-{{ . | urlize }}"></span>
</button>
{{ end }}
<button xx id="selectAllSections" class="filter-all" onclick="htf.showAll('section')">
All Sections
</button>
</div>
</div>
<div class="filter-buttons">
<button class="filter-by">
by contributors
</button>
<div class="filter-buttons-dropdown">
{{ range .Site.Taxonomies.contributors }}
<button xx class="cont-button filter-button" id="cont-{{ .Page.Title | replaceRE "[.]" "_" | urlize }}" onclick="htf.checkFilter('{{ .Page.Title | replaceRE "[.]" "_" | urlize }}', 'cont-')"><svg enable-background="new 0 0 14.9 14.9" version="1.1" viewBox="-2 -2 18.9 18.9" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><path d="m11.8 1.9c-0.8-1.2-2.1-1.8-3.8-1.6-0.8-0.3-1.6-0.4-2.4-0.1-2.3 0.8-3.9 2.4-5 4.5-1.4 2.6-0.5 6.8 2.4 8.1h0.1c0.2 0.2 0.5 0.3 0.8 0.4 0.4 0.6 0.9 1.1 1.6 1.3 1.9 0.7 4.1 0.1 5.5-1.2 0.9-0.6 1.6-1.4 2-2.4 1-0.9 1.6-2.2 1.8-3.5 0.3-2.2-0.7-4.7-3-5.5z"/></svg> <span class="filter-title">{{ .Page.Title }}</span> <span id="scont-{{ .Page.Title | replaceRE "[.]" "_" | urlize }}"></span>
</button>
{{ end }}
<button xx class="cont-button filter-button" id="cont-no-contributor" onclick="htf.checkFilter('no-contributor', 'cont-')"><svg enable-background="new 0 0 14.9 14.9" version="1.1" viewBox="-2 -2 18.9 18.9" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><path d="m11.8 1.9c-0.8-1.2-2.1-1.8-3.8-1.6-0.8-0.3-1.6-0.4-2.4-0.1-2.3 0.8-3.9 2.4-5 4.5-1.4 2.6-0.5 6.8 2.4 8.1h0.1c0.2 0.2 0.5 0.3 0.8 0.4 0.4 0.6 0.9 1.1 1.6 1.3 1.9 0.7 4.1 0.1 5.5-1.2 0.9-0.6 1.6-1.4 2-2.4 1-0.9 1.6-2.2 1.8-3.5 0.3-2.2-0.7-4.7-3-5.5z"/></svg> <span class="filter-title">No contributors</span><span id="scont-no-contributor"></span>
</button>
<button xx id="selectAllContributors" class="filter-all" onclick="htf.showAll('contributors')">
All contributors
</button>
</div>
</div>
<div class="filter-buttons">
<button class="filter-by">
by sources
</button>
<div class="filter-buttons-dropdown">
{{ range .Site.Taxonomies.sources }}
<button xx class="src-button filter-button" id="src-{{ .Page.Title | replaceRE "[.]" "_" | urlize }}" onclick="htf.checkFilter('{{ .Page.Title | replaceRE "[.]" "_" | urlize }}', 'src-')"><svg enable-background="new 0 0 14.9 14.9" version="1.1" viewBox="-2 -2 18.9 18.9" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><path d="m11.8 1.9c-0.8-1.2-2.1-1.8-3.8-1.6-0.8-0.3-1.6-0.4-2.4-0.1-2.3 0.8-3.9 2.4-5 4.5-1.4 2.6-0.5 6.8 2.4 8.1h0.1c0.2 0.2 0.5 0.3 0.8 0.4 0.4 0.6 0.9 1.1 1.6 1.3 1.9 0.7 4.1 0.1 5.5-1.2 0.9-0.6 1.6-1.4 2-2.4 1-0.9 1.6-2.2 1.8-3.5 0.3-2.2-0.7-4.7-3-5.5z"/></svg> <span class="filter-title">{{ .Page.Title }}</span> <span id="ssrc-{{ .Page.Title | replaceRE "[.]" "_" | urlize }}"></span>
</button>
{{ end }}
<button xx class="src-button filter-button" id="src-no-sources" onclick="htf.checkFilter('no-sources', 'src-')"><svg enable-background="new 0 0 14.9 14.9" version="1.1" viewBox="-2 -2 18.9 18.9" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><path d="m11.8 1.9c-0.8-1.2-2.1-1.8-3.8-1.6-0.8-0.3-1.6-0.4-2.4-0.1-2.3 0.8-3.9 2.4-5 4.5-1.4 2.6-0.5 6.8 2.4 8.1h0.1c0.2 0.2 0.5 0.3 0.8 0.4 0.4 0.6 0.9 1.1 1.6 1.3 1.9 0.7 4.1 0.1 5.5-1.2 0.9-0.6 1.6-1.4 2-2.4 1-0.9 1.6-2.2 1.8-3.5 0.3-2.2-0.7-4.7-3-5.5z"/></svg> <span class="filter-title">No sources</span> <span id="ssrc-no-sources"></span>
</button>
<button xx id="selectAllSources" class="filter-all" onclick="htf.showAll('sources')">
All sources
</button>
</div>
</div>
<div class="filter-buttons">
<button class="filter-by">
by tags
</button>
<div class="filter-buttons-dropdown">
{{ range $tags }}
{{ if .Term }}
<button xx class="tag-button filter-button" id="tag-{{ .Term | replaceRE "[.]" "_" | urlize }}" onclick="htf.checkFilter('{{ .Term | replaceRE "[.]" "_" | urlize }}', 'tag-')"><svg enable-background="new 0 0 14.9 14.9" version="1.1" viewBox="-2 -2 18.9 18.9" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><path d="m11.8 1.9c-0.8-1.2-2.1-1.8-3.8-1.6-0.8-0.3-1.6-0.4-2.4-0.1-2.3 0.8-3.9 2.4-5 4.5-1.4 2.6-0.5 6.8 2.4 8.1h0.1c0.2 0.2 0.5 0.3 0.8 0.4 0.4 0.6 0.9 1.1 1.6 1.3 1.9 0.7 4.1 0.1 5.5-1.2 0.9-0.6 1.6-1.4 2-2.4 1-0.9 1.6-2.2 1.8-3.5 0.3-2.2-0.7-4.7-3-5.5z"/></svg> <span class="filter-title">{{.Term | humanize | title }}</span>
<span id="stags-{{ .Term | urlize }}"></span>
</button>
{{ end }}
{{ end }}
<button xx class="tag-button filter-button" id="tag-tfuntagged" onclick="htf.checkFilter('tfuntagged', 'tag-')"><svg enable-background="new 0 0 14.9 14.9" version="1.1" viewBox="-2 -2 18.9 18.9" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><path d="m11.8 1.9c-0.8-1.2-2.1-1.8-3.8-1.6-0.8-0.3-1.6-0.4-2.4-0.1-2.3 0.8-3.9 2.4-5 4.5-1.4 2.6-0.5 6.8 2.4 8.1h0.1c0.2 0.2 0.5 0.3 0.8 0.4 0.4 0.6 0.9 1.1 1.6 1.3 1.9 0.7 4.1 0.1 5.5-1.2 0.9-0.6 1.6-1.4 2-2.4 1-0.9 1.6-2.2 1.8-3.5 0.3-2.2-0.7-4.7-3-5.5z"/></svg> <span class="filter-title">Untagged</span> <span id="stags-tfuntagged"></span>
</button>
<button xx id="selectAllTags" class="filter-all" onclick="htf.showAll('tags')">
All Tags
</button>
</div>
</div>
</div>
</div>
<div class="filter-buttons">
<button xx class="" id="selectAllTags" onclick="htf.showAll('tags')">
All Tags
</button>
{{ range $tags }}
{{ if .Term }}
<button xx class="tag-button filter-button" id="tag-{{ .Term | replaceRE "[.]" "_" | urlize }}" onclick="htf.checkFilter('{{ .Term | replaceRE "[.]" "_" | urlize }}', 'tag-')">
<span>{{.Term | humanize | title }}</span>
<span id="stags-{{ .Term | urlize }}"> -count-</span> | <span id="ctags-{{ .Term | urlize }}"> -count-</span>
</button>
{{ end }}
{{ end }}
{{ if gt ( $.Scratch.Get "untagged") 0 }}
<button xx class="tag-button" id="tag-tfuntagged" onclick="htf.checkFilter('tfuntagged', 'tag-')">
Untagged <span id="stags-tfuntagged"> -count-</span> | <span id="ctags-tfuntagged"> -count-</span>
</button>
{{ end }}
</div>
</div>

@ -1,7 +1,7 @@
<footer id="footer">
<div class="f-main">
<div class="f-column">
<a href="/"><img class="logo" src="/img/logo.svg" alt="lumbung.space"></a>
<a href="/"><img class="logo" src="/img/logo-big.svg" alt="lumbung.space"></a>
</div>
<div class="f-column"><u>lumbung.space</u> is a social and publishing platform for sharing harvests by all members online. It is non-extractive, co governed by the users, and is built on open platforms.</div>
<div class="f-column">

@ -25,4 +25,5 @@
{{ with .OutputFormats.Get "rss" -}}
{{ printf `<link rel="%s" type="%s" href="%s" title="%s" />` .Rel .MediaType.Type .Permalink $.Site.Title | safeHTML }}
{{ end -}}
</head>

@ -6,8 +6,8 @@
</div>
</header>
<div class="menu-row">
<nav class="menu">
<img class="menu-dot" src="/img/black-dot.svg" alt="black dot">
<nav id="menu" class="menu">
<a href="#"><img class="menu-dot" src="/img/black-dot.svg" alt="black dot"></a>
<ul>
<li><a href="/timeline/">harvest</a></li>
{{/* <li><a href="/about/">about</a></li> */}}
@ -28,15 +28,17 @@
<li><a href="/tags/lumbunggallery/">gallery</a></li>
</ul>
</li>
<li><a href="https://members.lumbung.space" class="login-link">Login</a></li>
<li><a href="https://books.lumbung.space">books</a></li>
</ul>
<div class="login-menu"><a href="https://members.lumbung.space">login</a></div>
</nav>
{{- partial "filter-nav.html" . -}}
<div class="login"><a href="https://members.lumbung.space">login</a></div>
<div class="mobile-menu-button">
<div class="mobile-menu-button--line"></div>
<div class="mobile-menu-button--line"></div>
<div class="mobile-menu-button--line"></div>
<div class="menu-button" id="menu-button">
<div class="menu-button--line"></div>
<div class="menu-button--line"></div>
<div class="menu-button--line"></div>
</div>
</div>
</header>

@ -1,7 +1,7 @@
<div class='pen card {{ .Params.feed_name }}'>
<div class='pen card {{ .Params.feed_name }} filter-item' data-section="{{ .Section }}" data-sources='{{- partial "data/sources.html" . -}}' data-contributors='{{- partial "data/contributors.html" . -}}' data-tags='{{- partial "data/tags.html" . -}}'>
<article class="h-entry pen">
<header>
<div class="pen-source"><span class="from p-author">From {{ if .Params.contributors }}<b>{{range .Params.contributors}} <a href='{{ "/contributors/" | relLangURL }}{{ . | urlize }}/'> {{ . }}</a> {{end}}</b> at {{ end }}<a href="{{ "/sources/" | relLangURL }}{{ .Params.feed_name | urlize }}">{{ .Params.feed_name }}</a></span></div>
<div class="pen-source"><span class="from p-author">From {{ if .Params.author }}<b>{{.Params.author}}</b> at {{ end }}<a href="{{ "/categories/" | relLangURL }}{{ .Params.feed_name | urlize }}">{{ .Params.feed_name }}</a></span></div>
{{ $postPermalink := .Permalink}}
<time class="dt-published" datetime="{{ .Date.Format `Jan 02 2006` }}">{{ .Date.Format "Jan 02, 2006" }}</time>

@ -1,48 +1,48 @@
<div class='shout card {{ .Params.feed_name }}'>
<article class="h-entry shout">
<header>
{{ $postPermalink := .Permalink}}
<time class="dt-published" datetime="{{ .Date.Format `Jan 02 2006` }}">{{ .Date.Format "Jan 02, 2006" }}</time>
<h2 class="p-name"><a href="{{ .Permalink }}" class="u-url">{{ .Title }}</a></h2>
</header>
<div class="shout-source"><span class="from p-author">From {{ if .Params.contributors }}<b>{{range .Params.contributors}} <a href='{{ "/contributors/" | relLangURL }}{{ . | urlize }}/'> {{ . }}</a> {{end}}</b> at {{ end }}<a href="{{ "/sources/" | relLangURL }}{{ .Params.feed_name | urlize }}">{{ .Params.feed_name }}</a></span></div>
<div class='shout card {{ .Params.feed_name }} filter-item' data-section="{{ .Section }}" data-sources='{{- partial "data/sources.html" . -}}' data-contributors='{{- partial "data/contributors.html" . -}}' data-tags='{{- partial "data/tags.html" . -}}'>
<article class="h-entry shout">
<header>
{{ $postPermalink := .Permalink}}
<time class="dt-published" datetime="{{ .Date.Format `Jan 02 2006` }}">{{ .Date.Format "Jan 02, 2006" }}</time>
<h2 class="p-name"><a href="{{ .Permalink }}" class="u-url">{{ .Title }}</a></h2>
</header>
<div class="shout-source"><span class="from p-author">From {{ if .Params.contributors }}<b>{{range .Params.contributors}} <a href='{{ "/contributors/" | relLangURL }}{{ . | urlize }}/'> {{ . }}</a> {{end}}</b> at {{ end }}<a href="{{ "/sources/" | relLangURL }}{{ .Params.feed_name | urlize }}">{{ .Params.feed_name }}</a></span></div>
{{ if .Params.featured_image }}
{{ with $img := .Resources.GetMatch .Params.featured_image }}
{{ $height := add $img.Height 0.0}}
{{ $ratio := div $height $img.Width}}
{{ $thumb := $img.Fit "540x540 q80 webp"}}
<div class="p-summary{{if gt $ratio 1 }} portrait {{else}} landscape {{end}}">
<div class="summary-image {{if gt $ratio 1 }} portrait {{else}} landscape {{end}}">
<a href="{{ $postPermalink }}"><img src="{{ $thumb.Permalink }}" alt="{{ .Title }}"> </a>
</div>
{{end}}
{{ else if (.Resources.ByType "image") }}
{{ with (index (.Resources.ByType "image") 0) }}
{{ $img := . }}
{{ $height := add .Height 0.0}}
{{ $ratio := div $height .Width}}
{{ $thumb := .Fit "540x540 q80 webp"}}
<div class="p-summary{{if gt $ratio 1 }} portrait {{else}} landscape {{end}}">
<div class="summary-image {{if gt $ratio 1 }} portrait {{else}} landscape {{end}}">
<a href="{{ $postPermalink }}"><img src="{{ $thumb.Permalink }}" alt="{{ .Title }}"> </a>
</div>
{{ end }}
{{ else }}
<div class="p-summary">
{{ end }}
<div class="summary-text">
{{ .Summary }}
</div>
</div>
<footer class='post-footer'>
<a href="{{ .RelPermalink }}">
<svg width="11" height="11" viewBox="0 0 11 11" xmlns="http://www.w3.org/2000/svg">
<path d="M10.2172 3.892C9.86979 3.02585 9.33722 2.34509 8.61023 1.77874C8.23826 1.49028 7.72957 1.04191 7.21547 0.839212C7.21382 0.703503 7.14487 0.575079 6.97767 0.503871C5.42624 -0.162284 3.69503 0.311299 2.52647 1.51482C1.94635 2.11223 1.51951 2.8478 1.21108 3.62501C0.914861 4.3676 0.507572 5.32483 0.948415 6.07996C1.00646 6.17836 1.09356 6.24193 1.1908 6.27306C1.2735 7.35573 1.57765 8.46801 2.37847 9.21874C3.2325 10.0162 4.43613 10.3053 5.5673 10.1773C6.72371 10.0468 7.96432 9.57061 8.8816 8.82474C9.01086 8.71974 9.1274 8.60844 9.23337 8.49296C9.27968 8.4924 9.32805 8.4875 9.37839 8.4718C11.3643 7.82491 10.8101 5.37347 10.2172 3.892Z" />
</svg>
</a>
</footer>
</article>
{{ if .Params.featured_image }}
{{ with $img := .Resources.GetMatch .Params.featured_image }}
{{ $height := add $img.Height 0.0}}
{{ $ratio := div $height $img.Width}}
{{ $thumb := $img.Fit "540x540 q80 webp"}}
<div class="p-summary{{if gt $ratio 1 }} portrait {{else}} landscape {{end}}">
<div class="summary-image {{if gt $ratio 1 }} portrait {{else}} landscape {{end}}">
<a href="{{ $postPermalink }}"><img src="{{ $thumb.Permalink }}" alt="{{ .Title }}"> </a>
</div>
{{end}}
{{ else if (.Resources.ByType "image") }}
{{ with (index (.Resources.ByType "image") 0) }}
{{ $img := . }}
{{ $height := add .Height 0.0}}
{{ $ratio := div $height .Width}}
{{ $thumb := .Fit "540x540 q80 webp"}}
<div class="p-summary{{if gt $ratio 1 }} portrait {{else}} landscape {{end}}">
<div class="summary-image {{if gt $ratio 1 }} portrait {{else}} landscape {{end}}">
<a href="{{ $postPermalink }}"><img src="{{ $thumb.Permalink }}" alt="{{ .Title }}"> </a>
</div>
{{ end }}
{{ else }}
<div class="p-summary">
{{ end }}
<div class="summary-text">
{{ .Summary }}
</div>
</div>
<footer class='post-footer'>
<a href="{{ .RelPermalink }}">
<svg width="11" height="11" viewBox="0 0 11 11" xmlns="http://www.w3.org/2000/svg">
<path d="M10.2172 3.892C9.86979 3.02585 9.33722 2.34509 8.61023 1.77874C8.23826 1.49028 7.72957 1.04191 7.21547 0.839212C7.21382 0.703503 7.14487 0.575079 6.97767 0.503871C5.42624 -0.162284 3.69503 0.311299 2.52647 1.51482C1.94635 2.11223 1.51951 2.8478 1.21108 3.62501C0.914861 4.3676 0.507572 5.32483 0.948415 6.07996C1.00646 6.17836 1.09356 6.24193 1.1908 6.27306C1.2735 7.35573 1.57765 8.46801 2.37847 9.21874C3.2325 10.0162 4.43613 10.3053 5.5673 10.1773C6.72371 10.0468 7.96432 9.57061 8.8816 8.82474C9.01086 8.71974 9.1274 8.60844 9.23337 8.49296C9.27968 8.4924 9.32805 8.4875 9.37839 8.4718C11.3643 7.82491 10.8101 5.37347 10.2172 3.892Z" />
</svg>
</a>
</footer>
</article>
</div>

@ -1,49 +1,49 @@
<div class='social card {{ range .Params.tags }}{{ if or (eq . "lumbungkios") (eq . "lumbunggallery")}}{{.}}{{ end }}{{ end }}'>
<article class="h-entry social">
<header>
{{ $postPermalink := .Permalink}}
<h2 class="p-name"><a href="{{ .Permalink }}" class="u-url">
{{ range $i, $e := .Params.tags -}}
{{- if $i -}} {{ end -}}
<a href='{{ "/tags/" | relLangURL }}{{ . | urlize }}'>#{{ $e | humanize | lower }}</a>
{{- end -}}
</a></h2>
</header>
<div class='social card {{ range .Params.tags }}{{ if or (eq . "lumbungkios") (eq . "lumbungkiosproducts")}}lumbungkios{{else if (eq . "lumbunggallery")}}{{.}}{{ end }}{{ end }} filter-item' data-section="{{ .Section }}" data-sources='{{- partial "data/sources.html" . -}}' data-contributors='{{- partial "data/contributors.html" . -}}' data-tags='{{- partial "data/tags.html" . -}}'>
<article class="h-entry social">
<header>
{{ $postPermalink := .Permalink}}
<h2 class="p-name"><a href="{{ .Permalink }}" class="u-url">
{{ range $i, $e := .Params.tags -}}
{{- if $i -}} {{ end -}}
<a href='{{ "/tags/" | relLangURL }}{{ . | urlize }}'>#{{ $e | humanize | lower }}</a>
{{- end -}}
</a></h2>
</header>
{{ with (index (.Resources.ByType "video") 0) }}
{{/* TODO this current logic does not suport video & image mixed */}}
<div class="p-summary">
<video controls width="540px" preload="none" poster="{{ $postPermalink }}/thumbnail.png">
<source src="{{.Permalink}}" type="video/mp4">
</video>
{{ else}}
{{ with (index (.Resources.ByType "image") 0) }}
{{ $height := add .Height 0.0}}
{{ $ratio := div $height .Width}}
{{ $thumb := .Fit "540x540 q80 webp"}}
<div class="p-summary{{if gt $ratio 1 }} portrait {{else}} landscape {{end}}">
<div class="summary-image {{if gt $ratio 1 }} portrait {{else}} landscape {{end}}">
<a href="{{ $postPermalink }}"><img src="{{ $thumb.Permalink }}" alt="{{ .Title }}"> </a>
</div>
{{ else }}
<div class="p-summary">
{{ end }}
{{ end }}
<div class="summary-text">
{{ .Summary }}
</div>
</div>
<div class="social-source"></div>
<footer class='post-footer'>
<div class='footer-metadata'>
<span class="from p-author">{{ if .Params.contributors }}From {{range .Params.contributors}}<b> <a href='{{ "/contributors/" | relLangURL }}{{ . | urlize }}/'> {{ . }}</a> {{end}}</b> on{{ end }}</span>
<time class="dt-published" datetime="{{ .Date.Format `Jan 02 2006` }}">{{ .Date.Format "Jan 02, 2006" }}</time>
</div>
{{ if .Truncated }}
<div class="footer-filler"></div>
<div class='read-more'><a href="{{ .RelPermalink }}">Read More…</a></div>
{{ end }}
</footer>
</article>
{{ with (index (.Resources.ByType "video") 0) }}
{{/* TODO this current logic does not suport video & image mixed */}}
<div class="p-summary">
<video controls width="540px" preload="none" poster="{{ $postPermalink }}/thumbnail.png">
<source src="{{.Permalink}}" type="video/mp4">
</video>
{{ else}}
{{ with (index (.Resources.ByType "image") 0) }}
{{ $height := add .Height 0.0}}
{{ $ratio := div $height .Width}}
{{ $thumb := .Fit "540x540 q80 webp"}}
<div class="p-summary{{if gt $ratio 1 }} portrait {{else}} landscape {{end}}">
<div class="summary-image {{if gt $ratio 1 }} portrait {{else}} landscape {{end}}">
<a href="{{ $postPermalink }}"><img src="{{ $thumb.Permalink }}" alt="{{ .Title }}"> </a>
</div>
{{ else }}
<div class="p-summary">
{{ end }}
{{ end }}
<div class="summary-text">
{{ .Summary }}
</div>
</div>
<div class="social-source"></div>
<footer class='post-footer'>
<div class='footer-metadata'>
<span class="from p-author">{{ if .Params.contributors }}From {{range .Params.contributors}}<b> <a href='{{ "/contributors/" | relLangURL }}{{ . | urlize }}/'> {{ . }}</a> {{end}}</b> on{{ end }}</span>
<time class="dt-published" datetime="{{ .Date.Format `Jan 02 2006` }}">{{ .Date.Format "Jan 02, 2006" }}</time>
</div>
{{ if .Truncated }}
<div class="footer-filler"></div>
<div class='read-more'><a href="{{ .RelPermalink }}">Read More…</a></div>
{{ end }}
</footer>
</article>
</div>

@ -1,4 +1,4 @@
<div class='video-box'>
<div class='video-box filter-item' data-section="{{ .Section }}" data-sources='{{- partial "data/sources.html" . -}}' data-contributors='{{- partial "data/contributors.html" . -}}' data-tags='{{- partial "data/tags.html" . -}}'>
<div class='video channel tape-label'><a href='{{ .Params.channel_url }}'> {{ .Params.video_channel }}</a></div>
<div class='media' id='media-{{ .Params.uuid }}'>
<span class='video-thumbnail' id='thumb-{{ .Params.uuid }}'

@ -53,6 +53,11 @@
/*Main Stuff*/
html {
scroll-behavior: smooth;
}
body {
font-size: 21px;
font-family: Gudea, sans-serif;
@ -127,15 +132,15 @@ a {
max-width: 400px;
}
.card:nth-child(even) {
.post:nth-child(even) {
transform: rotate(-1deg);
}
.card:nth-child(odd) {
.post:nth-child(odd) {
transform: rotate(1deg);
}
.card:nth-child(5) {
.post:nth-child(5) {
transform: rotate(2deg);
}
@ -174,7 +179,7 @@ a {
.home-link {
display: block;
max-width: 700px;
width: 50%;
width: 70%;
padding: 0;
margin: auto;
}
@ -185,30 +190,34 @@ a {
height: auto;
}
.login-link {
#top-menu .login-link {
background: #009d9b;
padding: 5px 30px;
color: #fff;
font-weight: 900;
position: absolute;
right: 1.5rem;
}
.menu-row {
margin: 0 auto;
max-width: 80%;
width: 100%;
display: flex;
justify-content: space-between;
justify-content: center;
align-items: center;
position: sticky;
top: 15px;
z-index: 99;
max-width: fit-content;
}
.filter-link {
.menu-row .menu .filter-link {
background: #333;
height: 100%;
display: flex;
align-items: center;
padding: 0 30px;
padding: 0.5rem 1.5rem;
color: #fff;
cursor: pointer;
}
@ -224,8 +233,8 @@ a {
fill:#fff;
}
.mobile-menu-button {
width: 35px;
.menu-button {
width: 30px;
height: 16px;
display: none;
flex-direction: column;
@ -233,18 +242,19 @@ a {
color: pointer;
}
.mobile-menu-button--line {
.menu-button--line {
width: 100%;
height: 2px;
background: #333;
}
.menu {
border: 2px solid #000;
border: 2px solid #333;
padding: 0 1rem;
display: flex;
align-items: center;
background: #fff;
position: relative;
}
.menu-dot {
@ -318,6 +328,23 @@ a {
display: none;
}
.login-menu {
display: none;
}
.menu-row .login {
height: 100%;
display: flex;
align-items: center;
border: 2px solid #333;
padding: 0 1.5rem;
background: #fff;
}
.login a {
text-decoration: none;
}
/* styles for "tools" dropdown menu */
.menu ul.submenu {
flex-direction: column;
@ -358,10 +385,6 @@ a {
padding: 0.5em;
}
.menu a {
padding: 0 5px;
}
.menu .menu .submenu a {
margin: 0;
display: flex;
@ -408,7 +431,6 @@ a {
.h-entry header h2 a {
text-decoration: none;
color: var(--border-color);
word-wrap: anywhere;
}
.h-entry header .header-metadata {
@ -776,7 +798,7 @@ div.pen-source {
/* gallery cards */
.card.social.lumbunggallery {
.card.social.lumbunggallery, .card.social.lumbunggallery .post-footer a {
border-color: var(--gallery-dark);
background-color: var(--gallery-light);
color: var(--gallery-dark);
@ -1082,88 +1104,237 @@ li.page-item:after {
}
/* Landingpage */
.welcome-text {
text-align: center;
max-width: 1000px;
margin: 0 auto 50px;
}
.app-columns {
display: flex;
flex-wrap: wrap;
max-width: 1200px;
margin: 0 auto 50px;
}
.app-column {
width: 33%;
text-align: center;
padding: 3.5%;
}
.app-column a {
text-decoration: none;
}
.app-icon {
display: block;
max-width: 90px;
width: 80%;
margin-left: auto;
margin-right: auto;
transition: transform 0.2s ease;
}
.app-icon:hover {
transform: rotate(-15deg);
}
.app-name {
font-weight: bold;
margin-bottom: 0.2em;
color: #333;
}
.app-description {
font-size: 14px;
display: block;
margin-left: auto;
margin-right: auto;
}
/* FILTER */
.filter-item, .card, .video-box {
/* display: none;*/
display: none;
}
.show-item {
display: block !important;
}
.filter-buttons-container {
.filter-container {
display: none;
background: #fff;
padding: 1.5rem;
border: 2px solid;
border: 2px solid #333;
border-top: 0;
position: absolute;
top: 44px;
left: 0;
z-index: 99;
width: 100%;
overflow: hidden;
justify-content: space-between;
}
.filter-information {
width: 15%;
}
#load-more {
font-size: 0.8rem;
text-decoration: underline;
cursor: pointer;
}
.filter-buttons-container {
align-items: center;
display: flex;
width: calc(85% - 30px);
}
.filter-buttons-container-header {
display: flex;
margin-bottom: 20px;
margin-right: 20px;
}
.load-all {
margin-left: 30px;
.filter-link {
height: 100%;
display: flex;
align-items: center;
background: #333;
color: #fff;
padding: calc(0.5rem + 2px) 1rem;
cursor: pointer;
text-decoration: underline;
color: #333;
}
@media (min-width: 980px) {
.filter-link:hover + .filter-buttons-container {
.filter-link:hover + .filter-container {
display: flex;
}
.filter-container:hover {
display: flex;
}
.filter-buttons-dropdown {
position: absolute;
top: 41px;
width: calc(100% + 2px);
left: -1px;
background: #fff;
max-height: 35vh;
min-height: 100%;
overflow-y: scroll;
overflow-x: hidden;
border: 1px solid #333;
border-top: 0;
display: none;
}
.post.tv {
margin: auto;
}
@media all and (min-width: 980px) {
.filter-buttons:hover .filter-buttons-dropdown {
display: block;
}
.filter-buttons-container:hover {
.filter-buttons:hover {
display: block;
}
}
.filter-buttons {
width: 100%;
margin-bottom: 10px;
width: fit-content;
display: flex;
white-space: nowrap;
overflow: scroll;
-ms-overflow-style: none;
scrollbar-width: none;
flex-direction: column;
position: relative;
border: 1px solid #333;
margin-right: 10px;
padding-right: 30px;
width: calc(25% - 7.5px);
}
.filter-buttons:last-child {
margin-right: 0px;
}
.filter-buttons > button {
height: 40px;
}
.filter-by:after {
content:"";
width: 0;
height: 0;
border-style: solid;
border-width: 5px 5px 0 5px;
border-color: #333333 transparent transparent transparent;
position: absolute;
right: 0.5rem;
}
.filter-buttons button {
display: block;
display: flex;