first commit
This commit is contained in:
87
themes/roazhon/layouts/partials/footer.html
Normal file
87
themes/roazhon/layouts/partials/footer.html
Normal file
@@ -0,0 +1,87 @@
|
||||
{{ "<!-- Footer -->" | safeHTML }}
|
||||
<footer id="footer" class="panel">
|
||||
<div class="inner split">
|
||||
<div>
|
||||
<section>
|
||||
<h2>{{ with .Site.Params.footer.paragraph.headline }}{{ . | markdownify }}{{ end }}</h2>
|
||||
<p>{{ with .Site.Params.footer.paragraph.text }}{{ . | markdownify }}{{ end }}</p>
|
||||
</section>
|
||||
<section>
|
||||
<h2>{{ with .Site.Params.footer.social.headline }}{{ . | markdownify }}{{ end }}</h2>
|
||||
<ul class="icons">
|
||||
{{ range .Site.Params.footer.social.links }}
|
||||
<li><a href="{{ .url }}" class="icon {{ .icon }}"><span class="label">{{ .label }}</span></a></li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
{{- /* Unfortunately I cannot find a way to determine if disableKinds
|
||||
is turned on, so I cannot check that for taxonomy or term.
|
||||
Instead I have to use this new parameter */}}
|
||||
{{- if (default false ($.Param "taxonomies_links")) }}
|
||||
|
||||
{{- with $.Site.Taxonomies }}
|
||||
<section class="taxonomy_list flexrow">
|
||||
<h2>View all:</h2>
|
||||
<div>
|
||||
{{- range $taxname, $taxterms := $.Site.Taxonomies }}
|
||||
{{- $url := ( printf "/%s/" ($taxname | urlize) ) | relURL }}
|
||||
<div class="tax_term"><a href="{{ $url }}">{{ $taxname | humanize }}</a></div>
|
||||
{{- end }}
|
||||
</div>
|
||||
</section>
|
||||
{{- end }}
|
||||
|
||||
{{- /* Only display the terms list if this page has some */}}
|
||||
{{- $.Scratch.Set "terms_present" false }}
|
||||
{{- range $taxname, $taxterms := $.Site.Taxonomies }}
|
||||
{{- range ($.Param $taxname) }}
|
||||
{{- $.Scratch.Set "terms_present" true }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if $.Scratch.Get "terms_present" }}
|
||||
<section class="taxonomy_list flexrow">
|
||||
<h2>Terms:</h2>
|
||||
<div>
|
||||
{{- range $taxname, $taxterms := $.Site.Taxonomies }}
|
||||
{{- range ($.Param $taxname) }}
|
||||
{{- $url := ( printf "/%s/#%s" ($taxname | urlize) ( . | urlize ) ) | relURL }}
|
||||
<div class="tax_term"><a href="{{ $url }}">{{ . | humanize }}</a></div>
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
</div>
|
||||
</section>
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
</div>
|
||||
{{ if not .Site.Params.footer.contact.hide }}
|
||||
<div>
|
||||
<section>
|
||||
<h2>{{ with .Site.Params.footer.contact.headline }}{{ . | markdownify }}{{ end }}</h2>
|
||||
<p>If you want to contact me, it’s easy…</br>
|
||||
You can visit any of my social networks on the left of this page, or you can make it happen on Delat Chat : all you have to do is scan the QR Code below with your Delta Chat application, then send me a message and I’ll reply as soon as I can.</p>
|
||||
<p class="align-center"><a href="OPENPGP4FPR:B309119B75596F78835A539C8E705C55786BCF4A#a=jme69%40vivaldi.net&n=Julie%C3%B1&i=gBb5CCCF9er&s=LGUxX9megUO" title="Contact me on Delta Chat" target="_blank"><img src="/delta-chat.webp" width="70%" height="70%" alt="Contact me on Delta Chat" /></a></p>
|
||||
<!-- <p class="align-center"><a href="https://matrix.to/#/@jme69:matrix.org" title="Contact me on Matrix" target="_blank"><img src="contact.webp" width="75%" height="75%" alt="Contact me on Matrix" /></a></p> -->
|
||||
<!-- <form method="post" action="//formspree.io/f/{{ with .Site.Params.footer.contact.formspreeID }}{{.}}{{ end }}" novalidate>
|
||||
<div class="field half first">
|
||||
<input type="text" name="name" required data-validation-required-message="{{ with .Site.Params.footer.contact.name.warning }}{{ . | markdownify}}{{ end }}" id="name" placeholder="{{ with .Site.Params.footer.contact.name.text }}{{ . | markdownify }}{{ end }}" />
|
||||
</div>
|
||||
<div class="field half">
|
||||
<input type="email" name="email" required data-validation-required-message="{{ with .Site.Params.footer.contact.email.warning }}{{ . | markdownify }}{{ end }}" id="email" placeholder="{{ with .Site.Params.footer.contact.email.text }}{{ . | markdownify }}{{ end }}" />
|
||||
</div>
|
||||
<div class="field">
|
||||
<textarea name="message" required data-validation-required-message="{{ with .Site.Params.footer.contact.message.warning }}{{ . | markdownify }}{{ end }}" id="message" rows="4" placeholder="{{ with .Site.Params.footer.contact.message.text }}{{ . | markdownify }}{{ end }}"></textarea>
|
||||
</div>
|
||||
<ul class="actions">
|
||||
<li><input type="submit" value="{{ .Site.Params.footer.contact.buttonText }}" class="special" /></li>
|
||||
<li><input type="reset" value="{{ .Site.Params.footer.contact.resetText }}" /></li>
|
||||
</ul>
|
||||
</form> -->
|
||||
</section>
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
<p class="copyright">
|
||||
© 2024, {{ with .Site.Params.footer.copyright.name }}{{ . | markdownify }}{{ end }}. Made with <a href="https://gohugo.io/" title="Hugo" target="_blank">Hugo</a>, theme largely based on <a href="https://github.com/kc0bfv/autophugo/" title="View on GitHub" target="_blank">AutoPhugo</a>.
|
||||
</p>
|
||||
</footer>
|
||||
34
themes/roazhon/layouts/partials/head.html
Normal file
34
themes/roazhon/layouts/partials/head.html
Normal file
@@ -0,0 +1,34 @@
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
|
||||
<meta name="keywords" content="{{ with .Site.Params.keywords }}{{ . }}{{ end }}">
|
||||
|
||||
{{ $description := $.Param "description" }}
|
||||
{{- with $description }}<meta name="description" content="{{ . }}">{{ end }}
|
||||
{{ $author := .Params.author.name | default .Site.Author.name }}
|
||||
{{- with $author }}<meta name="author" content="{{ . }}">{{ end }}
|
||||
<link rel="icon" href="{{ .Site.Params.favicon | relURL }}">
|
||||
<link rel="shortcut icon" href="{{ .Site.Params.favicon | relURL }}">
|
||||
|
||||
{{- partial "scratch_set_retalbumthumb.html" . }}
|
||||
{{- /* Note that the Scratch below must come from . context, not $ */}}
|
||||
{{- .Scratch.Set "image" (.Scratch.Get "retalbumthumb") }}
|
||||
|
||||
{{- partial "opengraph_twittercard.html" . }}
|
||||
|
||||
<meta name="robots" content="index,follow">
|
||||
<meta name="referrer" content="origin-when-cross-origin">
|
||||
{{ with .Site.Params.googlesiteverification }}<meta name="google-site-verification" content="{{ . }}">{{ end }}
|
||||
{{ with .Site.Params.msvalidate }}<meta name="msvalidate.01" content="{{ . }}">{{ end }}
|
||||
{{ hugo.Generator }}
|
||||
{{ with .OutputFormats.Get "RSS" }}
|
||||
<link href="{{ .RelPermalink }}" rel="alternate" type="application/rss+xml" title="{{ $.Site.Title }}" />
|
||||
<link href="{{ .RelPermalink }}" rel="feed" type="application/rss+xml" title="{{ $.Site.Title }}" />
|
||||
{{ end }}
|
||||
|
||||
{{- $font_awesome := resources.Get "css/fontawesome/all.css" -}}
|
||||
{{- $google_font := resources.Get "css/source-sans-pro.css" -}}
|
||||
{{- $main_css := resources.Get "css/main.css" -}}
|
||||
{{- $mg_pop_css := resources.Get "css/magnific-popup.css" -}}
|
||||
{{- $user_css := resources.Get "css/user.css" -}}
|
||||
{{- $custom_css := slice $font_awesome $google_font $main_css $mg_pop_css $user_css | resources.Concat "css/custom.css" | resources.Minify | resources.Fingerprint -}}
|
||||
<link rel="stylesheet" href="{{ $custom_css.RelPermalink }}" integrity="{{ $custom_css.Data.Integrity }}"/>
|
||||
39
themes/roazhon/layouts/partials/header.html
Normal file
39
themes/roazhon/layouts/partials/header.html
Normal file
@@ -0,0 +1,39 @@
|
||||
<header id="header">
|
||||
<h1>
|
||||
|
||||
<!-- Grab the base URL, pull out the path, then count directories -->
|
||||
{{- $base_url_parsed := urls.Parse .Site.BaseURL -}}
|
||||
{{- $base_dir := trim $base_url_parsed.Path "/" -}}
|
||||
{{- $base_part_cnt := cond (ne $base_dir "") (len (split $base_dir "/" )) 0 -}}
|
||||
|
||||
<!-- Grab the current URL, separate it out -->
|
||||
{{- $url_parsed := urls.Parse .Permalink -}}
|
||||
{{- $trimmed_url := trim $url_parsed.Path "/" -}}
|
||||
{{- $pre_url_parts := split $trimmed_url "/" -}}
|
||||
{{- $pre_part_count := len $pre_url_parts -}}
|
||||
|
||||
<!-- Drop the part of the current URL that's the base URL -->
|
||||
{{- $url_parts := last (sub $pre_part_count $base_part_cnt) $pre_url_parts -}}
|
||||
{{- $part_count := len $url_parts -}}
|
||||
|
||||
<!-- Determine how much of the URL to use (sometimes last part is blank) -->
|
||||
{{- $last_part := index $url_parts (sub $part_count 1) -}}
|
||||
{{- $use_part_cnt := cond (eq (trim $last_part " ") "") (sub $part_count 1) $part_count -}}
|
||||
|
||||
<!-- Determine whether to use URL components or titles for breadcrumb -->
|
||||
{{- $crumb_is_title := .Site.Params.breadcrumb_use_title | default false -}}
|
||||
|
||||
<!-- Build the breadcrumb - base URL link, path links for each dir, cur location text -->
|
||||
<a href="{{ .Site.BaseURL }}"><strong>{{ .Site.Title }}</strong></a>
|
||||
{{- if gt $use_part_cnt 0 -}}
|
||||
{{- range $cur_ind, $element := first (sub $use_part_cnt 1) $url_parts -}}
|
||||
{{- $path := string (delimit (first (add $cur_ind 1) $url_parts) "/") -}}
|
||||
{{- $part := $element | humanize }}
|
||||
/ <a href="{{ $.Site.BaseURL }}{{ $path }}"><strong>{{ cond $crumb_is_title ((($.Site.GetPage $path).Title) | default $part) $part }}</strong></a>
|
||||
{{- end -}}
|
||||
{{- $cur_part := (index $url_parts (sub $use_part_cnt 1)) | humanize }}
|
||||
/ {{ cond $crumb_is_title (.Title | default $cur_part) $cur_part }}
|
||||
{{- end }}
|
||||
</h1>
|
||||
{{ partial "navigation.html" . }}
|
||||
</header>
|
||||
1
themes/roazhon/layouts/partials/lang.html
Normal file
1
themes/roazhon/layouts/partials/lang.html
Normal file
@@ -0,0 +1 @@
|
||||
<html lang="{{ with .Site.LanguageCode }}{{ . }}{{ else }}en-US{{ end }}">
|
||||
7
themes/roazhon/layouts/partials/navigation.html
Normal file
7
themes/roazhon/layouts/partials/navigation.html
Normal file
@@ -0,0 +1,7 @@
|
||||
<nav>
|
||||
<ul>
|
||||
{{ range .Site.Params.header.links }}
|
||||
<li><a href="{{ .url }}" class="icon {{ .icon }}">{{ .name }}</a></li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
</nav>
|
||||
19
themes/roazhon/layouts/partials/opengraph_twittercard.html
Normal file
19
themes/roazhon/layouts/partials/opengraph_twittercard.html
Normal file
@@ -0,0 +1,19 @@
|
||||
{{- $description := $.Param "description" }}
|
||||
|
||||
<meta name="twitter:card" content="summary_large_image"/>
|
||||
<meta name="twitter:image" content="{{ (.Scratch.Get "image").Permalink }}"/>
|
||||
<meta name="twitter:title" content="{{ with .Title }}{{ . }} - {{ end }}{{ .Site.Title }}"/>
|
||||
{{- with $description }}<meta name="twitter:description" content="{{ . }}">{{ end }}
|
||||
{{- with .Site.Social.twitter }}<meta name="twitter:site" content="@{{ . }}"/>{{- end }}
|
||||
|
||||
|
||||
<meta property="og:title" content="{{ with .Title }}{{ . }} - {{ end }}{{ .Site.Title }}"/>
|
||||
{{- with $description }}<meta property="og:description" content="{{ . }}">{{ end }}
|
||||
<meta property="og:type" content="{{ if .IsPage }}article{{ else }}website{{ end }}" />
|
||||
<meta property="og:url" content="{{ .Permalink }}" />
|
||||
<meta property="og:image" content="{{ (.Scratch.Get "image").Permalink }}"/>
|
||||
{{- with .Params.locale }}<meta property="og:locale" content="{{ . }}" />{{ end }}
|
||||
{{- with .Site.Title }}<meta property="og:site_name" content="{{ . }}" />{{ end }}
|
||||
|
||||
{{- /* Facebook Page Admin ID for Domain Insights */}}
|
||||
{{- with .Site.Social.facebook_admin }}<meta property="fb:admins" content="{{ . }}" />{{ end }}
|
||||
105
themes/roazhon/layouts/partials/render_img_column_flexrow.html
Normal file
105
themes/roazhon/layouts/partials/render_img_column_flexrow.html
Normal file
@@ -0,0 +1,105 @@
|
||||
{{- /* This partial requires input context to have a Scratch with "content"
|
||||
|
||||
$.Scratch.Get "content" must return a slice (array) of object maps
|
||||
|
||||
Those objects need a "type" key, which can be "link" or something else.
|
||||
|
||||
See below to see what needs to be in those different types
|
||||
*/}}
|
||||
|
||||
<div class="flexrow">
|
||||
|
||||
{{- $column_count := default 3 ($.Param "column_count") }}
|
||||
{{- $downloadable := default false ($.Param "images_downloadable") }}
|
||||
{{- $orig_download := default false ($.Param "images_downloadable_use_orig") }}
|
||||
|
||||
{{- /* Initialize the column storage */}}
|
||||
{{- range $column_ind := seq $column_count }}
|
||||
{{- $st_name := printf "col-%d" $column_ind }}
|
||||
{{- $st_height_name := printf "col-height-%d" $column_ind }}
|
||||
{{- $.Scratch.Set $st_name (slice) }}
|
||||
{{- $.Scratch.Set $st_height_name 0 }}
|
||||
{{- end }}
|
||||
|
||||
|
||||
{{- /* Add the sections into the columns followed by images */}}
|
||||
{{- range $elem_index, $elem_val := $.Scratch.Get "content" }}
|
||||
{{- /* Find the least-filled column */}}
|
||||
{{- $.Scratch.Set "min_height" -1 }}
|
||||
{{- $.Scratch.Set "min_col" -1 }}
|
||||
{{- range $column_ind := seq $column_count }}
|
||||
{{- $st_height_name := printf "col-height-%d" $column_ind }}
|
||||
{{- $col_height := $.Scratch.Get $st_height_name }}
|
||||
{{- $min_height := $.Scratch.Get "min_height" }}
|
||||
{{- if (or (eq $min_height -1) (lt $col_height $min_height)) }}
|
||||
{{- $.Scratch.Set "min_height" $col_height }}
|
||||
{{- $.Scratch.Set "min_col" $column_ind }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{- /* column_ind becomes the least-filled column */}}
|
||||
{{- $column_ind := $.Scratch.Get "min_col" }}
|
||||
{{- if eq $column_ind -1 }}
|
||||
{{- errorf (printf "When processing '%s', failed to find a least-filled column!" $.Page.File.Path) }}
|
||||
{{- end }}
|
||||
{{- $st_name := printf "col-%d" $column_ind }}
|
||||
{{- $st_height_name := printf "col-height-%d" $column_ind }}
|
||||
|
||||
{{- /* Create a new version of the elem_val with an index reflecting position now, well after sorting is complete, and as we're placing things */}}
|
||||
{{- $reind_val := merge $elem_val (dict "index" $elem_index) }}
|
||||
|
||||
{{- $column := $.Scratch.Get $st_name }}
|
||||
{{- $column := $column | append $reind_val }}
|
||||
{{- $.Scratch.Set $st_name $column }}
|
||||
|
||||
{{- $.Scratch.Set $st_height_name (add ($.Scratch.Get $st_height_name) $reind_val.thumb.Height) }}
|
||||
{{- end }}
|
||||
|
||||
{{- /* Output the images in columns */}}
|
||||
{{- range $column_ind := seq $column_count }}
|
||||
{{- $st_name := printf "col-%d" $column_ind }}
|
||||
{{- $column := $.Scratch.Get $st_name }}
|
||||
<div class="flexcol">
|
||||
{{- range $column }}
|
||||
{{- $filename := path.Base .image.Name }}
|
||||
<article class="thumb">
|
||||
{{- if (eq .type "link") }}
|
||||
<a href="{{ .link }}" class="link" tabindex="0"><img src="{{ .thumb.RelPermalink }}" alt="{{ .title }}" /></a>
|
||||
<h2 class="overlay">{{ .title }}</h2>
|
||||
{{- else }}
|
||||
<a class="gallery-item" phototitle="{{ .phototitle }}"
|
||||
{{ printf "description='%s'" (.description | markdownify) | safeHTMLAttr }}
|
||||
gallery_index="{{ .index }}"
|
||||
id="{{ md5 $filename }}"
|
||||
downloadable="{{ cond $downloadable "true" "false" }}"
|
||||
{{- if $downloadable }}
|
||||
download_file="{{ (cond $orig_download .orig .full).RelPermalink }}"
|
||||
{{- end }}
|
||||
orig_name="{{ $filename }}"
|
||||
href="{{ .full.RelPermalink }}">
|
||||
<div id="image_number_{{ .index }}" class="gallery-item-marker"></div>
|
||||
<img src="{{ .thumb.RelPermalink }}"
|
||||
{{- with .alt }} alt="{{ . }}"{{ end }}>
|
||||
{{- with .description }}
|
||||
<div class="invis_desc">{{ (. | markdownify) | safeHTMLAttr }}</div>
|
||||
{{- end }}
|
||||
</a>
|
||||
{{- if (default false ($.Param "taxonomies_links")) }}
|
||||
<div class="caption_tax">
|
||||
{{- range $taxname, $terms := .taxonomies }}
|
||||
{{- range $terms }}
|
||||
<div class="tax_term">
|
||||
{{- $url := ( printf "/%s/#%s" ($taxname | urlize) ( . | urlize ) ) | relURL }}
|
||||
<a href="{{ $url }}">{{ . | humanize }}</a>
|
||||
</div>
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
</div>
|
||||
{{- end }}
|
||||
<h2>{{ .phototitle }}</h2>
|
||||
{{- end }}
|
||||
</article>
|
||||
{{- end }}
|
||||
</div>
|
||||
{{- end }}
|
||||
</div>
|
||||
@@ -0,0 +1,27 @@
|
||||
{{- /*
|
||||
Sets retalbumthumb in .Scratch to the correct albumthumb.
|
||||
PLEASE NOTE: partials can only get local "dot" . context, they
|
||||
do not get the global $ context. Therefore, you must get the returned
|
||||
scratch data from the . context, not from $.
|
||||
|
||||
Requires . to be set to the right section.
|
||||
*/}}
|
||||
|
||||
{{- .Scratch.Delete "retalbumthumb" }}
|
||||
|
||||
{{- /* If no albumthumb is set, get the first image*/}}
|
||||
{{- if or (not (isset .Params "albumthumb")) (eq .Params.albumthumb "") }}
|
||||
{{- with .File }}
|
||||
{{- $.Scratch.Set "imgglob" (printf "%s" (path.Join .Dir "**")) }}
|
||||
{{- end }}
|
||||
{{- $imgglob := default "**" ($.Scratch.Get "imgglob") }}
|
||||
{{- $imageresources := where (resources.Match $imgglob) "ResourceType" "image" }}
|
||||
{{- .Scratch.Set "retalbumthumb" (index $imageresources 0) }}
|
||||
{{- end }}
|
||||
|
||||
{{- /* Otherwise get the albumthumb*/}}
|
||||
{{- with .Params.albumthumb }}
|
||||
{{- $image := resources.Get . }}
|
||||
{{- /* The $ here with Scratch means the context outside the with */}}
|
||||
{{- $.Scratch.Set "retalbumthumb" $image }}
|
||||
{{- end }}
|
||||
6
themes/roazhon/layouts/partials/scripts.html
Normal file
6
themes/roazhon/layouts/partials/scripts.html
Normal file
@@ -0,0 +1,6 @@
|
||||
{{- $jquery := resources.Get "js/jquery.min.js" -}}
|
||||
{{- $mg_pop := resources.Get "js/jquery.magnific-popup.js" -}}
|
||||
{{- $main := resources.Get "js/main.js" -}}
|
||||
{{- $util := resources.Get "js/util.js" -}}
|
||||
{{- $custom_js := slice $jquery $mg_pop $main $util | resources.Concat "js/custom.js" | resources.Minify | resources.Fingerprint -}}
|
||||
<script src="{{ $custom_js.RelPermalink }}" integrity="{{ $custom_js.Data.Integrity }}"></script>
|
||||
Reference in New Issue
Block a user