Changes in src/views/shell.ejs [1e172f3:421046c] in Klonkt


Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/views/shell.ejs

    r1e172f3 r421046c  
    339339</head>
    340340
    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 : '') %>">
     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 : '') %>">
    342342
    343343<% if (typeof isViewer !== 'undefined' && isViewer) { %>
     
    449449    }
    450450
    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 
    457451    var next = d.bodyClass;
    458452    if (!next) return;
     
    473467  //  de pcmsNav-trigger (accent/palette/bodyClass) correct toepast. De vroegere
    474468  //  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);
    512469})();
    513470</script>
Note: See TracChangeset for help on using the changeset viewer.