implements setting and removing password for link shares, including forced ones
This commit is contained in:
parent
5dfaa0c82d
commit
9fe6d7c568
|
@ -69,3 +69,7 @@
|
||||||
#shareWithList li label{
|
#shareWithList li label{
|
||||||
margin-right: 8px;
|
margin-right: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.shareTabView .icon-loading-small {
|
||||||
|
margin-left: -30px;
|
||||||
|
}
|
||||||
|
|
|
@ -996,76 +996,6 @@ $(document).ready(function() {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
$(document).on('click', '#dropdown #showPassword', function() {
|
|
||||||
$('#linkPass').slideToggle(OC.menuSpeed);
|
|
||||||
if (!$('#showPassword').is(':checked') ) {
|
|
||||||
var itemType = $('#dropdown').data('item-type');
|
|
||||||
var itemSource = $('#dropdown').data('item-source');
|
|
||||||
var itemSourceName = $('#dropdown').data('item-source-name');
|
|
||||||
var allowPublicUpload = $('#sharingDialogAllowPublicUpload').is(':checked');
|
|
||||||
var permissions = 0;
|
|
||||||
var $loading = $('#showPassword .icon-loading-small');
|
|
||||||
|
|
||||||
// Calculate permissions
|
|
||||||
if (allowPublicUpload) {
|
|
||||||
permissions = OC.PERMISSION_UPDATE + OC.PERMISSION_CREATE + OC.PERMISSION_READ;
|
|
||||||
} else {
|
|
||||||
permissions = OC.PERMISSION_READ;
|
|
||||||
}
|
|
||||||
|
|
||||||
$loading.removeClass('hidden');
|
|
||||||
OC.Share.share(itemType, itemSource, OC.Share.SHARE_TYPE_LINK, '', permissions, itemSourceName).then(function() {
|
|
||||||
$loading.addClass('hidden');
|
|
||||||
$('#linkPassText').attr('placeholder', t('core', 'Choose a password for the public link'));
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
$('#linkPassText').focus();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
$(document).on('focusout keyup', '#dropdown #linkPassText', function(event) {
|
|
||||||
var linkPassText = $('#linkPassText');
|
|
||||||
if ( linkPassText.val() != '' && (event.type == 'focusout' || event.keyCode == 13) ) {
|
|
||||||
var allowPublicUpload = $('#sharingDialogAllowPublicUpload').is(':checked');
|
|
||||||
var dropDown = $('#dropdown');
|
|
||||||
var itemType = dropDown.data('item-type');
|
|
||||||
var itemSource = dropDown.data('item-source');
|
|
||||||
var itemSourceName = $('#dropdown').data('item-source-name');
|
|
||||||
var permissions = 0;
|
|
||||||
var $loading = dropDown.find('#linkPass .icon-loading-small');
|
|
||||||
|
|
||||||
// Calculate permissions
|
|
||||||
if (allowPublicUpload) {
|
|
||||||
permissions = OC.PERMISSION_UPDATE + OC.PERMISSION_CREATE + OC.PERMISSION_READ;
|
|
||||||
} else {
|
|
||||||
permissions = OC.PERMISSION_READ;
|
|
||||||
}
|
|
||||||
|
|
||||||
var expireDateString = OC.Share.getDefaultExpirationDate();
|
|
||||||
|
|
||||||
$loading.removeClass('hidden');
|
|
||||||
OC.Share.share(itemType, itemSource, OC.Share.SHARE_TYPE_LINK, $('#linkPassText').val(), permissions, itemSourceName, expireDateString, function(data) {
|
|
||||||
$loading.addClass('hidden');
|
|
||||||
linkPassText.val('');
|
|
||||||
linkPassText.attr('placeholder', t('core', 'Password protected'));
|
|
||||||
|
|
||||||
if (oc_appconfig.core.enforcePasswordForPublicLink) {
|
|
||||||
OC.Share.showLink(data.token, "password set", itemSource);
|
|
||||||
OC.Share.updateIcon(itemType, itemSource);
|
|
||||||
}
|
|
||||||
$('#dropdown').trigger(new $.Event('sharesChanged', {shares: OC.Share.currentShares}));
|
|
||||||
}, function(result) {
|
|
||||||
$loading.addClass('hidden');
|
|
||||||
linkPassText.val('');
|
|
||||||
linkPassText.attr('placeholder', result.data.message);
|
|
||||||
});
|
|
||||||
|
|
||||||
if (expireDateString !== '') {
|
|
||||||
OC.Share.showExpirationDate(expireDateString);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
$(document).on('click', '#dropdown #expirationCheckbox', function() {
|
$(document).on('click', '#dropdown #expirationCheckbox', function() {
|
||||||
if (this.checked) {
|
if (this.checked) {
|
||||||
OC.Share.showExpirationDate('');
|
OC.Share.showExpirationDate('');
|
||||||
|
|
|
@ -94,7 +94,7 @@
|
||||||
throw 'missing OC.Share.ShareConfigModel';
|
throw 'missing OC.Share.ShareConfigModel';
|
||||||
}
|
}
|
||||||
|
|
||||||
_.bindAll(this, 'onLinkCheckBoxChange');
|
_.bindAll(this, 'onLinkCheckBoxChange', 'onPasswordEntered', 'onShowPasswordClick');
|
||||||
},
|
},
|
||||||
|
|
||||||
onLinkCheckBoxChange: function() {
|
onLinkCheckBoxChange: function() {
|
||||||
|
@ -127,6 +127,28 @@
|
||||||
this.select();
|
this.select();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
onShowPasswordClick: function() {
|
||||||
|
this.$el.find('#linkPass').slideToggle(OC.menuSpeed);
|
||||||
|
if(!this.$el.find('#showPassword').is(':checked')) {
|
||||||
|
this.model.addLinkShare({password: ''});
|
||||||
|
} else {
|
||||||
|
this.$el.find('#linkPassText').focus();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
onPasswordEntered: function() {
|
||||||
|
var password = this.$el.find('#linkPassText').val();
|
||||||
|
if(password === '') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.$el.find('#linkPass .icon-loading-small')
|
||||||
|
.removeClass('hidden')
|
||||||
|
.addClass('inlineblock');
|
||||||
|
|
||||||
|
this.model.addLinkShare({password: password});
|
||||||
|
},
|
||||||
|
|
||||||
render: function() {
|
render: function() {
|
||||||
var linkShareTemplate = this.template();
|
var linkShareTemplate = this.template();
|
||||||
|
|
||||||
|
@ -178,6 +200,14 @@
|
||||||
|
|
||||||
this.$el.find('#linkCheckbox').change(this.onLinkCheckBoxChange);
|
this.$el.find('#linkCheckbox').change(this.onLinkCheckBoxChange);
|
||||||
this.$el.find('#linkText').click(this.onLinkTextClick);
|
this.$el.find('#linkText').click(this.onLinkTextClick);
|
||||||
|
this.$el.find('#showPassword').click(this.onShowPasswordClick);
|
||||||
|
this.$el.find('#linkPassText').focusout(this.onPasswordEntered);
|
||||||
|
var view = this;
|
||||||
|
this.$el.find('#linkPassText').keyup(function(event) {
|
||||||
|
if(event.keyCode == 13) {
|
||||||
|
view.onPasswordEntered();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
},
|
},
|
||||||
|
|
|
@ -157,7 +157,7 @@
|
||||||
this.$el.html(baseTemplate({
|
this.$el.html(baseTemplate({
|
||||||
shareLabel: t('core', 'Share'),
|
shareLabel: t('core', 'Share'),
|
||||||
sharePlaceholder: this._renderSharePlaceholderPart(),
|
sharePlaceholder: this._renderSharePlaceholderPart(),
|
||||||
remoteShareInfo: this._renderRemoteShareInfoPart(),
|
remoteShareInfo: this._renderRemoteShareInfoPart()
|
||||||
}));
|
}));
|
||||||
|
|
||||||
var view = this;
|
var view = this;
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
* @property {string} token
|
* @property {string} token
|
||||||
* @property {string|null} password
|
* @property {string|null} password
|
||||||
* @property {string} link
|
* @property {string} link
|
||||||
|
* @property {number} permissions
|
||||||
* @property {Date} expiration
|
* @property {Date} expiration
|
||||||
* @property {number} stime share time
|
* @property {number} stime share time
|
||||||
*/
|
*/
|
||||||
|
@ -89,12 +90,30 @@
|
||||||
linkShare: {}
|
linkShare: {}
|
||||||
},
|
},
|
||||||
|
|
||||||
addLinkShare: function() {
|
addLinkShare: function(options) {
|
||||||
var model = this;
|
var model = this;
|
||||||
var expiration = this.configModel.getDefaultExpirationDateString();
|
var expiration = this.configModel.getDefaultExpirationDateString();
|
||||||
var itemType = this.get('itemType');
|
var itemType = this.get('itemType');
|
||||||
var itemSource = this.get('itemSource');
|
var itemSource = this.get('itemSource');
|
||||||
OC.Share.share(itemType, itemSource, OC.Share.SHARE_TYPE_LINK, '', OC.PERMISSION_READ, this.fileInfoModel.get('name'), expiration, function(data) {
|
|
||||||
|
var options = options || {};
|
||||||
|
var requiredOptions = [
|
||||||
|
{ name: 'password', defaultValue: '' },
|
||||||
|
{ name: 'permissions', defaultValue: OC.PERMISSION_READ }
|
||||||
|
];
|
||||||
|
_.each(requiredOptions, function(option) {
|
||||||
|
// a provided options overrides a present value of the link
|
||||||
|
// share. If neither is given, the default value is used.
|
||||||
|
if(_.isUndefined(options[option.name])) {
|
||||||
|
options[option.name] = option.defaultValue;
|
||||||
|
var currentValue = model.get('linkShare')[option.name];
|
||||||
|
if(!_.isUndefined(currentValue)) {
|
||||||
|
options[option.name] = currentValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
OC.Share.share(itemType, itemSource, OC.Share.SHARE_TYPE_LINK, options.password, options.permissions, this.fileInfoModel.get('name'), expiration, function(data) {
|
||||||
model.fetch();
|
model.fetch();
|
||||||
//FIXME: updateIcon belongs to view
|
//FIXME: updateIcon belongs to view
|
||||||
OC.Share.updateIcon(itemType, itemSource);
|
OC.Share.updateIcon(itemType, itemSource);
|
||||||
|
@ -512,6 +531,7 @@
|
||||||
token: share.token,
|
token: share.token,
|
||||||
password: share.share_with,
|
password: share.share_with,
|
||||||
link: link,
|
link: link,
|
||||||
|
permissions: share.permissions,
|
||||||
// currently expiration is only effective for link shares.
|
// currently expiration is only effective for link shares.
|
||||||
expiration: share.expiration,
|
expiration: share.expiration,
|
||||||
stime: share.stime
|
stime: share.stime
|
||||||
|
|
Loading…
Reference in New Issue