test pswp (photoswipe+lightbox)

another photoswipe shortcodes collection that wont work
This commit is contained in:
Dominic Reich 2025-02-15 11:25:25 +01:00
parent a42ad92a50
commit 67786bdd19
Signed by: dominic
GPG key ID: 0B5787DB23049C45
10 changed files with 244 additions and 7 deletions

View file

@ -0,0 +1,35 @@
.gallery {
float: none;
border: 1px solid lightgrey;
padding: 10px;
margin: 0px 0px 10px 10px;
}
.gallery .title{
text-align: center;
clear:left;
//border-top: 1px solid lightgrey;
}
.gallery img {
width: 100%;
height: auto;
}
.gallery figure {
display: block;
float: left;
margin: 0 5px 5px 0;
}
.gallery figcaption {
display: none;
}
figcaption {
font-size: 75%;
}
span[itemprop="copyrightHolder"] {
color : #888;
float: right;
}
span[itemprop="copyrightHolder"]:before {
content: "Foto: ";
}

64
assets/js/pswp-init.js Normal file
View file

@ -0,0 +1,64 @@
/*
Put this file in /static/js/pswp-init.js
*/
$( document ).ready(function() {
var items = []; // array of slide objects that will be passed to PhotoSwipe()
// for every figure element on the page:
$('figure').each( function() {
if ($(this).attr('class') == 'pswp-ignore') return true; // ignore any figures where class="pswp-ignore"
// get properties from child a/img/figcaption elements,
var $figure = $(this),
$a = $figure.find('a'),
$src = $a.attr('href'),
$title = $figure.find('figcaption').html(),
$msrc = $figure.find('img').attr('src');
// if data-size on <a> tag is set, read it and create an item
if ($a.data('size')) {
var $size = $a.data('size').split('x');
var item = {
src : $src,
w : $size[0],
h : $size[1],
title : $title,
msrc : $msrc
};
// if not, set temp default size then load the image to check actual size
} else {
var item = {
src : $src,
w : 800, // temp default size
h : 600, // temp default size
title : $title,
msrc : $msrc
};
// load the image to check its dimensions
// update the item as soon as w and h are known (check every 30ms)
var img = new Image();
img.src = $src;
var wait = setInterval(function() {
var w = img.naturalWidth,
h = img.naturalHeight;
if (w && h) {
clearInterval(wait);
item.w = w;
item.h = h;
}
}, 30);
}
// Save the index of this image then add it to the array
var index = items.length;
items.push(item);
// Event handler for click on a figure
$figure.on('click', function(event) {
event.preventDefault(); // prevent the normal behaviour i.e. load the <a> hyperlink
// Get the PSWP element and initialise it with the desired options
var $pswp = $('.pswp')[0];
var options = {
index: index,
bgOpacity: 0.8,
showHideOpacity: true
}
new PhotoSwipe($pswp, PhotoSwipeUI_Default, items, options).init();
});
});
});

View file

@ -23,6 +23,8 @@ tags:
- Winlink
---
{{< pswp-init >}}
So I recently sold my iPhone 14 Pro and bought a Google Pixel 9 Pro. I used that for
about two weeks when I finally replaced the vanilla Android with [GrapheneOS](https://grapheneos.org/).
@ -35,6 +37,10 @@ I assume the app is all set up with basic information like CALLSIGN, Grid, etc.
## Packet connection
![Session config screen](session.packet.1.png)
![Packet config screen](session.packet.2.png)
![TNC config screen](session.packet.3.png)
I love simple and small configurations (mostly) and this one is really small.
When I'm out hiking I usually have an <abbr title="handheld transceiver">HT</abbr>
with me -- usually an Icom ID-52. Together with a Mobilinkd

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -1,9 +1,13 @@
{{- if eq .Site.BaseURL "https://oe7drt.com/" }}
{{ partial "plausible_head.html" . }}
{{- end }}
{{- if eq .Site.BaseURL "https://oe7drt.com/" }} {{ partial
"plausible_head.html" . }} {{- end }}
<meta name="fediverse:creator" content="@oe7drt@mastodon.radio" />
{{ with resources.Get "js/lightbox.js" }} {{ if hugo.IsDevelopment }} {{ with .
<script
src="https://code.jquery.com/jquery-1.12.4.min.js"
integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ="
crossorigin="anonymous"
></script>
{{ with resources.Get "js/pswp-init.js" }} {{ if hugo.IsDevelopment }} {{ with .
| js.Build }}
<script
defer
@ -13,7 +17,7 @@
data-copied="Copied"
></script>
{{ end }} {{ else }} {{ $opts := (dict "minify" true "targetPath"
"js/lightbox.js") }} {{ with . | js.Build $opts | fingerprint }}
"js/pswp-init.js") }} {{ with . | js.Build $opts | fingerprint }}
<script
defer
type="text/javascript"
@ -22,8 +26,8 @@
data-copied="Copied"
integrity="{{ .Data.Integrity }}"
></script>
{{ end }} {{ end }} {{ end }} {{ with resources.Get "css/lightbox.css" }} {{ if
hugo.IsDevelopment }} {{ with . }}
{{ end }} {{ end }} {{ end }} {{ with resources.Get "css/pswp-gallery.css" }} {{
if hugo.IsDevelopment }} {{ with . }}
<link
type="text/css"
rel="stylesheet"

View file

@ -0,0 +1,24 @@
<!--
Put this file in /layouts/shortcodes/figure.html
NB this overrides Hugo's built-in "figure" shortcode but is backwards compatible
-->
<figure {{ with .Get "class" }}class="{{.}}"{{ end }} itemprop="associatedMedia" itemscope itemtype="http://schema.org/ImageObject">
<a href="{{ with .Get "link" }}{{.}}{{ else }}{{ .Get "src" }}{{ end }}" {{ with .Get "size" }}data-size="{{.}}"{{ end }} itemprop="contentUrl">
<img itemprop="thumbnail"
src="{{ with .Get "src" }}{{.}}{{ else }}{{ printf "%s." (.Get "thumb") | replace (.Get "link") "." }}{{ end }}"
{{ if or (.Get "alt") (.Get "caption") }}alt="{{ with .Get "alt" }}{{.}}{{else}}{{ .Get "caption" }}{{ end }}"{{ end }}
{{ with .Get "width" }}width="{{.}}"{{ end }}/>
</a>
{{ if or (or (.Get "title") (.Get "caption")) (.Get "attr")}}
<figcaption>
{{ with .Get "title" }}<h4>{{.}}</h4>{{ end }}
{{ if or (.Get "caption") (.Get "attr")}}
<p>
{{ .Get "caption" }}
{{ with .Get "attrlink"}}<a href="{{.}}">{{ .Get "attr" }}</a>{{ else }}{{ .Get "attr"}}{{ end }}
</p>
{{ end }}
</figcaption>
{{ end }}
</figure>

View file

@ -0,0 +1,7 @@
<!--
Put this file in /layouts/shortcodes/gallery.html
-->
<div class="gallery" itemscope itemtype="http://schema.org/ImageGallery">
{{ .Inner }}
<div class="title">{{ .Get "title" }}</div>
</div>

View file

@ -0,0 +1,88 @@
<!--
Put this file in /layouts/shortcodes/pswp-init.html
-->
<!-- Photoswipe css/js libraries -->
<link
rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.1/photoswipe.min.css"
integrity="sha256-sCl5PUOGMLfFYctzDW3MtRib0ctyUvI9Qsmq2wXOeBY="
crossorigin="anonymous"
/>
<link
rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.1/default-skin/default-skin.min.css"
integrity="sha256-BFeI1V+Vh1Rk37wswuOYn5lsTcaU96hGaI7OUVCLjPc="
crossorigin="anonymous"
/>
<script
src="https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.1/photoswipe.min.js"
integrity="sha256-UplRCs9v4KXVJvVY+p+RSo5Q4ilAUXh7kpjyIP5odyc="
crossorigin="anonymous"
></script>
<script
src="https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.1/photoswipe-ui-default.min.js"
integrity="sha256-PWHOlUzc96pMc8ThwRIXPn8yH4NOLu42RQ0b9SpnpFk="
crossorigin="anonymous"
></script>
<!-- Root element of PhotoSwipe. Must have class pswp. -->
<div class="pswp" tabindex="-1" role="dialog" aria-hidden="true">
<!-- Background of PhotoSwipe.
It's a separate element, as animating opacity is faster than rgba(). -->
<div class="pswp__bg"></div>
<!-- Slides wrapper with overflow:hidden. -->
<div class="pswp__scroll-wrap">
<!-- Container that holds slides.
PhotoSwipe keeps only 3 of them in DOM to save memory.
Don't modify these 3 pswp__item elements, data is added later on. -->
<div class="pswp__container">
<div class="pswp__item"></div>
<div class="pswp__item"></div>
<div class="pswp__item"></div>
</div>
<!-- Default (PhotoSwipeUI_Default) interface on top of sliding area. Can be changed. -->
<div class="pswp__ui pswp__ui--hidden">
<div class="pswp__top-bar">
<!-- Controls are self-explanatory. Order can be changed. -->
<div class="pswp__counter"></div>
<button
class="pswp__button pswp__button--close"
title="Close (Esc)"
></button>
<button class="pswp__button pswp__button--share" title="Share"></button>
<button
class="pswp__button pswp__button--fs"
title="Toggle fullscreen"
></button>
<button
class="pswp__button pswp__button--zoom"
title="Zoom in/out"
></button>
<!-- Preloader demo http://codepen.io/dimsemenov/pen/yyBWoR -->
<!-- element will get class pswp__preloader--active when preloader is running -->
<div class="pswp__preloader">
<div class="pswp__preloader__icn">
<div class="pswp__preloader__cut">
<div class="pswp__preloader__donut"></div>
</div>
</div>
</div>
</div>
<div class="pswp__share-modal pswp__share-modal--hidden pswp__single-tap">
<div class="pswp__share-tooltip"></div>
</div>
<button
class="pswp__button pswp__button--arrow--left"
title="Previous (arrow left)"
></button>
<button
class="pswp__button pswp__button--arrow--right"
title="Next (arrow right)"
></button>
<div class="pswp__caption">
<div class="pswp__caption__center"></div>
</div>
</div>
</div>
</div>