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);