From d1742bbe3d7e05c70f207d7e8daa780374a16457 Mon Sep 17 00:00:00 2001 From: Matthias Schmidt Date: Mon, 10 May 2021 09:55:48 +0200 Subject: [PATCH] Fix inserting multiple media files via clipboard See 57324f3a91d806572be58cc6b3e7fb169fc26580 --- ts/WoltLabSuite/Core/Acp/Ui/CodeMirror/Media.ts | 9 +++++++-- ts/WoltLabSuite/Core/Media/Data.ts | 2 +- ts/WoltLabSuite/Core/Media/Manager/Editor.ts | 6 ++++-- .../js/WoltLabSuite/Core/Acp/Ui/CodeMirror/Media.js | 6 +++++- .../files/js/WoltLabSuite/Core/Media/Manager/Editor.js | 1 + 5 files changed, 18 insertions(+), 6 deletions(-) diff --git a/ts/WoltLabSuite/Core/Acp/Ui/CodeMirror/Media.ts b/ts/WoltLabSuite/Core/Acp/Ui/CodeMirror/Media.ts index 5559b12a1c..48e439de9a 100644 --- a/ts/WoltLabSuite/Core/Acp/Ui/CodeMirror/Media.ts +++ b/ts/WoltLabSuite/Core/Acp/Ui/CodeMirror/Media.ts @@ -17,11 +17,16 @@ class AcpUiCodeMirrorMedia { }); } - protected insert(mediaList: Map, insertType: MediaInsertType, thumbnailSize: string): void { + protected insert(mediaList: Map, insertType: MediaInsertType, thumbnailSize?: string): void { switch (insertType) { case MediaInsertType.Separate: { + let sizeArgument = ""; + if (thumbnailSize) { + sizeArgument = ` size="${thumbnailSize}"`; + } + const content = Array.from(mediaList.values()) - .map((item) => `{{ media="${item.mediaID}" size="${thumbnailSize}" }}`) + .map((item) => `{{ media="${item.mediaID}"${sizeArgument} }}`) .join(""); (this.element as any).codemirror.replaceSelection(content); diff --git a/ts/WoltLabSuite/Core/Media/Data.ts b/ts/WoltLabSuite/Core/Media/Data.ts index 5484d7ee57..24ad973923 100644 --- a/ts/WoltLabSuite/Core/Media/Data.ts +++ b/ts/WoltLabSuite/Core/Media/Data.ts @@ -44,7 +44,7 @@ export const enum MediaInsertType { export interface MediaManagerEditorOptions extends MediaManagerOptions { buttonClass?: string; - callbackInsert: (media: Map, insertType: MediaInsertType, thumbnailSize: string) => void; + callbackInsert: (media: Map, insertType: MediaInsertType, thumbnailSize?: string) => void; editor?: RedactorEditor; } diff --git a/ts/WoltLabSuite/Core/Media/Manager/Editor.ts b/ts/WoltLabSuite/Core/Media/Manager/Editor.ts index 1c5817cc93..7fcbfc7004 100644 --- a/ts/WoltLabSuite/Core/Media/Manager/Editor.ts +++ b/ts/WoltLabSuite/Core/Media/Manager/Editor.ts @@ -216,9 +216,11 @@ class MediaManagerEditor extends MediaManager { } if (this._options.callbackInsert !== null) { - this._options.callbackInsert(this._mediaToInsert, MediaInsertType.Separate, thumbnailSize!); + this._options.callbackInsert(this._mediaToInsert, MediaInsertType.Separate, thumbnailSize); } else { this._options.editor!.buffer.set(); + + this._mediaToInsert.forEach((media) => this._insertMediaItem(thumbnailSize, media)); } if (this._mediaToInsertByClipboard) { @@ -237,7 +239,7 @@ class MediaManagerEditor extends MediaManager { /** * Inserts a single media item into the editor. */ - protected _insertMediaItem(thumbnailSize: string, media: Media): void { + protected _insertMediaItem(thumbnailSize: string | undefined, media: Media): void { if (media.isImage) { let available = ""; ["small", "medium", "large", "original"].some((size) => { diff --git a/wcfsetup/install/files/js/WoltLabSuite/Core/Acp/Ui/CodeMirror/Media.js b/wcfsetup/install/files/js/WoltLabSuite/Core/Acp/Ui/CodeMirror/Media.js index 17d0d9630e..e4427a3b3c 100644 --- a/wcfsetup/install/files/js/WoltLabSuite/Core/Acp/Ui/CodeMirror/Media.js +++ b/wcfsetup/install/files/js/WoltLabSuite/Core/Acp/Ui/CodeMirror/Media.js @@ -15,8 +15,12 @@ define(["require", "exports", "tslib", "../../../Media/Manager/Editor", "../../. insert(mediaList, insertType, thumbnailSize) { switch (insertType) { case "separate" /* Separate */: { + let sizeArgument = ""; + if (thumbnailSize) { + sizeArgument = ` size="${thumbnailSize}"`; + } const content = Array.from(mediaList.values()) - .map((item) => `{{ media="${item.mediaID}" size="${thumbnailSize}" }}`) + .map((item) => `{{ media="${item.mediaID}"${sizeArgument} }}`) .join(""); this.element.codemirror.replaceSelection(content); } diff --git a/wcfsetup/install/files/js/WoltLabSuite/Core/Media/Manager/Editor.js b/wcfsetup/install/files/js/WoltLabSuite/Core/Media/Manager/Editor.js index e394df54b4..719b0f47c4 100644 --- a/wcfsetup/install/files/js/WoltLabSuite/Core/Media/Manager/Editor.js +++ b/wcfsetup/install/files/js/WoltLabSuite/Core/Media/Manager/Editor.js @@ -169,6 +169,7 @@ define(["require", "exports", "tslib", "./Base", "../../Core", "../../Event/Hand } else { this._options.editor.buffer.set(); + this._mediaToInsert.forEach((media) => this._insertMediaItem(thumbnailSize, media)); } if (this._mediaToInsertByClipboard) { Clipboard.unmark("com.woltlab.wcf.media", Array.from(this._mediaToInsert.keys())); -- 2.20.1