<%# View switcher partial — Tijdlijn / Grid + grid-cols picker. Mounted in shell.ejs once, visible on every non-admin page. Click handlers are wired in shell.ejs via event-delegation on document so HTMX-swapped content keeps working without rebinding. %> <% var _bc = (typeof bodyClass === 'string') ? bodyClass : ''; var _onShows = _bc.indexOf('on-shows') >= 0; // Pagina's zonder actieve feed-weergave → niets in de pill is 'actief' (Solo/Cirkel // + Tijdlijn/Grid grijs). Alleen Agenda krijgt z'n eigen is-active op de agenda. var _neutral = ['on-shows','on-downloads','on-post','on-epk','on-linkbio','on-newsletter','on-archive'] .some(function(c){ return _bc.indexOf(c) >= 0; }); // Lezen bestaat alleen waar een leessectie is, en dat is de eigen feed. De // cirkel toont berichten van ANDEREN, opgehaald van hun servers -- daar is // "het hele stuk" niet iets wat wij in handen hebben. // // De knop verdween daar eerst helemaal, met het argument dat een knop die // niets doet erger is dan geen knop. In de praktijk pakte dat andersom uit: // de pil werd smaller op de cirkel en breder op solo, en die sprong leest als // "er is hier iets weg" -- terwijl juist NIET duidelijk werd dat Lezen // bestaat en hier alleen niet kan. Hij staat er nu dood bij: zichtbaar, grijs // en niet aan te klikken. Dan is er maar een mogelijkheid, Grid, en je ziet // meteen dat dat geen toeval is maar de enige. var _leesUit = _bc.indexOf('on-cirkel') >= 0; var _gridStandaard = (typeof site !== 'undefined' && site && site.feed_view_default === 'grid'); // Welke tweede weergave biedt deze site aan? Bij 'auto' tekenen we ZE ALLEBEI // en laat de CSS er per viewport een zien -- Lezen op mobiel, Tijdlijn op // desktop. Dat scheelt een resize-afhandeling en een knop die van naam // verspringt terwijl je kijkt. var _alt = (typeof site !== 'undefined' && site && site.feed_alt_view) || 'reader'; if (['reader', 'timeline', 'auto'].indexOf(_alt) < 0) _alt = 'reader'; var _tweede = _alt === 'auto' ? ['reader', 'timeline'] : [_alt]; // De tijdlijn WERKT wel in de cirkel -- dat is er zelfs de natuurlijke vorm. // Alleen Lezen kan daar niet, want dat zijn berichten van anderen. var _dood = function (v) { return v === 'reader' && _leesUit; }; // Staat er GEEN levende tweede knop, dan is Grid het enige dat overblijft en // hoort die aan te staan. Bij een tijdlijn-site is dat in de cirkel niet zo: // daar werkt de tijdlijn gewoon. var _alleenGrid = _tweede.every(_dood); var _icoon = { reader: '', timeline: '', }; %>
<% if (typeof premiumUnlocked !== 'undefined' && premiumUnlocked && typeof agendaEnabled !== 'undefined' && agendaEnabled) { var _sbA = (typeof siteUrlBase !== 'undefined' && siteUrlBase) ? siteUrlBase : ''; %> <% } %> <% if (typeof hasCirkel !== 'undefined' && hasCirkel) { var _onCirkel = (typeof bodyClass === 'string' && bodyClass.indexOf('on-cirkel') >= 0); var _sb = (typeof siteUrlBase !== 'undefined' && siteUrlBase) ? siteUrlBase : ''; %> <% } %>
<%# De tweede weergave naast Grid. Welke dat is, staat in de instellingen van de site (feed_alt_view). Bij 'auto' staan ze er allebei en kiest een mediaquery; vandaar de klasse vs-alleen-*. %> <% _tweede.forEach(function (v) { %> <% }); %>
<% if (!_neutral) { %>
<% } %>