Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

✨ feat(shortcodes): support URLs for image source #280

Merged
merged 1 commit into from
Feb 15, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion content/blog/shortcodes/index.ca.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
+++
title = "Shortcodes personalitzats"
date = 2023-02-19
updated = 2023-11-24
updated = 2024-02-16
description = "Aquest tema inclou alguns shortcodes personalitzats útils que pots utilitzar per millorar les teves publicacions. Ja sigui per mostrar imatges que s'adapten als temes clar i fosc, o per donar format a una secció de referències amb un aspecte professional, aquests shortcodes personalitzats t'ajudaran."

[taxonomies]
Expand All @@ -20,6 +20,8 @@ social_media_card = "social_cards/ca_blog_shortcodes.jpg"

**Nota 2**: a partir del [PR #222](https://github.com/welpo/tabi/pull/222) (commit [7796162](https://github.com/welpo/tabi/commit/7796162e378cacb9b4d6129f95138121224714f1)), tots els shortcodes d'imatges suporten rutes relatives pel paràmetre `src`.

**Nota 3**: a partir del [PR #280](https://github.com/welpo/tabi/pull/280), tots els shortcodes d'imatges admeten imatges remotes pel paràmetre `src`.

### Imatges per a temes duals

Útil si vols utilitzar una imatge diferent pels temes clar i fosc:
Expand Down
4 changes: 3 additions & 1 deletion content/blog/shortcodes/index.es.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
+++
title = "Shortcodes personalizados"
date = 2023-02-19
updated = 2023-11-24
updated = 2024-02-16
description = "Este tema incluye algunos shortcodes personalizados útiles que puedes utilizar para mejorar tus publicaciones. Puedes mostrar imágenes que se adapten a los temas claro y oscuro, dar formato a una sección de referencias con un aspecto profesional, y más."

[taxonomies]
Expand All @@ -20,6 +20,8 @@ social_media_card = "social_cards/es_blog_shortcodes.jpg"

**Nota 2**: a partir del [PR #222](https://github.com/welpo/tabi/pull/222) (commit [7796162](https://github.com/welpo/tabi/commit/7796162e378cacb9b4d6129f95138121224714f1)), todos los shortcodes de imágenes admiten rutas relativas en el parámetro `src`.

**Nota 3**: a partir del [PR #280](https://github.com/welpo/tabi/pull/280), todos los shortcodes de imágenes admiten imágenes remotas en el parámetro `src`.

### Imágenes de doble tema

Útil si deseas usar una imagen diferente para los temas claro y oscuro:
Expand Down
4 changes: 3 additions & 1 deletion content/blog/shortcodes/index.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
+++
title = "Custom shortcodes"
date = 2023-02-19
updated = 2023-11-24
updated = 2024-02-16
description = "This theme includes some useful custom shortcodes that you can use to enhance your posts. Whether you want to display images that adapt to light and dark themes, or format a professional-looking reference section, these custom shortcodes have got you covered."

[taxonomies]
Expand All @@ -20,6 +20,8 @@ social_media_card = "social_cards/blog_shortcodes.jpg"

**Note 2**: as of [PR #222](https://github.com/welpo/tabi/pull/222) (commit [7796162](https://github.com/welpo/tabi/commit/7796162e378cacb9b4d6129f95138121224714f1)), all image shortcodes support relative paths in the `src` parameter.

**Note 3**: as of [PR #280](https://github.com/welpo/tabi/pull/280), all image shortcodes support remote images in the `src` parameter.

### Dual theme images

Useful if you want to use a different image for the light and dark themes:
Expand Down
29 changes: 17 additions & 12 deletions templates/shortcodes/dimmable_image.html
Original file line number Diff line number Diff line change
@@ -1,21 +1,26 @@
{%- set colocated_path = page.colocated_path | default(value="") -%}
{%- set relative_path = colocated_path ~ src -%}
{%- set meta = get_image_metadata(path=relative_path, allow_missing=true) -%}

{#- Fallback to absolute path if relative path doesn't work -#}
{%- if not meta -%}
{%- set meta = get_image_metadata(path=src, allow_missing=true) -%}
{%- set image_path = src -%}
{#- Determine image path based on whether the src is remote or local -#}
{%- if src is starting_with("http") -%}
{%- set image_url = src -%}
{%- else -%}
{%- set image_path = relative_path -%}
{%- set colocated_path = page.colocated_path | default(value="") -%}
{%- set relative_path = colocated_path ~ src -%}
{%- set meta = get_image_metadata(path=relative_path, allow_missing=true) -%}

{#- Fallback to absolute path if relative path doesn't work -#}
{%- if not meta -%}
{%- set meta = get_image_metadata(path=src, allow_missing=true) -%}
{%- set image_url = get_url(path=src) -%}
{%- else -%}
{%- set image_url = get_url(path=relative_path) -%}
{%- endif -%}
{%- endif -%}

{%- set lazy_loading = lazy_loading | default(value=true) -%}

{%- if full_width | default(value=false) -%}
{%- if full_width -%}
<div class="full-width">
{%- endif -%}
<img class="dimmable-image" src="{{ get_url(path=image_path) }}"{% if lazy_loading %} loading="lazy"{% endif %}{% if alt %} alt="{{ alt }}"{% endif %}{% if meta.width %} width="{{ meta.width }}"{% endif %}{% if meta.height %} height="{{ meta.height }}" {% endif %}/>
{%- if full_width | default(value=false) -%}
<img class="dimmable-image" src="{{ image_url }}"{% if lazy_loading %} loading="lazy"{% endif %}{% if alt %} alt="{{ alt }}"{% endif %}{% if meta.width %} width="{{ meta.width }}"{% endif %}{% if meta.height %} height="{{ meta.height }}" {% endif %}/>
{%- if full_width -%}
</div>
{%- endif -%}
43 changes: 25 additions & 18 deletions templates/shortcodes/dual_theme_image.html
Original file line number Diff line number Diff line change
@@ -1,30 +1,37 @@
{%- set colocated_path = page.colocated_path | default(value="") -%}
{%- set relative_light_path = colocated_path ~ light_src -%}
{%- set relative_dark_path = colocated_path ~ dark_src -%}
{%- set lazy_loading = lazy_loading | default(value=true) -%}

{%- set light_meta = get_image_metadata(path=relative_light_path, allow_missing=true) -%}
{%- if not light_meta -%}
{%- set light_meta = get_image_metadata(path=light_src, allow_missing=true) -%}
{%- set light_image_path = light_src -%}
{# Handling for light mode image #}
{%- if light_src is starting_with("http") -%}
{%- set light_image_url = light_src -%}
{%- else -%}
{%- set light_image_path = relative_light_path -%}
{%- set relative_light_path = colocated_path ~ light_src -%}
{%- set light_meta = get_image_metadata(path=relative_light_path, allow_missing=true) -%}
{%- if not light_meta -%}
{%- set light_image_url = get_url(path=light_src) -%}
{%- else -%}
{%- set light_image_url = get_url(path=relative_light_path) -%}
{%- endif -%}
{%- endif -%}

{%- set dark_meta = get_image_metadata(path=relative_dark_path, allow_missing=true) -%}
{%- if not dark_meta -%}
{%- set dark_meta = get_image_metadata(path=dark_src, allow_missing=true) -%}
{%- set dark_image_path = dark_src -%}
{# Handling for dark mode image #}
{%- if dark_src is starting_with("http") -%}
{%- set dark_image_url = dark_src -%}
{%- else -%}
{%- set dark_image_path = relative_dark_path -%}
{%- set relative_dark_path = colocated_path ~ dark_src -%}
{%- set dark_meta = get_image_metadata(path=relative_dark_path, allow_missing=true) -%}
{%- if not dark_meta -%}
{%- set dark_image_url = get_url(path=dark_src) -%}
{%- else -%}
{%- set dark_image_url = get_url(path=relative_dark_path) -%}
{%- endif -%}
{%- endif -%}

{%- set lazy_loading = lazy_loading | default(value=true) -%}

{%- if full_width | default(value=false) -%}
{%- if full_width -%}
<div class="full-width">
{%- endif -%}
<img src="{{ get_url(path=light_image_path) }}"{% if lazy_loading %} loading="lazy"{% endif %}{% if alt %} alt="{{ alt }}"{% endif %}{% if light_meta.width %} width="{{ light_meta.width }}"{% endif %}{% if light_meta.height %} height="{{ light_meta.height }}" {% endif %} class="img-light">
<img src="{{ get_url(path=dark_image_path) }}"{% if lazy_loading %} loading="lazy"{% endif %}{% if alt %} alt="{{ alt }}"{% endif %}{% if dark_meta.width %} width="{{ dark_meta.width }}"{% endif %}{% if dark_meta.height %} height="{{ dark_meta.height }}" {% endif %} class="img-dark">
{%- if full_width | default(value=false) -%}
<img src="{{ light_image_url }}"{% if lazy_loading %} loading="lazy"{% endif %}{% if alt %} alt="{{ alt }}"{% endif %}{% if light_meta.width %} width="{{ light_meta.width }}"{% endif %}{% if light_meta.height %} height="{{ light_meta.height }}" {% endif %} class="img-light">
<img src="{{ dark_image_url }}"{% if lazy_loading %} loading="lazy"{% endif %}{% if alt %} alt="{{ alt }}"{% endif %}{% if dark_meta.width %} width="{{ dark_meta.width }}"{% endif %}{% if dark_meta.height %} height="{{ dark_meta.height }}" {% endif %} class="img-dark">
{%- if full_width -%}
</div>
{%- endif -%}
25 changes: 15 additions & 10 deletions templates/shortcodes/full_width_image.html
Original file line number Diff line number Diff line change
@@ -1,17 +1,22 @@
{%- set colocated_path = page.colocated_path | default(value="") -%}
{%- set relative_path = colocated_path ~ src -%}
{%- set meta = get_image_metadata(path=relative_path, allow_missing=true) -%}
{#- Set paths based on whether the src is remote or local -#}
{%- if src is starting_with("http") -%}
{%- set image_url = src -%}
{%- else -%}
{%- set colocated_path = page.colocated_path | default(value="") -%}
{%- set relative_path = colocated_path ~ src -%}
{%- set meta = get_image_metadata(path=relative_path, allow_missing=true) -%}

{#- Fallback to absolute path if relative path doesn't work -#}
{%- if not meta -%}
{%- set meta = get_image_metadata(path=src, allow_missing=true) -%}
{%- set image_path = src -%}
{%- else %}
{%- set image_path = relative_path -%}
{#- Fallback to absolute path if relative path doesn't work -#}
{%- if not meta -%}
{%- set meta = get_image_metadata(path=src, allow_missing=true) -%}
{%- set image_url = get_url(path=src) -%}
{%- else %}
{%- set image_url = get_url(path=relative_path) -%}
{%- endif -%}
{%- endif -%}

{%- set lazy_loading = lazy_loading | default(value=true) -%}

<div class="full-width">
<img src="{{ get_url(path=image_path) }}"{% if alt %} alt="{{ alt }}"{% endif %}{% if meta.width %} width="{{ meta.width }}"{% endif %}{% if meta.height %} height="{{ meta.height }}"{% endif %}{% if lazy_loading %} loading="lazy"{% endif %}/>
<img src="{{ image_url }}"{% if alt %} alt="{{ alt }}"{% endif %}{% if meta.width %} width="{{ meta.width }}"{% endif %}{% if meta.height %} height="{{ meta.height }}"{% endif %}{% if lazy_loading %} loading="lazy"{% endif %}/>
</div>
41 changes: 24 additions & 17 deletions templates/shortcodes/image_hover.html
Original file line number Diff line number Diff line change
@@ -1,30 +1,37 @@
{%- set colocated_path = page.colocated_path | default(value="") -%}
{%- set relative_default_path = colocated_path ~ default_src -%}
{%- set relative_hovered_path = colocated_path ~ hovered_src -%}
{%- set lazy_loading = lazy_loading | default(value=true) -%}

{%- set default_meta = get_image_metadata(path=relative_default_path, allow_missing=true) -%}
{%- if not default_meta -%}
{%- set default_meta = get_image_metadata(path=default_src, allow_missing=true) -%}
{%- set default_image_path = default_src -%}
{#- Direct or relative URL handling for default image -#}
{%- if default_src is starting_with("http") -%}
{%- set default_image_url = default_src -%}
{%- else -%}
{%- set default_image_path = relative_default_path -%}
{%- set relative_default_path = colocated_path ~ default_src -%}
{%- set default_meta = get_image_metadata(path=relative_default_path, allow_missing=true) -%}
{%- if not default_meta -%}
{%- set default_image_url = get_url(path=default_src) -%}
{%- else -%}
{%- set default_image_url = get_url(path=relative_default_path) -%}
{%- endif -%}
{%- endif -%}

{%- set hovered_meta = get_image_metadata(path=relative_hovered_path, allow_missing=true) -%}
{%- if not hovered_meta -%}
{%- set hovered_meta = get_image_metadata(path=hovered_src, allow_missing=true) -%}
{%- set hovered_image_path = hovered_src -%}
{#- Direct or relative URL handling for hovered image -#}
{%- if hovered_src is starting_with("http") -%}
{%- set hovered_image_url = hovered_src -%}
{%- else -%}
{%- set hovered_image_path = relative_hovered_path -%}
{%- set relative_hovered_path = colocated_path ~ hovered_src -%}
{%- set hovered_meta = get_image_metadata(path=relative_hovered_path, allow_missing=true) -%}
{%- if not hovered_meta -%}
{%- set hovered_image_url = get_url(path=hovered_src) -%}
{%- else -%}
{%- set hovered_image_url = get_url(path=relative_hovered_path) -%}
{%- endif -%}
{%- endif -%}

{%- set lazy_loading = lazy_loading | default(value=true) -%}

<div class="image-hover-container{% if full_width | default(value=false) %} full-width{% endif %}">
<div class="image-hover-container{% if full_width %} full-width{% endif %}">
<div class="image-default">
<img src="{{ get_url(path=default_image_path) }}"{% if lazy_loading %} loading="lazy"{% endif %}{% if default_alt %} alt="{{ default_alt }}"{% endif %}{% if default_meta.width %} width="{{ default_meta.width }}"{% endif %}{% if default_meta.height %} height="{{ default_meta.height }}"{% endif %}>
<img src="{{ default_image_url }}"{% if lazy_loading %} loading="lazy"{% endif %}{% if default_alt %} alt="{{ default_alt }}"{% endif %}{% if default_meta.width %} width="{{ default_meta.width }}"{% endif %}{% if default_meta.height %} height="{{ default_meta.height }}"{% endif %}>
</div>
<div class="image-hovered">
<img src="{{ get_url(path=hovered_image_path) }}"{% if hovered_alt %} alt="{{ hovered_alt }}"{% endif %}{% if hovered_meta.width %} width="{{ hovered_meta.width }}"{% endif %}{% if hovered_meta.height %} height="{{ hovered_meta.height }}"{% endif %}>
<img src="{{ hovered_image_url }}"{% if lazy_loading %} loading="lazy"{% endif %}{% if hovered_alt %} alt="{{ hovered_alt }}"{% endif %}{% if hovered_meta.width %} width="{{ hovered_meta.width }}"{% endif %}{% if hovered_meta.height %} height="{{ hovered_meta.height }}"{% endif %}>
</div>
</div>
41 changes: 24 additions & 17 deletions templates/shortcodes/image_toggler.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,35 +3,42 @@
{# This avoids conflicts when multiple instances of the shortcode are used. #}
{%- set random_id = get_random(end=100000) -%}
{%- set colocated_path = page.colocated_path | default(value="") -%}
{%- set relative_default_path = colocated_path ~ default_src -%}
{%- set relative_toggled_path = colocated_path ~ toggled_src -%}
{%- set lazy_loading = lazy_loading | default(value=true) -%}

{%- set default_meta = get_image_metadata(path=relative_default_path, allow_missing=true) -%}
{%- if not default_meta -%}
{%- set default_meta = get_image_metadata(path=default_src, allow_missing=true) -%}
{%- set default_image_path = default_src -%}
{# Direct or relative URL handling for default image #}
{%- if default_src is starting_with("http") -%}
{%- set default_image_url = default_src -%}
{%- else -%}
{%- set default_image_path = relative_default_path -%}
{%- set relative_default_path = colocated_path ~ default_src -%}
{%- set default_meta = get_image_metadata(path=relative_default_path, allow_missing=true) -%}
{%- if not default_meta -%}
{%- set default_image_url = get_url(path=default_src) -%}
{%- else -%}
{%- set default_image_url = get_url(path=relative_default_path) -%}
{%- endif -%}
{%- endif -%}

{%- set toggled_meta = get_image_metadata(path=relative_toggled_path, allow_missing=true) -%}
{%- if not toggled_meta -%}
{%- set toggled_meta = get_image_metadata(path=toggled_src, allow_missing=true) -%}
{%- set toggled_image_path = toggled_src -%}
{# Direct or relative URL handling for toggled image #}
{%- if toggled_src is starting_with("http") -%}
{%- set toggled_image_url = toggled_src -%}
{%- else -%}
{%- set toggled_image_path = relative_toggled_path -%}
{%- set relative_toggled_path = colocated_path ~ toggled_src -%}
{%- set toggled_meta = get_image_metadata(path=relative_toggled_path, allow_missing=true) -%}
{%- if not toggled_meta -%}
{%- set toggled_image_url = get_url(path=toggled_src) -%}
{%- else -%}
{%- set toggled_image_url = get_url(path=relative_toggled_path) -%}
{%- endif -%}
{%- endif -%}

{%- set lazy_loading = lazy_loading | default(value=true) -%}

<div class="image-toggler-container {% if full_width | default(value=false) %}full-width{% endif %}">
<div class="image-toggler-container {% if full_width %}full-width{% endif %}">
<input type="checkbox" id="toggle-img-{{ random_id }}" class="image-toggler-toggle">
<label for="toggle-img-{{ random_id }}" class="image-label">
<div class="image-default">
<img src="{{ get_url(path=default_image_path) }}"{% if lazy_loading %} loading="lazy"{% endif %}{% if default_alt %} alt="{{ default_alt }}"{% endif %}{% if default_meta.width %} width="{{ default_meta.width }}"{% endif %}{% if default_meta.height %} height="{{ default_meta.height }}"{% endif %}>
<img src="{{ default_image_url }}"{% if lazy_loading %} loading="lazy"{% endif %}{% if default_alt %} alt="{{ default_alt }}"{% endif %}{% if default_meta.width %} width="{{ default_meta.width }}"{% endif %}{% if default_meta.height %} height="{{ default_meta.height }}"{% endif %}>
</div>
<div class="image-toggled">
<img src="{{ get_url(path=toggled_image_path) }}"{% if lazy_loading %} loading="lazy"{% endif %}{% if toggled_alt %} alt="{{ toggled_alt }}"{% endif %}{% if toggled_meta.width %} width="{{ toggled_meta.width }}"{% endif %}{% if toggled_meta.height %} height="{{ toggled_meta.height }}"{% endif %}>
<img src="{{ toggled_image_url }}"{% if lazy_loading %} loading="lazy"{% endif %}{% if toggled_alt %} alt="{{ toggled_alt }}"{% endif %}{% if toggled_meta.width %} width="{{ toggled_meta.width }}"{% endif %}{% if toggled_meta.height %} height="{{ toggled_meta.height }}"{% endif %}>
</div>
</label>
</div>
29 changes: 17 additions & 12 deletions templates/shortcodes/invertible_image.html
Original file line number Diff line number Diff line change
@@ -1,21 +1,26 @@
{%- set colocated_path = page.colocated_path | default(value="") -%}
{%- set relative_path = colocated_path ~ src -%}
{%- set meta = get_image_metadata(path=relative_path, allow_missing=true) -%}

{#- Fallback to absolute path if relative path doesn't work -#}
{%- if not meta -%}
{%- set meta = get_image_metadata(path=src, allow_missing=true) -%}
{%- set image_path = src -%}
{#- Determine if src is a remote URL or a local path -#}
{%- if src is starting_with("http") -%}
{%- set image_url = src -%}
{%- else -%}
{%- set image_path = relative_path -%}
{%- set colocated_path = page.colocated_path | default(value="") -%}
{%- set relative_path = colocated_path ~ src -%}
{%- set meta = get_image_metadata(path=relative_path, allow_missing=true) -%}

{#- Fallback to absolute path if relative path doesn't work -#}
{%- if not meta -%}
{%- set meta = get_image_metadata(path=src, allow_missing=true) -%}
{%- set image_url = get_url(path=src) -%}
{%- else %}
{%- set image_url = get_url(path=relative_path) -%}
{%- endif -%}
{%- endif -%}

{%- set lazy_loading = lazy_loading | default(value=true) -%}

{%- if full_width | default(value=false) -%}
{%- if full_width -%}
<div class="full-width">
{%- endif -%}
<img class="invertible-image" src="{{ get_url(path=image_path) }}"{% if lazy_loading %} loading="lazy"{% endif %}{% if alt %} alt="{{ alt }}"{% endif %}{% if meta.width %} width="{{ meta.width }}"{% endif %}{% if meta.height %} height="{{ meta.height }}" {% endif %}/>
{%- if full_width | default(value=false) -%}
<img class="invertible-image" src="{{ image_url }}"{% if lazy_loading %} loading="lazy"{% endif %}{% if alt %} alt="{{ alt }}"{% endif %}{% if meta.width %} width="{{ meta.width }}"{% endif %}{% if meta.height %} height="{{ meta.height }}" {% endif %}/>
{%- if full_width -%}
</div>
{%- endif -%}