diff --git a/assets/css/hugo-easy-gallery.css b/assets/css/hugo-easy-gallery.css new file mode 100644 index 0000000..d78dfec --- /dev/null +++ b/assets/css/hugo-easy-gallery.css @@ -0,0 +1,159 @@ +/* +Put this file in /static/css/hugo-easy-gallery.css +Documentation and licence at https://github.com/liwenyip/hugo-easy-gallery/ +*/ + + +/* +Grid Layout Styles +*/ +.gallery { + overflow: hidden; + margin: 10px; + max-width: 768px; +} +.gallery .box { + float: left; + position: relative; + /* Default: 1 tile wide */ + width: 100%; + padding-bottom: 100%; +} +@media only screen and (min-width : 365px) { + /* Tablet view: 2 tiles */ + .gallery .box { + width: 50%; + padding-bottom: 50%; + } +} +@media only screen and (min-width : 480px) { + /* Small desktop / ipad view: 3 tiles */ + .gallery .box { + width: 33.3%; + padding-bottom: 33.3%; /* */ + } +} +@media only screen and (min-width : 9999px) { + /* Medium desktop: 4 tiles */ + .box { + width: 25%; + padding-bottom: 25%; + } +} + +/* +Transition styles +*/ +.gallery.hover-transition figure, +.gallery.hover-effect-zoom .img, +.gallery:not(.caption-effect-appear) figcaption, +.fancy-figure:not(.caption-effect-appear) figcaption { + -webkit-transition: all 0.3s ease-in-out; + -moz-transition: all 0.3s ease-in-out; + -o-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; +} +/* +figure styles +*/ +figure { + position:relative; /* purely to allow absolution positioning of figcaption */ + overflow: hidden; +} +.gallery figure { + position: absolute; + left: 5px; + right: 5px; + top: 5px; + bottom: 5px; +} +.gallery.hover-effect-grow figure:hover { + transform: scale(1.05); +} +.gallery.hover-effect-shrink figure:hover { + transform: scale(0.95); +} +.gallery.hover-effect-slidedown figure:hover { + transform: translateY(5px); +} +.gallery.hover-effect-slideup figure:hover { + transform: translateY(-5px); +} + +/* +img / a styles +*/ + +.gallery .img { + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + background-size: cover; + background-position: 50% 50%; + background-repeat: no-repeat; +} +.gallery.hover-effect-zoom figure:hover .img { + transform: scale(1.05); +} +.gallery img { + display: none; /* only show the img if not inside a gallery */ +} +figure a { + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; +} + +/* +figcaption styles +*/ +.gallery figcaption, +.fancy-figure figcaption { + position: absolute; + bottom: 0; + left: 0; + right: 0; + background: #000; + color: #FFF; + text-align: center; + font-size: 75%; /* change this if you want bigger text */ + background: rgba(0, 0, 0, 0.5); + opacity: 1; + cursor: pointer; +} +.gallery.caption-position-none figcaption, +.fancy-figure.caption-position-none figcaption { + display: none; +} +.gallery.caption-position-center figcaption, +.fancy-figure.caption-position-center figcaption { + top: 0; + padding: 40% 5px; +} +.gallery.caption-position-bottom figcaption, +.fancy-figure.caption-position-bottom figcaption { + padding: 5px; +} +.gallery.caption-effect-fade figure:not(:hover) figcaption, +.gallery.caption-effect-appear figure:not(:hover) figcaption, +.fancy-figure.caption-effect-fade figure:not(:hover) figcaption, +.fancy-figure.caption-effect-appear figure:not(:hover) figcaption { + background: rgba(0, 0, 0, 0); + opacity: 0; +} +.gallery.caption-effect-slide.caption-position-bottom figure:not(:hover) figcaption, +.fancy-figure.caption-effect-slide.caption-position-bottom figure:not(:hover) figcaption { + margin-bottom: -100%; +} +.gallery.caption-effect-slide.caption-position-center figure:not(:hover) figcaption, +.fancy-figure.caption-effect-slide.caption-position-center figure:not(:hover) figcaption { + top: 100%; +} +figcaption p { + margin: auto; /* override style in theme */ +} + diff --git a/assets/js/load-photoswipe.js b/assets/js/load-photoswipe.js new file mode 100644 index 0000000..978c66d --- /dev/null +++ b/assets/js/load-photoswipe.js @@ -0,0 +1,80 @@ +/* +Put this file in /static/js/load-photoswipe.js +Documentation and licence at https://github.com/liwenyip/hugo-easy-gallery/ +*/ + +/* Show an alert if this js file has been loaded twice */ +if (window.loadphotoswipejs) { + window.alert("You've loaded load-photoswipe.js twice. See https://github.com/liwenyip/hugo-easy-gallery/issues/6") +} +var loadphotoswipejs = 1 + +/* TODO: Make the share function work */ +$( document ).ready(function() { + /* + Initialise Photoswipe + */ + 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') == 'no-photoswipe') return true; // ignore any figures where class="no-photoswipe" + // get properties from child a/img/figcaption elements, + var $figure = $(this), + $a = $figure.find('a'), + $img = $figure.find('img'), + $src = $a.attr('href'), + $title = $img.attr('alt'), + $msrc = $img.attr('src'); + // if data-size on 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 + }; + console.log("Using pre-defined dimensions for " + $src); + // 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 + }; + console.log("Using default dimensions for " + $src); + // 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; + console.log("Got actual dimensions for " + img.src); + } + }, 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 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(); + }); + }); +}); \ No newline at end of file diff --git a/content/posts/2025/75-winlink-on-android-with-woad/img1/session.packet.1.png b/content/posts/2025/75-winlink-on-android-with-woad/img1/session.packet.1.png new file mode 100644 index 0000000..ce14295 --- /dev/null +++ b/content/posts/2025/75-winlink-on-android-with-woad/img1/session.packet.1.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:22b1ea28d1ff0f0ba3ae74bd94412baae8c4a843792acf223c4405175478df53 +size 26848 diff --git a/content/posts/2025/75-winlink-on-android-with-woad/img1/session.packet.2.png b/content/posts/2025/75-winlink-on-android-with-woad/img1/session.packet.2.png new file mode 100644 index 0000000..5951504 --- /dev/null +++ b/content/posts/2025/75-winlink-on-android-with-woad/img1/session.packet.2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c66f43bb7fd8f76c43be18127a427c348c7550c4f35e841a535564ab3c29d784 +size 28416 diff --git a/content/posts/2025/75-winlink-on-android-with-woad/img1/session.packet.3.png b/content/posts/2025/75-winlink-on-android-with-woad/img1/session.packet.3.png new file mode 100644 index 0000000..ca7ec9e --- /dev/null +++ b/content/posts/2025/75-winlink-on-android-with-woad/img1/session.packet.3.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:126860b0dd154c880e73522506845d8dc6840feb5b48e9ec9f3a230a68d9e030 +size 30369 diff --git a/content/posts/2025/75-winlink-on-android-with-woad/index.md b/content/posts/2025/75-winlink-on-android-with-woad/index.md index 8aaea97..f369c7c 100644 --- a/content/posts/2025/75-winlink-on-android-with-woad/index.md +++ b/content/posts/2025/75-winlink-on-android-with-woad/index.md @@ -35,6 +35,8 @@ I assume the app is all set up with basic information like CALLSIGN, Grid, etc. ## Packet connection +{{< gallery dir="img1" />}} + I love simple and small configurations (mostly) and this one is really small. When I'm out hiking I usually have an HT with me -- usually an Icom ID-52. Together with a Mobilinkd diff --git a/layouts/partials/extend-footer.html b/layouts/partials/extend-footer.html index 4e3f831..7e7ac39 100644 --- a/layouts/partials/extend-footer.html +++ b/layouts/partials/extend-footer.html @@ -1,16 +1,48 @@
-
-

- Served> with Arch Linux and Apache httpd ┊ - Atom feed ┊ - Json feed -

-
+
+

+ Served> with + Arch Linux + and + Apache httpd + ┊ + Atom feed + ┊ + Json feed +

+
- + + diff --git a/layouts/partials/extend-head.html b/layouts/partials/extend-head.html index e6af5b6..27dc490 100644 --- a/layouts/partials/extend-head.html +++ b/layouts/partials/extend-head.html @@ -1,10 +1,14 @@ -{{- if eq .Site.BaseURL "https://oe7drt.com/" }} - {{ partial "plausible_head.html" . }} -{{- end }} +{{- if eq .Site.BaseURL "https://oe7drt.com/" }} {{ partial +"plausible_head.html" . }} {{- end }} -{{ with resources.Get "js/lightbox.js" }} {{ if hugo.IsDevelopment }} {{ with . -| js.Build }} + +{{ with resources.Get "js/load-photoswipe.js" }} {{ if hugo.IsDevelopment }} {{ +with . | js.Build }} {{ end }} {{ else }} {{ $opts := (dict "minify" true "targetPath" -"js/lightbox.js") }} {{ with . | js.Build $opts | fingerprint }} +"js/load-photoswipe.js") }} {{ with . | js.Build $opts | fingerprint }} -{{ end }} {{ end }} {{ end }} {{ with resources.Get "css/lightbox.css" }} {{ if -hugo.IsDevelopment }} {{ with . }} +{{ end }} {{ end }} {{ end }} {{ with resources.Get "css/hugo-easy-gallery.css" +}} {{ if hugo.IsDevelopment }} {{ with . }} + +{{- $thumb := .Get "src" | default (printf "%s." (.Get "thumb") | replace (.Get "link") ".") }} +
+
+
+ +
+ {{ with .Get "link" | default (.Get "src") }}{{ end }} + {{- if or (or (.Get "title") (.Get "caption")) (.Get "attr")}} +
+ {{- with .Get "title" }}

{{.}}

{{ end }} + {{- if or (.Get "caption") (.Get "attr")}} +

+ {{- .Get "caption" -}} + {{- with .Get "attrlink"}}{{ .Get "attr" }}{{ else }}{{ .Get "attr"}}{{ end -}} +

+ {{- end }} +
+ {{- end }} +
+
diff --git a/layouts/shortcodes/gallery.html b/layouts/shortcodes/gallery.html new file mode 100644 index 0000000..52b27f7 --- /dev/null +++ b/layouts/shortcodes/gallery.html @@ -0,0 +1,41 @@ + + +{{- if not ($.Page.Scratch.Get "figurecount") }}{{ end }} +{{- $.Page.Scratch.Add "figurecount" 1 }} +{{ $baseURL := .Site.BaseURL }} + diff --git a/layouts/shortcodes/load-photoswipe.html b/layouts/shortcodes/load-photoswipe.html new file mode 100644 index 0000000..4b3bfad --- /dev/null +++ b/layouts/shortcodes/load-photoswipe.html @@ -0,0 +1,75 @@ + + + +{{ if not ($.Page.Scratch.Get "photoswipeloaded") }} + {{ $.Page.Scratch.Set "photoswipeloaded" 1 }} + + + + + + + + + + + +{{ end }} \ No newline at end of file