Changeset d7e72b8 in Klonkt for src/routes/posts.js


Ignore:
Timestamp:
08/09/2026 07:47:48 AM (4 weeks ago)
Author:
Robin <roboburr@…>
Branches:
main
Children:
b406d25
Parents:
c832064
Message:

Audio is geen keuze meer: Album en Playlist staan in de balk (shaer-cyg)

De posttype-balk had post/foto/video/audio. Audio verdwijnt als keuze -- alles
wat muziek is landt voortaan op album of playlist, en dat maakt de keuze
betekenisvol in plaats van cosmetisch. Album en Playlist delen het muziekpaneel,
want het verschil zit in de playlist en niet in wat je uploadt.

De knop Audio blijft alleen staan zolang een post nog type=audio IS. Anders zou
het openen van een oude post hem stilzwijgend van type veranderen, en dat is
precies het soort verlies dat niemand ziet gebeuren.

De lijst van geldige types stond op DRIE plaatsen los van elkaar: twee keer in
routes/posts.js en een keer in routes/types.js. Dat viel niet op zolang ze
gelijk waren, maar het faalt stil: kent het opslaan 'playlist' niet, dan wordt
de post zonder melding een gewone post en is de keuze verdwenen in plaats van
geweigerd. Nu een lijst, in config/post-types.js, die ook de editor voedt.

En de migratie: scripts/backfill-post-types.mjs zet bestaande audio-posts om via
postMusicType. Proefdraai is de standaard, --doen schrijft. Wat de afleiding
niet tot album of playlist maakt blijft met rust en wordt apart gemeld -- die
verdienen een blik en geen gok.

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/routes/posts.js

    rc832064 rd7e72b8  
    66import ejs from 'ejs';
    77import db from '../config/database.js';
     8import { POST_TYPES, KEUZE_TYPES } from '../config/post-types.js';
    89import { requireAuth, requireSiteManager, isViewer } from '../middleware/auth.js';
    910import { renderPage } from '../middleware/render.js';
     
    265266    },
    266267    isNew: true,
     268    keuzeTypes: KEUZE_TYPES,
    267269    pageTitle: 'New post',
    268270    bodyClass: 'on-special',
     
    359361  finalSlug = uniqueSlug(site.id, finalSlug);
    360362
    361   const validTypes = new Set(['post', 'foto', 'video', 'audio']);
    362   const finalType = validTypes.has(type) ? type : 'post';
     363  const finalType = POST_TYPES.has(type) ? type : 'post';
    363364  const pollJson = parsePollForm(req.body);   // AS2 Question definition, or null
    364365  const postId = uuid();
     
    454455    post,
    455456    isNew: false,
     457    keuzeTypes: KEUZE_TYPES,
    456458    pollLocked,
    457459    fediOpenAudio: postAudioFediOpen(site.id, post.content),
     
    486488  const newSlug = req.body.slug;
    487489  const action = req.body.action || 'save';
    488   const validTypes = new Set(['post', 'foto', 'video', 'audio']);
    489   const finalType = validTypes.has(type) ? type : (post.type || 'post');
     490  const finalType = POST_TYPES.has(type) ? type : (post.type || 'post');
    490491
    491492  // A poll that has already received votes is frozen (you can still edit the surrounding
Note: See TracChangeset for help on using the changeset viewer.