Merge pull request #19401 from owncloud/files-actionsorder

Fix order of actions in the files actions menu
This commit is contained in:
Thomas Müller 2015-09-28 12:53:11 +02:00
commit 716ff81b27
4 changed files with 50 additions and 0 deletions

View File

@ -141,6 +141,7 @@
name: name,
displayName: action.displayName,
mime: mime,
order: action.order || 0,
icon: action.icon,
permissions: action.permissions,
type: action.type || FileActions.TYPE_DROPDOWN
@ -565,6 +566,7 @@
this.registerAction({
name: 'Download',
displayName: t('files', 'Download'),
order: -20,
mime: 'all',
permissions: OC.PERMISSION_READ,
icon: function () {
@ -596,6 +598,7 @@
name: 'Rename',
displayName: t('files', 'Rename'),
mime: 'all',
order: -30,
permissions: OC.PERMISSION_UPDATE,
icon: function() {
return OC.imagePath('core', 'actions/rename');
@ -617,6 +620,7 @@
name: 'Delete',
displayName: t('files', 'Delete'),
mime: 'all',
order: 1000,
// permission is READ because we show a hint instead if there is no permission
permissions: OC.PERMISSION_DELETE,
icon: function() {

View File

@ -100,6 +100,14 @@
(!defaultAction || actionSpec.name !== defaultAction.name)
);
});
items = items.sort(function(actionA, actionB) {
var orderA = actionA.order || 0;
var orderB = actionB.order || 0;
if (orderB === orderA) {
return OC.Util.naturalSortCompare(actionA.displayName, actionB.displayName);
}
return orderA - orderB;
});
items = _.map(items, function(item) {
item.nameLowerCase = item.name.toLowerCase();
return item;

View File

@ -302,6 +302,7 @@
name: 'Details',
displayName: t('files', 'Details'),
mime: 'all',
order: -50,
icon: OC.imagePath('core', 'actions/details'),
permissions: OC.PERMISSION_READ,
actionHandler: function(fileName, context) {

View File

@ -152,6 +152,43 @@ describe('OCA.Files.FileActionsMenu tests', function() {
expect(menu.$el.find('a[data-action=Match]').length).toEqual(1);
expect(menu.$el.find('a[data-action=NoMatch]').length).toEqual(0);
});
it('sorts by order attribute, then name', function() {
fileActions.registerAction({
name: 'Baction',
displayName: 'Baction',
order: 2,
mime: 'text/plain',
permissions: OC.PERMISSION_ALL
});
fileActions.registerAction({
name: 'Zaction',
displayName: 'Zaction',
order: 1,
mime: 'text/plain',
permissions: OC.PERMISSION_ALL
});
fileActions.registerAction({
name: 'Yaction',
displayName: 'Yaction',
mime: 'text/plain',
permissions: OC.PERMISSION_ALL
});
fileActions.registerAction({
name: 'Waction',
displayName: 'Waction',
mime: 'text/plain',
permissions: OC.PERMISSION_ALL
});
menu.render();
var zactionIndex = menu.$el.find('a[data-action=Zaction]').closest('li').index();
var bactionIndex = menu.$el.find('a[data-action=Baction]').closest('li').index();
expect(zactionIndex).toBeLessThan(bactionIndex);
var wactionIndex = menu.$el.find('a[data-action=Waction]').closest('li').index();
var yactionIndex = menu.$el.find('a[data-action=Yaction]').closest('li').index();
expect(wactionIndex).toBeLessThan(yactionIndex);
});
});
describe('action handler', function() {