Changeset 7421147 in Klonkt
- Timestamp:
- 08/18/2026 06:47:58 PM (3 weeks ago)
- Branches:
- main
- Children:
- 100aad8
- Parents:
- b67edbd
- git-author:
- Bart <bart@…> (08/18/2026 04:10:41 AM)
- git-committer:
- Bart <bart@…> (08/18/2026 06:47:58 PM)
- Location:
- src
- Files:
-
- 3 edited
-
assets/js/mod/read.js (modified) (6 diffs)
-
services/i18n.js (modified) (3 diffs)
-
views/pages/read.ejs (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/assets/js/mod/read.js
rb67edbd r7421147 18 18 const MARGE = '1px 0px 100% 0px'; 19 19 20 // De teksten die dit script plaatst. Ze staan in data-i18n op de stroom, want 21 // een zin die hier staat, staat in één taal -- en dat is nooit de taal van de 22 // lezer. Zelfde afspraak als de topnav (mod/chrome.js). 23 let woorden = {}; 24 function woord(sleutel) { return woorden[sleutel] || ''; } 25 20 26 const stroom = () => document.getElementById('read-stream'); 21 27 const geladen = new Set(); // slugs die al in de stroom staan … … 26 32 27 33 function chrome(verbergen) { 28 document.body.classList.toggle('read-chrome- weg', !!verbergen);34 document.body.classList.toggle('read-chrome-hidden', !!verbergen); 29 35 } 30 36 … … 72 78 if (geladen.has(slug)) return; 73 79 bezigOnder = true; 74 const wacht = melding(s, 'read-l aden', '…');80 const wacht = melding(s, 'read-loading', '…'); 75 81 try { 76 82 const art = await haal(slug, laatste.dataset.base || ''); … … 80 86 kijk(); 81 87 } catch (e) { 82 wacht.textContent = 'Kon het volgende bericht niet laden.';88 wacht.textContent = woord('load_error'); 83 89 console.warn('[read] onderaan:', e && e.message); 84 90 } finally { bezigOnder = false; } … … 120 126 121 127 function klaar(s) { 122 if (s.querySelector('.read-e ind')) return;123 melding(s, 'read-e ind', 'Je bent bij het begin van het archief.');128 if (s.querySelector('.read-end')) return; 129 melding(s, 'read-end', woord('end')); 124 130 } 125 131 … … 152 158 const s = stroom(); 153 159 if (!s) return; 160 try { woorden = JSON.parse(s.getAttribute('data-i18n') || '{}'); } catch (e) { woorden = {}; } 154 161 s.querySelectorAll('.read-post').forEach((p) => geladen.add(p.dataset.slug)); 155 162 laatsteY = window.scrollY || 0; -
src/services/i18n.js
rb67edbd r7421147 891 891 'fgate.title': 'Alleen voor vrienden', 892 892 'fgate.sub': 'Dit is exclusief voor ingelogde vrienden. Log in om het te bekijken.', 893 'fgate.login': 'Inloggen / aanmelden', 'read.e xit': 'Terug naar de site', 'read.exit_label': 'Uit het leesscherm',893 'fgate.login': 'Inloggen / aanmelden', 'read.end': 'Je bent bij het begin van het archief.', 'read.load_error': 'Kon het volgende bericht niet laden.', 'read.exit': 'Terug naar de site', 'read.exit_label': 'Uit het leesscherm', 894 894 'lbio.empty': 'Nog geen links ingesteld.', 895 895 'lbio.back_to_site': 'naar de site', … … 1897 1897 'fgate.title': 'Friends only', 1898 1898 'fgate.sub': 'This is exclusive to logged-in friends. Log in to view it.', 1899 'fgate.login': 'Log in / sign up', 'read.e xit': 'Back to the site', 'read.exit_label': 'Leave reading view',1899 'fgate.login': 'Log in / sign up', 'read.end': 'You have reached the beginning of the archive.', 'read.load_error': 'Could not load the next post.', 'read.exit': 'Back to the site', 'read.exit_label': 'Leave reading view', 1900 1900 'lbio.empty': 'No links set up yet.', 1901 1901 'lbio.back_to_site': 'back to the site', … … 2903 2903 'fgate.title': 'Nur für Freunde', 2904 2904 'fgate.sub': 'Dies ist exklusiv für eingeloggte Freunde. Melde dich an, um es anzusehen.', 2905 'fgate.login': 'Anmelden / Registrieren', 'read.e xit': 'Zurück zur Seite', 'read.exit_label': 'Lesemodus verlassen',2905 'fgate.login': 'Anmelden / Registrieren', 'read.end': 'Du bist am Anfang des Archivs angekommen.', 'read.load_error': 'Der nächste Beitrag konnte nicht geladen werden.', 'read.exit': 'Zurück zur Seite', 'read.exit_label': 'Lesemodus verlassen', 2906 2906 'lbio.empty': 'Noch keine Links eingerichtet.', 2907 2907 'lbio.back_to_site': 'zurück zur Seite', -
src/views/pages/read.ejs
rb67edbd r7421147 14 14 %> 15 15 16 <div class="read-stream" id="read-stream" data-base="<%= _b %>"> 16 <%# De teksten die het script zelf plaatst, komen van hier -- zoals de 17 zoekteksten van de topnav (zie mod/chrome.js). Een zin die in het 18 script staat, staat in één taal, en dat is nooit de taal van de lezer. %> 19 <div class="read-stream" id="read-stream" data-base="<%= _b %>" 20 data-i18n="<%= JSON.stringify({ end: t('read.end'), load_error: t('read.load_error') }) %>"> 17 21 <%- include('../partials/read-article', { 18 22 post: post, entry: entry, newerPost: newerPost, olderPost: olderPost, … … 44 48 will-change: transform; 45 49 } 46 .on-read.read-chrome- weg#pcms-chrome { transform: translateY(-100%); opacity: 0; }47 .on-read.read-chrome- weg.bottom-tab { transform: translateY(100%); opacity: 0; }50 .on-read.read-chrome-hidden #pcms-chrome { transform: translateY(-100%); opacity: 0; } 51 .on-read.read-chrome-hidden .bottom-tab { transform: translateY(100%); opacity: 0; } 48 52 49 53 /* De vrije ruimte onder de laatste post moet weg: anders eindigt het document … … 73 77 /* Bezig / mislukt: de lezer hoort te merken dat er iets gebeurt, en vooral dat 74 78 er NIETS gebeurde als het misging. */ 75 .on-read .read-l aden{ text-align: center; padding: 1.2rem; opacity: .6; font-size: .9rem; }76 .on-read .read-e ind { text-align: center; padding: 2rem 1rem 3rem; opacity: .5; font-size: .9rem; }79 .on-read .read-loading { text-align: center; padding: 1.2rem; opacity: .6; font-size: .9rem; } 80 .on-read .read-end { text-align: center; padding: 2rem 1rem 3rem; opacity: .5; font-size: .9rem; } 77 81 78 82 .on-read .read-exit { position: fixed; right: 1rem; bottom: 1rem; z-index: 60; }
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)