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:
parent
4b053a55da
commit
8291f06525
12 changed files with 602 additions and 13 deletions
|
|
@ -28,12 +28,28 @@
|
|||
"genre": "Genre",
|
||||
"year": "Year",
|
||||
"duration": "Length",
|
||||
"durationOpt": { "short": "Under 90m", "mid": "90–120m", "long": "Over 2h" },
|
||||
"durationOpt": {
|
||||
"short": "Under 90m",
|
||||
"mid": "90–120m",
|
||||
"long": "Over 2h"
|
||||
},
|
||||
"added": "Added to Plex",
|
||||
"addedOpt": { "24h": "24h", "1w": "1 week", "1m": "1 month", "6m": "6 months", "1y": "1 year" },
|
||||
"addedOpt": {
|
||||
"24h": "24h",
|
||||
"1w": "1 week",
|
||||
"1m": "1 month",
|
||||
"6m": "6 months",
|
||||
"1y": "1 year"
|
||||
},
|
||||
"contentRating": "Age rating",
|
||||
"match": { "any": "Any", "all": "All" },
|
||||
"dir": { "desc": "↓ Descending", "asc": "↑ Ascending" },
|
||||
"match": {
|
||||
"any": "Any",
|
||||
"all": "All"
|
||||
},
|
||||
"dir": {
|
||||
"desc": "↓ Descending",
|
||||
"asc": "↑ Ascending"
|
||||
},
|
||||
"collection": "Collection",
|
||||
"collectionSearch": "Search collections…",
|
||||
"collectionEmpty": "No collections"
|
||||
|
|
@ -59,6 +75,20 @@
|
|||
"count": "{{count}} titles",
|
||||
"added": "added"
|
||||
},
|
||||
"collEditor": {
|
||||
"manage": "Collections",
|
||||
"title": "Collections — {{title}}",
|
||||
"newPlaceholder": "New collection name…",
|
||||
"create": "Create",
|
||||
"search": "Filter collections…",
|
||||
"none": "No editable collections yet. Create one above.",
|
||||
"count": "{{count}} items",
|
||||
"delete": "Delete",
|
||||
"deleteConfirm": "Delete the collection \"{{title}}\" from Plex? This affects all users.",
|
||||
"note": "Changes are written to Plex and shared across all clients and users.",
|
||||
"others": "Manage {{count}} existing collections…",
|
||||
"makeEditable": "Manage"
|
||||
},
|
||||
"player": {
|
||||
"loading": "Loading…",
|
||||
"back": "Back",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue