Skip to content

Media overhaul / modernization - #6739

Merged
BurntimeX merged 50 commits into
6.3from
63-media-overhaul
Oct 19, 2026
Merged

BurntimeX merged 50 commits into
6.3from
63-media-overhaul

Conversation

@BurntimeX

Copy link
Copy Markdown
Member

Data layer

  • Media now CollectionDatabaseObject. New MediaBuilder, MediaCollection, commands Create/Update/DeleteMedia, events Media{Created,Updated,Deleted}.
  • wcf1_media_content replaced by wcf1_media_l10n (L10nStorage). Migration script normalizes rows.

Files

  • Media files moved to wcf1_file via wcf1_media.fileID and new MediaFileProcessor. Batch migration in MediaRebuildDataWorker. Legacy storage used only as fallback while fileID IS NULL.
  • MediaPage legacy delivery dropped. Media files linked directly; stable editor links via getEditorLink().
  • Replace upload allows same kind (image ↔ image), no longer same MIME. Assigned right at upload.

UI

  • Edit dialog: form builder dialog MediaEditAction (file replace, category, l10n title/caption/alt text, caption HTML toggle, simple ACL, mono/multilingual switch).
  • ACP MediaListPage: grid view MediaGridView with filters, image viewer previews, edit row link, upload hook. Single upload opens edit dialog; multi upload shows snackbar.
  • Media manager rewritten: list view in prompt dialog (MediaManagerListView, Component/Media/Manager.ts). Tile grid, keyboard selection, search, drop zone, paste upload. Single select vs multi insert.
  • New RPC endpoints: GET/DELETE /core/media/{id}.
  • CKEditor/CodeMirror/select integrations rewritten (Component/Media/{Insert,Select,Upload}). Thin deprecated shims for old Media/Manager/* modules.

Features

  • New [wsmg] BBCode: scrollable gallery (scroll-snap, lazy-loaded Gallery.ts). Insert dialog offers "individual images / gallery".

Removals

  • Clipboard, search, replace and legacy manager/editor TS/JS, templates and phrases removed. Delete manifests updated.
  • Two mediaJavaScript.tpl copies merged into shared_mediaJavaScript.tpl. Template alias keeps old name working.

Core fixes found on the way

  • ValueI18n.ts sent undefined for single-language l10nRequired fields.
  • SimpleAclFormField in dialogs: allowAll not sent, field registered twice, prefix not escaped for JS.
  • List view resets to page 1 when parameters change. List view dialogs can act as prompts.
  • Ranged downloads counted only on initial request. Images with unreadable dimensions rejected.

…umeric `0` content keys as monolingual in media import
@BurntimeX
BurntimeX merged commit be567f5 into 6.3 Oct 19, 2026
9 checks passed
@BurntimeX
BurntimeX deleted the 63-media-overhaul branch October 19, 2026 14:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant