var _mediaEditor;
var _tableBody = elById('mediaListTableBody');
var _clipboardObjectIds = [];
+ var _upload;
/**
* @exports WoltLabSuite/Core/Controller/Media/List
return {
init: function(options) {
options = options || {};
- new MediaListUpload('uploadButton', 'mediaListTableBody', {
+ _upload = new MediaListUpload('uploadButton', 'mediaListTableBody', {
categoryId: options.categoryId,
multiple: true
});
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));
},
/**
_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.
*
}
DomChangeListener.add('WoltLabSuite/Core/Media/Manager', this._addButtonEventListeners.bind(this));
+
+ EventHandler.add('com.woltlab.wcf.media.upload', 'success', this._openEditorAfterUpload.bind(this));
}
MediaManagerBase.prototype = {
/**
}
},
+ /**
+ * 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).
*
EventHandler.fire('com.woltlab.wcf.media.upload', 'success', {
files: files,
+ isMultiFileUpload: this._multiFileUploadIds.indexOf(uploadId) !== -1,
media: data.returnValues.media,
upload: this,
uploadId: uploadId
this._fileElements = [];
this._internalFileId = 0;
+ // upload ids that belong to an upload of multiple files at once
+ this._multiFileUploadIds = [];
+
this._createButton();
}
Upload.prototype = {
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 {