diff options
author | Roeland Jago Douma <roeland@famdouma.nl> | 2017-03-09 13:56:27 +0100 |
---|---|---|
committer | Felix A. Epp <work@felixepp.de> | 2017-05-04 00:30:51 +0200 |
commit | 2e32ab945b77659cb70dcc1eadb71abf74efab5d (patch) | |
tree | 25efbb880096949bc19d48620413768b80647bd5 /core/js | |
parent | 3dbf30c2204cde1d493d7837857519d65cfd5049 (diff) | |
download | nextcloud-server-2e32ab945b77659cb70dcc1eadb71abf74efab5d.tar.gz nextcloud-server-2e32ab945b77659cb70dcc1eadb71abf74efab5d.zip |
Make files drop more permanent
Implement the suggestions from #2207
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
Diffstat (limited to 'core/js')
-rw-r--r-- | core/js/sharedialoglinkshareview.js | 106 | ||||
-rw-r--r-- | core/js/shareitemmodel.js | 18 |
2 files changed, 65 insertions, 59 deletions
diff --git a/core/js/sharedialoglinkshareview.js b/core/js/sharedialoglinkshareview.js index 6b32484ab8e..9f5d549f065 100644 --- a/core/js/sharedialoglinkshareview.js +++ b/core/js/sharedialoglinkshareview.js @@ -35,20 +35,23 @@ '{{{popoverMenu}}}' + '{{/if}}' + '</div>' + - ' {{#if publicUpload}}' + - '<div id="allowPublicUploadWrapper">' + - ' <span class="icon-loading-small hidden"></span>' + - ' <input type="checkbox" value="1" name="allowPublicUpload" id="sharingDialogAllowPublicUpload-{{cid}}" class="checkbox publicUploadCheckbox" {{{publicUploadChecked}}} />' + - '<label for="sharingDialogAllowPublicUpload-{{cid}}">{{publicUploadLabel}}</label>' + - '</div>' + - ' {{#if hideFileList}}' + - '<div id="hideFileListWrapper">' + - ' <span class="icon-loading-small hidden"></span>' + - ' <input type="checkbox" value="1" name="hideFileList" id="sharingDialogHideFileList-{{cid}}" class="checkbox hideFileListCheckbox" {{{hideFileListChecked}}} />' + - '<label for="sharingDialogHideFileList-{{cid}}">{{hideFileListLabel}}</label>' + - '</div>' + - ' {{/if}}' + - ' {{/if}}' + + '{{#if publicUpload}}' + + '<div>' + + '<span class="icon-loading-small hidden"></span>' + + '<input type="radio" name="publicUpload" value="{{publicUploadRValue}}" id="sharingDialogAllowPublicUpload-r-{{cid}}" class="publicUploadRadio" {{{publicUploadRChecked}}} />' + + '<label for="sharingDialogAllowPublicUpload-rw-{{cid}}">{{publicUploadRLabel}}</label>' + + '</div>' + + '<div>' + + '<span class="icon-loading-small hidden"></span>' + + '<input type="radio" name="publicUpload" value="{{publicUploadRWValue}}" id="sharingDialogAllowPublicUpload-rw-{{cid}}" class="publicUploadRadio" {{{publicUploadRWChecked}}} />' + + '<label for="sharingDialogAllowPublicUpload-rw-{{cid}}">{{publicUploadRWLabel}}</label>' + + '</div>' + + '<div>' + + '<span class="icon-loading-small hidden"></span>' + + '<input type="radio" name="publicUpload" value="{{publicUploadWValue}}" id="sharingDialogAllowPublicUpload-w-{{cid}}" class="publicUploadRadio" {{{publicUploadWChecked}}} />' + + '<label for="sharingDialogAllowPublicUpload-w-{{cid}}">{{publicUploadWLabel}}</label>' + + '</div>' + + '{{/if}}' + ' {{#if publicEditing}}' + '<div id="allowPublicEditingWrapper">' + ' <span class="icon-loading-small hidden"></span>' + @@ -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 4118a8a0188..afe86fa464b 100644 --- a/core/js/shareitemmodel.js +++ b/core/js/shareitemmodel.js @@ -487,6 +487,13 @@ }, /** + * @return {int} + */ + getPermissions: function() { + return this.get('permissions'); + }, + + /** * @returns {boolean} */ sharePermissionPossible: function() { @@ -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); |