Changeset 5300652 in Klonkt for src/views/pages/admin-audio.ejs


Ignore:
Timestamp:
08/13/2026 01:08:32 PM (4 weeks ago)
Author:
Robin <roboburr@…>
Branches:
main
Children:
6401681
Parents:
a117862
git-author:
Robin <roboburr@…> (08/13/2026 12:10:40 PM)
git-committer:
Robin <roboburr@…> (08/13/2026 01:08:32 PM)
Message:

Stap 2: "Ben jij dit?" in Beheer -> Audio (shaer-mbz)

Een paneel bovenaan het audioscherm: zoek op je artiestennaam (voorgevuld met
wat er al in de site staat), kies je eigen pagina, klaar. Drie talen.

DE TOELICHTING IS HET HELE PUNT. Elke kandidaat toont MusicBrainz'
disambiguation naast soort, land en jaren -- er zijn drie bands die Nirvana
heten, en met alleen een naam kiest iemand de verkeerde. Wij kiezen NIET voor
de artiest, ook niet als er precies een treffer is: een verkeerd geraden MBID
zet jouw naam onder andermans werk.

ONTKOPPELEN KAN. Om dezelfde reden: zo'n vergissing hoort met een klik terug
te draaien te zijn, niet met een databasebewerking.

Alleen een echte MBID komt de kolom in; de route weigert een URL of een handle.
De naam bewaren we ernaast zodat het scherm kan tonen WAT er hangt zonder
ervoor te netwerken -- en zodat een verkeerde koppeling opvalt.

TWEE DINGEN UIT DE HUISREGELS. De kandidaten gaan met textContent het scherm op
en niet als HTML: dat is tekst uit een vreemd register. En het blok hangt in
run() en niet op moduleniveau -- deze modules krijgen bij elke paginawissel
opnieuw init(), en een blok dat maar een keer per sessie draait is precies wat
shaer-5s1 opleverde. Ik had hem er eerst buiten gezet.

Als iemand niet in MusicBrainz staat zegt het scherm dat hij zich daar kan
aanmelden -- en erbij dat dat alleen dáár kan, niet vanuit Klonkt. Dat is geen
bescheidenheid maar hun API: artiesten zijn er niet mee aan te maken.

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/views/pages/admin-audio.ejs

    ra117862 r5300652  
    1212  <% if (success) { %><div class="ax-flash ax-flash-ok"><%= success %></div><% } %>
    1313  <% if (error) { %><div class="ax-flash ax-flash-err"><%= error %></div><% } %>
     14
     15  <%# ── MUSICBRAINZ ─────────────────────────────────────────────
     16      Wie ben jij, buiten Klonkt? Een MBID is geen vocabulaire maar een
     17      register: eraan koppelen is als je ISBN noemen. Andere muziekdiensten
     18      -- Funkwhale voorop -- herkennen je eraan zonder dat wij hun model
     19      hoeven over te nemen (shaer-mbz). %>
     20  <section class="ax-card" id="mb-card">
     21    <div class="ax-card-title"><%= t('aaud.mb_title') %></div>
     22    <p class="ax-hint"><%= t('aaud.mb_hint') %></p>
     23
     24    <% if (site.mb_artist_id) { %>
     25      <p class="mb-linked">
     26        <%= t('aaud.mb_linked') %>
     27        <strong><%= site.mb_artist_name || site.mb_artist_id %></strong>
     28        <a href="https://musicbrainz.org/artist/<%= site.mb_artist_id %>"
     29           target="_blank" rel="noopener"><%= t('aaud.mb_open') %></a>
     30      </p>
     31      <%# Ontkoppelen moet kunnen: een verkeerde koppeling zet jouw naam onder
     32          andermans werk, en dat hoort met een klik terug te draaien zijn. %>
     33      <form method="POST" action="<%= (typeof siteUrlBase !== 'undefined' ? siteUrlBase : '') %>/admin/audio/musicbrainz/unlink">
     34        <input type="hidden" name="_csrf" value="<%= csrfToken %>">
     35        <button type="submit" class="ax-btn ax-btn-quiet"><%= t('aaud.mb_unlink') %></button>
     36      </form>
     37    <% } %>
     38
     39    <div class="mb-zoek">
     40      <input type="text" id="mb-q" value="<%= site.author || site.title || '' %>"
     41             placeholder="<%= t('aaud.artist') %>" autocomplete="off">
     42      <button type="button" class="ax-btn" id="mb-zoek-btn"><%= t('aaud.mb_search') %></button>
     43    </div>
     44    <div id="mb-uit" class="mb-uit" hidden></div>
     45  </section>
    1446
    1547  <%# ── UPLOAD ──────────────────────────────────────────────── %>
Note: See TracChangeset for help on using the changeset viewer.