From e6b74fac407b62168633be75312074e8ae0e2175 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Calvi=C3=B1o=20S=C3=A1nchez?= Date: Thu, 2 Nov 2017 14:55:58 +0100 Subject: [PATCH] Add proper handling of files without permissions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Now a file gets its directory permissions only if it contained no permissions (they were undefined or null), but not if its permissions were set to "NONE". Besides that, now file actions that do not require any permission on the file to be performed can be used on files that have no permissions. Signed-off-by: Daniel Calviño Sánchez --- apps/files/js/fileactions.js | 2 +- apps/files/js/filelist.js | 7 ++++++- apps/files/tests/js/filelistSpec.js | 9 +++++++++ core/js/js.js | 1 + 4 files changed, 17 insertions(+), 2 deletions(-) diff --git a/apps/files/js/fileactions.js b/apps/files/js/fileactions.js index 0f320c8b3c7..6c031ab06d5 100644 --- a/apps/files/js/fileactions.js +++ b/apps/files/js/fileactions.js @@ -235,7 +235,7 @@ } var filteredActions = {}; $.each(actions, function (name, action) { - if (action.permissions & permissions) { + if ((action.permissions === OC.PERMISSION_NONE) || (action.permissions & permissions)) { filteredActions[name] = action; } }); diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js index 4790afcf4d0..c19f517e422 100644 --- a/apps/files/js/filelist.js +++ b/apps/files/js/filelist.js @@ -1159,6 +1159,11 @@ } } + var permissions = fileData.permissions; + if (permissions === undefined || permissions === null) { + permissions = this.getDirectoryPermissions(); + } + //containing tr var tr = $('').attr({ "data-id" : fileData.id, @@ -1168,7 +1173,7 @@ "data-mime": mime, "data-mtime": mtime, "data-etag": fileData.etag, - "data-permissions": fileData.permissions || this.getDirectoryPermissions(), + "data-permissions": permissions, "data-has-preview": fileData.hasPreview !== false }); diff --git a/apps/files/tests/js/filelistSpec.js b/apps/files/tests/js/filelistSpec.js index 8bb188e3602..8a3e8cb9d4b 100644 --- a/apps/files/tests/js/filelistSpec.js +++ b/apps/files/tests/js/filelistSpec.js @@ -296,6 +296,15 @@ describe('OCA.Files.FileList tests', function() { expect($tr.find('.filesize').text()).toEqual('Pending'); expect($tr.find('.date').text()).not.toEqual('?'); }); + it('generates file element with no permissions when permissions are explicitly none', function() { + var fileData = { + type: 'dir', + name: 'testFolder', + permissions: OC.PERMISSION_NONE + }; + var $tr = fileList.add(fileData); + expect($tr.attr('data-permissions')).toEqual('0'); + }); it('generates file element with zero size when size is explicitly zero', function() { var fileData = { type: 'dir', diff --git a/core/js/js.js b/core/js/js.js index c02ef5c7920..246aae3ac02 100644 --- a/core/js/js.js +++ b/core/js/js.js @@ -60,6 +60,7 @@ function fileDownloadPath(dir, file) { /** @namespace */ var OCP = {}, OC = { + PERMISSION_NONE:0, PERMISSION_CREATE:4, PERMISSION_READ:1, PERMISSION_UPDATE:2,