mirror of https://github.com/saimn/sigal.git
Browse Source
This commit introduces 2 main changes to the Photoswipe theme: 1. The media listing logic from "album.html" is separated and put in a new template, "album_items.html". Similarly, the supporting JavaScript content for initializing Photoswipe is split off into "ps_head.html". 2. The two new templates, "album_items.html" and "ps_head.html", are included in "album_list.html" in addition to "album.html".pull/535/head
4 changed files with 99 additions and 84 deletions
@ -0,0 +1,39 @@ |
|||||||
|
{% from 'description.html' import img_description %} |
||||||
|
|
||||||
|
{% include 'download_zip.html' %} |
||||||
|
{% include 'map.html' %} |
||||||
|
<div class="gallery"> |
||||||
|
{% for media in album.medias %} |
||||||
|
{% if media.type == "image" %} |
||||||
|
<figure class="gallery__img--{{ "main" if loop.first else "secondary" }} thumbnail"> |
||||||
|
<a href="{{ media.url }}" |
||||||
|
data-pswp-width="{{media.size.width}}" |
||||||
|
data-pswp-height="{{media.size.height}}" |
||||||
|
{%- if media.big -%} |
||||||
|
data-big="{{ media.big_url }}" |
||||||
|
{%- endif -%} |
||||||
|
> |
||||||
|
<img src="{{ media.thumbnail }}" alt="{{ media.url }}" /> |
||||||
|
</a> |
||||||
|
<div class="pswp-caption-content"> |
||||||
|
{{ img_description(media, with_big=False) }} |
||||||
|
</div> |
||||||
|
<figcaption>{{ media.title }} - {{ media.exif.datetime }}</figcaption> |
||||||
|
</figure> |
||||||
|
{% endif %} |
||||||
|
{% if media.type == "video" %} |
||||||
|
<figure class="gallery__img--secondary thumbnail" > |
||||||
|
<a href="{{ media.url }}" |
||||||
|
data-pswp-type="video" |
||||||
|
data-pswp-width="800" |
||||||
|
data-pswp-height="600"> |
||||||
|
<img src="{{ media.thumbnail }}" alt="{{ media.url }}" /> |
||||||
|
</a> |
||||||
|
<div class="pswp-caption-content"> |
||||||
|
{{ img_description(media, with_big=False) }} |
||||||
|
</div> |
||||||
|
<figcaption>{{ media_title }}</figcaption> |
||||||
|
</figure> |
||||||
|
{% endif %} |
||||||
|
{% endfor %} |
||||||
|
</div> |
||||||
@ -0,0 +1,51 @@ |
|||||||
|
{% block extra_head %} |
||||||
|
<!-- |
||||||
|
FIXME: When this is imported into "album_list.html", |
||||||
|
{{ theme.url }} is empty |
||||||
|
--> |
||||||
|
<link rel="stylesheet" href="{{ theme.url }}/photoswipe.css"> |
||||||
|
<script type="module"> |
||||||
|
import PhotoSwipeLightbox from '{{ theme.url }}/photoswipe-lightbox.esm.min.js'; |
||||||
|
import PhotoSwipe from '{{ theme.url }}/photoswipe.esm.min.js'; |
||||||
|
import PhotoSwipeDynamicCaption from '{{ theme.url }}/photoswipe-dynamic-caption-plugin.esm.min.js'; |
||||||
|
import PhotoSwipeFullscreen from '{{ theme.url }}/photoswipe-fullscreen.esm.min.js'; |
||||||
|
import PhotoSwipeVideoPlugin from '{{ theme.url }}/photoswipe-video-plugin.esm.min.js'; |
||||||
|
|
||||||
|
const lightbox = new PhotoSwipeLightbox({ |
||||||
|
gallery: '.gallery', |
||||||
|
children: '.thumbnail', |
||||||
|
pswpModule: PhotoSwipe |
||||||
|
}); |
||||||
|
const captionPlugin = new PhotoSwipeDynamicCaption(lightbox, {type: 'auto'}); |
||||||
|
const fullscreenPlugin = new PhotoSwipeFullscreen(lightbox); |
||||||
|
const videoPlugin = new PhotoSwipeVideoPlugin(lightbox, {autoplay: true}); |
||||||
|
|
||||||
|
lightbox.on('uiRegister', function() { |
||||||
|
lightbox.pswp.ui.registerElement({ |
||||||
|
name: 'download-button', |
||||||
|
order: 8, |
||||||
|
isButton: true, |
||||||
|
tagName: 'a', |
||||||
|
html: { |
||||||
|
isCustomSVG: true, |
||||||
|
inner: '<path d="M20.5 14.3 17.1 18V10h-2.2v7.9l-3.4-3.6L10 16l6 6.1 6-6.1ZM23 23H9v2h14Z" id="pswp__icn-download"/>', |
||||||
|
outlineID: 'pswp__icn-download' |
||||||
|
}, |
||||||
|
onInit: (el, pswp) => { |
||||||
|
el.setAttribute('download', ''); |
||||||
|
el.setAttribute('target', '_blank'); |
||||||
|
el.setAttribute('rel', 'noopener'); |
||||||
|
pswp.on('change', () => { |
||||||
|
if (pswp.currSlide.data.element.children[0].dataset.big) { |
||||||
|
el.href = pswp.currSlide.data.element.children[0].dataset.big; |
||||||
|
} else { |
||||||
|
el.href = pswp.currSlide.data.src; |
||||||
|
} |
||||||
|
}); |
||||||
|
} |
||||||
|
}); |
||||||
|
}); |
||||||
|
|
||||||
|
lightbox.init(); |
||||||
|
</script> |
||||||
|
{% endblock extra_head %} |
||||||
Loading…
Reference in new issue