Changeset b4af6f3 in Klonkt for src/routes/posts.js
- Timestamp:
- 08/24/2026 07:22:58 AM (2 weeks ago)
- Branches:
- main
- Children:
- 27cb1e3
- Parents:
- fbacddc
- File:
-
- 1 edited
-
src/routes/posts.js (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/routes/posts.js
rfbacddc rb4af6f3 822 822 } 823 823 824 // De muziek van een betaalde post op de poortpagina zelf. 825 // 826 // WAAROM DIE DAAR HOORT. Zodra een nummer `fedi_open` is, federeert het als 827 // eigen Audio-object en speelt het bij iedereen die de post in een hub of in 828 // Mastodon tegenkomt. Toonde de poort het dan NIET, dan was de muziek overal 829 // beschikbaar behalve op de site die hem uitbrengt -- en dat is de verkeerde 830 // kant op (Robin, 24-8). De muur staat om de tekst. 831 // 832 // ALLES OF NIETS. Alleen als ELK nummer waar de post naar wijst open staat. 833 // Een shortcode rendert zijn hele lijst, dus bij een half-open bandje zou de 834 // speler ook de gesloten nummers krijgen -- en /audio/stream laat een 835 // gelijke-oorsprong-fetch door, dus dat is geen theoretisch lek maar een echt. 836 // Half open is hier dus dicht. 837 // 838 // De TEKST komt hier niet langs: we geven renderPostBodyHtml een post mee die 839 // alleen uit de audio-shortcodes bestaat. Wat niet meegegeven wordt kan ook 840 // niet lekken -- dezelfde regel als bij readerItems. 841 export function paidOpenAudioHtml(site, post, req) { 842 if (!postAudioFediOpen(site.id, post.content)) return ''; 843 const codes = String(post.content || '').match(/\[\[(?:track|album|playlist):[^\]]+\]\]/gi) || []; 844 if (!codes.length) return ''; 845 const alleenMuziek = codes.join('\n'); 846 try { 847 return renderPostBodyHtml(site, { ...post, content: alleenMuziek, content_rendered: alleenMuziek }, req); 848 } catch { return ''; /* geen speler is geen kapotte poort */ } 849 } 850 824 851 function postNeighbors(site, post) { 825 852 const ordered = db.prepare(` … … 1573 1600 if (post.paid && !canEditThis && !_unlocked) { 1574 1601 const { newerPost, olderPost } = postNeighbors(site, post); 1602 const pgAudio = paidOpenAudioHtml(site, post, req); 1575 1603 return renderPage(req, res, 'pages/paid-gate', { 1576 pageJs: 'paid-gate' ,1604 pageJs: 'paid-gate' + (pgAudio ? ' tape' : ''), 1577 1605 pageTitle: post.title || 'Voor supporters', 1578 1606 bodyClass: 'on-special', 1579 1607 pgTitle: post.title || '', 1580 1608 pgTeaser: paidTeaser(post), 1609 pgAudio, 1581 1610 pgCents: post.paid_min_cents || paidDefaultMinCents(site.id), 1582 1611 pgSlug: post.slug,
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)