diff --git a/content/styleguide/index.md b/content/styleguide/index.md index b570d3e..9ee381b 100644 --- a/content/styleguide/index.md +++ b/content/styleguide/index.md @@ -261,7 +261,7 @@ An epigram-style blockquote shortcode. {{< blockquote source="Source" title="Film title" - schemaType="Movie" + itemtype="Movie" style="epigram" >}} A blockquote shortcode. @@ -270,9 +270,9 @@ A blockquote shortcode. {{< blockquote source="Source" title="Chapter title" - schemaType="Chapter" + itemtype="Chapter" titleSeries="Book title" - schemaTypeSeries="Book" + itemtypeSeries="Book" style="epigram" >}} A blockquote shortcode. @@ -281,9 +281,9 @@ A blockquote shortcode. {{< blockquote source="Source" title="TV episode title" - schemaType="TVEpisode" + itemtype="TVEpisode" titleSeries="TV series title" - schemaTypeSeries="TVSeries" + itemtypeSeries="TVSeries" numberSeries="S01E01" style="epigram" >}} diff --git a/layouts/partials/cite.html b/layouts/partials/cite.html index c53609c..c6ac91a 100644 --- a/layouts/partials/cite.html +++ b/layouts/partials/cite.html @@ -1,6 +1,9 @@ {{- /* Renders a work citation with semantic markup, called using the `cite` shortcode. + @params sc Site context. + @params pc Page context. + @params cite URI for work. Optional. @params citeStyle Force a citation style. Optional. @params href URI for citation, or 'asCite' to use value of `cite`. Optional. @@ -9,18 +12,27 @@ @params title Title of the work to display. @params titleLang Language code of a foreign-language work's title. Optional. @params titleTr English translation of a foreign-language work's title. Optional. + + For works cited that form part of a series (optional): + @params itemtypeSeries The Schema.org `itemtype` value for the work series. Default 'CreativeWork'. Optional. + @params titleSeries Title of the work series to display. Optional. + @params citeSeries URI for work series. Optional. + @params titleSeriesLang Language code of a foreign-language work series' title. Optional. + @params titleSeriesTr English translation of a foreign-language work series' title. Optional. + @params numberSeries The number or code of the quoted work within its series. Optional. */ -}} -{{- $citeText := default .Params.cite ( .Scratch.Get "cite" ) }} + +{{- $citeText := .Params.cite }} {{- $replacedCite := replaceRE `^([a-z]+?://)?(www)?` "" $citeText }} {{- $startOfCite := delimit ( findRE `^([a-z]+?://)?(www)?` $citeText 1 ) "" }} -{{- $cite := replaceRE `^` $startOfCite ( trim ( $replacedCite | .Page.RenderString ) "\r\n" ) -}} +{{- $cite := replaceRE `^` $startOfCite ( trim ( $replacedCite | .pc.Page.RenderString ) "\r\n" ) -}} -{{- $title := trim ( default .Params.title ( .Scratch.Get "title" ) | .Page.RenderString ) "\r\n" -}} -{{- $titleLang := default .Params.titleLang ( .Scratch.Get "titleLang" ) -}} -{{- $titleTr := default .Params.titleTr ( .Scratch.Get "titleTr" ) -}} -{{- $itemtype := default .Params.itemtype ( .Scratch.Get "itemtype" ) -}} +{{- $title := trim ( .Params.title | .pc.Page.RenderString ) "\r\n" -}} +{{- $titleLang := .Params.titleLang -}} +{{- $titleTr := .Params.titleTr -}} +{{- $itemtype := .Params.itemtype -}} {{- if ( strings.Contains $cite "#" ) -}} {{- erroridf "cite-with-fragment" "Cite parameter includes fragment identifier, which probably isn't what you want." -}} @@ -35,8 +47,8 @@ -{{- if ( and $itemtype ( not ( in $.Site.Data.itemtypes $itemtype ) ) ) -}} - {{- erroridf "invalid-itemtype" "Invalid Schema.org type value %q for %q" $itemtype $title -}} +{{- if ( and $itemtype ( not ( in .sc.Site.Data.itemtypes $itemtype ) ) ) -}} + {{- erroridf "invalid-itemtype" "Invalid Schema.org type value '%s' for %s (%q)\r\n%q" $itemtype .Params.title .sc.Page.File.Dir .Params -}} {{- end -}} @@ -47,9 +59,15 @@ {{- end -}} {{- end -}} + + +{{- $hasCitedWork := ( isset .Params "title" ) }} +{{- $hasCitedSeries := ( isset .Params "titleSeries" ) -}} + + {{- $itemType := default "CreativeWork" $itemtype -}} -{{- if ( or ( in $.Site.Data.itemtypes $itemType ) ( eq .Params.suppress "true" ) ) -}} +{{- if ( or ( in .sc.Site.Data.itemtypes $itemType ) ( eq .Params.suppress "true" ) ) -}} {{- with .Params.href -}} {{- end -}} @@ -89,6 +107,28 @@ {{- with .Params.href -}} {{- end -}} + + {{- if $hasCitedSeries }} + ( + {{- partial "cite.html" ( + dict + "sc" $.sc + "pc" $.pc + "Params" ( + dict + "cite" .Params.citeSeries + "title" .Params.titleSeries + "titleLang" .Params.titleSeriesLang + "titleTr" .Params.titleSeriesTr + "itemtype" .Params.itemtypeSeries + "href" .Params.hrefSeries + ) + ) -}} + + {{- with .Params.seasonNumber }}, S{{ . }}{{- end -}} + {{- with .Params.episodeNumber }}, E{{ . }}{{- end -}} + ) + {{- end -}} {{- else -}} {{- erroridf "invalid-schema-type" "Invalid Schema.org type value %q for %q" $itemType $title -}} {{- end -}} diff --git a/layouts/partials/item-tile.html b/layouts/partials/item-tile.html index 1a848e4..4c56c25 100644 --- a/layouts/partials/item-tile.html +++ b/layouts/partials/item-tile.html @@ -33,7 +33,7 @@ class="item-tile lazy {{- with .Params.site }}item-tile--{{ . }}{{ end -}}" {{ if .Params.featured_image }} {{ with .Resources.GetMatch .Params.featured_image }} - {{ if eq .MediaType.SubType "svg" }} + {{ if ( in ( slice "avif" "svg" "gif" ) .MediaType.SubType ) }} style="background-image: url({{ .RelPermalink }})" {{ else }} {{ with .Resize "1000x webp" }} @@ -51,7 +51,7 @@ style="display: none;" src=" {{- with .Resources.GetMatch .Params.featured_image -}} - {{- if eq .MediaType.SubType "svg" -}} + {{- if ( in ( slice "avif" "svg" "gif" ) .MediaType.SubType ) -}} {{ .RelPermalink }} {{- else -}} {{- with .Resize "1000x webp" -}} @@ -87,7 +87,7 @@ {{ end }} {{- if .File -}} - {{- partialCached "text/item-title.html" ( dict "pc" . "sc" $ "class" "item-tile" ) .File.Filename -}} + {{- partial "text/item-title.html" ( dict "pc" . "sc" $ "class" "item-tile" ) -}} {{- else -}} {{- partial "text/item-title.html" ( dict "pc" . "sc" $ "class" "item-tile" ) -}} {{- end -}} diff --git a/layouts/shortcodes/blockquote.html b/layouts/shortcodes/blockquote.html index b13aa36..e5b4459 100644 --- a/layouts/shortcodes/blockquote.html +++ b/layouts/shortcodes/blockquote.html @@ -9,14 +9,6 @@ For works cited (optional): @params ibid Whether to use ibidem as the source. Optional. @see partials/cite.html for full list of args. - - For works cited that form part of a series (optional): - @params itemtypeSeries The Schema.org `itemtype` value for the work series. Default 'CreativeWork'. Optional. - @params titleSeries Title of the work series to display. Optional. - @params citeSeries URI for work series. Optional. - @params titleSeriesLang Language code of a foreign-language work series' title. Optional. - @params titleSeriesTr English translation of a foreign-language work series' title. Optional. - @params numberSeries The number or code of the quoted work within its series. Optional. */ -}} @@ -35,7 +27,6 @@ {{- $isSourceHidden := default ( not ( or ( isset .Params "source" ) ( isset .Params "ibid" ) ) ) ( index .Params "hideSource" ) -}} {{- $hasCitedWork := ( isset .Params "title" ) }} -{{- $hasCitedSeries := ( isset .Params "titleSeries" ) -}} @@ -79,20 +70,8 @@ {{- if $hasCitedWork -}} , {{- partial "cite.html" . -}} - {{- if $hasCitedSeries }} - ( - {{- .Scratch.Set "cite" .Params.citeSeries -}} - {{- .Scratch.Set "title" .Params.titleSeries -}} - {{- .Scratch.Set "titleLang" .Params.titleSeriesLang -}} - {{- .Scratch.Set "titleTr" .Params.titleSeriesTr -}} - {{- .Scratch.Set "itemtype" .Params.itemtypeSeries -}} - {{- .Scratch.Set "href" .Params.hrefSeries -}} - {{- partial "cite.html" . -}} - {{- with .Params.numberSeries }}, {{ . | safeHTML -}}{{- end -}} - ) - {{- end -}} + >{{- partial "cite.html" ( dict "sc" $ "pc" . "Params" .Params ) -}} + {{- end -}} {{- with $comment -}} {{- printf " (%s)" . -}} diff --git a/layouts/shortcodes/cite.html b/layouts/shortcodes/cite.html index 73898a6..b42e507 100644 --- a/layouts/shortcodes/cite.html +++ b/layouts/shortcodes/cite.html @@ -1,28 +1,31 @@ {{- /* - Renders a work citation with semantic markup. + Renders a work citation with semantic markup. + + @params cite URI for work. Optional. + @params citeStyle Force a citation style. Optional. + @params href URI for citation, or 'asCite' to use value of `cite`. Optional. + @params itemtype The Schema.org `itemtype` value. Default 'CreativeWork'. + @params shortTitle Abbreviated display title. Optional. + @params title Title of the work to display. + @params titleLang Language code of a foreign-language work's title. Optional. + @params titleTr English translation of a foreign-language work's title. Optional. + */ +-}} - @params cite URI for work. Optional. - @params citeStyle Force a citation style. Optional. - @params href URI for citation, or 'asCite' to use value of `cite`. Optional. - @params itemtype The Schema.org `itemtype` value. Default 'CreativeWork'. - @params shortTitle Abbreviated display title. Optional. - @params title Title of the work to display. - @params titleLang Language code of a foreign-language work's title. Optional. - @params titleTr English translation of a foreign-language work's title. Optional. -*/ -}} {{- if ( not ( isset .Params "title" ) ) -}} - {{- errorf "No title found for citation (%q)" .Page.File.Path -}} + {{- errorf "No title found for citation (%q)" .Page.File.Path -}} {{- end -}} {{- if ( not ( isset $.Params "cite" ) ) -}} - {{- erroridf "missing-cite" "No cite found for citation '%q' (%q)" .Params.title .Page.File.Path -}} + {{- erroridf "missing-cite" "No cite found for citation '%q' (%q)" .Params.title .Page.File.Path -}} {{- end -}} + {{- $citationId := printf "%s%s" ( cond ( isset .Params "cite" ) .Params.cite .Params.title ) ( default "" .Params.shortTitle ) -}} -{{- partialCached "cite.html" . $citationId -}} +{{- partial "cite.html" ( dict "sc" $ "pc" . "Params" .Params ) -}} diff --git a/layouts/shortcodes/gallery.html b/layouts/shortcodes/gallery.html index f51fc1e..9e3093d 100644 --- a/layouts/shortcodes/gallery.html +++ b/layouts/shortcodes/gallery.html @@ -21,7 +21,7 @@ itemprop="image">