diff --git a/modules/wowchemy/layouts/index.html b/modules/wowchemy/layouts/index.html index d58663c4..d70b7e4e 100644 --- a/modules/wowchemy/layouts/index.html +++ b/modules/wowchemy/layouts/index.html @@ -18,10 +18,11 @@ {{/* Generate homepage. */}} {{ if eq .Type "book" }} {{ partial "book_layout.html" . }} -{{ else if eq .Type "widget_page" }} - {{ partial "widget_page.html" . }} -{{ else }} +{{ else if eq .Type "landing" }} {{ partial "landing_page.html" . }} +{{ else }} + {{/* If no homepage file is present, fallback to legacy widget page */}} + {{ partial "widget_page.html" . }} {{ end }} {{- end -}} diff --git a/modules/wowchemy/layouts/partials/blocks/collection.html b/modules/wowchemy/layouts/partials/blocks/collection.html new file mode 100644 index 00000000..519d34c8 --- /dev/null +++ b/modules/wowchemy/layouts/partials/blocks/collection.html @@ -0,0 +1,121 @@ +{{/* Wowchemy Blocks: Collection */}} +{{/* Documentation: https://wowchemy.com/blocks/ */}} +{{/* License: https://github.com/wowchemy/wowchemy-hugo-themes/blob/main/LICENSE.md */}} + +{{/* Initialise */}} +{{ $page := .wcPage }} +{{ $block := .wcBlock }} + +{{ $items_offset := $block.content.offset | default 0 }} +{{ $items_count := $block.content.count }} +{{ if eq $items_count 0 }} + {{ $items_count = 65535 }} +{{ else }} + {{ $items_count = $items_count | default 5 }} +{{ end }} + +{{/* Query */}} +{{ $query := site.RegularPages }} +{{ $archive_page := "" }} + +{{/* Filters */}} +{{ if $block.content.page_type }} + {{ $query = where $query "Type" $block.content.page_type }} + {{ $archive_page = site.GetPage "Section" $block.content.page_type }} +{{ end }} +{{ if $block.content.filters.folders }} + {{ $folders := $block.content.filters.folders }} + {{ $query = where $query "Section" "in" $folders }} + {{/* Init archive page to main folder */}} + {{ $main_folder := index $folders 0 }} + {{ $archive_page = site.GetPage "Section" $main_folder }} +{{ end }} +{{ if $block.content.filters.tag }} + {{ $archive_page = site.GetPage (printf "tags/%s" (urlize $block.content.filters.tag)) }} + {{ $query = $query | intersect $archive_page.Pages }} +{{ end }} +{{ if $block.content.filters.category }} + {{ $archive_page = site.GetPage (printf "categories/%s" (urlize $block.content.filters.category)) }} + {{ $query = $query | intersect $archive_page.Pages }} +{{ end }} +{{ if $block.content.filters.publication_type }} + {{ $archive_page = site.GetPage (printf "publication_types/%s" $block.content.filters.publication_type) }} + {{ $query = $query | intersect $archive_page.Pages }} +{{ end }} +{{ if $block.content.filters.author }} + {{ $archive_page = site.GetPage (printf "authors/%s" (urlize $block.content.filters.author)) }} + {{ $query = $query | intersect $archive_page.Pages }} +{{ end }} +{{ if $block.content.filters.featured_only }} + {{ $query = where $query "Params.featured" "==" true }} +{{ end }} +{{ if $block.content.filters.exclude_featured }} + {{ $query = where $query "Params.featured" "!=" true }} +{{ end }} +{{ if $block.content.filters.exclude_past }} + {{ $query = where $query "Date" ">=" now }} +{{ end }} +{{ if $block.content.filters.exclude_future }} + {{ $query = where $query "Date" "<" now }} +{{ end }} + +{{ $count := len $query }} + +{{/* Sort */}} +{{ $sort_by := $block.content.sort_by | default "Date" }} +{{ $sort_ascending := $block.content.sort_ascending | default (eq $block.content.order "asc") | default false }} +{{ $sort_order := cond $sort_ascending "asc" "desc" }} +{{ $query = sort $query $sort_by $sort_order }} + +{{/* Offset and Limit */}} +{{ if gt $items_offset 0 }} + {{ $query = first $items_count (after $items_offset $query) }} +{{ else }} + {{ $query = first $items_count $query }} +{{ end }} + +{{ $columns := $block.design.columns | default "2" }} + +
+ + {{ with $block.content.text }}{{ . }}{{ end }} + + {{ range $index, $item := $query }} + {{ partial "functions/render_view" (dict "page" $block "item" . "view" ($block.design.view | default "compact") "index" $index) }} + {{end}} + + {{/* Archive link */}} + {{ $show_archive_link := $block.content.archive.enable | default (gt $count $items_count) }} + {{ if $show_archive_link | and $archive_page }} + + {{ $archive_link := "" }} + {{ if $block.content.archive.link }} + {{ $archive_link = $block.content.archive.link | relLangURL }} + {{ else }} + {{ $archive_link = $archive_page.RelPermalink }} + {{ end }} + + {{/* Localisation */}} + {{ $items_type := $archive_page.Type }} + {{ $i18n := "" }} + {{ if eq $items_type "post" }} + {{ $i18n = "more_posts" }} + {{ else if eq $items_type "event" }} + {{ $i18n = "more_talks" }} + {{ else if eq $items_type "publication" }} + {{ $i18n = "more_publications" }} + {{ else }} + {{ $i18n = "more_pages" }} + {{ end }} + + {{ $archive_text := $block.content.archive.text | default (i18n $i18n) | default "See all" }} + +
+ + {{ $archive_text | emojify }} + + +
+ {{ end }} + +
diff --git a/modules/wowchemy/layouts/partials/blocks/contact.html b/modules/wowchemy/layouts/partials/blocks/contact.html new file mode 100644 index 00000000..ce2b96ca --- /dev/null +++ b/modules/wowchemy/layouts/partials/blocks/contact.html @@ -0,0 +1,169 @@ +{{/* Wowchemy Blocks: Contact */}} +{{/* Documentation: https://wowchemy.com/blocks/ */}} +{{/* License: https://github.com/wowchemy/wowchemy-hugo-themes/blob/main/LICENSE.md */}} + +{{/* Initialise */}} +{{ $page := .wcPage }} +{{ $block := .wcBlock }} +{{ $autolink := default true $block.content.autolink }} +{{ $data := $block.content }} + +{{ $form_provider := lower $block.content.form.provider | default "" }} + +{{ $use_netlify_form := eq $form_provider "netlify" }} +{{ $use_formspree_form := eq $form_provider "formspree" }} +{{ $use_form := or $use_netlify_form $use_formspree_form }} + +{{ $use_netlify_captcha := $block.content.form.netlify.captcha | default true }} +{{ $use_formspree_captcha := $block.content.form.formspree.captcha | default false }} + +{{ $columns := $block.design.columns | default "2" }} + +{{ if and $use_formspree_form $use_formspree_captcha }} + +{{ end }} + +
+ {{ with $block.content.text }}{{ . }}{{ end }} + + {{ if $use_form }} + + {{ $post_action := "" }} + {{ if $use_netlify_form }} + {{ $post_action = "netlify" }} + {{ else if $use_formspree_form }} + {{ if not $block.content.form.formspree.id }} + {{ errorf "You have chosen to use Formspree as the provider for the contact form. Please set your Formspree Form ID in the Contact widget or disable the form.\nDocumentation: https://wowchemy.com/docs/widget/contact/" }} + {{ end }} + {{ if and $use_formspree_captcha (not $block.content.form.formspree.captcha_key) }} + {{ errorf "You have chosen to use reCAPTCHA for Formspree. Please set your Formspree CAPTCHA KEY in the Contact widget or disable reCAPTCHA.\nDocumentation: https://help.formspree.io/hc/en-us/articles/360022811154" }} + {{ end }} + {{ $post_action = printf "action=\"https://formspree.io/f/%s\"" $block.content.form.formspree.id }} + {{ end }} + +
+
+
+ + +
+
+ + +
+
+ + +
+ {{ if $block.content.form.netlify.attachments }} +
+ + +
+ {{ end }} +
+ +
+ {{ if and $use_netlify_form $use_netlify_captcha }} +
+ {{ else if and $use_formspree_form $use_formspree_captcha }} +
+
+ {{ end }} + +
+
+ {{ end }} + + + + {{ if and site.Params.features.map.provider $data.coordinates.latitude }} +
+ + + + + + +
+
+ {{ end }} + +
diff --git a/modules/wowchemy/layouts/partials/blocks/tag_cloud.html b/modules/wowchemy/layouts/partials/blocks/tag_cloud.html new file mode 100644 index 00000000..38349539 --- /dev/null +++ b/modules/wowchemy/layouts/partials/blocks/tag_cloud.html @@ -0,0 +1,47 @@ +{{/* Wowchemy Blocks: Tag Cloud */}} +{{/* Documentation: https://wowchemy.com/blocks/ */}} +{{/* License: https://github.com/wowchemy/wowchemy-hugo-themes/blob/main/LICENSE.md */}} + +{{/* Initialise */}} +{{ $page := .wcPage }} +{{ $block := .wcBlock }} +{{ $taxonomy := $block.content.taxonomy | default "tags" }} +{{ $fontSmall := $block.design.font_size_min | default 0.8 }} +{{ $fontBig := $block.design.font_size_max | default 2.5 }} + +{{ $items_count := $block.content.count }} +{{ if eq $items_count 0 }} + {{ $items_count = 65535 }} +{{ else }} + {{ $items_count = $items_count | default 20 }} +{{ end }} + +{{/* Query */}} +{{ $tags := first $items_count (index site.Taxonomies $taxonomy).ByCount }} +{{ $count := len $tags }} + +{{ $columns := $block.design.columns | default "2" }} + +
+ {{ with $block.content.text }}{{ . | markdownify }}{{ end }} + + {{ if ne $count 0 }} + + {{ $fontDelta := sub $fontBig $fontSmall }} + {{/* Warning: Hugo's `Reverse` function appears to operate in-place, hence the order of performing $max/$min matters. */}} + {{ $max := add (len (index $tags 0).Pages) 1 }} + {{ $min := len (index ($tags).Reverse 0).Pages }} + {{ $delta := sub $max $min }} + {{ $fontStep := div $fontDelta $delta }} + +
+ {{ range $name, $term := (sort $tags ".Page.Title" "asc") }} + {{ $tagCount := len $term.Pages }} + {{ $weight := div (sub (math.Log $tagCount) (math.Log $min)) (sub (math.Log $max) (math.Log $min)) }} + {{ $fontSize := add $fontSmall (mul (sub $fontBig $fontSmall) $weight) }} + {{ .Page.Title }} + {{ end }} +
+ {{ end }} + +
diff --git a/modules/wowchemy/layouts/partials/functions/parse_block_v2.html b/modules/wowchemy/layouts/partials/functions/parse_block_v2.html index 0a5d4fa0..2f67597d 100644 --- a/modules/wowchemy/layouts/partials/functions/parse_block_v2.html +++ b/modules/wowchemy/layouts/partials/functions/parse_block_v2.html @@ -49,7 +49,7 @@ {{ end }} {{ $style_bg = printf "%sbackground-image: url('%s');" $style_bg $bg_img.Permalink }} {{ else }} - {{ errorf "Couldn't find `%s` in the `assets/media/` folder - please add it." $bg.image }} + {{ errorf "Couldn't find `%s` in the `assets/media/` folder - please add it." $bg.image.filename }} {{ end }} {{ with $bg.image.size }} {{/* Allow sizes: actual, cover, and contain. */}} @@ -81,7 +81,7 @@ {{ end }} {{/* Fix Hugo's ContentBaseName returning wrong file base name when page section is within a bundle. */}} -{{ $hash_id := replace $block.File.ContentBaseName "index" (path.Base .File.Dir) }} +{{ $hash_id := $block.id | default (printf "section-%s" $block.block) }} {{ $widget_args := dict "wcPage" $page "wcBlock" $block "wcIdentifier" $hash_id }} {{ $css_classes := $block.design.css_class | default $block.Params.advanced.css_class | default "" }} @@ -114,17 +114,17 @@ {{if $use_container}}
{{end}} {{if $use_cols}} -
- {{ if $block.Title }} +
+ {{ if $block.content.title }} {{ if eq $columns "1" }}
- {{ with $block.Title }}

{{ . | markdownify | emojify }}

{{ end }} - {{ with $block.Params.subtitle }}

{{ . | markdownify | emojify }}

{{ end }} + {{ with $block.content.title }}

{{ . | markdownify | emojify }}

{{ end }} + {{ with $block.content.subtitle }}

{{ . | markdownify | emojify }}

{{ end }}
{{else}}
- {{ with $block.Title }}

{{ . | markdownify | emojify }}

{{ end }} - {{ with $block.Params.subtitle }}

{{ . | markdownify | emojify }}

{{ end }} + {{ with $block.content.title }}

{{ . | markdownify | emojify }}

{{ end }} + {{ with $block.content.subtitle }}

{{ . | markdownify | emojify }}

{{ end }}
{{end}} {{end}}