Ignore:
Timestamp:
08/08/2026 09:51:53 PM (4 weeks ago)
Author:
Robin <roboburr@…>
Branches:
main
Children:
bfd9c73
Parents:
df70d8e
git-author:
Robin <roboburr@…> (08/08/2026 09:51:49 PM)
git-committer:
Robin <roboburr@…> (08/08/2026 09:51:53 PM)
Message:

De reply-editor wordt een module (shaer-nh2)

Stond nog als <script src> onderaan partials/reply-editor.ejs -- het patroon dat
shaer-bqr overal weghaalde, maar dit bestand ging niet mee omdat die migratie
over INLINE scripts ging en dit er een met src is.

Bij een volledige laadbeurt ging het goed: injectCspNonce zet er een nonce op.
Bij een htmx-navigatie draagt de partial de nonce van DAT verzoek, terwijl het
document die van zijn eigen laadbeurt heeft. De CSP is strict-dynamic, dus
alleen die laatste telt en het script draaide niet. Gevolg: geen toolbar, geen
media-drop, geen .re-full -- en op mobiel dus geen fullscreen-compose.

De omzetting was mechanisch, want de opzet was al goed: init(form) had al een
__re-vlag PER FORMULIER. Na een htmx-wissel zijn de formulieren nieuw, dus
geen vlag, dus opnieuw opgewaardeerd. Alleen de IIFE, de window-vlag en de
DOMContentLoaded eromheen konden weg; init(form) heet nu initForm om plaats te
maken voor de geexporteerde init().

pageJs erbij op de drie routes die de editor tonen: Berichten, een post met
reacties, en authorize-interaction.

EN DIT IS DE VOORWAARDE VOOR HET SAMENVOEGEN. Robin wil een herbruikbaar
editor-component; een los script kan niet importeren uit mod/lib.js, een module
wel. Dit is dus stap nul van die samenvoeging en niet alleen een bugfix.

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/views/partials/reply-editor.ejs

    rdf70d8e r1d76e0e  
    33
    44  Renders a plain <textarea name="text"> form that works without JS; the shared
    5   /assets/js/reply-editor.js upgrades it to a rich contenteditable with a small
     5  mod/reply-editor.js upgrades it to a rich contenteditable with a small
    66  toolbar, a language select and (on ≤700px) a full-screen compose overlay,
    77  which is the right pattern on mobile. On submit the JS fills the hidden
     
    8383<% if (!locals.__reAssets) { locals.__reAssets = 1; %>
    8484<link rel="stylesheet" href="/assets/css/reply-editor.css">
    85 <script src="/assets/js/reply-editor.js" defer></script>
    8685<% } %>
Note: See TracChangeset for help on using the changeset viewer.