Changeset d8c6a83 in Klonkt
- Timestamp:
- 06/20/2026 08:29:48 AM (3 months ago)
- Branches:
- main
- Children:
- d68bcf1
- Parents:
- cf0de0c
- Location:
- src
- Files:
-
- 5 edited
-
assets/css/style.css (modified) (1 diff)
-
routes/download.js (modified) (2 diffs)
-
routes/posts.js (modified) (1 diff)
-
views/pages/downloads.ejs (modified) (1 diff)
-
views/shell.ejs (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
src/assets/css/style.css
rcf0de0c rd8c6a83 612 612 .post-image--right { text-align: right; } 613 613 .post-image--right img { margin-left: auto; margin-right: 0; } 614 615 /* Afbeeldingen in de post-tekst vullen ALTIJD de containerbreedte en houden hun 616 natuurlijke (niet-bijgesneden) hoogte — geen vaste hoogte / geen crop. */ 617 .post-content img { 618 display: block; 619 width: 100%; 620 max-width: 100%; 621 height: auto; 622 border-radius: 6px; 623 margin: 1.4em auto; 624 } 614 625 615 626 /* Mini-player + bottom-tab clearance: applied to .pcms-main so the footer -
src/routes/download.js
rcf0de0c rd8c6a83 20 20 import { premiumUnlocked } from '../services/PatreonService.js'; 21 21 import { addSubscriber } from '../services/SubscriberService.js'; 22 import { postNeighbors } from './posts.js'; 22 23 23 24 const router = express.Router(); 25 26 // Als er een echte (gepinde) post met slug 'downloads' bestaat, hangt de 27 // downloads-lijst feitelijk aan die post. Dan tonen we óók de Newer/Older-postnav, 28 // zodat de bezoeker net als bij een post verder kan bladeren. 29 function downloadsPostNav(req, res) { 30 const site = res.locals.site; 31 if (!site) return {}; 32 const post = db.prepare( 33 "SELECT id, slug, pinned FROM posts WHERE site_id = ? AND slug = 'downloads' AND status = 'published'" 34 ).get(site.id); 35 if (!post) return {}; 36 try { return postNeighbors(site, post, res.locals.tenancy === 'hub'); } catch (e) { return {}; } 37 } 24 38 const __dirname = path.dirname(fileURLToPath(import.meta.url)); 25 39 const AUDIO_DIR = path.resolve(process.env.AUDIO_PATH || path.join(__dirname, '..', '..', 'storage', 'audio')); … … 50 64 WHERE site_id = ? AND downloadable = 1 ORDER BY position ASC, created_at ASC` 51 65 ).all(site.id); 66 const nav = downloadsPostNav(req, res); 52 67 renderPage(req, res, 'pages/downloads', { 53 68 pageTitle: 'Downloads — ' + (site.title || ''), 54 69 bodyClass: 'on-downloads', 55 70 dlTracks: tracks, 71 newerPost: nav.newerPost || null, 72 olderPost: nav.olderPost || null, 56 73 }); 57 74 }); -
src/routes/posts.js
rcf0de0c rd8c6a83 718 718 719 719 export default router; 720 export { postNeighbors }; -
src/views/pages/downloads.ejs
rcf0de0c rd8c6a83 3 3 %> 4 4 <section class="dls"> 5 <%- include('../partials/post-nav', { newerPost: (typeof newerPost !== 'undefined' ? newerPost : null), olderPost: (typeof olderPost !== 'undefined' ? olderPost : null) }) %> 5 6 <h1 class="dls-h1">Downloads</h1> 6 7 <p class="dls-sub">Gratis te downloaden — laat je e-mailadres achter en je krijgt het bestand.</p> -
src/views/shell.ejs
rcf0de0c rd8c6a83 163 163 164 164 <!-- v9 stylesheet (full palette system) --> 165 <link rel="stylesheet" href="/assets/css/style.css?v= 19">165 <link rel="stylesheet" href="/assets/css/style.css?v=20"> 166 166 167 167 <!-- Audio player styles: loaded on every page so the mini-player works
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)