Changeset 8d32dcf in Klonkt
- Timestamp:
- 06/19/2026 06:47:40 AM (3 months ago)
- Branches:
- main
- Children:
- 84325b8
- Parents:
- b9dc94c
- Location:
- src
- Files:
-
- 4 added
- 4 edited
-
config/database.js (modified) (1 diff)
-
routes/admin-shows.js (added)
-
routes/shows.js (added)
-
server.js (modified) (3 diffs)
-
services/SubscriberService.js (modified) (1 diff)
-
views/pages/admin-shows.ejs (added)
-
views/pages/admin.ejs (modified) (1 diff)
-
views/pages/shows.ejs (added)
Legend:
- Unmodified
- Added
- Removed
-
src/config/database.js
rb9dc94c r8d32dcf 228 228 `); 229 229 230 // Show-agenda (premium #8): tourdata/optredens per site. 231 db.exec(` 232 CREATE TABLE IF NOT EXISTS shows ( 233 id TEXT PRIMARY KEY, 234 site_id TEXT NOT NULL, 235 date TEXT NOT NULL, 236 time TEXT, 237 city TEXT NOT NULL, 238 venue TEXT, 239 country TEXT, 240 ticket_url TEXT, 241 notes TEXT, 242 created_at DATETIME DEFAULT CURRENT_TIMESTAMP 243 ); 244 CREATE INDEX IF NOT EXISTS idx_shows_site_date ON shows(site_id, date); 245 `); 246 230 247 // Link-in-bio klikstatistiek (premium #6). Per (site, url) een teller; de 231 248 // link-in-bio-pagina linkt via /links/go/:i dat de klik telt en doorstuurt. -
src/server.js
rb9dc94c r8d32dcf 59 59 import linkbioRoutes from './routes/linkbio.js'; 60 60 import embedRoutes from './routes/embed.js'; 61 import showsRoutes from './routes/shows.js'; 62 import adminShowsRoutes from './routes/admin-shows.js'; 61 63 62 64 if (!process.env.SESSION_SECRET) { … … 260 262 app.use('/admin/stats', adminStatsRoutes); 261 263 app.use('/admin/newsletter', adminNewsletterRoutes); 264 app.use('/admin/shows', adminShowsRoutes); 262 265 app.use('/admin', adminRoutes); 263 266 app.use('/prutter', prutterRoutes); … … 279 282 app.use('/', linkbioRoutes); // /links link-in-bio + klikstats (premium) 280 283 app.use('/', embedRoutes); // /embed inbedbare audiospeler (premium) 284 app.use('/', showsRoutes); // /shows agenda + notify-me (premium) 281 285 app.use('/', postsRoutes); 282 286 -
src/services/SubscriberService.js
rb9dc94c r8d32dcf 69 69 } 70 70 71 /** Bevestigde abonnees (email + token) voor een site — voor het versturen. */ 72 export function confirmedFor(siteId) { 71 /** Bevestigde abonnees (email + token) voor een site — voor het versturen. 72 * Optioneel filteren op bron (bv. 'notify' voor show-aankondigingen). */ 73 export function confirmedFor(siteId, source) { 74 if (source) { 75 return db.prepare("SELECT email, token FROM subscribers WHERE site_id = ? AND status = 'confirmed' AND source = ?").all(siteId, source); 76 } 73 77 return db.prepare("SELECT email, token FROM subscribers WHERE site_id = ? AND status = 'confirmed'").all(siteId); 74 78 } -
src/views/pages/admin.ejs
rb9dc94c r8d32dcf 37 37 <% if (tenancy !== 'hub' && primarySite) { %><a href="/downloads" class="btn" target="_blank">⬇ Downloads</a><% } %> 38 38 <% if (tenancy !== 'hub' && primarySite) { %><a href="/links" class="btn" target="_blank">🔗 Link-in-bio</a><% } %> 39 <a href="/admin/shows" class="btn">📅 Agenda</a> 39 40 <% } %> 40 41 <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)