source: Klonkt/src/views/partials/post-body.ejs@ f5cf299

main
Last change on this file since f5cf299 was 8b65e67, checked in by Bart <bart@…>, 3 weeks ago

Een gesloten bericht houdt zijn plek, en zijn tekst blijft thuis

Tweede stap voor de tijdlijn (Barts idee, naar bartoverkamp.nl): hele berichten
in de stroom in plaats van kaartjes. Een poort kan dan geen pagina meer zijn --
een betaald of fan-bericht moet ter plekke zeggen wat er is, met behoud van zijn
plek. Weglaten zou erger zijn: dan zien een supporter en een vreemde een andere
tijdlijn met andere buren, en klopt "vorige/volgende" voor niemand.

postEntry() is met opzet een functie en geen sjabloonconditie. Het lijf wordt
alleen GERENDERD als het ook getoond mag worden, dus bij een dichte poort reist
de tekst niet mee. Een <% if %> in een sjabloon krijgt hem wel in het model,
en dan staat er één vergeten conditie -- of één partial die net iets anders
samenstelt -- tussen de betaalmuur en de tekst erachter.

partials/post-body.ejs kiest alleen de vorm en gebruikt de woorden van de
bestaande poorten (pgate./fgate.), zodat ze niet uiteen gaan lopen na de eerste
tekstwijziging. Het ontgrendelen zelf blijft op de eigen pagina, want daar zit
de passkey-code; één knop ernaartoe is eerlijker dan een halve poort.

Vijf toetsen erbij, waaronder dat er bij een dichte poort niets van de tweede
alinea in het model zit.

Co-Authored-By: Claude Opus 5 <claude@…>

  • Property mode set to 100644
File size: 2.7 KB
Line 
1<%
2// Het lijf van één bericht, IN de stroom.
3//
4// De poorten waren tot nu toe hele pagina's: paid-gate of fan-gate in plaats
5// van het bericht. Dat kan niet meer zodra de tijdlijn hele berichten toont --
6// dan moet een gesloten bericht zijn PLEK houden en ter plekke zeggen wat er
7// aan de hand is. Weglaten zou erger zijn dan tonen: dan zien een supporter en
8// een vreemde een andere tijdlijn, met andere buren, en klopt "vorige/volgende"
9// voor niemand meer.
10//
11// Het BESLUIT staat niet hier maar in PostAccessService, dezelfde die de
12// postroute gebruikt. Dit sjabloon kiest alleen de vorm. Twee plekken die
13// allebei zelf bepalen wie een betaalde tekst mag lezen, is een lek dat op een
14// gelegenheid wacht.
15//
16// Verwacht: post, access ('full'|'paid'|'fan'|'forbidden'), teaser, _base.
17var _acc = (typeof access !== 'undefined' && access) ? access : 'full';
18var _teaser = (typeof teaser !== 'undefined' && teaser) ? teaser : '';
19var _b = (typeof _base !== 'undefined' && _base) ? _base : '';
20var _href = _b + '/' + post.slug;
21%>
22
23<% if (_acc === 'full') { %>
24 <div class="post-content"><%- post.content_html %></div>
25
26<% } else if (_acc === 'paid') { %>
27 <%# Dezelfde woorden als de hele pagina (pgate.*), want het is dezelfde
28 boodschap -- alleen op een andere plek. Eigen teksten hier zouden na één
29 wijziging uiteen gaan lopen. %>
30 <div class="post-content post-content--gated pb-paid">
31 <% if (_teaser) { %><div class="pg-teaser"><p><%= _teaser %></p></div><% } %>
32 <div class="pb-gate">
33 <h2 class="pg-h2"><%= t('pgate.h') %></h2>
34 <p class="pg-sub">
35 <% if (post.paid_min_cents) { %><%= t('pgate.sub_cents', { eur: (post.paid_min_cents/100).toFixed(2) }) %><% } else { %><%= t('pgate.sub') %><% } %>
36 </p>
37 <%# De ontgrendeling zelf blijft op de eigen pagina: daar staat de
38 passkey-code (pageJs paid-gate) die hier niet geladen is. Eén knop die
39 ernaartoe gaat is eerlijker dan een halve poort in de stroom. %>
40 <p><a class="pg-btn" href="<%= _href %>"><%= t('pgate.unlock') %></a></p>
41 </div>
42 </div>
43
44<% } else if (_acc === 'fan') { %>
45 <div class="post-content post-content--gated pb-fan">
46 <% if (_teaser) { %><div class="pg-teaser"><p><%= _teaser %></p></div><% } %>
47 <div class="pb-gate">
48 <h2 class="pg-h2"><%= t('fgate.title') %></h2>
49 <p class="pg-sub"><%= t('fgate.sub') %></p>
50 <p><a class="fg-btn" href="/auth/login?next=<%= encodeURIComponent(_href) %>"><%= t('fgate.login') %></a></p>
51 </div>
52 </div>
53
54<% } else { %>
55 <%# 'forbidden' hoort de tijdlijn niet eens te bereiken: die haalt alleen
56 gepubliceerde berichten op. Staat er voor het geval een aanroeper ooit
57 iets anders doorgeeft -- dan liever niets dan een concept. %>
58<% } %>
Note: See TracBrowser for help on using the repository browser.