Ignore:
Timestamp:
08/16/2026 01:44:46 PM (3 weeks ago)
Author:
Robin <roboburr@…>
Branches:
main
Children:
d68ee3a
Parents:
21257e4
Message:

Playlists: uitgavedatum en MusicBrainz release-id op een album

Stap 1 van shaer-756s. Het album bestaat al als ding -- een playlist met
kind='album', met eigen id, titel, artiest, jaar, hoes en een eigen
AP-collectie. Wat ontbrak om het als Album uit te geven zijn twee velden.

release_date en niet year: die kolom blijft en wordt gewoon getoond,
maar hun AlbumSerializer leest released als een DateField. Een jaartal
als 2024-01-01 versturen is een dag verzinnen, en dat is precies wat we
bij artiesten en albums niet doen. Volledige datum of niets -- ook
2024-02-31 valt af, want Date rolt die stil door naar 2 maart en dan
bewaren we iets anders dan er ingetypt is.

mb_release_id is de tegenhanger van sites.mb_artist_id: dezelfde
verwijzing naar MusicBrainz, een niveau lager.

ALLEEN BIJ kind='album', en dat wordt in PlaylistService afgedwongen en
niet alleen in het scherm. De API ligt open -- de post-editor gebruikt
hem ook -- en een scherm is geen bewaking. Omschakelen naar afspeellijst
maakt de velden ALTIJD leeg, ook als de aanroeper er niets over zei:
anders houdt een album dat je tot mixtape ombouwt zijn uitgavedatum, en
duikt die weer op zodra iemand hem terugzet. Het leespad geeft ze ook
niet door bij een afspeellijst, zodat een oude rij niet alsnog lekt.

In de editor staan de velden onder Type en verdwijnen ze als je naar
playlist schakelt. Daar hoorde een CSS-regel bij: .pl-field is display:
flex en dat wint van het hidden-attribuut -- zonder .pl-field[hidden]
{ display: none } bleven ze gewoon staan.

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/assets/js/mod/playlist-editor.js

    r21257e4 rd8f7d9c  
    6363
    6464    // Existing playlist data when editing
    65     let initial = { title: '', artist: '', year: '', cover: '', kind: 'album', track_ids: [] };
     65    let initial = { title: '', artist: '', year: '', cover: '', kind: 'album', release_date: '', mb_release_id: '', track_ids: [] };
    6666    if (isEdit && opts.id) {
    6767      try {
     
    102102                    <option value="playlist" ${initial.kind === 'playlist' ? 'selected' : ''}>📃 Playlist (track-covers)</option>
    103103                  </select>
     104                </label>
     105                <label class="pl-field pl-uitgave">
     106                  <span>Uitgavedatum</span>
     107                  <input type="date" id="pli-release-date" value="${esc(initial.release_date || '')}">
     108                </label>
     109                <label class="pl-field pl-uitgave">
     110                  <span>MusicBrainz release-id</span>
     111                  <input type="text" id="pli-mb-release" maxlength="36" spellcheck="false"
     112                         placeholder="00000000-0000-0000-0000-000000000000"
     113                         value="${esc(initial.mb_release_id || '')}">
    104114                </label>
    105115                <div class="pl-field pl-field-full">
     
    157167    const yearEl = $('#pli-year');
    158168    const kindEl = $('#pli-kind');
     169    const releaseEl = $('#pli-release-date');
     170    const mbReleaseEl = $('#pli-mb-release');
    159171    const coverEl = $('#pli-cover');
     172
     173    // Uitgavedatum en release-id horen bij een ALBUM, niet bij een
     174    // afspeellijst -- dat is wat de keuze album/playlist betekent. Ze
     175    // verdwijnen dus als je omschakelt, en de server maakt ze dan ook leeg;
     176    // dit scherm is de uitleg, niet de bewaking.
     177    const toonUitgave = () => {
     178      const album = kindEl.value !== 'playlist';
     179      for (const el of backdrop.querySelectorAll('.pl-uitgave')) el.hidden = !album;
     180    };
     181    kindEl.addEventListener('change', toonUitgave);
     182    toonUitgave();
    160183    const coverThumb = $('#pli-cover-thumb');
    161184    const saveBtn = $('#pli-save');
     
    376399        cover:  coverEl.value.trim(),
    377400        kind:   kindEl.value === 'playlist' ? 'playlist' : 'album',
     401        release_date:  releaseEl.value.trim(),
     402        mb_release_id: mbReleaseEl.value.trim(),
    378403        tracks: selected.slice(),
    379404      };
Note: See TracChangeset for help on using the changeset viewer.