Changeset 47f1183 in Klonkt for src/routes/admin-migrate.js


Ignore:
Timestamp:
08/14/2026 03:02:35 AM (4 weeks ago)
Author:
Robin <roboburr@…>
Branches:
main
Children:
7e474f7
Parents:
f704237
Message:

Een stappenplan op de migrate-pagina, en de volgorde klopte niet

Robin: misschien moeten we bij migrate een stappenplan beschrijven, waaronder
dus ook dit (de Delete-ronde voor je een domein opzegt).

Bij het uitschrijven bleek de pagina zelf een verkeerde volgorde te suggereren.
Ik noemde het aankondigen "de laatste stap", maar ingestFromSource weigert met
not_moved_here zolang movedTo niet naar ons wijst. De ophaalknop werkt dus PAS
nadat de Move gedaan is. Aankondigen is stap 2, niet de afsluiter.

Met een zip mag het juist andersom: een bestand vraagt niemand toestemming. Die
twee volgordes naast elkaar zijn precies het soort ding waar je halverwege op
vastloopt zonder te snappen waarom, dus staan ze er nu uitgeschreven.

DE PAGINA DRAAIT OP BEIDE INSTANTIES. Stap 1, 3 en 4 horen op de nieuwe kant,
stap 2 en 5 op de oude. Een vast "hier" is dus op de helft van de schermen
onzin. Het plan draait mee met waar je kijkt, en op de vertrekkende kant staat
er een regel boven dat je naar de instantie kijkt die weggaat.

Die omkering had ik bij het bouwen precies verkeerd om: beide labels werden
"hier". Zag ik pas door hem te renderen, niet door hem te lezen.

STAP 5 heeft geen knop, en dat staat erbij. Verwijder je oude berichten voor je
het domein opzegt, zodat boosts van anderen netjes verdwijnen in plaats van te
blijven staan als kapotte kaart; haal daarna de alias weg, want die wijst naar
een adres dat je niet meer beheert. Een stappenplan dat een knop belooft die er
niet is, is erger dan geen stappenplan.

Changed files:
src/routes/admin-migrate.js

  • stappen(): afleiden wat af is uit aliassen, moved_to, de moves-collectie en de vertaaltabel; meegegeven aan alle drie de renders

src/views/pages/admin-migrate.ejs

  • het stappenplan bovenaan, met vinkjes en een waar-label per stap
  • de labels draaien om vanaf de vertrekkende kant

src/services/i18n.js

  • mig.plan_* in nl/en/de
  • mig.move_title is "Stap 2" en niet meer "Laatste stap"
  • de waarschuwing zegt nu dat dit EERST moet bij de ophaalknop

test/migrate-page.test.js

  • het plan staat boven de knoppen die het beschrijft
  • de perspectiefwissel, met de eis dat de twee labels nooit gelijk zijn
  • geen "laatste stap" meer in een van de drie talen
  • stap 5 noemt de Delete-ronde, de alias en dat er geen knop is

remarks: gerenderd vanaf beide kanten om het te controleren. Suite 1013 groen,
tegenproef op de perspectiefwissel.

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/routes/admin-migrate.js

    rf704237 r47f1183  
    8080
    8181/**
     82 * Waar sta je in de verhuizing?
     83 *
     84 * Deze pagina draait op BEIDE instanties en elke stap hoort maar op een van de
     85 * twee. Zonder dat onderscheid leest de lijst als onzin op de helft van de
     86 * schermen. Vandaar: afleiden wat we kunnen zien, en verder eerlijk zeggen
     87 * waar iets thuishoort in plaats van het te raden.
     88 */
     89function stappen(site, mig) {
     90  const alias = aliasTekst(site).trim();
     91  return {
     92    // moved_to gezet betekent: DIT is de instantie die vertrokken is.
     93    isOud: !!(site && site.moved_to),
     94    geclaimd: !!alias,
     95    // Een Move in onze moves-collectie betekent dat de bron hierheen verhuisd is.
     96    aangekondigd: !!(site && site.moved_to) || !!(mig && mig.moves > 0),
     97    opgehaald: !!(mig && mig.total > 0),
     98  };
     99}
     100
     101/**
    82102 * Waar zouden we vandaan kunnen halen? De alias die we zelf claimen (FEP-7628
    83103 * alsoKnownAs). Dat is niet toevallig hetzelfde veld als waar de ingest op
     
    97117  const site = res.locals.site;
    98118  const { telling, fout } = tellen(site);
     119  const _mig = site ? Migration.migrationStatus(site.slug) : null;
    99120  renderPage(req, res, 'pages/admin-migrate', {
    100121    pageTitle: 'Migreren', bodyClass: 'on-special',
     
    102123    verslag: null,
    103124    bron: bronKandidaat(site), aliassen: aliasTekst(site), movedTo: (site && site.moved_to) || null,
    104     mig: site ? Migration.migrationStatus(site.slug) : null,
     125    mig: _mig, stap: stappen(site, _mig),
    105126    haalVerslag: null,
    106127    success: req.query.success || null, error: req.query.error || fout || null,
     
    137158  }
    138159  const { telling } = tellen(site);
     160  const _mig2 = Migration.migrationStatus(site.slug);
    139161  renderPage(req, res, 'pages/admin-migrate', {
    140162    pageTitle: 'Migreren', bodyClass: 'on-special',
    141163    telling, fout: null, mb, verslag: null,
    142164    bron: opgegeven || bronKandidaat(site), aliassen: aliasTekst(site), movedTo: site.moved_to || null,
    143     mig: Migration.migrationStatus(site.slug),
     165    mig: _mig2, stap: stappen(site, _mig2),
    144166    haalVerslag: r,
    145167    success: (r && !r.error) ? 'Opgehaald' : null,
     
    227249    telling: tellen(site).telling, fout: null, mb,
    228250    bron: bronKandidaat(site), aliassen: aliasTekst(site), movedTo: site.moved_to || null,
    229     mig: Migration.migrationStatus(site.slug), haalVerslag: null,
     251    mig: Migration.migrationStatus(site.slug), stap: stappen(site, Migration.migrationStatus(site.slug)), haalVerslag: null,
    230252    verslag: verslag ? { ...verslag, echt, overschrijf, bestand: req.file.originalname, bytes: req.file.buffer.length } : null,
    231253    success: (echt && verslag && !fout) ? 'Archief geïmporteerd' : null,
Note: See TracChangeset for help on using the changeset viewer.