feat(files): folders managed in place, a grid per folder, drop to upload, open on one file

- Own folders are made, renamed and deleted from the rail (right click, long press,
  Shift+F10) or the "…" beside an open folder's name; any folder's retention is a
  submenu (7/30/90 days, until deleted). Deleting confirms where its files go.
- List or grid per folder, sharing one sort; the grid is the one media card.
- A file dropped anywhere on the page opens Upload with it, bound for the folder
  on screen.
- A link (?item=) or the upload notice opens Files on the file: its page turned
  to, the keyboard on it, a ring round it.
- An in-place name field left by Enter or Escape hands the focus back to what
  replaced it (the row, the entry, the "…") instead of dropping it on <body>.
- The table's saved page size is per account.
This commit is contained in:
2026-10-11 15:59:12 +02:00
parent 85aa917b38
commit d22c64f4dd
23 changed files with 1569 additions and 175 deletions
+31 -1
View File
@@ -56,5 +56,35 @@
"unkeep": "Stop keeping",
"details": "Details…",
"upload": "Upload"
}
},
"folder": {
"menu": "Folder actions",
"new": "New folder",
"newName": "Folder name",
"rename": "Rename",
"retention": "Keeps files",
"forever": "Until I delete them",
"delete": "Delete folder…",
"deleteTitle": "Delete “{{name}}”?",
"deleteBodyEmpty": "The folder is empty. Nothing else changes.",
"deleteBody_one": "Its file goes back to the folder it came from, and its retention starts again from today.",
"deleteBody_other": "Its {{count}} files go back to the folders they came from, and their retention starts again from today.",
"deleteAction": "Delete folder"
},
"layout": {
"label": "View",
"list": "List",
"grid": "Grid"
},
"sort": {
"label": "Sort",
"default": "Newest first",
"asc": "Ascending",
"desc": "Descending"
},
"drop": {
"here": "Drop to upload into {{folder}}",
"oneAtATime": "Upload one file at a time — the first one is ready to go."
},
"perPage": "Files per page"
}