Changeset 952baf3 in Klonkt for src/views/shell.ejs
- Timestamp:
- 08/07/2026 05:15:52 PM (5 weeks ago)
- Branches:
- main
- Children:
- ba76bf5
- Parents:
- f85b2c3 (diff), 0d5bd2c (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)links above to see all the changes relative to each parent. - File:
-
- 1 edited
-
src/views/shell.ejs (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/views/shell.ejs
rf85b2c3 r952baf3 339 339 </head> 340 340 341 <body class="<%= bodyClass || 'on-home' %> has-bottom-tab" data- feed-view="<%- _e(safeSite.feed_view_default || 'timeline') %>" data-grid-cols="3" data-site-base="<%- _e((typeof siteUrlBase !== 'undefined' && siteUrlBase) ? siteUrlBase : '') %>">341 <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 : '') %>"> 342 342 343 343 <% if (typeof isViewer !== 'undefined' && isViewer) { %> … … 449 449 } 450 450 451 // Welke modules deze pagina wil (shaer-bqr). De bootstrap hieronder leest 452 // dit zodra deze handler klaar is. 453 if (typeof d.js === 'string' && /^[a-z0-9 -]*$/.test(d.js)) { 454 document.body.setAttribute('data-js', d.js); 455 } 456 451 457 var next = d.bodyClass; 452 458 if (!next) return; … … 467 473 // de pcmsNav-trigger (accent/palette/bodyClass) correct toepast. De vroegere 468 474 // htmx:historyRestore-handler is vervallen nu htmx-history uitstaat.) 475 })(); 476 </script> 477 478 <!-- Modules laden (shaer-bqr). Inline script in gewisselde inhoud wordt door de 479 CSP geweigerd: de nonce rouleert per verzoek, dus een script dat via htmx 480 binnenkomt draagt er een die dit document niet kent (shaer-0i6). Alles wat 481 bij een pagina hoort komt daarom uit een module, en die wordt HIER geladen — 482 vanuit de shell, die alleen bij een volledige laadbeurt binnenkomt en dus 483 wél de goede nonce heeft. 484 485 Een dynamische import vanuit een vertrouwd (genonced) script is precies waar 486 'strict-dynamic' voor bedoeld is, dus de module zelf heeft geen nonce nodig. --> 487 <script> 488 (function () { 489 if (window.__modBoot) return; 490 window.__modBoot = true; 491 492 var loaded = {}; 493 function load() { 494 var names = (document.body.getAttribute('data-js') || '').trim().split(/\s+/); 495 names.forEach(function (name) { 496 // Streng: deze waarde komt uit een template en wordt een PAD. Alleen 497 // kleine letters, cijfers en streepjes; nooit een punt of een schuine 498 // streep. 499 if (!name || loaded[name] || !/^[a-z0-9-]+$/.test(name)) return; 500 loaded[name] = 1; 501 import('/assets/js/mod/' + name + '.js').catch(function (e) { 502 console.warn('[mod] ' + name + ' laadde niet:', e && e.message); 503 }); 504 }); 505 } 506 load(); 507 // Bij een htmx-navigatie wisselt de INHOUD, niet de body. De nav-trigger 508 // hieronder zet data-js opnieuw; daarna halen we op wat er nieuw bij staat. 509 // Een module die er al is wordt niet opnieuw geimporteerd -- vandaar dat elke 510 // module gedelegeerd moet werken en tegen een tweede aanroep moet kunnen. 511 document.body.addEventListener('pcmsNav', load); 469 512 })(); 470 513 </script>
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)