Skip to content

Commit

Permalink
Make files drop more permanent
Browse files Browse the repository at this point in the history
Implement the suggestions from #2207

Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
  • Loading branch information
rullzer committed Mar 9, 2017
1 parent a4aea57 commit 2c613ec
Show file tree
Hide file tree
Showing 2 changed files with 65 additions and 59 deletions.
106 changes: 47 additions & 59 deletions core/js/sharedialoglinkshareview.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,20 +29,23 @@
'<input id="linkText-{{cid}}" class="linkText {{#unless isLinkShare}}hidden{{/unless}}" type="text" readonly="readonly" value="{{shareLinkURL}}" />' +
'<a class="{{#unless isLinkShare}}hidden-visually{{/unless}} clipboardButton icon icon-clippy" data-clipboard-target="#linkText-{{cid}}"></a>' +
'</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>' +
Expand Down Expand Up @@ -93,10 +96,9 @@
'keyup input.linkPassText': 'onPasswordKeyUp',
'click .linkCheckbox': 'onLinkCheckBoxChange',
'click .linkText': 'onLinkTextClick',
'change .publicUploadCheckbox': 'onAllowPublicUploadChange',
'change .publicEditingCheckbox': 'onAllowPublicEditingChange',
'change .hideFileListCheckbox': 'onHideFileListChange',
'click .showPasswordCheckbox': 'onShowPasswordClick'
'click .showPasswordCheckbox': 'onShowPasswordClick',
'change .publicUploadRadio': 'onPublicUploadChange'
},

initialize: function(options) {
Expand Down Expand Up @@ -135,9 +137,8 @@
'onPasswordKeyUp',
'onLinkTextClick',
'onShowPasswordClick',
'onHideFileListChange',
'onAllowPublicUploadChange',
'onAllowPublicEditingChange'
'onAllowPublicEditingChange',
'onPublicUploadChange'
);

var clipboard = new Clipboard('.clipboardButton');
Expand Down Expand Up @@ -261,20 +262,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');
Expand All @@ -289,15 +276,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
});
Expand Down Expand Up @@ -325,24 +306,27 @@
&& 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 = '';
if(this.model.isPublicEditingAllowed()) {
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
Expand All @@ -357,7 +341,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'),
Expand All @@ -368,15 +351,20 @@
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: t('core', 'File drop (upload only)'),
mailPrivatePlaceholder: t('core', 'Email link to person'),
mailButtonText: t('core', 'Send')
mailButtonText: t('core', 'Send'),
publicUploadRWLabel: t('core', 'Allow upload and editing'),
publicUploadRLabel: t('core', 'Read only'),
publicUploadWLabel: t('core', 'File 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
}));

this.$el.find('.clipboardButton').tooltip({placement: 'bottom', title: t('core', 'Copy'), trigger: 'hover'});
Expand Down
18 changes: 18 additions & 0 deletions core/js/shareitemmodel.js
Original file line number Diff line number Diff line change
Expand Up @@ -449,6 +449,13 @@
return (share.permissions & permission) === permission;
},

/**
* @return {int}
*/
getPermissions: function() {
return this.get('permissions');
},

/**
* @returns {boolean}
*/
Expand Down Expand Up @@ -527,6 +534,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);
Expand Down

0 comments on commit 2c613ec

Please sign in to comment.