diff options
author | Christoph Wurst <christoph@winzerhof-wurst.at> | 2016-10-10 10:15:42 +0200 |
---|---|---|
committer | Roeland Jago Douma <roeland@famdouma.nl> | 2016-11-07 14:58:45 +0100 |
commit | 9e5e120ef9869b7c52d90e85782ec83a9217275d (patch) | |
tree | 139a9c041b3436573550115856720252099601c0 | |
parent | bc1cb8a6d09d97df93b7914e020759eb7df73df1 (diff) | |
download | nextcloud-server-9e5e120ef9869b7c52d90e85782ec83a9217275d.tar.gz nextcloud-server-9e5e120ef9869b7c52d90e85782ec83a9217275d.zip |
refactor share permission logic into own method to reuse it for the share tab
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
-rw-r--r-- | apps/files_sharing/js/share.js | 35 | ||||
-rw-r--r-- | apps/files_sharing/js/sharetabview.js | 4 | ||||
-rw-r--r-- | tests/karma.config.js | 2 |
3 files changed, 27 insertions, 14 deletions
diff --git a/apps/files_sharing/js/share.js b/apps/files_sharing/js/share.js index 7629124ec44..2119db0b71e 100644 --- a/apps/files_sharing/js/share.js +++ b/apps/files_sharing/js/share.js @@ -36,19 +36,7 @@ var oldCreateRow = fileList._createRow; fileList._createRow = function(fileData) { var tr = oldCreateRow.apply(this, arguments); - var sharePermissions = fileData.permissions; - if (fileData.mountType && fileData.mountType === "external-root"){ - // for external storages we can't use the permissions of the mountpoint - // instead we show all permissions and only use the share permissions from the mountpoint to handle resharing - sharePermissions = sharePermissions | (OC.PERMISSION_ALL & ~OC.PERMISSION_SHARE); - } - if (fileData.type === 'file') { - // files can't be shared with delete permissions - sharePermissions = sharePermissions & ~OC.PERMISSION_DELETE; - - // create permissions don't mean anything for files - sharePermissions = sharePermissions & ~OC.PERMISSION_CREATE; - } + var sharePermissions = OCA.Sharing.Util.getSharePermissions(fileData); tr.attr('data-share-permissions', sharePermissions); if (fileData.shareOwner) { tr.attr('data-share-owner', fileData.shareOwner); @@ -251,6 +239,27 @@ text += ', +' + (count - maxRecipients); } return text; + }, + + /** + * @param {Array} fileData + * @returns {String} + */ + getSharePermissions: function(fileData) { + var sharePermissions = fileData.permissions; + if (fileData.mountType && fileData.mountType === "external-root"){ + // for external storages we can't use the permissions of the mountpoint + // instead we show all permissions and only use the share permissions from the mountpoint to handle resharing + sharePermissions = sharePermissions | (OC.PERMISSION_ALL & ~OC.PERMISSION_SHARE); + } + if (fileData.type === 'file') { + // files can't be shared with delete permissions + sharePermissions = sharePermissions & ~OC.PERMISSION_DELETE; + + // create permissions don't mean anything for files + sharePermissions = sharePermissions & ~OC.PERMISSION_CREATE; + } + return sharePermissions; } }; })(); diff --git a/apps/files_sharing/js/sharetabview.js b/apps/files_sharing/js/sharetabview.js index 2c7070aa3d5..7bb1f1229d0 100644 --- a/apps/files_sharing/js/sharetabview.js +++ b/apps/files_sharing/js/sharetabview.js @@ -50,6 +50,10 @@ if (this.model) { this.$el.html(this.template()); + if (_.isUndefined(this.model.get('sharePermissions'))) { + this.model.set('sharePermissions', OCA.Sharing.Util.getSharePermissions(this.model.attributes)); + } + // TODO: the model should read these directly off the passed fileInfoModel var attributes = { itemType: this.model.isDirectory() ? 'folder' : 'file', diff --git a/tests/karma.config.js b/tests/karma.config.js index 111af7a1559..d80b5bbd759 100644 --- a/tests/karma.config.js +++ b/tests/karma.config.js @@ -54,7 +54,7 @@ module.exports = function(config) { 'apps/files_sharing/js/app.js', 'apps/files_sharing/js/sharedfilelist.js', 'apps/files_sharing/js/share.js', - 'apps/files_sharing/js/external.js', + 'apps/files_sharing/js/sharebreadcrumbview.js', 'apps/files_sharing/js/public.js', 'apps/files_sharing/js/sharetabview.js' ], |