diff --git a/core/css/share.scss b/core/css/share.scss
index 2e1c99b6f4..35d90fb4b8 100644
--- a/core/css/share.scss
+++ b/core/css/share.scss
@@ -43,6 +43,9 @@
font-weight: 400;
white-space: nowrap;
}
+ input[type='radio'].radio + label {
+ margin-left: -1px;
+ }
input[type='checkbox'] {
margin: 0 3px 0 8px;
vertical-align: middle;
diff --git a/core/js/sharedialoglinkshareview.js b/core/js/sharedialoglinkshareview.js
index 6b32484ab8..54019b02c8 100644
--- a/core/js/sharedialoglinkshareview.js
+++ b/core/js/sharedialoglinkshareview.js
@@ -35,20 +35,23 @@
'{{{popoverMenu}}}' +
'{{/if}}' +
'' +
- ' {{#if publicUpload}}' +
- '
' +
- ' ' +
- ' ' +
- '' +
- '
' +
- ' {{#if hideFileList}}' +
- '' +
- ' ' +
- ' ' +
- '' +
- '
' +
- ' {{/if}}' +
- ' {{/if}}' +
+ '{{#if publicUpload}}' +
+ '' +
+ '' +
+ '' +
+ '' +
+ '
' +
+ '' +
+ '' +
+ '' +
+ '' +
+ '
' +
+ '' +
+ '' +
+ '' +
+ '' +
+ '
' +
+ '{{/if}}' +
' {{#if publicEditing}}' +
'' +
' ' +
@@ -126,12 +129,11 @@
'keyup input.linkPassText': 'onPasswordKeyUp',
'click .linkCheckbox': 'onLinkCheckBoxChange',
'click .linkText': 'onLinkTextClick',
- 'change .publicUploadCheckbox': 'onAllowPublicUploadChange',
'change .publicEditingCheckbox': 'onAllowPublicEditingChange',
- 'change .hideFileListCheckbox': 'onHideFileListChange',
'click .showPasswordCheckbox': 'onShowPasswordClick',
'click .icon-more': 'onToggleMenu',
- 'click .pop-up': 'onPopUpClick'
+ 'click .pop-up': 'onPopUpClick',
+ 'change .publicUploadRadio': 'onPublicUploadChange'
},
initialize: function(options) {
@@ -170,9 +172,8 @@
'onPasswordKeyUp',
'onLinkTextClick',
'onShowPasswordClick',
- 'onHideFileListChange',
- 'onAllowPublicUploadChange',
- 'onAllowPublicEditingChange'
+ 'onAllowPublicEditingChange',
+ 'onPublicUploadChange'
);
var clipboard = new Clipboard('.clipboardButton');
@@ -318,20 +319,6 @@
});
},
- onAllowPublicUploadChange: function() {
- var $checkbox = this.$('.publicUploadCheckbox');
- $checkbox.siblings('.icon-loading-small').removeClass('hidden').addClass('inlineblock');
-
- var permissions = OC.PERMISSION_READ;
- if($checkbox.is(':checked')) {
- permissions = OC.PERMISSION_UPDATE | OC.PERMISSION_CREATE | OC.PERMISSION_READ | OC.PERMISSION_DELETE;
- }
-
- this.model.saveLinkShare({
- permissions: permissions
- });
- },
-
onAllowPublicEditingChange: function() {
var $checkbox = this.$('.publicEditingCheckbox');
$checkbox.siblings('.icon-loading-small').removeClass('hidden').addClass('inlineblock');
@@ -346,15 +333,9 @@
});
},
- onHideFileListChange: function () {
- var $checkbox = this.$('.hideFileListCheckbox');
- $checkbox.siblings('.icon-loading-small').removeClass('hidden').addClass('inlineblock');
-
- var permissions = OC.PERMISSION_UPDATE | OC.PERMISSION_CREATE | OC.PERMISSION_READ | OC.PERMISSION_DELETE;
- if ($checkbox.is(':checked')) {
- permissions = OC.PERMISSION_CREATE;
- }
+ onPublicUploadChange: function(e) {
+ var permissions = e.currentTarget.value;
this.model.saveLinkShare({
permissions: permissions
});
@@ -382,9 +363,20 @@
&& this.model.createPermissionPossible()
&& this.configModel.isPublicUploadEnabled();
- var publicUploadChecked = '';
- if(this.model.isPublicUploadAllowed()) {
- publicUploadChecked = 'checked="checked"';
+ var publicUploadRWChecked = '';
+ var publicUploadRChecked = '';
+ var publicUploadWChecked = '';
+
+ switch (this.model.linkSharePermissions()) {
+ case OC.PERMISSION_READ:
+ publicUploadRChecked = 'checked';
+ break;
+ case OC.PERMISSION_CREATE:
+ publicUploadWChecked = 'checked';
+ break;
+ case OC.PERMISSION_UPDATE | OC.PERMISSION_CREATE | OC.PERMISSION_READ | OC.PERMISSION_DELETE:
+ publicUploadRWChecked = 'checked';
+ break;
}
var publicEditingChecked = '';
@@ -392,14 +384,6 @@
publicEditingChecked = 'checked="checked"';
}
-
- var hideFileList = publicUploadChecked;
-
- var hideFileListChecked = '';
- if(this.model.isHideFileListSet()) {
- hideFileListChecked = 'checked="checked"';
- }
-
var isLinkShare = this.model.get('linkShare').isLinkShare;
var isPasswordSet = !!this.model.get('linkShare').password;
var showPasswordCheckBox = isLinkShare
@@ -437,7 +421,6 @@
this.$el.html(linkShareTemplate({
cid: this.cid,
shareAllowed: true,
- hideFileList: hideFileList,
isLinkShare: isLinkShare,
shareLinkURL: this.model.get('linkShare').link,
linkShareLabel: t('core', 'Share link'),
@@ -449,17 +432,22 @@
isPasswordSet: isPasswordSet,
showPasswordCheckBox: showPasswordCheckBox,
publicUpload: publicUpload && isLinkShare,
- publicUploadChecked: publicUploadChecked,
- hideFileListChecked: hideFileListChecked,
- publicUploadLabel: t('core', 'Allow upload and editing'),
publicEditing: publicEditable,
publicEditingChecked: publicEditingChecked,
publicEditingLabel: t('core', 'Allow editing'),
- hideFileListLabel: 'Secure drop (' + t('core', 'upload only') + ')',
mailPrivatePlaceholder: t('core', 'Email link to person'),
mailButtonText: t('core', 'Send'),
singleAction: OC.Share.Social.Collection.size() == 0,
- popoverMenu: popover
+ popoverMenu: popover,
+ publicUploadRWLabel: t('core', 'Allow upload and editing'),
+ publicUploadRLabel: t('core', 'Read only'),
+ publicUploadWLabel: t('core', 'Secure drop (upload only)'),
+ publicUploadRWValue: OC.PERMISSION_UPDATE | OC.PERMISSION_CREATE | OC.PERMISSION_READ | OC.PERMISSION_DELETE,
+ publicUploadRValue: OC.PERMISSION_READ,
+ publicUploadWValue: OC.PERMISSION_CREATE,
+ publicUploadRWChecked: publicUploadRWChecked,
+ publicUploadRChecked: publicUploadRChecked,
+ publicUploadWChecked: publicUploadWChecked
}));
if (OC.Share.Social.Collection.size() == 0) {
diff --git a/core/js/shareitemmodel.js b/core/js/shareitemmodel.js
index 4118a8a018..afe86fa464 100644
--- a/core/js/shareitemmodel.js
+++ b/core/js/shareitemmodel.js
@@ -486,6 +486,13 @@
return date2;
},
+ /**
+ * @return {int}
+ */
+ getPermissions: function() {
+ return this.get('permissions');
+ },
+
/**
* @returns {boolean}
*/
@@ -568,6 +575,17 @@
|| this.hasDeletePermission(shareIndex);
},
+ /**
+ * @returns {int}
+ */
+ linkSharePermissions: function() {
+ if (!this.hasLinkShare()) {
+ return -1;
+ } else {
+ return this.get('linkShare').permissions;
+ }
+ },
+
_getUrl: function(base, params) {
params = _.extend({format: 'json'}, params || {});
return OC.linkToOCS('apps/files_sharing/api/v1', 2) + base + '?' + OC.buildQueryString(params);