From 2538ffffb4ebc6a09b261ed17efc5f5dfb6eb3e9 Mon Sep 17 00:00:00 2001 From: Vincent Petry Date: Wed, 4 Jan 2023 17:37:13 +0100 Subject: [PATCH] Fix edit locally action to not appear for folders Extends FileActions to also allow the meta "files" mime type. Signed-off-by: Vincent Petry --- apps/files/js/fileactions.js | 7 ++++++- apps/files/tests/js/fileactionsSpec.js | 27 ++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/apps/files/js/fileactions.js b/apps/files/js/fileactions.js index 7e3a0b9f40b48..6c05e0ab6e2f7 100644 --- a/apps/files/js/fileactions.js +++ b/apps/files/js/fileactions.js @@ -220,6 +220,9 @@ if (this.actions.all) { actions = $.extend(actions, this.actions.all); } + if (mime !== 'httpd/unix-directory' && this.actions.files) { + actions = $.extend(actions, this.actions.files); + } if (type) {//type is 'dir' or 'file' if (this.actions[type]) { actions = $.extend(actions, this.actions[type]); @@ -311,6 +314,8 @@ name = this.defaults[mimePart]; } else if (type && this.defaults[type]) { name = this.defaults[type]; + } else if (mime !== 'httpd/unix-directory' && this.defaults.files) { + name = this.defaults.files; } else { name = this.defaults.all; } @@ -719,7 +724,7 @@ return t('files', 'Edit locally'); } }, - mime: 'all', + mime: 'files', order: -23, icon: function(filename, context) { var locked = context.$file.data('locked'); diff --git a/apps/files/tests/js/fileactionsSpec.js b/apps/files/tests/js/fileactionsSpec.js index 7ec9efc43d02d..af54fdab75e28 100644 --- a/apps/files/tests/js/fileactionsSpec.js +++ b/apps/files/tests/js/fileactionsSpec.js @@ -140,6 +140,33 @@ describe('OCA.Files.FileActions tests', function() { expect($tr.find('.action.action-match').length).toEqual(1); expect($tr.find('.action.action-nomatch').length).toEqual(0); }); + it('only renders file specific actions for files', function() { + var folderData = { + id: 19, + type: 'folder', + name: 'testfolder', + mimetype: 'httpd/unix-directory', + size: '1234', + etag: 'a01234c', + mtime: '123456', + permissions: OC.PERMISSION_READ | OC.PERMISSION_UPDATE + }; + + var $folder = fileList.add(folderData); + + fileActions.registerAction({ + name: 'filesonly', + displayName: 'MatchDisplay', + type: OCA.Files.FileActions.TYPE_INLINE, + mime: 'files', + permissions: OC.PERMISSION_READ + }); + + fileActions.display($tr.find('td.filename'), true, fileList); + fileActions.display($folder.find('td.filename'), true, fileList); + expect($tr.find('.action.action-filesonly').length).toEqual(1); + expect($folder.find('.action.action-filesonly').length).toEqual(0); + }); it('only renders actions relevant to the permissions', function() { fileActions.registerAction({ name: 'Match',