Changeset 3ca7bdf in Klonkt


Ignore:
Timestamp:
08/07/2026 07:04:08 PM (5 weeks ago)
Author:
Robin <roboburr@…>
Branches:
main
Children:
01fb44f
Parents:
a8364ee
git-author:
Robin <roboburr@…> (08/07/2026 07:04:04 PM)
git-committer:
Robin <roboburr@…> (08/07/2026 07:04:08 PM)
Message:

De editpagina laadt zijn editor weer, en opslaan zonder module wist niets meer

Robins test at een post op: /posts/:slug/edit rendert dezelfde template als
/posts/new, maar alleen de nieuw-route kreeg bij shaer-bqr zijn pageJs. De
editpagina had dus data-js="chrome" -- geen editor, geen mediaprompts, en
een verborgen contentveld dat leeg rendert. Opslaan schreef dat lege veld
naar de database: strike-homerun verloor zo om 18:54 zijn inhoud (testpost
van 18:12, niets ouds verloren).

Drie lagen, van symptoom naar vangrail:

  1. de edit-route declareert pageJs 'post-edit playlist-editor'
  2. het verborgen veld rendert de BESTAANDE inhoud: laadt de module niet (oude cache, js uit), dan is opslaan een no-op in plaats van een wisser
  3. test/page-modules.test.js scheurt luid als een render van de editor zijn modules vergeet -- een brontekst-test, bewust, want het gedrag leeft in de browser en dit is de fout die twee keer beet

En dezelfde audit ving download: drie renders, en pageJs stond op het
FORMULIER in plaats van op ready -- de auto-start hoorde v66r shaer-bqr bij
de ready-tak en omzeilde nu de e-mailvraag. Verplaatst, en de module weigert
voortaan een lege fileUrl.

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

Files:
1 added
4 edited

Legend:

Unmodified
Added
Removed
  • src/assets/js/mod/download.js

    ra8364ee r3ca7bdf  
    1313function run() {
    1414        // Auto-start de download (zelfde-origin attachment-link).
    15         setTimeout(function(){ try { window.location.href = (pageData().fileUrl || ''); } catch(e){} }, 600);
     15        setTimeout(function(){ try { var u = pageData().fileUrl; if (u) window.location.href = u; } catch(e){} }, 600);
    1616}
  • src/routes/download.js

    ra8364ee r3ca7bdf  
    8585  const fan = req.session && req.session.user;
    8686  renderPage(req, res, 'pages/download', {
    87     pageJs: 'download',
    8887    pageTitle: track.title + ' — download',
    8988    bodyClass: 'on-download',
     
    114113  req.session.dl[track.id] = Date.now();
    115114  renderPage(req, res, 'pages/download', {
     115    // De auto-start hoort ALLEEN bij ready: op het formulier zou hij de
     116    // e-mailvraag omzeilen. Het script stond v66r shaer-bqr dan ook binnen
     117    // de ready-tak van de template.
     118    pageJs: 'download',
    116119    pageTitle: track.title + ' — download', bodyClass: 'on-download',
    117120    dlState: 'ready', dlTrack: track,
  • src/routes/posts.js

    ra8364ee r3ca7bdf  
    447447
    448448  renderPage(req, res, 'pages/post-edit', {
     449    // Zelfde modules als de nieuw-route hierboven: zonder deze regel laadt de
     450    // editor niet, en dan wist een opslag de post (shaer-5s1, de beet van 7-8).
     451    pageJs: 'post-edit playlist-editor',
    449452    post,
    450453    isNew: false,
  • src/views/pages/post-edit.ejs

    ra8364ee r3ca7bdf  
    208208        <%# Hidden field is what actually submits to the server. The visible
    209209            contenteditable's serialized HTML is copied here on submit. %>
    210         <input type="hidden" name="content" id="content-hidden" value="">
     210        <%# value = de BESTAANDE inhoud: laadt de module niet (oude cache, js uit),
     211    dan slaat het formulier de post ongewijzigd op in plaats van hem te wissen. %>
     212        <input type="hidden" name="content" id="content-hidden" value="<%= post.content || '' %>">
    211213
    212214        <%# Initial content is injected as a JSON string in a script tag so we
Note: See TracChangeset for help on using the changeset viewer.