Changeset 91094a4 in Klonkt
- Timestamp:
- 06/19/2026 01:09:15 AM (3 months ago)
- Branches:
- main
- Children:
- 37edecd
- Parents:
- 2e247e4
- Location:
- src
- Files:
-
- 3 added
- 5 edited
-
config/database.js (modified) (1 diff)
-
routes/admin-audio.js (modified) (3 diffs)
-
routes/download.js (added)
-
server.js (modified) (2 diffs)
-
views/pages/admin-audio.ejs (modified) (1 diff)
-
views/pages/admin.ejs (modified) (1 diff)
-
views/pages/download.ejs (added)
-
views/pages/downloads.ejs (added)
Legend:
- Unmodified
- Added
- Removed
-
src/config/database.js
r2e247e4 r91094a4 87 87 ensureColumn('posts', 'view_count', 'INTEGER DEFAULT 0'); // weergaven per post 88 88 ensureColumn('audio_tracks', 'play_count', 'INTEGER DEFAULT 0'); // plays per track 89 ensureColumn('audio_tracks', 'downloadable', 'INTEGER DEFAULT 0'); // download-voor-email (premium #2) 89 90 90 91 // Playlists (v9 feature) — first-class entity. CREATE IF NOT EXISTS is -
src/routes/admin-audio.js
r2e247e4 r91094a4 78 78 const rows = db.prepare(` 79 79 SELECT t.id, t.title, t.artist, t.album, t.duration, t.cover_url, 80 t.position, t.created_at, m.filename, m.size, m.mime_type80 t.position, t.created_at, t.downloadable, m.filename, m.size, m.mime_type 81 81 FROM audio_tracks t 82 82 LEFT JOIN media m ON m.id = t.media_id … … 241 241 }); 242 242 }); 243 }); 244 245 // Download-voor-email per track aan/uit (premium #2). Zonder-JS toggle vanaf de 246 // audio-beheerlijst → flip + terug. 247 router.post('/:id/downloadable', requireGod, (req, res) => { 248 const site = res.locals.site; 249 if (!site) return res.status(404).send('Site required'); 250 const row = db.prepare('SELECT downloadable FROM audio_tracks WHERE id = ? AND site_id = ?').get(req.params.id, site.id); 251 if (row) { 252 db.prepare('UPDATE audio_tracks SET downloadable = ? WHERE id = ? AND site_id = ?') 253 .run(row.downloadable ? 0 : 1, req.params.id, site.id); 254 } 255 res.redirect('/admin/audio'); 243 256 }); 244 257 … … 413 426 } 414 427 428 if (Object.prototype.hasOwnProperty.call(body, 'downloadable')) { 429 fields.push('downloadable = ?'); values.push(body.downloadable ? 1 : 0); 430 } 431 415 432 if (fields.length === 0) { 416 433 return res.status(400).json({ error: 'Niks om te updaten' }); -
src/server.js
r2e247e4 r91094a4 55 55 import newsletterRoutes from './routes/newsletter.js'; 56 56 import adminNewsletterRoutes from './routes/admin-newsletter.js'; 57 import downloadRoutes from './routes/download.js'; 57 58 58 59 if (!process.env.SESSION_SECRET) { … … 271 272 app.use('/', epkRoutes); // /pers perskit (premium; niet-premium: next() -> 404) 272 273 app.use('/', newsletterRoutes); // /nieuwsbrief in/uitschrijven (premium; niet-premium: next()) 274 app.use('/', downloadRoutes); // /downloads + /download/:id download-voor-email (premium) 273 275 app.use('/', postsRoutes); 274 276 -
src/views/pages/admin-audio.ejs
r2e247e4 r91094a4 101 101 <% } %> 102 102 <button type="button" class="ax-icon-btn" data-track-edit data-id="<%= t.id %>" aria-label="Bewerken" title="Bewerken">✎</button> 103 <% if (typeof premiumUnlocked === 'undefined' || premiumUnlocked) { %> 104 <form action="/admin/audio/<%= t.id %>/downloadable" method="post" class="ax-track-delete" style="display:inline"> 105 <button type="submit" class="ax-icon-btn" aria-label="Download-voor-email" title="<%= t.downloadable ? 'Download-voor-email staat AAN — klik om uit te zetten' : 'Download-voor-email staat uit — klik om aan te zetten' %>" style="<%= t.downloadable ? 'color:var(--accent,#6b8f71)' : 'opacity:.5' %>">⬇</button> 106 </form> 107 <% } %> 103 108 <form action="/admin/audio/<%= t.id %>/delete" method="post" onsubmit="return confirm('Track verwijderen?')" class="ax-track-delete"> 104 109 <button type="submit" class="ax-icon-btn ax-icon-btn-danger" aria-label="Verwijderen" title="Verwijderen">🗑</button> -
src/views/pages/admin.ejs
r2e247e4 r91094a4 35 35 <a href="/admin/newsletter" class="btn">✉️ Nieuwsbrief</a> 36 36 <% if (tenancy !== 'hub' && primarySite) { %><a href="/pers" class="btn" target="_blank">📰 Perskit</a><% } %> 37 <% if (tenancy !== 'hub' && primarySite) { %><a href="/downloads" class="btn" target="_blank">⬇ Downloads</a><% } %> 37 38 <% } %> 38 39 <a href="/admin/updates" class="btn">🔄 Updates</a>
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)