You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

79 lines
3.7 KiB

{{/*
Copyright (C) 2019 Josh Habdas <jhabdas@protonmail.com>
This file is part of After Dark.
After Dark is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
After Dark is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/}}
{{ $valid_processing_methods := (slice "resize" "fit" "fill") }}
{{ $options := .options | default slice }}
{{ $image_processing_method := default "fill" (index $options 0) }}
{{ $image_processing_options := index $options 1 }}
{{ if not (in $valid_processing_methods $image_processing_method) }}
{{ errorf "Invalid thumbnail processing method: Must be one of 'fit', 'fill' or 'resize'." }}
{{ else }}
{{ $scratch := newScratch }}
{{ with .node.Resources.GetMatch "*thumbnail*" }}
{{ $meta_sameas := .Params.meta.sameas }}
{{ $meta_license := .Params.meta.license }}
{{ $meta_creator := .Params.meta.creator }}
{{ $meta_description := .Params.meta.description }}
{{ $meta_keywords := .Params.meta.keywords }}
{{ $meta_contentlocation := .Params.meta.contentlocation }}
{{ if (eq $image_processing_method "resize") }}
{{ $scratch.Set "lodpi" (.Resize (default "400x300 q60 Gaussian" $image_processing_options)) }}
{{ $scratch.Set "hidpi" (.Resize (printf "%dx%d q90 Gaussian" (mul ($scratch.Get "lodpi").Width 2) (mul ($scratch.Get "lodpi").Height 2))) }}
{{ else if (eq $image_processing_method "fit") }}
{{ $scratch.Set "lodpi" (.Fit (default "400x300" $image_processing_options)) }}
{{ $scratch.Set "hidpi" (.Fit (printf "%dx%d" (mul ($scratch.Get "lodpi").Width 2) (mul ($scratch.Get "lodpi").Height 2))) }}
{{ else }}
{{ $scratch.Set "lodpi" (.Fill (default "400x300 Center" $image_processing_options)) }}
{{ $scratch.Set "hidpi" (.Fill (printf "%dx%d Center" (mul ($scratch.Get "lodpi").Width 2) (mul ($scratch.Get "lodpi").Height 2))) }}
{{ end }}
<figure aria-hidden="true" itemscope itemtype="https://schema.org/ImageObject">
<link itemprop="contentUrl" href="{{ .RelPermalink }}">
<meta itemprop="encodingFormat" content="{{ .MediaType }}">
<meta itemprop="name" content="{{ .Name | plainify }}">
{{ with .Title }}
<meta itemprop="headline" content="{{ . }}">
{{ end }}
{{ with $meta_creator }}
<meta itemprop="creator" content="{{ . | plainify -}}">
{{ end }}
{{ if (urls.Parse $meta_sameas).Host }}
<link itemprop="sameAs" href="{{ $meta_sameas }}">
{{ end }}
{{ if (urls.Parse $meta_license).Host }}
<link itemprop="license" href="{{ $meta_license }}">
{{ end }}
{{ with $meta_keywords }}
<meta itemprop="keywords" content="{{ delimit . ", " }}">
{{ end }}
{{ with $meta_contentlocation }}
<meta itemprop="contentLocation" content="{{ . | plainify }}">
{{ end }}
{{ with $meta_description }}
<meta itemprop="description" content="{{ . | plainify }}">
{{ end }}
<img
itemprop="thumbnailUrl"
alt="{{ with $meta_description }}{{ . }}{{ else }}{{ .Name | plainify }}{{ end }}"
class="lazyload blur-up"
src="{{ ($scratch.Get "lodpi").RelPermalink }}"
data-src="{{ ($scratch.Get "hidpi").RelPermalink }}"
>
</figure>
{{ end }}
{{ end }}