|
@@ -81,10 +81,18 @@
|
|
|
if (action === 'upload') {
|
|
|
OC.hideMenus();
|
|
|
} else {
|
|
|
- event.preventDefault();
|
|
|
- this.$el.find('.menuitem.active').removeClass('active');
|
|
|
- $target.addClass('active');
|
|
|
- this._promptFileName($target);
|
|
|
+ var actionItem = _.filter(this._menuItems, function(item) {
|
|
|
+ return item.id === action
|
|
|
+ }).pop();
|
|
|
+ if (typeof actionItem.useInput === 'undefined' || actionItem.useInput === true) {
|
|
|
+ event.preventDefault();
|
|
|
+ this.$el.find('.menuitem.active').removeClass('active');
|
|
|
+ $target.addClass('active');
|
|
|
+ this._promptFileName($target);
|
|
|
+ } else {
|
|
|
+ actionItem.actionHandler();
|
|
|
+ OC.hideMenus();
|
|
|
+ }
|
|
|
}
|
|
|
},
|
|
|
|
|
@@ -198,8 +206,10 @@
|
|
|
templateName: actionSpec.templateName,
|
|
|
iconClass: actionSpec.iconClass,
|
|
|
fileType: actionSpec.fileType,
|
|
|
+ useInput: actionSpec.useInput,
|
|
|
actionHandler: actionSpec.actionHandler,
|
|
|
- checkFilename: actionSpec.checkFilename
|
|
|
+ checkFilename: actionSpec.checkFilename,
|
|
|
+ shouldShow: actionSpec.shouldShow,
|
|
|
});
|
|
|
},
|
|
|
|
|
@@ -220,10 +230,11 @@
|
|
|
* Renders the menu with the currently set items
|
|
|
*/
|
|
|
render: function() {
|
|
|
+ const menuItems = this._menuItems.filter(item => !item.shouldShow || (item.shouldShow instanceof Function && item.shouldShow() === true))
|
|
|
this.$el.html(this.template({
|
|
|
uploadMaxHumanFileSize: 'TODO',
|
|
|
uploadLabel: t('files', 'Upload file'),
|
|
|
- items: this._menuItems
|
|
|
+ items: menuItems
|
|
|
}));
|
|
|
|
|
|
// Trigger upload action also with keyboard navigation on enter
|