aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Müller <thomas.mueller@tmit.eu>2015-12-11 16:04:06 +0100
committerThomas Müller <thomas.mueller@tmit.eu>2015-12-11 16:04:06 +0100
commitaee4887224eac9cddbeb5e11990f264f084cb884 (patch)
tree006282536fb0941f6cbad0cc2bd51a154c4c049a
parent2fa97f69cba4dd045d7f76a18a6f0f7bf8998a79 (diff)
parentbaa5a69c55848aede39e14c936f837f77a221496 (diff)
downloadnextcloud-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.js26
-rw-r--r--apps/files/js/fileactionsmenu.js8
-rw-r--r--apps/files/tests/js/fileactionsmenuSpec.js20
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() {