rra
3 years ago
commit
c3e34bb48f
15 changed files with 613 additions and 0 deletions
@ -0,0 +1,2 @@ |
|||||
|
+++ |
||||
|
+++ |
@ -0,0 +1,2 @@ |
|||||
|
{{- $image := .Page.Resources.GetMatch (printf "%s" (.Destination | safeURL)) -}} |
||||
|
<img width = "{{- $image.Width -}}" height = "{{- $image.Height -}}" alt = "{{- .PlainText | htmlUnescape -}}" src = "{{- $image.RelPermalink -}}"> |
@ -0,0 +1,30 @@ |
|||||
|
<!DOCTYPE html> |
||||
|
<html lang="{{ .Site.LanguageCode | default "en" }}"> |
||||
|
{{- partial "head.html" . -}} |
||||
|
<body> |
||||
|
{{- partial "header.html" . -}} |
||||
|
<div id="content"> |
||||
|
{{- block "main" . }}{{- end }} |
||||
|
</div> |
||||
|
{{- partial "footer.html" . -}} |
||||
|
</body> |
||||
|
<script> |
||||
|
function toggleDescription(id){ |
||||
|
document.querySelector(id).classList.toggle("collapsed"); |
||||
|
} |
||||
|
function loadPlayer(id, embed_path){ |
||||
|
media = document.querySelector('#media-'+ id) |
||||
|
|
||||
|
var iframe = document.createElement('iframe'); |
||||
|
iframe.src = embed_path + '?autoplay=1&title=0'; |
||||
|
iframe.width = 560; |
||||
|
iframe.height = 315; |
||||
|
iframe.frameBorder = 0; |
||||
|
iframe.sandbox = "allow-same-origin allow-scripts allow-popups" ; |
||||
|
media.appendChild(iframe); |
||||
|
document.querySelector('#thumb-'+ id).remove(); |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
</html> |
||||
|
|
@ -0,0 +1,23 @@ |
|||||
|
{{ define "main" }} |
||||
|
<section class="entries"> |
||||
|
<div class="h-feed"> |
||||
|
{{ range .Pages }} |
||||
|
<div class='card'> |
||||
|
<article class="h-entry"> |
||||
|
<header> |
||||
|
<h2 class="p-name"><a href="{{ .Permalink }}" class="u-url">{{ .Title }}</a></h2> |
||||
|
<time class="dt-published" datetime="{{ .Date.Format `Jan 02 2006` }}">{{ .Date.Format "Jan 02, 2006" }}</time> |
||||
|
</header> |
||||
|
{{ if .Truncated }} |
||||
|
<div class="p-summary truncated"> |
||||
|
{{ .Summary }} |
||||
|
<p><a href="{{ .RelPermalink }}">Read More…</a></p> |
||||
|
{{ else }} |
||||
|
<div class="p-summary"> |
||||
|
{{ end }} |
||||
|
</div> |
||||
|
</article> |
||||
|
</div> |
||||
|
{{ end }} |
||||
|
</section> |
||||
|
{{ end }} |
@ -0,0 +1,16 @@ |
|||||
|
{{ define "main" }} |
||||
|
<main class="main"> |
||||
|
<article class="h-entry"> |
||||
|
<header> |
||||
|
<h1 class="p-name"><a href="{{ .Permalink }}" class="u-url">{{ .Title }}</a></h1> |
||||
|
<p> |
||||
|
Published by <a class="p-author" href="/about">{{ $.Param "author" }}</a> |
||||
|
on <time class="dt-published" datetime="{{ .Date.Format `Jan 02 2006` }}">{{ .Date.Format "Jan 02, 2006" }}</time> |
||||
|
</p> |
||||
|
|
||||
|
<div class="e-content"> |
||||
|
{{ .Content }} |
||||
|
</div> |
||||
|
</article> |
||||
|
</main> |
||||
|
{{ end }} |
@ -0,0 +1,26 @@ |
|||||
|
{{ define "main" }} |
||||
|
<section class='entries'> |
||||
|
<div class="h-feed"> |
||||
|
{{ range (.Paginator 10).Pages }} |
||||
|
|
||||
|
|
||||
|
{{ if in .Params.category "tv"}} |
||||
|
|
||||
|
{{- partial "video_box.html" . -}} |
||||
|
|
||||
|
{{ else }} |
||||
|
|
||||
|
{{- partial "card.html" . -}} |
||||
|
|
||||
|
{{ end }} |
||||
|
|
||||
|
{{ end }} |
||||
|
</div> |
||||
|
|
||||
|
<nav class="pagination"> |
||||
|
{{ template "_internal/pagination.html" . }} |
||||
|
</nav> |
||||
|
|
||||
|
</main> |
||||
|
{{ end }} |
||||
|
|
@ -0,0 +1,34 @@ |
|||||
|
<div class='card'> |
||||
|
<article class="h-entry"> |
||||
|
<header> |
||||
|
<h2 class="p-name"><a href="{{ .Permalink }}" class="u-url">{{ .Title }}</a></h2> |
||||
|
<div class="header-metadata"> |
||||
|
<time class="dt-published" datetime="{{ .Date.Format `Jan 02 2006` }}">{{ .Date.Format "Jan 02, 2006" }}</time> |
||||
|
{{ if .Params.author }} |
||||
|
<div class='author'>{{.Params.author}}</div> |
||||
|
{{ end }} |
||||
|
</div> |
||||
|
</header> |
||||
|
|
||||
|
{{ $img := (.Resources.ByType "image").GetMatch "*featured*" }} |
||||
|
|
||||
|
<div class="p-summary {{if .Truncated}} truncated {{end}} {{if $img}} image {{end}}" > |
||||
|
<div class="summary-text"> |
||||
|
{{ .Summary }} |
||||
|
</div> |
||||
|
{{ with $img }} |
||||
|
{{ $thumb := .Resize "400x300"}} |
||||
|
<div class="summary-image"> |
||||
|
<img src="{{ $thumb.Permalink }}" alt="{{ .Title }}"> |
||||
|
</div> |
||||
|
{{ end }} |
||||
|
</div> |
||||
|
{{ if .Truncated }} |
||||
|
<footer class='post-footer'> |
||||
|
<div class='read-more'><a href="{{ .RelPermalink }}">Read More…</a></div> |
||||
|
<div class='footer-filler'></div> |
||||
|
</footer> |
||||
|
{{ end }} |
||||
|
|
||||
|
</article> |
||||
|
</div> |
@ -0,0 +1,5 @@ |
|||||
|
<footer class="bar"> |
||||
|
<div> |
||||
|
Imprint - Privacy Policy - Copyright |
||||
|
</div> |
||||
|
</footer> |
@ -0,0 +1,25 @@ |
|||||
|
<head> |
||||
|
<meta charset="utf-8"> |
||||
|
<meta name="viewport" content="width=device-width, initial-scale=1"> |
||||
|
|
||||
|
<title>{{ if .IsHome }} {{ .Site.Title }} {{ else }} {{ .Title }} | {{ .Site.Title }} {{ end }}</title> |
||||
|
|
||||
|
{{- if or .Description .Site.Params.description }} |
||||
|
<meta name="description" content="{{ .Description | default .Site.Params.description }}"> |
||||
|
{{- end }} |
||||
|
{{- if or .Description .Site.Params.description }} |
||||
|
<meta name="author" content='{{ .Site.Params.author }}'> |
||||
|
{{- end }} |
||||
|
|
||||
|
<link rel="stylesheet" href="{{ .Site.BaseURL }}css/main.css"> |
||||
|
<link rel="stylesheet" href="{{ .Site.BaseURL }}css/video-box.css"> |
||||
|
|
||||
|
<link rel="canonical" href="{{ .Permalink }}"> |
||||
|
{{ with .Site.Params.favicon }} |
||||
|
<link rel="icon" type="image/ico" href="{{ . | absURL }}"> |
||||
|
{{ end }} |
||||
|
|
||||
|
{{ with .OutputFormats.Get "rss" -}} |
||||
|
{{ printf `<link rel="%s" type="%s" href="%s" title="%s" />` .Rel .MediaType.Type .Permalink $.Site.Title | safeHTML }} |
||||
|
{{ end -}} |
||||
|
</head> |
@ -0,0 +1,12 @@ |
|||||
|
<header class="bar" id="top-menu"> |
||||
|
<h1 class="logo"><a href="/"><img src="{{ .Site.Params.logo }}" alt="{{ .Site.Title }}"/></a></h1> |
||||
|
<nav class="menu"> |
||||
|
<ul> |
||||
|
{{ with .Site.Menus.main }} |
||||
|
{{ range . }} |
||||
|
<li class="menu-nav-item"> <a href="{{ .URL | relURL }}" title="{{ .Title }}">{{ .Name }}</a> |
||||
|
{{ end }} |
||||
|
{{ end }} |
||||
|
</ul> |
||||
|
</nav> |
||||
|
</header> |
@ -0,0 +1,29 @@ |
|||||
|
<div class='video-box'> |
||||
|
<div class='media' id='media-{{ .Params.uuid }}'> |
||||
|
<span class='video-thumbnail' id='thumb-{{ .Params.uuid }}' |
||||
|
href="https://tv.lumbung.space/videos/watch/{{ .Params.uuid }}" |
||||
|
onclick="loadPlayer( |
||||
|
'{{ .Params.uuid }}', |
||||
|
'https://tv.lumbung.space/videos/embed/{{ .Params.uuid }}' |
||||
|
)"> |
||||
|
<img src="{{.Site.BaseURL}}{{ .File.Dir }}{{ .Params.preview_image }}"> |
||||
|
|
||||
|
<div class="video-thumbnail-duration-overlay">{{.Params.video_duration}}</div> |
||||
|
<div class="play-overlay"> |
||||
|
<div class="play-icon"></div> |
||||
|
</div> |
||||
|
</span> |
||||
|
</div> |
||||
|
<div class='metadata'> |
||||
|
<div class='title'>{{ .Title }}</div> |
||||
|
<span class="description collapsed" id='vid-{{ .Params.uuid }}'> {{ .Content }}</span> |
||||
|
<div class='footer'> |
||||
|
<span class='channel'><a href='{{ .Params.channel_url }}'> {{ .Params.video_channel }}</a></span> |
||||
|
|
||||
|
<span class='descr_button' id='toggle-button' onclick="toggleDescription('#vid-{{ .Params.uuid }}')"> <a href='#'> </a></span> |
||||
|
|
||||
|
<span class='date'> <a href='https://tv.lumbung.space/videos/watch/{{ .Params.uuid }}'> {{ .Date.Format "Jan 02, 2006" }}</a></span> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
@ -0,0 +1,216 @@ |
|||||
|
/*nice body-border color combos |
||||
|
|
||||
|
antiquewhite - burlywood |
||||
|
peachpuff - tomato |
||||
|
lightpink - crimson |
||||
|
lightblue - cornflowerblue |
||||
|
palegreen - lightseagreen |
||||
|
|
||||
|
fonts |
||||
|
bungeeshade |
||||
|
allerta |
||||
|
*/ |
||||
|
|
||||
|
:root { |
||||
|
--border-color: tomato; |
||||
|
} |
||||
|
|
||||
|
/*Main Stuff*/ |
||||
|
body { |
||||
|
font-size:16px; |
||||
|
font-family: sans-serif; |
||||
|
color: maroon; |
||||
|
} |
||||
|
|
||||
|
a { |
||||
|
color: #1B4C8A; |
||||
|
} |
||||
|
|
||||
|
* { |
||||
|
box-sizing: border-box; |
||||
|
} |
||||
|
|
||||
|
#content { |
||||
|
margin: 2em auto; |
||||
|
max-width: 80%; |
||||
|
margin-bottom: 0; |
||||
|
} |
||||
|
|
||||
|
.card{ |
||||
|
|
||||
|
border: 2px solid var(--border-color); |
||||
|
box-shadow:1em 1em 0 #d2d1c8; |
||||
|
background-color: #fff09d; |
||||
|
max-width: 600px; |
||||
|
margin-bottom: 2em; |
||||
|
flex: auto; |
||||
|
margin: 0 3em 3em 0; |
||||
|
align-self: start; |
||||
|
|
||||
|
} |
||||
|
|
||||
|
.card{ |
||||
|
background-color: peachpuff; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
.card:nth-child(even){ |
||||
|
transform: rotate(-1deg); |
||||
|
} |
||||
|
|
||||
|
.card:nth-child(odd){ |
||||
|
transform: rotate(1deg); |
||||
|
} |
||||
|
|
||||
|
.card:nth-child(5){ |
||||
|
transform: rotate(2deg); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
.video.box{ |
||||
|
margin-top:3em; |
||||
|
} |
||||
|
|
||||
|
.bar{ |
||||
|
border: 2px solid var(--border-color); |
||||
|
box-shadow: 0.6em 0.6em 0 #d2d1c8; |
||||
|
margin-bottom: 2em; |
||||
|
margin-top:3em; |
||||
|
display: inline-block; |
||||
|
background-color: #fff09d; |
||||
|
} |
||||
|
|
||||
|
.h-feed{ |
||||
|
display: flex; |
||||
|
flex-flow: row wrap; |
||||
|
width: 100%; |
||||
|
|
||||
|
} |
||||
|
|
||||
|
/* base header & menu */ |
||||
|
|
||||
|
#top-menu{ |
||||
|
transform: rotate(-3deg); |
||||
|
margin-left: 2em; |
||||
|
} |
||||
|
|
||||
|
.logo { |
||||
|
margin-left: 0.5em; |
||||
|
margin-right: 0.5em; |
||||
|
margin-top: 0.2em; |
||||
|
margin-bottom: 0.2em; |
||||
|
} |
||||
|
|
||||
|
.logo a { |
||||
|
text-decoration: none; |
||||
|
} |
||||
|
|
||||
|
.menu { |
||||
|
border-top: 2px solid var(--border-color); |
||||
|
margin: 0px; |
||||
|
padding: 0px; |
||||
|
|
||||
|
} |
||||
|
|
||||
|
.menu ul{ |
||||
|
list-style-type: none; |
||||
|
margin: 0; |
||||
|
padding: 0; |
||||
|
display: flex; |
||||
|
} |
||||
|
|
||||
|
.menu-nav-item { |
||||
|
border-right: 2px solid var(--border-color); |
||||
|
padding: 0.5em; |
||||
|
} |
||||
|
|
||||
|
/*Article Summary Cards*/ |
||||
|
|
||||
|
.h-entry{ |
||||
|
} |
||||
|
|
||||
|
.h-entry header { |
||||
|
display: flex; |
||||
|
border-bottom: 2px solid var(--border-color); |
||||
|
} |
||||
|
|
||||
|
.h-entry header h2{ |
||||
|
padding: 0.2em; |
||||
|
margin: 0; |
||||
|
padding-right: 0.3em; |
||||
|
padding-left: 0.3em; |
||||
|
border-right: 2px solid var(--border-color); |
||||
|
} |
||||
|
|
||||
|
.h-entry header h2:hover{ |
||||
|
box-shadow: inset 4px 4px 0px tomato; |
||||
|
cursor: pointer; |
||||
|
} |
||||
|
|
||||
|
.h-entry header h2 a { |
||||
|
text-decoration: none; |
||||
|
color: var(--border-color); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
.h-entry header .header-metadata{ |
||||
|
margin: 0; |
||||
|
padding: 0.5em; |
||||
|
display: flex; |
||||
|
flex-flow: column wrap; |
||||
|
font-size: 0.9em; |
||||
|
align-content: flex-end; |
||||
|
} |
||||
|
|
||||
|
.p-summary.truncated.image { |
||||
|
display: flex; |
||||
|
flex-direction: row-reverse; |
||||
|
} |
||||
|
|
||||
|
.p-summary.truncated { |
||||
|
display: flex; |
||||
|
flex-direction: column; |
||||
|
} |
||||
|
|
||||
|
.summary-text { |
||||
|
flex: 1; |
||||
|
padding: 1em; |
||||
|
max-height: 300px; |
||||
|
min-width: 20ch; |
||||
|
text-overflow: ellipsis; |
||||
|
overflow: hidden; |
||||
|
} |
||||
|
|
||||
|
.summary-image > img { |
||||
|
height: 100%; |
||||
|
object-fit: cover; |
||||
|
max-width: 100%; |
||||
|
|
||||
|
} |
||||
|
|
||||
|
.summary-image{ |
||||
|
border-right: 2px solid var(--border-color); |
||||
|
} |
||||
|
|
||||
|
footer.post-footer { |
||||
|
display: flex; |
||||
|
flex-flow: row-reverse; |
||||
|
} |
||||
|
|
||||
|
.footer-filler{ |
||||
|
border-top: 2px solid var(--border-color); |
||||
|
flex-grow: 1; |
||||
|
} |
||||
|
.read-more { |
||||
|
border-top: 2px solid var(--border-color); |
||||
|
border-left: 2px solid var(--border-color); |
||||
|
align-content: flex-end; |
||||
|
padding: 0.2em 1em 0.2em 1em; |
||||
|
font-size: 0.9rem; |
||||
|
} |
||||
|
|
||||
|
/* footer */ |
||||
|
|
||||
|
footer.bar { |
||||
|
margin-top:0; |
||||
|
} |
@ -0,0 +1,172 @@ |
|||||
|
:root { |
||||
|
--video-border-color: burlywood; |
||||
|
--video-background-color: antiquewhite; |
||||
|
} |
||||
|
.video-box { |
||||
|
border:2px solid var(--video-border-color); |
||||
|
max-width:560px; |
||||
|
margin:auto; |
||||
|
box-shadow:1em 1em 0 #d2d1c8; |
||||
|
margin-bottom: 2em; |
||||
|
color: chocolate; |
||||
|
} |
||||
|
|
||||
|
.video-box:nth-child(even){ |
||||
|
transform: rotate(-1deg); |
||||
|
} |
||||
|
|
||||
|
.video-box:nth-child(odd){ |
||||
|
transform: rotate(1deg); |
||||
|
} |
||||
|
|
||||
|
.video-box:nth-child(5){ |
||||
|
transform: rotate(3deg); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
.video-box img { |
||||
|
max-width: 100%; |
||||
|
} |
||||
|
|
||||
|
.video-box .media { |
||||
|
line-height: 0; |
||||
|
} |
||||
|
|
||||
|
.metadata{ |
||||
|
display: flex; |
||||
|
flex-direction: column; |
||||
|
background-color: var(--video-background-color); |
||||
|
font-size:0.9rem; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
.title{ |
||||
|
margin-top:0; |
||||
|
border-top: 2px solid var(--video-border-color); |
||||
|
padding:0.5em; |
||||
|
font-weight:700; |
||||
|
font-size:1.3rem; |
||||
|
} |
||||
|
|
||||
|
.footer{ |
||||
|
margin-top:0; |
||||
|
border-top: 2px solid var(--video-border-color); |
||||
|
display: flex; |
||||
|
justify-content: space-between; |
||||
|
} |
||||
|
|
||||
|
.channel{ |
||||
|
border-right: 2px solid var(--video-border-color); |
||||
|
padding-left: 1em; |
||||
|
padding-right: 1em; |
||||
|
padding-top: 0.2em; |
||||
|
display: inline-block; |
||||
|
padding-bottom: 0.2em; |
||||
|
} |
||||
|
|
||||
|
.date { |
||||
|
float:right; |
||||
|
border-left: 2px solid var(--video-border-color); |
||||
|
padding-left: 1em; |
||||
|
padding-right: 1em; |
||||
|
padding-top: 0.2em; |
||||
|
display: inline-block; |
||||
|
padding-bottom: 0.2em; |
||||
|
} |
||||
|
|
||||
|
.description{ |
||||
|
padding: 1em; |
||||
|
display: block; |
||||
|
/*transition: height 0.5s linear;*/ |
||||
|
overflow: hidden; |
||||
|
border-top: 2px solid var(--video-border-color); |
||||
|
} |
||||
|
|
||||
|
.collapsed { |
||||
|
border-top: 0px; |
||||
|
/*transform:scaleY(0);*/ |
||||
|
height: 0; |
||||
|
padding:0; |
||||
|
} |
||||
|
|
||||
|
.descr_button { |
||||
|
cursor: pointer; |
||||
|
flex-grow: 1; |
||||
|
text-align: center; |
||||
|
} |
||||
|
|
||||
|
.descr_button a { |
||||
|
color:inherit; |
||||
|
text-decoration: inherit; |
||||
|
} |
||||
|
|
||||
|
.descr_button a:before { |
||||
|
content:'↕'; |
||||
|
vertical-align: sub; |
||||
|
} |
||||
|
|
||||
|
.descr_button:hover { |
||||
|
box-shadow: inset 2px 2px 0px #95948c; |
||||
|
} |
||||
|
|
||||
|
.play-icon { |
||||
|
width: 0; |
||||
|
height: 0; |
||||
|
position: absolute; |
||||
|
left: 50%; |
||||
|
top: 50%; |
||||
|
transform: translate(-50%,-50%) scale(.5); |
||||
|
border-top: 13px solid transparent; |
||||
|
border-bottom: 13px solid transparent; |
||||
|
border-left: 18px solid hsla(0,0%,100%,.95); |
||||
|
} |
||||
|
|
||||
|
.video-thumbnail { |
||||
|
position: absolute; |
||||
|
width: 100%; |
||||
|
height: 100%; |
||||
|
top: 0; |
||||
|
} |
||||
|
.video-thumbnail { |
||||
|
display: flex; |
||||
|
flex-direction: column; |
||||
|
position: relative; |
||||
|
overflow: hidden; |
||||
|
background-color: #ececec; |
||||
|
transition: filter .2s ease; |
||||
|
} |
||||
|
|
||||
|
.video-thumbnail-duration-overlay { |
||||
|
display: inline-block; |
||||
|
background-color: var(--video-background-color); |
||||
|
color: chocolate; |
||||
|
font-size: 14px; |
||||
|
line-height: 1.1; |
||||
|
z-index: 10; |
||||
|
position: absolute; |
||||
|
padding: 1px 3px 1px 3px; |
||||
|
right: 5px; |
||||
|
bottom: 5px; |
||||
|
border: 2px solid var(--video-border-color); |
||||
|
} |
||||
|
|
||||
|
.play-overlay { |
||||
|
transition: all .2s ease; |
||||
|
position: absolute; |
||||
|
right: 0; |
||||
|
bottom: 0; |
||||
|
width: inherit; |
||||
|
height: inherit; |
||||
|
opacity: 0; |
||||
|
background-color: rgba(0,0,0,.3); |
||||
|
} |
||||
|
|
||||
|
.video-thumbnail:hover { |
||||
|
text-decoration:none!important |
||||
|
} |
||||
|
.video-thumbnail:hover .play-overlay { |
||||
|
opacity:1 |
||||
|
} |
||||
|
.video-thumbnail:hover .play-overlay .play-icon { |
||||
|
transform:translate(-50%,-50%) scale(1) |
||||
|
} |
@ -0,0 +1,21 @@ |
|||||
|
# theme.toml template for a Hugo theme |
||||
|
# See https://github.com/gohugoio/hugoThemes#themetoml for an example |
||||
|
|
||||
|
name = "Lumbung" |
||||
|
license = "AGPL3" |
||||
|
licenselink = "https://github.com/yourname/yourtheme/blob/master/LICENSE" |
||||
|
description = "" |
||||
|
homepage = "http://example.com/" |
||||
|
tags = [] |
||||
|
features = [] |
||||
|
min_version = "0.41.0" |
||||
|
|
||||
|
[author] |
||||
|
name = "" |
||||
|
homepage = "" |
||||
|
|
||||
|
# If porting an existing theme |
||||
|
[original] |
||||
|
name = "" |
||||
|
homepage = "" |
||||
|
repo = "" |
Loading…
Reference in new issue