Add "Hide download" to the menu of link shares
Hiding the download does not depend on other settings and it does not affect other settings either (for example, it would be possible to hide the downloads yet make the share editable), so a simple checkbox was added to the menu. However, note that this option is only available for files, but not for folders. Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
This commit is contained in:
parent
bfb2a914d2
commit
a1e3098322
6 changed files with 174 additions and 23 deletions
|
@ -11,6 +11,16 @@
|
||||||
<input id="linkText-{{cid}}" class="linkText" type="text" readonly="readonly" value="{{shareLinkURL}}" />
|
<input id="linkText-{{cid}}" class="linkText" type="text" readonly="readonly" value="{{shareLinkURL}}" />
|
||||||
</span>
|
</span>
|
||||||
</li>
|
</li>
|
||||||
|
{{#if showHideDownloadCheckbox}}
|
||||||
|
<li>
|
||||||
|
<span class="shareOption menuitem">
|
||||||
|
<span class="icon-loading-small hidden"></span>
|
||||||
|
<input type="checkbox" name="hideDownload" id="sharingDialogHideDownload-{{cid}}" class="checkbox hideDownloadCheckbox"
|
||||||
|
{{#if hideDownload}}checked="checked"{{/if}} />
|
||||||
|
<label for="sharingDialogHideDownload-{{cid}}">{{hideDownloadLabel}}</label>
|
||||||
|
</span>
|
||||||
|
</li>
|
||||||
|
{{/if}}
|
||||||
{{#if publicUpload}}
|
{{#if publicUpload}}
|
||||||
<li>
|
<li>
|
||||||
<span class="shareOption menuitem">
|
<span class="shareOption menuitem">
|
||||||
|
|
|
@ -47,6 +47,8 @@
|
||||||
'change .linkCheckbox': 'onLinkCheckBoxChange',
|
'change .linkCheckbox': 'onLinkCheckBoxChange',
|
||||||
// open menu
|
// open menu
|
||||||
'click .share-menu .icon-more': 'onToggleMenu',
|
'click .share-menu .icon-more': 'onToggleMenu',
|
||||||
|
// hide download
|
||||||
|
'change .hideDownloadCheckbox': 'onHideDownloadChange',
|
||||||
// password
|
// password
|
||||||
'focusout input.linkPassText': 'onPasswordEntered',
|
'focusout input.linkPassText': 'onPasswordEntered',
|
||||||
'keyup input.linkPassText': 'onPasswordKeyUp',
|
'keyup input.linkPassText': 'onPasswordKeyUp',
|
||||||
|
@ -179,6 +181,20 @@
|
||||||
$el.select();
|
$el.select();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
onHideDownloadChange: function() {
|
||||||
|
var $checkbox = this.$('.hideDownloadCheckbox');
|
||||||
|
$checkbox.siblings('.icon-loading-small').removeClass('hidden').addClass('inlineblock');
|
||||||
|
|
||||||
|
var hideDownload = false;
|
||||||
|
if($checkbox.is(':checked')) {
|
||||||
|
hideDownload = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.model.saveLinkShare({
|
||||||
|
hideDownload: hideDownload
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
onShowPasswordClick: function() {
|
onShowPasswordClick: function() {
|
||||||
this.$el.find('.linkPass').slideToggle(OC.menuSpeed);
|
this.$el.find('.linkPass').slideToggle(OC.menuSpeed);
|
||||||
this.$el.find('.linkPassMenu').toggleClass('hidden');
|
this.$el.find('.linkPassMenu').toggleClass('hidden');
|
||||||
|
@ -401,6 +417,9 @@
|
||||||
var passwordPlaceholderInitial = this.configModel.get('enforcePasswordForPublicLink')
|
var passwordPlaceholderInitial = this.configModel.get('enforcePasswordForPublicLink')
|
||||||
? PASSWORD_PLACEHOLDER_MESSAGE : PASSWORD_PLACEHOLDER_MESSAGE_OPTIONAL;
|
? PASSWORD_PLACEHOLDER_MESSAGE : PASSWORD_PLACEHOLDER_MESSAGE_OPTIONAL;
|
||||||
|
|
||||||
|
var showHideDownloadCheckbox = !this.model.isFolder();
|
||||||
|
var hideDownload = this.model.get('linkShare').hideDownload;
|
||||||
|
|
||||||
var publicEditable =
|
var publicEditable =
|
||||||
!this.model.isFolder()
|
!this.model.isFolder()
|
||||||
&& isLinkShare
|
&& isLinkShare
|
||||||
|
@ -464,6 +483,9 @@
|
||||||
|
|
||||||
shareLinkURL: this.model.get('linkShare').link,
|
shareLinkURL: this.model.get('linkShare').link,
|
||||||
urlLabel: t('core', 'Link'),
|
urlLabel: t('core', 'Link'),
|
||||||
|
showHideDownloadCheckbox: showHideDownloadCheckbox,
|
||||||
|
hideDownload: hideDownload,
|
||||||
|
hideDownloadLabel: t('core', 'Hide download'),
|
||||||
enablePasswordLabel: t('core', 'Password protect'),
|
enablePasswordLabel: t('core', 'Password protect'),
|
||||||
passwordLabel: t('core', 'Password'),
|
passwordLabel: t('core', 'Password'),
|
||||||
passwordPlaceholder: isPasswordSet ? PASSWORD_PLACEHOLDER : PASSWORD_PLACEHOLDER_MESSAGE,
|
passwordPlaceholder: isPasswordSet ? PASSWORD_PLACEHOLDER : PASSWORD_PLACEHOLDER_MESSAGE,
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
* @typedef {object} OC.Share.Types.LinkShareInfo
|
* @typedef {object} OC.Share.Types.LinkShareInfo
|
||||||
* @property {bool} isLinkShare
|
* @property {bool} isLinkShare
|
||||||
* @property {string} token
|
* @property {string} token
|
||||||
|
* @property {bool} hideDownload
|
||||||
* @property {string|null} password
|
* @property {string|null} password
|
||||||
* @property {string} link
|
* @property {string} link
|
||||||
* @property {number} permissions
|
* @property {number} permissions
|
||||||
|
@ -136,6 +137,7 @@
|
||||||
call = this.updateShare(shareId, attributes, options);
|
call = this.updateShare(shareId, attributes, options);
|
||||||
} else {
|
} else {
|
||||||
attributes = _.defaults(attributes, {
|
attributes = _.defaults(attributes, {
|
||||||
|
hideDownload: false,
|
||||||
password: '',
|
password: '',
|
||||||
passwordChanged: false,
|
passwordChanged: false,
|
||||||
permissions: OC.PERMISSION_READ,
|
permissions: OC.PERMISSION_READ,
|
||||||
|
@ -866,6 +868,9 @@
|
||||||
isLinkShare: true,
|
isLinkShare: true,
|
||||||
id: share.id,
|
id: share.id,
|
||||||
token: share.token,
|
token: share.token,
|
||||||
|
// hide_download is returned as an int, so force it
|
||||||
|
// to a boolean
|
||||||
|
hideDownload: !!share.hide_download,
|
||||||
password: share.share_with,
|
password: share.share_with,
|
||||||
link: link,
|
link: link,
|
||||||
permissions: share.permissions,
|
permissions: share.permissions,
|
||||||
|
|
|
@ -61,6 +61,20 @@ templates['sharedialoglinkshareview'] = template({"1":function(container,depth0,
|
||||||
templates['sharedialoglinkshareview_popover_menu'] = template({"1":function(container,depth0,helpers,partials,data) {
|
templates['sharedialoglinkshareview_popover_menu'] = template({"1":function(container,depth0,helpers,partials,data) {
|
||||||
var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=helpers.helperMissing, alias3="function", alias4=container.escapeExpression;
|
var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=helpers.helperMissing, alias3="function", alias4=container.escapeExpression;
|
||||||
|
|
||||||
|
return " <li>\n <span class=\"shareOption menuitem\">\n <span class=\"icon-loading-small hidden\"></span>\n <input type=\"checkbox\" name=\"hideDownload\" id=\"sharingDialogHideDownload-"
|
||||||
|
+ alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"cid","hash":{},"data":data}) : helper)))
|
||||||
|
+ "\" class=\"checkbox hideDownloadCheckbox\"\n "
|
||||||
|
+ ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.hideDownload : depth0),{"name":"if","hash":{},"fn":container.program(2, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
|
||||||
|
+ " />\n <label for=\"sharingDialogHideDownload-"
|
||||||
|
+ alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"cid","hash":{},"data":data}) : helper)))
|
||||||
|
+ "\">"
|
||||||
|
+ alias4(((helper = (helper = helpers.hideDownloadLabel || (depth0 != null ? depth0.hideDownloadLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"hideDownloadLabel","hash":{},"data":data}) : helper)))
|
||||||
|
+ "</label>\n </span>\n </li>\n";
|
||||||
|
},"2":function(container,depth0,helpers,partials,data) {
|
||||||
|
return "checked=\"checked\"";
|
||||||
|
},"4":function(container,depth0,helpers,partials,data) {
|
||||||
|
var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=helpers.helperMissing, alias3="function", alias4=container.escapeExpression;
|
||||||
|
|
||||||
return " <li>\n <span class=\"shareOption menuitem\">\n <span class=\"icon-loading-small hidden\"></span>\n <input type=\"radio\" name=\"publicUpload\" value=\""
|
return " <li>\n <span class=\"shareOption menuitem\">\n <span class=\"icon-loading-small hidden\"></span>\n <input type=\"radio\" name=\"publicUpload\" value=\""
|
||||||
+ alias4(((helper = (helper = helpers.publicUploadRValue || (depth0 != null ? depth0.publicUploadRValue : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"publicUploadRValue","hash":{},"data":data}) : helper)))
|
+ alias4(((helper = (helper = helpers.publicUploadRValue || (depth0 != null ? depth0.publicUploadRValue : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"publicUploadRValue","hash":{},"data":data}) : helper)))
|
||||||
+ "\" id=\"sharingDialogAllowPublicUpload-r-"
|
+ "\" id=\"sharingDialogAllowPublicUpload-r-"
|
||||||
|
@ -92,7 +106,7 @@ templates['sharedialoglinkshareview_popover_menu'] = template({"1":function(cont
|
||||||
+ "\">"
|
+ "\">"
|
||||||
+ alias4(((helper = (helper = helpers.publicUploadWLabel || (depth0 != null ? depth0.publicUploadWLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"publicUploadWLabel","hash":{},"data":data}) : helper)))
|
+ alias4(((helper = (helper = helpers.publicUploadWLabel || (depth0 != null ? depth0.publicUploadWLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"publicUploadWLabel","hash":{},"data":data}) : helper)))
|
||||||
+ "</label>\n </span>\n </li>\n";
|
+ "</label>\n </span>\n </li>\n";
|
||||||
},"3":function(container,depth0,helpers,partials,data) {
|
},"6":function(container,depth0,helpers,partials,data) {
|
||||||
var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=helpers.helperMissing, alias3="function", alias4=container.escapeExpression;
|
var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=helpers.helperMissing, alias3="function", alias4=container.escapeExpression;
|
||||||
|
|
||||||
return " <li id=\"allowPublicEditingWrapper\">\n <span class=\"shareOption menuitem\">\n <span class=\"icon-loading-small hidden\"></span>\n <input type=\"checkbox\" name=\"allowPublicEditing\" id=\"sharingDialogAllowPublicEditing-"
|
return " <li id=\"allowPublicEditingWrapper\">\n <span class=\"shareOption menuitem\">\n <span class=\"icon-loading-small hidden\"></span>\n <input type=\"checkbox\" name=\"allowPublicEditing\" id=\"sharingDialogAllowPublicEditing-"
|
||||||
|
@ -104,41 +118,39 @@ templates['sharedialoglinkshareview_popover_menu'] = template({"1":function(cont
|
||||||
+ "\">"
|
+ "\">"
|
||||||
+ alias4(((helper = (helper = helpers.publicEditingLabel || (depth0 != null ? depth0.publicEditingLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"publicEditingLabel","hash":{},"data":data}) : helper)))
|
+ alias4(((helper = (helper = helpers.publicEditingLabel || (depth0 != null ? depth0.publicEditingLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"publicEditingLabel","hash":{},"data":data}) : helper)))
|
||||||
+ "</label>\n </span>\n </li>\n";
|
+ "</label>\n </span>\n </li>\n";
|
||||||
},"5":function(container,depth0,helpers,partials,data) {
|
},"8":function(container,depth0,helpers,partials,data) {
|
||||||
var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=helpers.helperMissing, alias3="function", alias4=container.escapeExpression;
|
var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=helpers.helperMissing, alias3="function", alias4=container.escapeExpression;
|
||||||
|
|
||||||
return " <li>\n <span class=\"shareOption menuitem\">\n <input type=\"checkbox\" name=\"showPassword\" id=\"showPassword-"
|
return " <li>\n <span class=\"shareOption menuitem\">\n <input type=\"checkbox\" name=\"showPassword\" id=\"showPassword-"
|
||||||
+ alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"cid","hash":{},"data":data}) : helper)))
|
+ alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"cid","hash":{},"data":data}) : helper)))
|
||||||
+ "\" class=\"checkbox showPasswordCheckbox\"\n "
|
+ "\" class=\"checkbox showPasswordCheckbox\"\n "
|
||||||
+ ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.isPasswordSet : depth0),{"name":"if","hash":{},"fn":container.program(6, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
|
+ ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.isPasswordSet : depth0),{"name":"if","hash":{},"fn":container.program(2, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
|
||||||
+ " "
|
+ " "
|
||||||
+ ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.isPasswordEnforced : depth0),{"name":"if","hash":{},"fn":container.program(8, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
|
+ ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.isPasswordEnforced : depth0),{"name":"if","hash":{},"fn":container.program(9, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
|
||||||
+ " value=\"1\" />\n <label for=\"showPassword-"
|
+ " value=\"1\" />\n <label for=\"showPassword-"
|
||||||
+ alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"cid","hash":{},"data":data}) : helper)))
|
+ alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"cid","hash":{},"data":data}) : helper)))
|
||||||
+ "\">"
|
+ "\">"
|
||||||
+ alias4(((helper = (helper = helpers.enablePasswordLabel || (depth0 != null ? depth0.enablePasswordLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"enablePasswordLabel","hash":{},"data":data}) : helper)))
|
+ alias4(((helper = (helper = helpers.enablePasswordLabel || (depth0 != null ? depth0.enablePasswordLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"enablePasswordLabel","hash":{},"data":data}) : helper)))
|
||||||
+ "</label>\n </span>\n </li>\n <li class=\""
|
+ "</label>\n </span>\n </li>\n <li class=\""
|
||||||
+ ((stack1 = helpers.unless.call(alias1,(depth0 != null ? depth0.isPasswordSet : depth0),{"name":"unless","hash":{},"fn":container.program(10, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
|
+ ((stack1 = helpers.unless.call(alias1,(depth0 != null ? depth0.isPasswordSet : depth0),{"name":"unless","hash":{},"fn":container.program(11, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
|
||||||
+ " linkPassMenu\">\n <span class=\"shareOption menuitem icon-share-pass\">\n <input id=\"linkPassText-"
|
+ " linkPassMenu\">\n <span class=\"shareOption menuitem icon-share-pass\">\n <input id=\"linkPassText-"
|
||||||
+ alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"cid","hash":{},"data":data}) : helper)))
|
+ alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"cid","hash":{},"data":data}) : helper)))
|
||||||
+ "\" class=\"linkPassText\" type=\"password\" placeholder=\""
|
+ "\" class=\"linkPassText\" type=\"password\" placeholder=\""
|
||||||
+ alias4(((helper = (helper = helpers.passwordPlaceholder || (depth0 != null ? depth0.passwordPlaceholder : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"passwordPlaceholder","hash":{},"data":data}) : helper)))
|
+ alias4(((helper = (helper = helpers.passwordPlaceholder || (depth0 != null ? depth0.passwordPlaceholder : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"passwordPlaceholder","hash":{},"data":data}) : helper)))
|
||||||
+ "\" autocomplete=\"new-password\" />\n <span class=\"icon icon-loading-small hidden\"></span>\n </span>\n </li>\n";
|
+ "\" autocomplete=\"new-password\" />\n <span class=\"icon icon-loading-small hidden\"></span>\n </span>\n </li>\n";
|
||||||
},"6":function(container,depth0,helpers,partials,data) {
|
},"9":function(container,depth0,helpers,partials,data) {
|
||||||
return "checked=\"checked\"";
|
|
||||||
},"8":function(container,depth0,helpers,partials,data) {
|
|
||||||
return "disabled=\"disabled\"";
|
return "disabled=\"disabled\"";
|
||||||
},"10":function(container,depth0,helpers,partials,data) {
|
},"11":function(container,depth0,helpers,partials,data) {
|
||||||
return "hidden";
|
return "hidden";
|
||||||
},"12":function(container,depth0,helpers,partials,data) {
|
},"13":function(container,depth0,helpers,partials,data) {
|
||||||
var helper;
|
var helper;
|
||||||
|
|
||||||
return container.escapeExpression(((helper = (helper = helpers.expireDate || (depth0 != null ? depth0.expireDate : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"expireDate","hash":{},"data":data}) : helper)));
|
return container.escapeExpression(((helper = (helper = helpers.expireDate || (depth0 != null ? depth0.expireDate : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"expireDate","hash":{},"data":data}) : helper)));
|
||||||
},"14":function(container,depth0,helpers,partials,data) {
|
},"15":function(container,depth0,helpers,partials,data) {
|
||||||
var helper;
|
var helper;
|
||||||
|
|
||||||
return container.escapeExpression(((helper = (helper = helpers.defaultExpireDate || (depth0 != null ? depth0.defaultExpireDate : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"defaultExpireDate","hash":{},"data":data}) : helper)));
|
return container.escapeExpression(((helper = (helper = helpers.defaultExpireDate || (depth0 != null ? depth0.defaultExpireDate : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"defaultExpireDate","hash":{},"data":data}) : helper)));
|
||||||
},"16":function(container,depth0,helpers,partials,data) {
|
},"17":function(container,depth0,helpers,partials,data) {
|
||||||
var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=helpers.helperMissing, alias3="function", alias4=container.escapeExpression;
|
var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=helpers.helperMissing, alias3="function", alias4=container.escapeExpression;
|
||||||
|
|
||||||
return " <li>\n <a href=\"#\" class=\"shareOption menuitem pop-up\" data-url=\""
|
return " <li>\n <a href=\"#\" class=\"shareOption menuitem pop-up\" data-url=\""
|
||||||
|
@ -162,21 +174,22 @@ templates['sharedialoglinkshareview_popover_menu'] = template({"1":function(cont
|
||||||
+ "\" class=\"linkText\" type=\"text\" readonly=\"readonly\" value=\""
|
+ "\" class=\"linkText\" type=\"text\" readonly=\"readonly\" value=\""
|
||||||
+ alias4(((helper = (helper = helpers.shareLinkURL || (depth0 != null ? depth0.shareLinkURL : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"shareLinkURL","hash":{},"data":data}) : helper)))
|
+ alias4(((helper = (helper = helpers.shareLinkURL || (depth0 != null ? depth0.shareLinkURL : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"shareLinkURL","hash":{},"data":data}) : helper)))
|
||||||
+ "\" />\n </span>\n </li>\n"
|
+ "\" />\n </span>\n </li>\n"
|
||||||
+ ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.publicUpload : depth0),{"name":"if","hash":{},"fn":container.program(1, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
|
+ ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.showHideDownloadCheckbox : depth0),{"name":"if","hash":{},"fn":container.program(1, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
|
||||||
+ ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.publicEditing : depth0),{"name":"if","hash":{},"fn":container.program(3, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
|
+ ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.publicUpload : depth0),{"name":"if","hash":{},"fn":container.program(4, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
|
||||||
+ ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.showPasswordCheckBox : depth0),{"name":"if","hash":{},"fn":container.program(5, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
|
+ ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.publicEditing : depth0),{"name":"if","hash":{},"fn":container.program(6, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
|
||||||
|
+ ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.showPasswordCheckBox : depth0),{"name":"if","hash":{},"fn":container.program(8, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
|
||||||
+ " <li>\n <span class=\"shareOption menuitem\">\n <input id=\"expireDate-"
|
+ " <li>\n <span class=\"shareOption menuitem\">\n <input id=\"expireDate-"
|
||||||
+ alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"cid","hash":{},"data":data}) : helper)))
|
+ alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"cid","hash":{},"data":data}) : helper)))
|
||||||
+ "\" type=\"checkbox\" name=\"expirationDate\" class=\"expireDate checkbox\"\n "
|
+ "\" type=\"checkbox\" name=\"expirationDate\" class=\"expireDate checkbox\"\n "
|
||||||
+ ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.hasExpireDate : depth0),{"name":"if","hash":{},"fn":container.program(6, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
|
+ ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.hasExpireDate : depth0),{"name":"if","hash":{},"fn":container.program(2, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
|
||||||
+ " "
|
+ " "
|
||||||
+ ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.isExpirationEnforced : depth0),{"name":"if","hash":{},"fn":container.program(8, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
|
+ ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.isExpirationEnforced : depth0),{"name":"if","hash":{},"fn":container.program(9, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
|
||||||
+ "\" />\n <label for=\"expireDate-"
|
+ "\" />\n <label for=\"expireDate-"
|
||||||
+ alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"cid","hash":{},"data":data}) : helper)))
|
+ alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"cid","hash":{},"data":data}) : helper)))
|
||||||
+ "\">"
|
+ "\">"
|
||||||
+ alias4(((helper = (helper = helpers.expireDateLabel || (depth0 != null ? depth0.expireDateLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"expireDateLabel","hash":{},"data":data}) : helper)))
|
+ alias4(((helper = (helper = helpers.expireDateLabel || (depth0 != null ? depth0.expireDateLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"expireDateLabel","hash":{},"data":data}) : helper)))
|
||||||
+ "</label>\n </span>\n </li>\n <li class=\""
|
+ "</label>\n </span>\n </li>\n <li class=\""
|
||||||
+ ((stack1 = helpers.unless.call(alias1,(depth0 != null ? depth0.hasExpireDate : depth0),{"name":"unless","hash":{},"fn":container.program(10, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
|
+ ((stack1 = helpers.unless.call(alias1,(depth0 != null ? depth0.hasExpireDate : depth0),{"name":"unless","hash":{},"fn":container.program(11, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
|
||||||
+ "\">\n <span class=\"menuitem icon-expiredate expirationDateContainer-"
|
+ "\">\n <span class=\"menuitem icon-expiredate expirationDateContainer-"
|
||||||
+ alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"cid","hash":{},"data":data}) : helper)))
|
+ alias4(((helper = (helper = helpers.cid || (depth0 != null ? depth0.cid : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"cid","hash":{},"data":data}) : helper)))
|
||||||
+ "\">\n <label for=\"expirationDatePicker-"
|
+ "\">\n <label for=\"expirationDatePicker-"
|
||||||
|
@ -190,7 +203,7 @@ templates['sharedialoglinkshareview_popover_menu'] = template({"1":function(cont
|
||||||
+ "\" class=\"datepicker\" type=\"text\" placeholder=\""
|
+ "\" class=\"datepicker\" type=\"text\" placeholder=\""
|
||||||
+ alias4(((helper = (helper = helpers.expirationDatePlaceholder || (depth0 != null ? depth0.expirationDatePlaceholder : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"expirationDatePlaceholder","hash":{},"data":data}) : helper)))
|
+ alias4(((helper = (helper = helpers.expirationDatePlaceholder || (depth0 != null ? depth0.expirationDatePlaceholder : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"expirationDatePlaceholder","hash":{},"data":data}) : helper)))
|
||||||
+ "\" value=\""
|
+ "\" value=\""
|
||||||
+ ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.hasExpireDate : depth0),{"name":"if","hash":{},"fn":container.program(12, data, 0),"inverse":container.program(14, data, 0),"data":data})) != null ? stack1 : "")
|
+ ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.hasExpireDate : depth0),{"name":"if","hash":{},"fn":container.program(13, data, 0),"inverse":container.program(15, data, 0),"data":data})) != null ? stack1 : "")
|
||||||
+ "\" />\n </span>\n </li>\n <li>\n <a href=\"#\" class=\"share-add\">\n <span class=\"icon-loading-small hidden\"></span>\n <span class=\"icon icon-edit\"></span>\n <span>"
|
+ "\" />\n </span>\n </li>\n <li>\n <a href=\"#\" class=\"share-add\">\n <span class=\"icon-loading-small hidden\"></span>\n <span class=\"icon icon-edit\"></span>\n <span>"
|
||||||
+ alias4(((helper = (helper = helpers.addNoteLabel || (depth0 != null ? depth0.addNoteLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"addNoteLabel","hash":{},"data":data}) : helper)))
|
+ alias4(((helper = (helper = helpers.addNoteLabel || (depth0 != null ? depth0.addNoteLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"addNoteLabel","hash":{},"data":data}) : helper)))
|
||||||
+ "</span>\n <input type=\"button\" class=\"share-note-delete icon-delete\">\n </a>\n </li>\n <li class=\"share-note-form share-note-link hidden\">\n <span class=\"menuitem icon-note\">\n <textarea class=\"share-note\">"
|
+ "</span>\n <input type=\"button\" class=\"share-note-delete icon-delete\">\n </a>\n </li>\n <li class=\"share-note-form share-note-link hidden\">\n <span class=\"menuitem icon-note\">\n <textarea class=\"share-note\">"
|
||||||
|
@ -198,7 +211,7 @@ templates['sharedialoglinkshareview_popover_menu'] = template({"1":function(cont
|
||||||
+ "</textarea>\n <input type=\"submit\" class=\"icon-confirm share-note-submit\" value=\"\" id=\"add-note-"
|
+ "</textarea>\n <input type=\"submit\" class=\"icon-confirm share-note-submit\" value=\"\" id=\"add-note-"
|
||||||
+ alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"shareId","hash":{},"data":data}) : helper)))
|
+ alias4(((helper = (helper = helpers.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"shareId","hash":{},"data":data}) : helper)))
|
||||||
+ "\" />\n </span>\n </li>\n"
|
+ "\" />\n </span>\n </li>\n"
|
||||||
+ ((stack1 = helpers.each.call(alias1,(depth0 != null ? depth0.social : depth0),{"name":"each","hash":{},"fn":container.program(16, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
|
+ ((stack1 = helpers.each.call(alias1,(depth0 != null ? depth0.social : depth0),{"name":"each","hash":{},"fn":container.program(17, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "")
|
||||||
+ " </ul>\n</div>\n";
|
+ " </ul>\n</div>\n";
|
||||||
},"useData":true});
|
},"useData":true});
|
||||||
templates['sharedialoglinkshareview_popover_menu_pending'] = template({"1":function(container,depth0,helpers,partials,data) {
|
templates['sharedialoglinkshareview_popover_menu_pending'] = template({"1":function(container,depth0,helpers,partials,data) {
|
||||||
|
|
|
@ -72,6 +72,100 @@ describe('OC.Share.ShareDialogLinkShareView', function () {
|
||||||
configModel.isShareWithLinkAllowed.restore();
|
configModel.isShareWithLinkAllowed.restore();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('hide download', function () {
|
||||||
|
|
||||||
|
var $hideDownloadCheckbox;
|
||||||
|
var $workingIcon;
|
||||||
|
|
||||||
|
beforeEach(function () {
|
||||||
|
// Needed to render the view
|
||||||
|
configModel.isShareWithLinkAllowed.returns(true);
|
||||||
|
|
||||||
|
// Setting the share also triggers the rendering
|
||||||
|
shareModel.set({
|
||||||
|
linkShare: {
|
||||||
|
isLinkShare: true,
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$hideDownloadCheckbox = view.$el.find('.hideDownloadCheckbox');
|
||||||
|
$workingIcon = $hideDownloadCheckbox.prev('.icon-loading-small');
|
||||||
|
|
||||||
|
sinon.stub(shareModel, 'saveLinkShare');
|
||||||
|
|
||||||
|
expect($workingIcon.hasClass('hidden')).toBeTruthy();
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(function () {
|
||||||
|
shareModel.saveLinkShare.restore();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('is shown if the share is a file', function() {
|
||||||
|
expect($hideDownloadCheckbox.length).toBeTruthy();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('is not shown if the share is a folder', function() {
|
||||||
|
shareModel.fileInfoModel.set('mimetype', 'httpd/unix-directory');
|
||||||
|
|
||||||
|
// Setting the item type also triggers the rendering
|
||||||
|
shareModel.set({
|
||||||
|
itemType: 'folder'
|
||||||
|
});
|
||||||
|
|
||||||
|
$hideDownloadCheckbox = view.$el.find('.hideDownloadCheckbox');
|
||||||
|
|
||||||
|
expect($hideDownloadCheckbox.length).toBeFalsy();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('checkbox is checked when the setting is enabled', function () {
|
||||||
|
shareModel.set({
|
||||||
|
linkShare: {
|
||||||
|
isLinkShare: true,
|
||||||
|
hideDownload: true
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$hideDownloadCheckbox = view.$el.find('.hideDownloadCheckbox');
|
||||||
|
|
||||||
|
expect($hideDownloadCheckbox.is(':checked')).toEqual(true);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('checkbox is not checked when the setting is disabled', function () {
|
||||||
|
expect($hideDownloadCheckbox.is(':checked')).toEqual(false);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('enables the setting if clicked when unchecked', function () {
|
||||||
|
// Simulate the click by checking the checkbox and then triggering
|
||||||
|
// the "change" event.
|
||||||
|
$hideDownloadCheckbox.prop('checked', true);
|
||||||
|
$hideDownloadCheckbox.change();
|
||||||
|
|
||||||
|
expect($workingIcon.hasClass('hidden')).toBeFalsy();
|
||||||
|
expect(shareModel.saveLinkShare.withArgs({ hideDownload: true }).calledOnce).toBeTruthy();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('disables the setting if clicked when checked', function () {
|
||||||
|
shareModel.set({
|
||||||
|
linkShare: {
|
||||||
|
isLinkShare: true,
|
||||||
|
hideDownload: true
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$hideDownloadCheckbox = view.$el.find('.hideDownloadCheckbox');
|
||||||
|
$workingIcon = $hideDownloadCheckbox.prev('.icon-loading-small');
|
||||||
|
|
||||||
|
// Simulate the click by unchecking the checkbox and then triggering
|
||||||
|
// the "change" event.
|
||||||
|
$hideDownloadCheckbox.prop('checked', false);
|
||||||
|
$hideDownloadCheckbox.change();
|
||||||
|
|
||||||
|
expect($workingIcon.hasClass('hidden')).toBeFalsy();
|
||||||
|
expect(shareModel.saveLinkShare.withArgs({ hideDownload: false }).calledOnce).toBeTruthy();
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
describe('onPasswordEntered', function () {
|
describe('onPasswordEntered', function () {
|
||||||
|
|
||||||
var $passwordText;
|
var $passwordText;
|
||||||
|
|
|
@ -168,7 +168,8 @@ describe('OC.Share.ShareItemModel', function() {
|
||||||
stime: 1403884258,
|
stime: 1403884258,
|
||||||
storage: 1,
|
storage: 1,
|
||||||
token: 'tehtoken',
|
token: 'tehtoken',
|
||||||
uid_owner: 'root'
|
uid_owner: 'root',
|
||||||
|
hide_download: 1
|
||||||
}
|
}
|
||||||
]));
|
]));
|
||||||
|
|
||||||
|
@ -186,6 +187,7 @@ describe('OC.Share.ShareItemModel', function() {
|
||||||
|
|
||||||
var linkShare = model.get('linkShare');
|
var linkShare = model.get('linkShare');
|
||||||
expect(linkShare.isLinkShare).toEqual(true);
|
expect(linkShare.isLinkShare).toEqual(true);
|
||||||
|
expect(linkShare.hideDownload).toEqual(true);
|
||||||
|
|
||||||
// TODO: check more attributes
|
// TODO: check more attributes
|
||||||
});
|
});
|
||||||
|
@ -289,7 +291,8 @@ describe('OC.Share.ShareItemModel', function() {
|
||||||
stime: 1403884258,
|
stime: 1403884258,
|
||||||
storage: 1,
|
storage: 1,
|
||||||
token: 'tehtoken',
|
token: 'tehtoken',
|
||||||
uid_owner: 'root'
|
uid_owner: 'root',
|
||||||
|
hide_download: 0
|
||||||
}, {
|
}, {
|
||||||
displayname_owner: 'root',
|
displayname_owner: 'root',
|
||||||
expiration: '2015-10-15 00:00:00',
|
expiration: '2015-10-15 00:00:00',
|
||||||
|
@ -307,7 +310,8 @@ describe('OC.Share.ShareItemModel', function() {
|
||||||
stime: 1403884509,
|
stime: 1403884509,
|
||||||
storage: 1,
|
storage: 1,
|
||||||
token: 'anothertoken',
|
token: 'anothertoken',
|
||||||
uid_owner: 'root'
|
uid_owner: 'root',
|
||||||
|
hide_download: 1
|
||||||
}]
|
}]
|
||||||
));
|
));
|
||||||
OC.currentUser = 'root';
|
OC.currentUser = 'root';
|
||||||
|
@ -320,6 +324,7 @@ describe('OC.Share.ShareItemModel', function() {
|
||||||
var linkShare = model.get('linkShare');
|
var linkShare = model.get('linkShare');
|
||||||
expect(linkShare.isLinkShare).toEqual(true);
|
expect(linkShare.isLinkShare).toEqual(true);
|
||||||
expect(linkShare.token).toEqual('tehtoken');
|
expect(linkShare.token).toEqual('tehtoken');
|
||||||
|
expect(linkShare.hideDownload).toEqual(false);
|
||||||
|
|
||||||
// TODO: check child too
|
// TODO: check child too
|
||||||
});
|
});
|
||||||
|
@ -579,6 +584,7 @@ describe('OC.Share.ShareItemModel', function() {
|
||||||
|
|
||||||
expect(addShareStub.calledOnce).toEqual(true);
|
expect(addShareStub.calledOnce).toEqual(true);
|
||||||
expect(addShareStub.firstCall.args[0]).toEqual({
|
expect(addShareStub.firstCall.args[0]).toEqual({
|
||||||
|
hideDownload: false,
|
||||||
password: '',
|
password: '',
|
||||||
passwordChanged: false,
|
passwordChanged: false,
|
||||||
permissions: OC.PERMISSION_READ,
|
permissions: OC.PERMISSION_READ,
|
||||||
|
@ -603,6 +609,7 @@ describe('OC.Share.ShareItemModel', function() {
|
||||||
|
|
||||||
expect(addShareStub.calledOnce).toEqual(true);
|
expect(addShareStub.calledOnce).toEqual(true);
|
||||||
expect(addShareStub.firstCall.args[0]).toEqual({
|
expect(addShareStub.firstCall.args[0]).toEqual({
|
||||||
|
hideDownload: false,
|
||||||
password: '',
|
password: '',
|
||||||
passwordChanged: false,
|
passwordChanged: false,
|
||||||
permissions: OC.PERMISSION_READ,
|
permissions: OC.PERMISSION_READ,
|
||||||
|
|
Loading…
Reference in a new issue