Open media editor after uploading single file
authorMatthias Schmidt <gravatronics@live.com>
Tue, 18 Sep 2018 15:30:04 +0000 (17:30 +0200)
committerMatthias Schmidt <gravatronics@live.com>
Tue, 18 Sep 2018 15:30:04 +0000 (17:30 +0200)
Close #2606

wcfsetup/install/files/js/WoltLabSuite/Core/Controller/Media/List.js
wcfsetup/install/files/js/WoltLabSuite/Core/Media/Manager/Base.js
wcfsetup/install/files/js/WoltLabSuite/Core/Media/Upload.js
wcfsetup/install/files/js/WoltLabSuite/Core/Upload.js

index d5cc2cb1a7a4c5ce7bbd12772edd557f3d3b28ca..7b4757ec7750ccf956dbba509fa8b7c605d10ab8 100644 (file)
@@ -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.
                 * 
index f7f05fa88d48cfcd3a97a8ee617379b7feda67f3..e3e4a8c0c5feae7927e857a2a36b9612ad3c7898 100644 (file)
@@ -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).
                 * 
index ba02d9b5ea3850b0af9c47bafaaa246ff52f0db3..955bfa3e1f56bf1973c9bb26cae562fb86dba89e 100644 (file)
@@ -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
index 2f1f3aa39cbab74701be87f57a98af1be47ffd86..697ccd5d6ac207f21bdeed84a9a19269d092b4e5 100644 (file)
@@ -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 {