51b082ccf4
The profile header, photo page byline and copyright footer previously
hardcoded the author name, handle, bio, and font choices. Move all of
these to CLI flags on the binary and matching options on the NixOS
module so the same build can serve any single-user gallery.
New surface, all with defaults matching the previous hardcoded values:
--author / services.photogallery.author
--handle / services.photogallery.handle
--bio / services.photogallery.bio
--bio-alt / services.photogallery.bioAlt ("" to omit)
--fonts-url / services.photogallery.fontsURL
--serif-family / services.photogallery.serifFamily
--ml-family / services.photogallery.mlFamily
Templates read the two font families from a small inline <style> that
overrides the :root variables, so the stylesheet stays fully static and
the font URL is loaded via the configured stylesheet link.
README updated to describe the new options, the medium/full-size photo
detail flow, and the EXIF-based date prefill on the upload page.
52 lines
1.7 KiB
HTML
52 lines
1.7 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<title>Photo Gallery</title>
|
||
<link rel="stylesheet" href="{{.FontsURL}}">
|
||
<link rel="stylesheet" href="/static/style.css">
|
||
<style>:root { --serif: '{{.SerifFamily}}', Georgia, serif; --mj: '{{.MlFamily}}', sans-serif; }</style>
|
||
<link rel="alternate" type="application/atom+xml" href="/feed.xml" title="Photo Feed">
|
||
</head>
|
||
<body>
|
||
<header class="profile-hdr">
|
||
<div class="profile-inner">
|
||
<div class="avatar-ring">
|
||
<span class="avatar-initials">{{.Initial}}</span>
|
||
</div>
|
||
<div class="pinfo">
|
||
<h1>{{.Author}}</h1>
|
||
<p class="handle">{{.Handle}}</p>
|
||
<p class="pcount"><strong>{{len .Photos}}</strong> posts</p>
|
||
<p class="pbio">{{.Bio}}{{if .BioAlt}}<br><span class="ml">{{.BioAlt}}</span>{{end}}</p>
|
||
<a href="/feed.xml" class="rss-a">
|
||
<svg width="14" height="14" viewBox="0 0 14 14" fill="currentColor" aria-hidden="true">
|
||
<circle cx="2.5" cy="11.5" r="1.5"/>
|
||
<path d="M1.5 7.5A5 5 0 0 1 6.5 12.5H8A6.5 6.5 0 0 0 1.5 6V7.5z"/>
|
||
<path d="M1.5 4A8.5 8.5 0 0 1 10 12.5h1.5A10 10 0 0 0 1.5 2.5V4z"/>
|
||
</svg>
|
||
RSS feed
|
||
</a>
|
||
</div>
|
||
</div>
|
||
</header>
|
||
|
||
<main>
|
||
<div class="grid-wrap">
|
||
<div class="pgrid">
|
||
{{range .Photos}}
|
||
<a href="/photo/{{.Slug}}/" class="ptile">
|
||
<img src="/{{.Thumb}}" alt="{{.Caption}}" loading="lazy">
|
||
</a>
|
||
{{end}}
|
||
</div>
|
||
</div>
|
||
</main>
|
||
|
||
<footer class="site-footer">
|
||
© 2000–{{.Year}} {{.Author}}. All rights reserved.
|
||
</footer>
|
||
</body>
|
||
</html>
|