diff --git a/.gitignore b/.gitignore index 603dac4..6e55a5a 100644 --- a/.gitignore +++ b/.gitignore @@ -38,3 +38,4 @@ resources/_gen/ .wireit .favorites.json *.code-workspace +config/gargulus diff --git a/assets/ananke/socials/envelope.svg b/assets/ananke/socials/envelope.svg new file mode 100644 index 0000000..bf8ea45 --- /dev/null +++ b/assets/ananke/socials/envelope.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/config/_default/params.toml b/config/_default/params.toml new file mode 100644 index 0000000..99035ab --- /dev/null +++ b/config/_default/params.toml @@ -0,0 +1,33 @@ +[ananke.social] +icon_path = "ananke/socials/%s.svg" + +[ananke.social.follow] +new_window_icon = false # show a little "opens in new window" icon next to the link +networks = [ + "facebook", + "bluesky", + "linkedin" +] + +# social media network setups +[[ananke.social.networks]] +slug = "facebook" +label = "Facebook" +profile = "https://www.facebook.com/%s" +icon = "facebook" # font awesome brand icon name + +[[ananke.social.networks]] +slug = "bluesky" +label = "Bluesky" +profile = "https://bsky.app/profile/%s" +icon = "bluesky" # font awesome brand icon name + +[[ananke.social.networks]] +slug = "linkedin" +label = "LinkedIn" +profile = "http://linkedin.com/in/%s" +icon = "linkedin" # font awesome brand icon name + +# optional config parameters +# [[ananke.social.networks]] +# rel = "noopener" # set to noopener by default, could contain `me` and other values diff --git a/exampleSite/config.toml b/exampleSite/config.toml index 2149a7f..63c06e7 100644 --- a/exampleSite/config.toml +++ b/exampleSite/config.toml @@ -38,6 +38,12 @@ description = "The last theme you'll ever need. Maybe." background_color_class = "bg-black" recent_posts_number = 3 -[[params.ananke_socials]] -name = "twitter" -url = "https://twitter.com/GoHugoIO" +[params.ananke.social] +[params.ananke.social.facebook] +username = "patrick.kollitsch" + +[params.ananke.social.linkedin] +username = "patrickkollitsch" + +[params.ananke.social.bluesky] +username = "kollitsch.dev" diff --git a/layouts/partials/site-footer.html b/layouts/partials/site-footer.html index 0fe6aa8..ce46f14 100644 --- a/layouts/partials/site-footer.html +++ b/layouts/partials/site-footer.html @@ -3,6 +3,6 @@ © {{ with .Site.Copyright | default .Site.Title }} {{ . | safeHTML }} {{ now.Format "2006"}} {{ end }} -
{{ partial "social-follow.html" . }}
+
{{ partialCached "social/follow.html" . }}
diff --git a/layouts/partials/site-navigation.html b/layouts/partials/site-navigation.html index a1500a1..c385978 100644 --- a/layouts/partials/site-navigation.html +++ b/layouts/partials/site-navigation.html @@ -20,7 +20,7 @@ {{ end }} {{ end }} - {{ partialCached "social-follow.html" . }} + {{ partialCached "social/follow.html" . }} diff --git a/layouts/partials/social-follow.html b/layouts/partials/social-follow.html deleted file mode 100644 index b53318f..0000000 --- a/layouts/partials/social-follow.html +++ /dev/null @@ -1,14 +0,0 @@ -{{ $socials := where (partialCached "func/socials/Get" "socials/Get") "follow" "!=" false }} -
- {{ range $socials }} - {{ $rel := .rel | default "noopener" }} - - {{ with .icon }} - {{ . }} - {{ else }} - {{ .label }} - {{ end }} - {{- partial "new-window-icon.html" . -}} - - {{ end }} -
diff --git a/layouts/partials/social-share.html b/layouts/partials/social-share.html index 14ae033..d8cf7dc 100644 --- a/layouts/partials/social-share.html +++ b/layouts/partials/social-share.html @@ -3,7 +3,7 @@ {{ $facebook_href := printf "https://www.facebook.com/sharer.php?u=%s" $url }} {{ $twitter_href := printf "https://twitter.com/intent/tweet?url=%s&text=%s" $url $title }} -{{ with site.Social.twitter }} +{{ with site.Params.Social.twitter }} {{ $twitter_href = printf "%s&via=%s" $twitter_href . }} {{ end }} {{ $linkedin_href := printf "https://www.linkedin.com/shareArticle?mini=true&url=%s&title=%s" $url $title }} diff --git a/layouts/partials/social/follow.html b/layouts/partials/social/follow.html new file mode 100644 index 0000000..b9227b4 --- /dev/null +++ b/layouts/partials/social/follow.html @@ -0,0 +1,65 @@ +{{- $context := . -}} + +{{- $config := site.Params.ananke.social -}} +{{- $networks := $config.follow.networks -}} +{{- $setups := (collections.Where $config.networks "slug" "in" $networks) -}} +{{/* This here is an ugly workaround for GoHugo's missing sortByArray feature. + Let's cache it so it does not take away too much time. + PS: It's also a couple of years old, so maybe there is a better solution by now. */}} +{{- $setups = partials.IncludeCached "func/sortNetworks.html" (dict "networks" $networks "setups" $setups) "social-follow" -}} + +
+ {{- range $setups -}} + {{- $setup := . -}} + {{- $network := $setup.slug -}} + {{- $profile := index $config $network -}} + {{- $rel := $setup.rel | default "noopener" -}} + {{- $link := (printf $setup.profile $profile.username) -}} + {{- $languageDirection := cond (eq $.Site.Language.LanguageDirection "rtl") "ml1" "mr1" -}} + + {{- with .icon -}} + {{- $icon := resources.Get (printf "ananke/socials/%s.svg" .) -}} + {{- with $icon -}} + + {{ .Content | safeHTML }} + {{/* @todo indicator for missing or misconfigured icon */}} + + {{- end -}} + {{- else -}} + {{- .label -}} + {{- end -}} + {{- with $config.follow.new_window_icon -}} + {{- partial "new-window-icon.html" . -}} + {{- end -}} + + {{- end -}} +
+ +{{ define "partials/func/sortNetworks.html" }} + {{- /* + + Sorting a list of social networks defined by the order in `networks`. + Only networks present in both `networks` and `setups` will be included. Items missing from `networks` are ignored. + Use `networks` to setup the order of the networks and which network to enable. + + Usage: {{ $setups = partials.IncludeCached "func/sortNetworks.html" (dict "networks" $networks "setups" $setups) }} + + See also `config/_default/params.toml` > `ananke.social` for details. + + */ -}} + {{- $networks := .networks -}} + {{- $setups := .setups -}} + {{- $output := collections.Slice -}} + {{- range $networks -}} + {{- $network := . -}} + {{- range $setups -}} + {{- if compare.Eq .slug $network -}} + {{- $output = $output | collections.Append . -}} + {{- end -}} + {{- end -}} + {{- end -}} + {{- return $output -}} +{{- end -}} diff --git a/package.json b/package.json index f8a7e69..8433a41 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "command": "commit-and-tag-version --sign -a -t \"v\" --releaseCommitMessageFormat \"chore(release): v{{currentTag}}\" --prerelease prerelease -- --no-verify" }, "server": { - "command": "cd exampleSite; rm -rf public; hugo server -D -E -F --disableFastRender --verbose --logLevel debug --debug --tlsAuto --panicOnWarning" + "command": "cd exampleSite; rm -rf public; hugo server -D -E -F --environment gargulus --disableFastRender --verbose --logLevel debug --debug --tlsAuto --panicOnWarning" } } }