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

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

Leesweergave: /read, en fragmenten in de richting van de scroll

De vorige opzet sprong naar het andere uiteinde van de scroll en schoof het
bericht daarna "vloeiend" in beeld -- de truc van PrutCMS, en een die je voelt.
Nu groeit de stroom gewoon: een schildwacht boven en onder het laatste bericht
haalt het volgende of vorige fragment op en zet het erbij. Bij invoegen BOVEN
wordt de ingevoegde hoogte gemeten en met scrollBy gecompenseerd, anders
verspringt de tekst onder je duim.

De grens tussen berichten is CSS, geen JavaScript: scroll-snap-type: y proximity
op de stroom, scroll-snap-align: start per bericht. Proximity en niet mandatory,
want binnen een lang bericht moet je vrij kunnen scrollen.

En het heet read, niet lees: een pad is geen plek voor een Nederlandse
werkwoordsvorm.

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

  • Property mode set to 100644
File size: 3.0 KB
RevLine 
[8b65e67]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;
[b67edbd]21// Het lijf komt als eigen waarde binnen en wordt NIET uit `post` gevist. De rij
22// draagt nog de ruwe `content`; door alleen te tonen wat de aanroeper bewust
23// meegeeft, kan een gesloten poort hier niets laten ontsnappen.
24var _html = (typeof content_html !== 'undefined' && content_html) ? content_html : '';
[8b65e67]25%>
26
27<% if (_acc === 'full') { %>
[b67edbd]28 <div class="post-content"><%- _html %></div>
[8b65e67]29
30<% } else if (_acc === 'paid') { %>
31 <%# Dezelfde woorden als de hele pagina (pgate.*), want het is dezelfde
32 boodschap -- alleen op een andere plek. Eigen teksten hier zouden na één
33 wijziging uiteen gaan lopen. %>
34 <div class="post-content post-content--gated pb-paid">
35 <% if (_teaser) { %><div class="pg-teaser"><p><%= _teaser %></p></div><% } %>
36 <div class="pb-gate">
37 <h2 class="pg-h2"><%= t('pgate.h') %></h2>
38 <p class="pg-sub">
39 <% if (post.paid_min_cents) { %><%= t('pgate.sub_cents', { eur: (post.paid_min_cents/100).toFixed(2) }) %><% } else { %><%= t('pgate.sub') %><% } %>
40 </p>
41 <%# De ontgrendeling zelf blijft op de eigen pagina: daar staat de
42 passkey-code (pageJs paid-gate) die hier niet geladen is. Eén knop die
43 ernaartoe gaat is eerlijker dan een halve poort in de stroom. %>
44 <p><a class="pg-btn" href="<%= _href %>"><%= t('pgate.unlock') %></a></p>
45 </div>
46 </div>
47
48<% } else if (_acc === 'fan') { %>
49 <div class="post-content post-content--gated pb-fan">
50 <% if (_teaser) { %><div class="pg-teaser"><p><%= _teaser %></p></div><% } %>
51 <div class="pb-gate">
52 <h2 class="pg-h2"><%= t('fgate.title') %></h2>
53 <p class="pg-sub"><%= t('fgate.sub') %></p>
54 <p><a class="fg-btn" href="/auth/login?next=<%= encodeURIComponent(_href) %>"><%= t('fgate.login') %></a></p>
55 </div>
56 </div>
57
58<% } else { %>
59 <%# 'forbidden' hoort de tijdlijn niet eens te bereiken: die haalt alleen
60 gepubliceerde berichten op. Staat er voor het geval een aanroeper ooit
61 iets anders doorgeeft -- dan liever niets dan een concept. %>
62<% } %>
Note: See TracBrowser for help on using the repository browser.