feat(plex): Collections Phase 2 — admin collection editing (write-back to Plex)

Admins can curate Plex collections from a movie's info page ("Collections"
button → PlexCollectionEditor dialog): create a collection (seeded with the
movie), add/remove the movie to/from editable collections, delete a collection,
and "take over" an existing plain Plex collection (mark it editable). All writes
go to Plex (POST/PUT/DELETE via new PlexClient methods) and are reflected on
every client; a targeted single-collection re-sync (sync.resync_collection /
delete_collection_local) updates the local mirror without the full ~4-min sync.

Gating (per the design decisions): editing is ADMIN-ONLY (collections are shared
library-wide); only plain manual collections are editable — smart + external
auto-lists (IMDb/TMDb/…) are always read-only (can_edit = editable && !smart &&
source=="collection"). New admin endpoints under /api/plex/collections
(create/items add+remove/rename/delete/editable). Verified end-to-end incl. the
live Plex write API (create/add/rename/remove/delete all 200, self-cleaned) and
the editor UI (create + delete with confirm) on localdev.
This commit is contained in:
npeter83 2026-07-06 17:33:16 +02:00
parent 4b053a55da
commit 8291f06525
12 changed files with 602 additions and 13 deletions

View file

@ -28,12 +28,28 @@
"genre": "Műfaj",
"year": "Év",
"duration": "Hossz",
"durationOpt": { "short": "90 perc alatt", "mid": "90120 perc", "long": "2 óra felett" },
"durationOpt": {
"short": "90 perc alatt",
"mid": "90120 perc",
"long": "2 óra felett"
},
"added": "Plexhez adva",
"addedOpt": { "24h": "24 óra", "1w": "1 hét", "1m": "1 hónap", "6m": "6 hónap", "1y": "1 év" },
"addedOpt": {
"24h": "24 óra",
"1w": "1 hét",
"1m": "1 hónap",
"6m": "6 hónap",
"1y": "1 év"
},
"contentRating": "Korhatár",
"match": { "any": "Bármelyik", "all": "Mind" },
"dir": { "desc": "↓ Csökkenő", "asc": "↑ Növekvő" },
"match": {
"any": "Bármelyik",
"all": "Mind"
},
"dir": {
"desc": "↓ Csökkenő",
"asc": "↑ Növekvő"
},
"collection": "Kollekció",
"collectionSearch": "Kollekciók keresése…",
"collectionEmpty": "Nincs kollekció"
@ -59,6 +75,20 @@
"count": "{{count}} cím",
"added": "hozzáadva"
},
"collEditor": {
"manage": "Kollekciók",
"title": "Kollekciók — {{title}}",
"newPlaceholder": "Új kollekció neve…",
"create": "Létrehozás",
"search": "Kollekciók szűrése…",
"none": "Még nincs szerkeszthető kollekció. Hozz létre egyet fent.",
"count": "{{count}} elem",
"delete": "Törlés",
"deleteConfirm": "Törlöd a(z) „{{title}}” kollekciót a Plexből? Ez minden felhasználót érint.",
"note": "A változtatások a Plexbe íródnak, és minden kliensen/felhasználónál megjelennek.",
"others": "{{count}} meglévő kollekció kezelése…",
"makeEditable": "Kezelem"
},
"player": {
"loading": "Betöltés…",
"back": "Vissza",