aboutsummaryrefslogtreecommitdiff
path: root/layouts
diff options
context:
space:
mode:
authorAlex Shpak <alex-shpak@users.noreply.github.com>2020-03-07 18:47:16 +0100
committerAlex Shpak <alex-shpak@users.noreply.github.com>2020-03-07 18:47:16 +0100
commit289a3f456e771194cc18606051f113962f7e86c1 (patch)
tree631d2b9506d0ac46c292e73738fc814bfd99b053 /layouts
parentc217876059161cf6b89a114425116c65c89fba0c (diff)
Add portable links, requires hugo 0.62
Diffstat (limited to 'layouts')
-rw-r--r--layouts/_default/_markup/render-image.html19
-rw-r--r--layouts/_default/_markup/render-link.html28
2 files changed, 47 insertions, 0 deletions
diff --git a/layouts/_default/_markup/render-image.html b/layouts/_default/_markup/render-image.html
new file mode 100644
index 0000000..154e3a7
--- /dev/null
+++ b/layouts/_default/_markup/render-image.html
@@ -0,0 +1,19 @@
+{{ if .Page.Site.Params.BookPortableLinks }}
+ {{- template "portable-image" . -}}
+{{ else }}
+ <img src="{{ .Destination | safeURL }}" alt="{{ .Text }}" {{ with .Title }}title="{{ . }}"{{ end }}/>
+{{ end }}
+
+{{- define "portable-image" -}}
+ {{- $isRemote := or (in .Destination "://") (strings.HasPrefix .Destination "//") }}
+ {{- if not $isRemote }}
+ {{- $path := print .Page.File.Dir .Destination }}
+ {{- if strings.HasPrefix .Destination "/" }}
+ {{- $path = print "/static" .Destination }}
+ {{- end }}
+ {{- if not (fileExists $path) }}
+ {{- warnf "Image '%s' not found in '%s'" .Destination .Page.File }}
+ {{- end }}
+ {{- end }}
+ <img src="{{ .Destination | safeURL }}" alt="{{ .Text }}" {{ with .Title }}title="{{ . }}"{{ end }}/>
+{{- end -}}
diff --git a/layouts/_default/_markup/render-link.html b/layouts/_default/_markup/render-link.html
new file mode 100644
index 0000000..48b419f
--- /dev/null
+++ b/layouts/_default/_markup/render-link.html
@@ -0,0 +1,28 @@
+{{ if .Page.Site.Params.BookPortableLinks }}
+ {{- template "portable-link" . -}}
+{{ else }}
+ <a href="{{ .Destination | safeURL }}"{{ with .Title}} title="{{ . }}"{{ end }}>{{ .Text | safeHTML }}</a>
+{{ end }}
+
+{{- define "portable-link" -}}
+ {{- $destination := .Destination }}
+ {{- $isRemote := or (in .Destination "://") (strings.HasPrefix .Destination "//") }}
+ {{- if not $isRemote }}
+ {{- $url := urls.Parse .Destination }}
+ {{- $path := strings.TrimSuffix "/_index.md" $url.Path }}
+ {{- $path = strings.TrimSuffix "/_index" $path }}
+ {{- $path = strings.TrimSuffix ".md" $path }}
+ {{- $page := .Page.GetPage $path }}
+ {{- if $page }}
+ {{- $destination = $page.RelPermalink }}
+ {{- if $url.Fragment }}
+ {{- $destination = print $destination "#" $url.Fragment }}
+ {{- end }}
+ {{- else if fileExists (print .Page.File.Dir .Destination) }}
+ <!-- Nothing -->
+ {{- else -}}
+ {{- warnf "Page '%s' not found in '%s'" .Destination .Page.File }}
+ {{- end }}
+ {{- end }}
+ <a href="{{ $destination | safeURL }}"{{ with .Title}} title="{{ . }}"{{ end }}>{{ .Text | safeHTML }}</a>
+{{- end -}}