Changeset 70e9147 in Klonkt


Ignore:
Timestamp:
08/19/2026 06:15:33 PM (3 weeks ago)
Author:
Bart <bart@…>
Branches:
main
Children:
70dbef4
Parents:
8501ee8
git-author:
Bart <bart@…> (08/19/2026 05:39:25 PM)
git-committer:
Bart <bart@…> (08/19/2026 06:15:33 PM)
Message:

Lezen vervangt Tijdlijn: twee keuzes solo, één in de cirkel

De chronologische lijst was de standaardweergave en Lezen de nieuwkomer; nu
andersom, en Tijdlijn verdwijnt als KEUZE. De opmaak zelf blijft bestaan
(.feed-timeline draagt nog het archief, de cirkel en de postpagina) -- alleen
kies je er niet meer voor, want voor hele berichten was Lezen de betere vorm.

Solo: Lezen | Grid. Cirkel: alleen Grid, want Lezen bestaat daar niet (dat zijn
berichten van anderen, van hun servers).

TWEE DINGEN DIE STIL KAPOT WAREN GEGAAN als ik alleen de knop had weggehaald:

  • Wie hier eerder was heeft 'timeline' in zijn localStorage staan. Zonder vertaling houdt die bezoeker een weergave waar geen knop meer bij hoort: de pil helemaal grijs en een feed die niet is wat hij ooit koos. 'timeline' leest nu als 'reader'. Hetzelfde geldt voor sites met feed_view_default='timeline' in de database -- die worden bij het lezen naar reader vertaald, zonder migratie: alles wat geen 'grid' is, is lezen.
  • Op de cirkel is Grid nu de ENIGE knop, en een knop die al actief is doet normaal niets. Dan zit je in Grid zonder weg terug. Is er één knop en staat hij aan, dan brengt hij je nu terug naar de standaard -- daar is dat de gewone lijst.

Nagelopen in de browser: solo toont Lezen|Grid met Lezen actief, een site die
nog 'timeline' opgeslagen heeft rendert als reader, en de cirkelknop gaat aan,
uit, aan.

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

Location:
src
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • src/routes/admin-sites.js

    r8501ee8 r70e9147  
    260260    f.require_login_to_comment ? 1 : 0,
    261261    (f.enable_audio_player !== undefined ? (f.enable_audio_player ? 1 : 0) : 1),
    262     f.feed_view_default === 'timeline' ? 'timeline' : 'grid',
     262    f.feed_view_default === 'grid' ? 'grid' : 'reader',
    263263  );
    264264
  • src/services/i18n.js

    r8501ee8 r70e9147  
    3333    'switch.solo': 'Solo',
    3434    'switch.circle': 'Cirkels',
    35     'switch.timeline': 'Tijdlijn',
    3635    'switch.grid': 'Grid', 'switch.reader': 'Lezen',
    3736    'postnav.newer': 'Nieuwer',
     
    306305    'asite.feed_view': 'Feed-weergave',
    307306    'asite.feed_default': 'Standaardweergave voor de homepage',
    308     'asite.feed_timeline': 'Tijdlijn (chronologische lijst)',
     307    'asite.feed_reader': 'Lezen (hele berichten, één per scherm)',
    309308    'asite.feed_grid': 'Grid (kaarten)',
    310309    'asite.feed_switch': 'Tijdlijn ↔ grid-schakelaar boven de feed tonen',
     
    10481047    'switch.solo': 'Solo',
    10491048    'switch.circle': 'Circles',
    1050     'switch.timeline': 'Timeline',
    10511049    'switch.grid': 'Grid', 'switch.reader': 'Reader',
    10521050    'postnav.newer': 'Newer',
     
    13131311    'asite.feed_view': 'Feed display',
    13141312    'asite.feed_default': 'Default view for the homepage',
    1315     'asite.feed_timeline': 'Timeline (chronological list)',
     1313    'asite.feed_reader': 'Reader (whole posts, one per screen)',
    13161314    'asite.feed_grid': 'Grid (cards)',
    13171315    'asite.feed_switch': 'Show timeline ↔ grid switch above the feed',
     
    20542052    'switch.solo': 'Solo',
    20552053    'switch.circle': 'Zirkel',
    2056     'switch.timeline': 'Zeitleiste',
    20572054    'switch.grid': 'Raster', 'switch.reader': 'Lesen',
    20582055    'postnav.newer': 'Neuer',
     
    23192316    'asite.feed_view': 'Feed-Anzeige',
    23202317    'asite.feed_default': 'Standardansicht für die Startseite',
    2321     'asite.feed_timeline': 'Zeitstrahl (chronologische Liste)',
     2318    'asite.feed_reader': 'Lesen (ganze Beiträge, einer pro Bildschirm)',
    23222319    'asite.feed_grid': 'Raster (Karten)',
    23232320    'asite.feed_switch': 'Umschalter Zeitstrahl ↔ Raster über dem Feed anzeigen',
  • src/views/pages/admin-site-edit.ejs

    r8501ee8 r70e9147  
    199199        <span><%= t('asite.feed_default') %></span>
    200200        <select name="feed_view_default">
    201           <option value="timeline" <%= (site.feed_view_default || 'timeline') === 'timeline' ? 'selected' : '' %>><%= t('asite.feed_timeline') %></option>
     201          <option value="reader" <%= site.feed_view_default !== 'grid' ? 'selected' : '' %>><%= t('asite.feed_reader') %></option>
    202202          <option value="grid"     <%= site.feed_view_default === 'grid' ? 'selected' : '' %>><%= t('asite.feed_grid') %></option>
    203203        </select>
  • src/views/partials/shared-styles.ejs

    r8501ee8 r70e9147  
    9898   (the click-handler then navigates to the feed in that view). The
    9999   body-class switches client-side on HTMX-nav, so this works without a reload too. */
    100 body.on-post[data-feed-view="timeline"] .view-switch-btn[data-view="timeline"],
     100body.on-post[data-feed-view="reader"] .view-switch-btn[data-view="reader"],
    101101body.on-post[data-feed-view="grid"] .view-switch-btn[data-view="grid"],
    102102body.on-post[data-grid-cols="2"] .grid-cols-btn[data-cols="2"],
  • src/views/partials/view-switcher.ejs

    r8501ee8 r70e9147  
    4040    <% } %>
    4141    <div class="view-switcher" role="tablist" aria-label="Weergave">
    42       <button type="button" class="view-switch-btn" data-view="timeline" role="tab"
     42      <% if (_leesbaar) { %>
     43      <%# Lezen is de standaardweergave sinds Tijdlijn weg is: hele berichten,
     44          één per scherm. De chronologische lijst bestaat nog wel als opmaak
     45          (.feed-timeline, ook op de cirkel en het archief), maar is geen KEUZE
     46          meer -- daar was Lezen de betere vorm van. %>
     47      <button type="button" class="view-switch-btn" data-view="reader" role="tab"
    4348              aria-selected="<%= (!_neutral && !(typeof site !== 'undefined' && site && site.feed_view_default === 'grid')) ? 'true' : 'false' %>">
    44         <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><line x1="8" y1="6" x2="21" y2="6"/><line x1="8" y1="12" x2="21" y2="12"/><line x1="8" y1="18" x2="21" y2="18"/><line x1="3" y1="6" x2="3.01" y2="6"/><line x1="3" y1="12" x2="3.01" y2="12"/><line x1="3" y1="18" x2="3.01" y2="18"/></svg>
    45         <span><%= t('switch.timeline') %></span>
     49        <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z"/><path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z"/></svg>
     50        <span><%= t('switch.reader') %></span>
    4651      </button>
     52      <% } %>
    4753      <button type="button" class="view-switch-btn" data-view="grid" role="tab"
    4854              aria-selected="<%= (!_neutral && (typeof site !== 'undefined' && site && site.feed_view_default === 'grid')) ? 'true' : 'false' %>">
     
    5056        <span><%= t('switch.grid') %></span>
    5157      </button>
    52       <% if (_leesbaar) { %>
    53       <%# Lezen is een gewone derde weergave: dezelfde berichten, andere vorm.
    54           Dus een <button> met data-view, net als de andere twee -- dan doen de
    55           gedelegeerde klik, localStorage en syncAria in shell.ejs hun werk al. %>
    56       <button type="button" class="view-switch-btn" data-view="reader" role="tab"
    57               aria-selected="false">
    58         <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z"/><path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z"/></svg>
    59         <span><%= t('switch.reader') %></span>
    60       </button>
    61       <% } %>
    6258    </div>
    6359    <% if (!_neutral) { %>
  • src/views/shell.ejs

    r8501ee8 r70e9147  
    345345</head>
    346346
    347 <body class="<%= bodyClass || 'on-home' %> has-bottom-tab" data-js="chrome<%= (typeof pageJs !== 'undefined' && pageJs) ? ' ' + pageJs : '' %>" data-feed-view="<%- _e(safeSite.feed_view_default || 'timeline') %>" data-grid-cols="3" data-site-base="<%- _e((typeof siteUrlBase !== 'undefined' && siteUrlBase) ? siteUrlBase : '') %>">
     347<body class="<%= bodyClass || 'on-home' %> has-bottom-tab" data-js="chrome<%= (typeof pageJs !== 'undefined' && pageJs) ? ' ' + pageJs : '' %>" data-feed-view="<%- _e(safeSite.feed_view_default === 'grid' ? 'grid' : 'reader') %>" data-grid-cols="3" data-site-base="<%- _e((typeof siteUrlBase !== 'undefined' && siteUrlBase) ? siteUrlBase : '') %>">
    348348
    349349<% if (typeof isViewer !== 'undefined' && isViewer) { %>
     
    550550  try {
    551551    var v = localStorage.getItem('pcms-feed-view');
    552     if (v === 'timeline' || v === 'grid' || v === 'reader') body.dataset.feedView = v;
     552    // 'timeline' bestaat niet meer als keuze, maar staat nog in de localStorage
     553    // van iedereen die hier eerder was. Zonder deze vertaling zou zo iemand een
     554    // weergave houden die nergens meer een knop heeft: de pil helemaal grijs, en
     555    // een feed die niet is wat hij koos. Lezen is waar Tijdlijn in opging.
     556    if (v === 'timeline') v = 'reader';
     557    if (v === 'grid' || v === 'reader') body.dataset.feedView = v;
    553558    var c = parseInt(localStorage.getItem('pcms-grid-cols'), 10);
    554559    if (c === 2 || c === 3 || c === 4) body.dataset.gridCols = String(c);
     
    567572    // is -- de lezer ziet nergens meer waar hij is. De VOORKEUR blijft staan:
    568573    // terug op de eigen feed is Lezen weer actief.
    569     var _view = String(body.dataset.feedView || 'timeline');
    570     if (!/^[a-z]+$/.test(_view)) _view = 'timeline';
    571     if (!document.querySelector('.view-switch-btn[data-view="' + _view + '"]')) _view = 'timeline';
     574    var _view = String(body.dataset.feedView || 'reader');
     575    if (!/^[a-z]+$/.test(_view)) _view = 'reader';
     576    if (!document.querySelector('.view-switch-btn[data-view="' + _view + '"]')) _view = 'reader';
    572577    document.querySelectorAll('.view-switch-btn').forEach(function(b) {
    573578      b.setAttribute('aria-selected', (_onFeed && b.dataset.view === _view) ? 'true' : 'false');
     
    606611    if (sw) {
    607612      var view = sw.dataset.view;
     613      // EEN KEUZE MOET TERUG KUNNEN. Op de cirkel is Grid de enige knop (Lezen
     614      // bestaat daar niet, want dat zijn berichten van anderen), en een knop die
     615      // al actief is doet normaal niets -- dan zit je in Grid zonder weg terug.
     616      // Is dit de enige knop op deze pagina en staat hij al aan, dan brengt hij
     617      // je terug naar de standaard, en dat is daar de gewone lijst.
     618      if (document.querySelectorAll('.view-switch-btn').length === 1
     619          && sw.getAttribute('aria-selected') === 'true') {
     620        view = 'reader';
     621      }
    608622      body.dataset.feedView = view;
    609623      try { localStorage.setItem('pcms-feed-view', view); } catch(_) {}
Note: See TracChangeset for help on using the changeset viewer.