' +
- '
' +
- '
' +
+ '
' +
+ '
' +
+ '
' +
+ '
{{publicUploadDescription}}
' +
'
' +
'{{/if}}' +
'
' +
@@ -69,10 +76,6 @@
/** @type {Function} **/
_template: undefined,
- events: {
- 'click .publicUploadCheckbox': '_updateCheckboxes'
- },
-
initialize: function (options) {
if (!_.isUndefined(options.itemModel)) {
this.itemModel = options.itemModel;
@@ -89,16 +92,6 @@
OC.Plugins.attach('OCA.Share.ShareDialogLinkShareView', this);
},
- _updateCheckboxes: function() {
- var publicUploadAllowed = this.$('.publicUploadCheckbox').is(':checked');
- if (!publicUploadAllowed) {
- this.$('.showListingCheckbox').prop('checked', true);
- this.$('.showListingCheckbox').prop('disabled', true);
- } else {
- this.$('.showListingCheckbox').prop('disabled', false);
- }
- },
-
/**
* Returns the selected permissions as read from the checkboxes or
* the absence thereof.
@@ -106,30 +99,9 @@
* @return {int} permissions
*/
_getPermissions: function() {
- var $showListingCheckbox = this.$('.showListingCheckbox');
- var $publicUploadCheckbox = this.$('.publicUploadCheckbox');
- var allowListing = (!$showListingCheckbox.length || $showListingCheckbox.is(':checked'));
- var permissions = 0;
-
- // if the checkbox is missing, default to checked
- if (allowListing) {
- permissions |= OC.PERMISSION_READ;
- }
+ var permissions = this.$('input[name="publicPermissions"]:checked').val();
- // if the checkbox is missing it is the equivalent of unchecked
- if ($publicUploadCheckbox.is(':checked')) {
- if (allowListing) {
- permissions |= OC.PERMISSION_UPDATE | OC.PERMISSION_CREATE | OC.PERMISSION_DELETE;
- } else {
- // without listing only file creation is allowed, no overwrite nor delete
- permissions |= OC.PERMISSION_CREATE;
- }
- } else {
- // ignore listing perm, allow reading
- permissions |= OC.PERMISSION_READ;
- }
-
- return permissions;
+ return (permissions) ? permissions : OC.PERMISSION_READ;
},
_save: function () {
@@ -248,18 +220,32 @@
this.$el.html(this.template({
cid: this.cid,
- fileNameLabel : t('core', 'Filename'),
- passwordLabel: t('core', 'Password'),
passwordPlaceholder: isPasswordSet ? PASSWORD_PLACEHOLDER_STARS : PASSWORD_PLACEHOLDER_MESSAGE,
isPasswordRequired: this.configModel.get('enforcePasswordForPublicLink'),
namePlaceholder: t('core', 'Name'),
name: this.model.get('name'),
isPasswordSet: isPasswordSet,
- publicUploadPossible: this._isPublicUploadPossible(),
- publicUploadChecked: this.model.canCreate(),
- publicUploadLabel: t('core', 'Allow editing'),
- showListingChecked: this.model.canRead(),
- showListingLabel: t('core', 'Show file listing'),
+
+ fileNameLabel : t('core', 'Filename'),
+ passwordLabel : t('core', 'Password'),
+
+ publicUploadPossible : this._isPublicUploadPossible(),
+
+ publicUploadLabel : t('core', 'Upload only (File Drop)'),
+ publicUploadDescription : t('core', 'Receive files from others without revealing the contents of the folder.'),
+ publicUploadValue : OC.PERMISSION_CREATE,
+ publicUploadSelected : this.model.get('permissions') === OC.PERMISSION_CREATE,
+
+ publicReadLabel : t('core', 'Read only'),
+ publicReadDescription : t('core', 'Users can view and download contents.'),
+ publicReadValue : OC.PERMISSION_READ,
+ publicReadSelected : this.model.get('permissions') === OC.PERMISSION_READ,
+
+ publicReadWriteLabel : t('core', 'Read & Write'),
+ publicReadWriteDescription : t('core', 'Users can view, download, edit and upload contents.'),
+ publicReadWriteValue : OC.PERMISSION_READ | OC.PERMISSION_UPDATE | OC.PERMISSION_CREATE | OC.PERMISSION_DELETE,
+ publicReadWriteSelected : this.model.get('permissions') >= (OC.PERMISSION_READ | OC.PERMISSION_UPDATE | OC.PERMISSION_CREATE | OC.PERMISSION_DELETE),
+
isMailEnabled: showEmailField
}));
@@ -280,8 +266,6 @@
this.expirationView.render();
this.$('.expirationDateContainer').append(this.expirationView.$el);
- this._updateCheckboxes();
-
this.delegateEvents();
return this;
@@ -368,7 +352,7 @@
});
}
- });
+});
OC.Share.ShareDialogLinkShareView = ShareDialogLinkShareView;
diff --git a/core/js/tests/specs/sharedialoglinkshareviewSpec.js b/core/js/tests/specs/sharedialoglinkshareviewSpec.js
index cf981ad4685c..eed626fe3ea9 100644
--- a/core/js/tests/specs/sharedialoglinkshareviewSpec.js
+++ b/core/js/tests/specs/sharedialoglinkshareviewSpec.js
@@ -135,18 +135,18 @@ describe('OC.Share.ShareDialogLinkShareView', function() {
publicUploadConfigStub.returns(true);
view.render();
expect(view.$('[name=linkName]').val()).toEqual('first link');
- expect(view.$('.publicUploadCheckbox').prop('checked')).toEqual(false);
+ expect(view.$('.publicPermissions').prop('checked')).toEqual(true);
expect(view.$('.linkPassText').val()).toEqual('');
expect(view.$('.expirationDate').val()).toEqual('');
model.set({
password: 'set',
expireDate: '2017-10-12',
- permissions: OC.PERMISSION_ALL
+ permissions: OC.PERMISSION_CREATE
});
view.render();
- expect(view.$('.publicUploadCheckbox').prop('checked')).toEqual(true);
+ expect(parseInt(view.$('.publicPermissions:checked').val())).toBe(OC.PERMISSION_CREATE);
expect(view.$('.linkPassText').val()).toEqual('');
expect(view.$('.expirationDate').val()).toEqual('12-10-2017');
});
@@ -208,37 +208,15 @@ describe('OC.Share.ShareDialogLinkShareView', function() {
permissions: OC.PERMISSION_READ | OC.PERMISSION_CREATE
});
view.render();
- expect(view.$('.showListingCheckbox').length).toEqual(1);
- expect(view.$('.showListingCheckbox').is(':checked')).toEqual(true);
- expect(view.$('.showListingCheckbox').is(':disabled')).toEqual(false);
+ expect(view.$('.publicPermissions').length).toEqual(3);
});
- it('renders listing checkbox disabled when public upload is disallowed by user', function() {
+ it('renders checkbox disabled when public upload is disallowed by user', function() {
publicUploadConfigStub.returns(true);
model.set({
permissions: OC.PERMISSION_READ
});
view.render();
- expect(view.$('.showListingCheckbox').length).toEqual(1);
- expect(view.$('.showListingCheckbox').is(':checked')).toEqual(true);
- expect(view.$('.showListingCheckbox').is(':disabled')).toEqual(true);
- });
- it('disables listing checkbox when ticking public upload', function() {
- publicUploadConfigStub.returns(true);
- model.set({
- permissions: OC.PERMISSION_CREATE
- });
- view.render();
-
- expect(view.$('.showListingCheckbox').length).toEqual(1);
- expect(view.$('.showListingCheckbox').is(':checked')).toEqual(false);
- expect(view.$('.showListingCheckbox').is(':disabled')).toEqual(false);
-
- expect(view.$('.publicUploadCheckbox').length).toEqual(1);
- expect(view.$('.publicUploadCheckbox').is(':checked')).toEqual(true);
- view.$('.publicUploadCheckbox').trigger(new $.Event('click'));
- expect(view.$('.publicUploadCheckbox').is(':checked')).toEqual(false);
- expect(view.$('.showListingCheckbox').is(':checked')).toEqual(true);
- expect(view.$('.showListingCheckbox').is(':disabled')).toEqual(true);
+ expect(view.$('.showListingCheckbox').length).toEqual(0);
});
});
describe('password logic', function() {
@@ -293,7 +271,7 @@ describe('OC.Share.ShareDialogLinkShareView', function() {
name: 'first link',
expireDate: '',
password: 'newpassword',
- permissions: OC.PERMISSION_READ,
+ permissions: OC.PERMISSION_READ.toString(),
shareType: OC.Share.SHARE_TYPE_LINK
});
});
@@ -306,7 +284,7 @@ describe('OC.Share.ShareDialogLinkShareView', function() {
expect(saveStub.getCall(0).args[0]).toEqual({
name: 'first link',
expireDate: '',
- permissions: OC.PERMISSION_READ,
+ permissions: OC.PERMISSION_READ.toString(),
shareType: OC.Share.SHARE_TYPE_LINK
});
});
@@ -394,30 +372,22 @@ describe('OC.Share.ShareDialogLinkShareView', function() {
});
var dataProvider = [
- // globally enabled
- [true, true, true, OC.PERMISSION_READ | OC.PERMISSION_CREATE | OC.PERMISSION_UPDATE | OC.PERMISSION_DELETE],
- [true, true, false, OC.PERMISSION_CREATE],
- [true, false, true, OC.PERMISSION_READ],
- [true, false, false, OC.PERMISSION_READ],
-
- // globally disabled, permission stays regardless
- [false, false, false, OC.PERMISSION_READ],
- [false, true, false, OC.PERMISSION_READ],
- [false, true, false, OC.PERMISSION_READ],
- [false, true, true, OC.PERMISSION_READ],
+ [true, OC.PERMISSION_READ | OC.PERMISSION_CREATE | OC.PERMISSION_UPDATE | OC.PERMISSION_DELETE],
+ [true, OC.PERMISSION_CREATE],
+ [true, OC.PERMISSION_READ],
+ [false, OC.PERMISSION_READ], // globally disabled, permission stays regardless
];
- function testPermissions(globalEnabled, uploadChecked, listingChecked, expectedPerms) {
+ function testPermissions(globalEnabled, expectedPerms) {
+ expectedPerms = expectedPerms.toString();
it('sets permissions to ' + expectedPerms +
' if global enabled is ' + globalEnabled +
- ' and public upload checkbox is ' + uploadChecked +
- ' and listing checkbox is ' + listingChecked, function() {
+ ' and corresponding radiobutton is checked', function() {
publicUploadConfigStub.returns(globalEnabled);
view.render();
- view.$('.publicUploadCheckbox').prop('checked', uploadChecked);
- view.$('.showListingCheckbox').prop('checked', listingChecked);
+ view.$('input[name="publicPermissions"]:checked').val(expectedPerms);
view._save();