summaryrefslogtreecommitdiffstats
path: root/core/js
diff options
context:
space:
mode:
authorRoeland Jago Douma <roeland@famdouma.nl>2017-03-09 13:56:27 +0100
committerFelix A. Epp <work@felixepp.de>2017-05-04 00:30:51 +0200
commit2e32ab945b77659cb70dcc1eadb71abf74efab5d (patch)
tree25efbb880096949bc19d48620413768b80647bd5 /core/js
parent3dbf30c2204cde1d493d7837857519d65cfd5049 (diff)
downloadnextcloud-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.js106
-rw-r--r--core/js/shareitemmodel.js18
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);