aboutsummaryrefslogtreecommitdiff
path: root/templates/components/image.html
diff options
context:
space:
mode:
Diffstat (limited to 'templates/components/image.html')
-rw-r--r--templates/components/image.html64
1 files changed, 64 insertions, 0 deletions
diff --git a/templates/components/image.html b/templates/components/image.html
new file mode 100644
index 0000000..c8230e1
--- /dev/null
+++ b/templates/components/image.html
@@ -0,0 +1,64 @@
+{% component image(page, config, sources, caption="", class="", alt="", w=0, h=0) %}
+{%- if caption %}<figure class="fi{% if class %} {{class}}{% endif %}">{% endif %}
+<picture{% if class %} class="{{class}}"{% endif %}>
+ {%- for src in sources %}
+
+ {%- set video = src | split(pat="/") | last %}
+ {%- set dirtest = src | trim_start(pat="./") %}
+ {%- if dirtest is containing(pat="/") %} {%- set reldir = true %} {%- endif %}
+ {%- if page and page.path %}{%- set pagepath = page.path %}{%- elif section and section.path %}{%- set pagepath = section.path %}{%- endif %}
+
+ {%- if src is starting_with(pat="./") and reldir %}{# Relative Path #}
+ {%- set path = (src | trim_start(pat="./") | split(pat="/"))[:-1] | join(sep="/") | trim_start(pat="/") -%}
+ {%- set path = path ~ "/" %}
+ {%- if not w or not h %}
+ {%- if page.lang != config.default_language %}
+ {%- set metapath = (pagepath ~ path ~ video) | replace(from="/" ~ page.lang ~ "/", to="/") %}
+ {%- else %}
+ {%- set metapath = pagepath ~ path ~ video %}
+ {%- endif %}
+ {%- set meta = get_image_metadata(path=metapath) %}
+ {%- set w = meta.width %}
+ {%- set h = meta.height %}
+ {%- endif %}
+
+ {%- elif src is starting_with(pat="/") %}{# Root Path #}
+ {%- set rootpath = (src | split(pat="/"))[:-1] | join(sep="/") -%}
+ {%- set path = (config.base_url if config else "") ~ rootpath ~ "/" %}
+ {%- if not w or not h %}
+ {%- set metapath = rootpath ~ "/" ~ video %}
+ {%- set meta = get_image_metadata(path=metapath) %}
+ {%- set w = meta.width %}
+ {%- set h = meta.height %}
+ {%- endif %}
+
+ {%- else %}{# Same Directory Path #}
+ {%- set path = "" %}
+ {%- if not w or not h %}
+ {%- if page.lang != config.default_language %}
+ {%- set metapath = (pagepath ~ video) | replace(from="/" ~ page.lang ~ "/", to="/") %}
+ {%- else %}
+ {%- set metapath = pagepath ~ video %}
+ {%- endif %}
+ {%- set meta = get_image_metadata(path=metapath) %}
+ {%- set w = meta.width %}
+ {%- set h = meta.height %}
+ {%- endif %}
+
+ {%- endif %}
+
+ {%- set type = src | split(pat=".") | last %}
+ {%- if type is matching(pat="^mov$") %}{%- set type = "quicktime" %}{% endif %}
+ {%- if loop.last %}
+ {%- if not alt %}
+ {%- set alt = video | split(pat=".") | first %}
+ {%- endif %}
+ <img src="{{ path | safe }}{{ video | safe }}" alt="{{ alt }}"{% if w %} width="{{w}}"{% endif %}{% if h %} height="{{h}}"{% endif %} loading="lazy" />
+ {%- else %}
+ <source srcset="{{ path | safe }}{{ video | safe }}" type="{{ 'image/' ~ type }}" />
+ {%- endif %}
+ {%- endfor %}
+</picture>
+{%- if caption %}<figcaption>{{caption}}</figcaption></figure>{% endif %}
+
+{% endcomponent image %}