From: Matthias Schmidt Date: Tue, 18 Sep 2018 15:30:04 +0000 (+0200) Subject: Open media editor after uploading single file X-Git-Tag: 5.2.0_Alpha_1~364^2~25 X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=83e795ece4a0bc7a1357072c7f21f1eb46b0bd6b;p=GitHub%2FWoltLab%2FWCF.git Open media editor after uploading single file Close #2606 --- diff --git a/wcfsetup/install/files/js/WoltLabSuite/Core/Controller/Media/List.js b/wcfsetup/install/files/js/WoltLabSuite/Core/Controller/Media/List.js index d5cc2cb1a7..7b4757ec77 100644 --- a/wcfsetup/install/files/js/WoltLabSuite/Core/Controller/Media/List.js +++ b/wcfsetup/install/files/js/WoltLabSuite/Core/Controller/Media/List.js @@ -39,6 +39,7 @@ define([ var _mediaEditor; var _tableBody = elById('mediaListTableBody'); var _clipboardObjectIds = []; + var _upload; /** * @exports WoltLabSuite/Core/Controller/Media/List @@ -46,7 +47,7 @@ define([ return { init: function(options) { options = options || {}; - new MediaListUpload('uploadButton', 'mediaListTableBody', { + _upload = new MediaListUpload('uploadButton', 'mediaListTableBody', { categoryId: options.categoryId, multiple: true }); @@ -75,6 +76,8 @@ define([ this._addButtonEventListeners(); DomChangeListener.add('WoltLabSuite/Core/Controller/Media/List', this._addButtonEventListeners.bind(this)); + + EventHandler.add('com.woltlab.wcf.media.upload', 'success', this._openEditorAfterUpload.bind(this)); }, /** @@ -120,6 +123,22 @@ define([ _mediaEditor.edit(elData(event.currentTarget, 'object-id')); }, + /** + * Opens the media editor after uploading a single file. + * + * @param {object} data upload event data + * @since 3.2 + */ + _openEditorAfterUpload: function(data) { + if (data.upload === _upload && !data.isMultiFileUpload) { + var keys = Object.keys(data.media); + + if (keys.length) { + _mediaEditor.edit(this._media.get(~~data.media[keys[0]].mediaID)); + } + } + }, + /** * Is called after the media files with the given ids have been deleted via clipboard. * diff --git a/wcfsetup/install/files/js/WoltLabSuite/Core/Media/Manager/Base.js b/wcfsetup/install/files/js/WoltLabSuite/Core/Media/Manager/Base.js index f7f05fa88d..e3e4a8c0c5 100644 --- a/wcfsetup/install/files/js/WoltLabSuite/Core/Media/Manager/Base.js +++ b/wcfsetup/install/files/js/WoltLabSuite/Core/Media/Manager/Base.js @@ -80,6 +80,8 @@ define( } DomChangeListener.add('WoltLabSuite/Core/Media/Manager', this._addButtonEventListeners.bind(this)); + + EventHandler.add('com.woltlab.wcf.media.upload', 'success', this._openEditorAfterUpload.bind(this)); } MediaManagerBase.prototype = { /** @@ -328,6 +330,24 @@ define( } }, + /** + * Opens the media editor after uploading a single file. + * + * @param {object} data upload event data + * @since 3.2 + */ + _openEditorAfterUpload: function(data) { + if (data.upload === this._upload && !data.isMultiFileUpload) { + var keys = Object.keys(data.media); + + if (keys.length) { + UiDialog.close(this); + + this._mediaEditor.edit(this._media.get(~~data.media[keys[0]].mediaID)); + } + } + }, + /** * Sets the displayed media (after a search). * diff --git a/wcfsetup/install/files/js/WoltLabSuite/Core/Media/Upload.js b/wcfsetup/install/files/js/WoltLabSuite/Core/Media/Upload.js index ba02d9b5ea..955bfa3e1f 100644 --- a/wcfsetup/install/files/js/WoltLabSuite/Core/Media/Upload.js +++ b/wcfsetup/install/files/js/WoltLabSuite/Core/Media/Upload.js @@ -342,6 +342,7 @@ define( EventHandler.fire('com.woltlab.wcf.media.upload', 'success', { files: files, + isMultiFileUpload: this._multiFileUploadIds.indexOf(uploadId) !== -1, media: data.returnValues.media, upload: this, uploadId: uploadId diff --git a/wcfsetup/install/files/js/WoltLabSuite/Core/Upload.js b/wcfsetup/install/files/js/WoltLabSuite/Core/Upload.js index 2f1f3aa39c..697ccd5d6a 100644 --- a/wcfsetup/install/files/js/WoltLabSuite/Core/Upload.js +++ b/wcfsetup/install/files/js/WoltLabSuite/Core/Upload.js @@ -72,6 +72,9 @@ define(['AjaxRequest', 'Core', 'Dom/ChangeListener', 'Language', 'Dom/Util', 'Do this._fileElements = []; this._internalFileId = 0; + // upload ids that belong to an upload of multiple files at once + this._multiFileUploadIds = []; + this._createButton(); } Upload.prototype = { @@ -285,7 +288,12 @@ define(['AjaxRequest', 'Core', 'Dom/ChangeListener', 'Language', 'Dom/Util', 'Do if (this._options.singleFileRequests) { uploadId = []; for (var i = 0, length = files.length; i < length; i++) { - uploadId.push(this._uploadFiles([ files[i] ], blob)); + var localUploadId = this._uploadFiles([ files[i] ], blob); + + if (files.length !== 1) { + this._multiFileUploadIds.push(localUploadId) + } + uploadId.push(localUploadId); } } else {