Changeset f926d13 in Klonkt for src/views/pages/connect.ejs


Ignore:
Timestamp:
08/13/2026 07:37:56 PM (4 weeks ago)
Author:
Robin <roboburr@…>
Branches:
main
Children:
47db4b5
Parents:
822d16d
Message:

De volglijst als bestand uploaden, niet alleen plakken

Robins vraag bij de echte verhuizing: hij downloadt een CSV en moet hem dan met de
hand openen en de inhoud overplakken. Dat is een omweg die niemand hoort te lopen.

Nu een bestandskiezer naast het plakveld. Multer met memoryStorage, want dit is een
lijstje adressen van een paar kilobyte dat na het lezen niets te zoeken heeft op de
server; op schijf schrijven zou alleen rommel achterlaten. Een gekozen bestand wint
van het plakveld: wie een bestand aanwijst bedoelt dat.

De BOM gaat eraf. Excel zet die voor een CSV, en zonder dat eraf te halen plakt hij
aan het eerste adres vast en is de eerste regel stil onbruikbaar.

En twee redirects in deze route wezen nog naar /following. Dat is de oude pagina
waar niets meer naartoe linkt (zie 822d16d), dus je kwam na een import op een
scherm waar je zelf niet meer weg kon. Beide naar /connect.

Changed files:
src/routes/posts.js

  • multer memoryStorage, single('csvfile'), 512kb, 1 bestand
  • bestand wint van plakveld, BOM eraf
  • drie redirects van /following naar /connect

src/views/pages/connect.ejs

  • bestandskiezer met accept=".csv,text/csv,text/plain", formulier op multipart

src/services/i18n.js

  • tl.move_import_file in nl, en en de; het plakveld-label ingekort tot "Of plak de lijst hier"

test/following-csv.test.js

  • test 14: een echt multipart-verzoek met een BOM ervoor, plus de controle dat het plakveld ernaast blijft werken

remarks: 927 groen in UTC en Europe/Amsterdam. De uploadweg is met een echte
multipart-POST tegen een draaiende express+multer getest, niet alleen beredeneerd.
De pagina apart gerenderd: bestandskiezer en multipart-enctype aanwezig, geen
onvertaalde sleutels.

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/views/pages/connect.ejs

    r822d16d rf926d13  
    4141    <p class="tl-move-hint"><%= t('tl.move_hint') %></p>
    4242    <p><a class="btn" href="/news/following.csv" download>&#11015; <%= t('tl.move_export') %></a></p>
    43     <form method="post" action="/news/following/import">
     43    <form method="post" action="/news/following/import" enctype="multipart/form-data">
     44      <label class="tl-move-lbl" for="tl-move-file"><%= t('tl.move_import_file') %></label>
     45      <input type="file" id="tl-move-file" name="csvfile" accept=".csv,text/csv,text/plain">
     46
    4447      <label class="tl-move-lbl" for="tl-move-csv"><%= t('tl.move_import_lbl') %></label>
    4548      <textarea id="tl-move-csv" name="csv" rows="5" spellcheck="false"
    4649                placeholder="Account address,Show boosts,Notify on new posts,Languages,Featured"></textarea>
     50
    4751      <button type="submit" class="btn btn-primary"><%= t('tl.move_import') %></button>
    4852    </form>
Note: See TracChangeset for help on using the changeset viewer.