diff options
author | Thomas Müller <thomas.mueller@tmit.eu> | 2015-12-11 16:04:06 +0100 |
---|---|---|
committer | Thomas Müller <thomas.mueller@tmit.eu> | 2015-12-11 16:04:06 +0100 |
commit | aee4887224eac9cddbeb5e11990f264f084cb884 (patch) | |
tree | 006282536fb0941f6cbad0cc2bd51a154c4c049a | |
parent | 2fa97f69cba4dd045d7f76a18a6f0f7bf8998a79 (diff) | |
parent | baa5a69c55848aede39e14c936f837f77a221496 (diff) | |
download | nextcloud-server-aee4887224eac9cddbeb5e11990f264f084cb884.tar.gz nextcloud-server-aee4887224eac9cddbeb5e11990f264f084cb884.zip |
Merge pull request #21153 from owncloud/files-deleteactiontext
Bring back file delete action text to be based on context
-rw-r--r-- | apps/files/js/fileactions.js | 26 | ||||
-rw-r--r-- | apps/files/js/fileactionsmenu.js | 8 | ||||
-rw-r--r-- | apps/files/tests/js/fileactionsmenuSpec.js | 20 |
3 files changed, 49 insertions, 5 deletions
diff --git a/apps/files/js/fileactions.js b/apps/files/js/fileactions.js index 871a2149c88..67125f1570f 100644 --- a/apps/files/js/fileactions.js +++ b/apps/files/js/fileactions.js @@ -617,7 +617,16 @@ this.registerAction({ name: 'Delete', - displayName: t('files', 'Delete'), + displayName: function(context) { + var mountType = context.$file.attr('data-mounttype'); + var deleteTitle = t('files', 'Delete'); + if (mountType === 'external-root') { + deleteTitle = t('files', 'Disconnect storage'); + } else if (mountType === 'shared-root') { + deleteTitle = t('files', 'Unshare'); + } + return deleteTitle; + }, mime: 'all', order: 1000, // permission is READ because we show a hint instead if there is no permission @@ -668,8 +677,9 @@ * @typedef {Object} OCA.Files.FileAction * * @property {String} name identifier of the action - * @property {String} displayName display name of the action, defaults - * to the name given in name property + * @property {(String|OCA.Files.FileActions~displayNameFunction)} displayName + * display name string for the action, or function that returns the display name. + * Defaults to the name given in name property * @property {String} mime mime type * @property {int} permissions permissions * @property {(Function|String)} icon icon path to the icon or function @@ -703,6 +713,16 @@ */ /** + * Display name function for actions. + * The function returns the display name of the action using + * the given context information.. + * + * @callback OCA.Files.FileActions~displayNameFunction + * @param {OCA.Files.FileActionContext} context action context + * @return {String} display name + */ + + /** * Action handler function for file actions * * @callback OCA.Files.FileActions~actionHandler diff --git a/apps/files/js/fileactionsmenu.js b/apps/files/js/fileactionsmenu.js index 67cbb48c965..9e51d8f1f1f 100644 --- a/apps/files/js/fileactionsmenu.js +++ b/apps/files/js/fileactionsmenu.js @@ -81,6 +81,7 @@ * Renders the menu with the currently set items */ render: function() { + var self = this; var fileActions = this._context.fileActions; var actions = fileActions.getActions( fileActions.getCurrentMimeType(), @@ -100,6 +101,13 @@ (!defaultAction || actionSpec.name !== defaultAction.name) ); }); + items = _.map(items, function(item) { + if (_.isFunction(item.displayName)) { + item = _.extend({}, item); + item.displayName = item.displayName(self._context); + } + return item; + }); items = items.sort(function(actionA, actionB) { var orderA = actionA.order || 0; var orderB = actionB.order || 0; diff --git a/apps/files/tests/js/fileactionsmenuSpec.js b/apps/files/tests/js/fileactionsmenuSpec.js index 747a746a602..3028db2b3ac 100644 --- a/apps/files/tests/js/fileactionsmenuSpec.js +++ b/apps/files/tests/js/fileactionsmenuSpec.js @@ -20,7 +20,7 @@ */ describe('OCA.Files.FileActionsMenu tests', function() { - var fileList, fileActions, menu, actionStub, $tr; + var fileList, fileActions, menu, actionStub, menuContext, $tr; beforeEach(function() { // init horrible parameters @@ -80,7 +80,7 @@ describe('OCA.Files.FileActionsMenu tests', function() { }; $tr = fileList.add(fileData); - var menuContext = { + menuContext = { $file: $tr, fileList: fileList, fileActions: fileActions, @@ -189,6 +189,22 @@ describe('OCA.Files.FileActionsMenu tests', function() { var yactionIndex = menu.$el.find('a[data-action=Yaction]').closest('li').index(); expect(wactionIndex).toBeLessThan(yactionIndex); }); + it('calls displayName function', function() { + var displayNameStub = sinon.stub().returns('Test'); + + fileActions.registerAction({ + name: 'Something', + displayName: displayNameStub, + mime: 'text/plain', + permissions: OC.PERMISSION_ALL + }); + + menu.render(); + + expect(displayNameStub.calledOnce).toEqual(true); + expect(displayNameStub.calledWith(menuContext)).toEqual(true); + expect(menu.$el.find('a[data-action=Something]').text()).toEqual('Test'); + }); }); describe('action handler', function() { |