source: Klonkt/src/views/partials/lees-article.ejs@ f5cf299

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

/lees: één bericht vult het scherm, met zijn buren als schildwachten

Stap 2 van de meeslepende tijdlijn. De route levert één bericht plus de twee
buren uit postNeighbors() -- dezelfde die de gewone postpagina gebruikt, zodat
"vorige" daar en hier hetzelfde betekent, gepinde berichten inbegrepen.

De schildwachten staan BINNEN het artikelblok en niet eromheen. Dat is het punt
waar dit later op zou stukgaan: staan ze erbuiten, dan wijzen ze na een
verwisseling nog naar het vorige bericht. Nu komt de hele staat uit het nieuwe
stuk en hoeft de client niets te onthouden.

?partial=1 geeft alleen het artikel, want dat is precies wat er ingeruild wordt.

Het lijf komt via postEntry(), dus een dichte poort levert hier geen tekst op --
gecontroleerd met een rooktest door de echte server: /lees, /lees/:slug, een
betaald bericht en de partial, en in alle vier staat de tweede alinea nergens in
het antwoord.

'lees' staat in de gereserveerde namen, anders overschaduwt een bericht met die
slug de route. En een noscript-terugval met twee gewone links: een tijdlijn die
alleen met script bestaat, bestaat niet voor wie het uitzet.

Nog niet gebouwd: het overscrollen zelf (stap 3).

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

  • Property mode set to 100644
File size: 1.8 KB
Line 
1<%
2// Eén artikel in de meeslepende tijdlijn, met zijn schildwachten.
3//
4// Dit is precies het stuk dat bij het overscrollen wordt ingeruild, dus alles
5// wat de navigatie nodig heeft staat erin: welke buren er zijn, en waar ze
6// wonen. De client leest die van data-attributen en hoeft niets te onthouden --
7// na een verwisseling klopt de staat vanzelf, want hij komt uit het nieuwe stuk.
8//
9// De schildwachten staan BINNEN dit blok en niet eromheen: zouden ze buiten
10// staan, dan blijven ze na een swap naar het vorige bericht wijzen.
11var _b = (typeof siteUrlBase !== 'undefined' && siteUrlBase) ? siteUrlBase : '';
12var _newer = (typeof newerPost !== 'undefined' && newerPost) ? newerPost : null;
13var _older = (typeof olderPost !== 'undefined' && olderPost) ? olderPost : null;
14%>
15<article class="lees-article"
16 id="lees-article"
17 data-slug="<%= post.slug %>"
18 data-newer="<%= _newer ? _newer.slug : '' %>"
19 data-older="<%= _older ? _older.slug : '' %>"
20 data-base="<%= _b %>">
21
22 <%# Schildwacht BOVEN: verschijnt pas als je voorbij de bovenrand trekt.
23 Leeg als er niets nieuwers is -- dan hoort er ook niets te gebeuren. %>
24 <div class="lees-sentinel lees-sentinel--prev" data-dir="newer" aria-hidden="true"
25 <% if (!_newer) { %>hidden<% } %>><span class="lees-cue">⏫</span></div>
26
27 <header class="lees-head">
28 <h1 class="lees-title"><%= post.title || '' %></h1>
29 <% if (post.published_at) { %>
30 <p class="lees-when"><%= formatDateTime(post.published_at) %></p>
31 <% } %>
32 </header>
33
34 <%- include('post-body', { post: post, access: entry.access, teaser: entry.teaser, _base: _b }) %>
35
36 <%# Schildwacht ONDER. %>
37 <div class="lees-sentinel lees-sentinel--next" data-dir="older" aria-hidden="true"
38 <% if (!_older) { %>hidden<% } %>><span class="lees-cue">⏬</span></div>
39</article>
Note: See TracBrowser for help on using the repository browser.