diff options
author | John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com> | 2018-10-31 11:43:05 +0100 |
---|---|---|
committer | Daniel Calviño Sánchez <danxuliu@gmail.com> | 2018-11-01 21:33:05 +0100 |
commit | a7ea3d29fa6baedb47e2a2f6677c7e0d166b6436 (patch) | |
tree | f2f407fbe37cac3e3b2856901ba62c2f650212c4 | |
parent | 260290ec41c61bebb711db174db95fd18ba1aa87 (diff) | |
download | nextcloud-server-a7ea3d29fa6baedb47e2a2f6677c7e0d166b6436.tar.gz nextcloud-server-a7ea3d29fa6baedb47e2a2f6677c7e0d166b6436.zip |
Fix password enforcement
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
-rw-r--r-- | core/js/share/sharedialoglinkshareview.handlebars | 17 | ||||
-rw-r--r-- | core/js/share/sharedialoglinkshareview_popover_menu.handlebars | 18 | ||||
-rw-r--r-- | core/js/share/sharedialoglinkshareview_popover_menu_pending.handlebars | 24 | ||||
-rw-r--r-- | core/js/share/sharedialogshareelistview.handlebars | 2 | ||||
-rw-r--r-- | core/js/share/sharedialogshareelistview_popover_menu.handlebars | 16 | ||||
-rw-r--r-- | core/js/sharedialoglinkshareview.js | 121 | ||||
-rw-r--r-- | core/js/sharetemplates.js | 104 |
7 files changed, 176 insertions, 126 deletions
diff --git a/core/js/share/sharedialoglinkshareview.handlebars b/core/js/share/sharedialoglinkshareview.handlebars index 9b44596f7a3..64f52704290 100644 --- a/core/js/share/sharedialoglinkshareview.handlebars +++ b/core/js/share/sharedialoglinkshareview.handlebars @@ -1,12 +1,17 @@ {{#if shareAllowed}} -<ul id="shareLink" class="shareWithList"> +<ul class="shareWithList"> {{#if nolinkShares}} - <li> + <li data-share-id="new-share"> <div class="avatar icon-public-white"></div> <span class="username">{{newShareLabel}}</span> <span class="sharingOptionsGroup"> - <span class="icon icon-add new-share has-tooltip" title="{{newShareTitle}}"></span> - <span class="icon icon-loading-small hidden"></span> + <div class="share-menu"> + <a href="#" class="icon icon-add new-share has-tooltip {{#if showPending}}hidden{{/if}}" title="{{newShareTitle}}"></a> + <span class="icon icon-loading-small {{#unless showPending}}hidden{{/unless}}"></span> + {{#if showPending}} + {{{pendingPopoverMenu}}} + {{/if}} + </div> </span> </li> {{/if}} @@ -16,7 +21,9 @@ <span class="sharingOptionsGroup"> <a href="#" class="clipboard-button icon icon-clippy has-tooltip" data-clipboard-text="{{shareLinkURL}}" title="{{copyLabel}}"></a> - <div class="share-menu" tabindex="0"><span class="icon icon-more"></span> + <div class="share-menu"> + <a href="#" class="icon icon-more {{#if showPending}}hidden{{/if}}"></a> + <span class="icon icon-loading-small {{#unless showPending}}hidden{{/unless}}"></span> {{#if showPending}} {{{pendingPopoverMenu}}} {{else}} diff --git a/core/js/share/sharedialoglinkshareview_popover_menu.handlebars b/core/js/share/sharedialoglinkshareview_popover_menu.handlebars index 41324480c40..97a642fbf9a 100644 --- a/core/js/share/sharedialoglinkshareview_popover_menu.handlebars +++ b/core/js/share/sharedialoglinkshareview_popover_menu.handlebars @@ -14,7 +14,7 @@ </li> {{#if showHideDownloadCheckbox}} <li> - <span class="shareOption menuitem"> + <span class="menuitem"> <span class="icon-loading-small hidden"></span> <input type="checkbox" name="hideDownload" id="sharingDialogHideDownload-{{cid}}" class="checkbox hideDownloadCheckbox" {{#if hideDownload}}checked="checked"{{/if}} /> @@ -24,20 +24,20 @@ {{/if}} {{#if publicUpload}} <li> - <span class="shareOption menuitem"> + <span class="menuitem"> <span class="icon-loading-small hidden"></span> <input type="radio" name="publicUpload" value="{{publicUploadRValue}}" id="sharingDialogAllowPublicUpload-r-{{cid}}" class="radio publicUploadRadio" {{{publicUploadRChecked}}} /> <label for="sharingDialogAllowPublicUpload-r-{{cid}}">{{publicUploadRLabel}}</label> </span> </li> <li> - <span class="shareOption menuitem"> + <span class="menuitem"> <span class="icon-loading-small hidden"></span> <input type="radio" name="publicUpload" value="{{publicUploadRWValue}}" id="sharingDialogAllowPublicUpload-rw-{{cid}}" class="radio publicUploadRadio" {{{publicUploadRWChecked}}} /> <label for="sharingDialogAllowPublicUpload-rw-{{cid}}">{{publicUploadRWLabel}}</label> </span></li> <li> - <span class="shareOption menuitem"> + <span class="menuitem"> <span class="icon-loading-small hidden"></span> <input type="radio" name="publicUpload" value="{{publicUploadWValue}}" id="sharingDialogAllowPublicUpload-w-{{cid}}" class="radio publicUploadRadio" {{{publicUploadWChecked}}} /> <label for="sharingDialogAllowPublicUpload-w-{{cid}}">{{publicUploadWLabel}}</label> @@ -46,7 +46,7 @@ {{/if}} {{#if publicEditing}} <li id="allowPublicEditingWrapper"> - <span class="shareOption menuitem"> + <span class="menuitem"> <span class="icon-loading-small hidden"></span> <input type="checkbox" name="allowPublicEditing" id="sharingDialogAllowPublicEditing-{{cid}}" class="checkbox publicEditingCheckbox" {{{publicEditingChecked}}} /> <label for="sharingDialogAllowPublicEditing-{{cid}}">{{publicEditingLabel}}</label> @@ -55,21 +55,21 @@ {{/if}} {{#if showPasswordCheckBox}} <li> - <span class="shareOption menuitem"> + <span class="menuitem"> <input type="checkbox" name="showPassword" id="showPassword-{{cid}}" class="checkbox showPasswordCheckbox" {{#if isPasswordSet}}checked="checked"{{/if}} {{#if isPasswordEnforced}}disabled="disabled"{{/if}} value="1" /> <label for="showPassword-{{cid}}">{{enablePasswordLabel}}</label> </span> </li> <li class="{{#unless isPasswordSet}}hidden{{/unless}} linkPassMenu"> - <span class="shareOption menuitem icon-share-pass"> + <span class="menuitem icon-share-pass"> <input id="linkPassText-{{cid}}" class="linkPassText" type="password" placeholder="{{passwordPlaceholder}}" autocomplete="new-password" /> <span class="icon icon-loading-small hidden"></span> </span> </li> {{/if}} <li> - <span class="shareOption menuitem"> + <span class="menuitem"> <input id="expireDate-{{cid}}" type="checkbox" name="expirationDate" class="expireDate checkbox" {{#if hasExpireDate}}checked="checked"{{/if}} {{#if isExpirationEnforced}}disabled="disabled"{{/if}} /> <label for="expireDate-{{cid}}">{{expireDateLabel}}</label> @@ -100,7 +100,7 @@ </li> {{#each social}} <li> - <a href="#" class="shareOption menuitem pop-up" data-url="{{url}}" data-window="{{newWindow}}"> + <a href="#" class="menuitem pop-up" data-url="{{url}}" data-window="{{newWindow}}"> <span class="icon {{iconClass}}"></span> <span>{{label}}</span> </a> diff --git a/core/js/share/sharedialoglinkshareview_popover_menu_pending.handlebars b/core/js/share/sharedialoglinkshareview_popover_menu_pending.handlebars index e39c082315b..f789d7ae807 100644 --- a/core/js/share/sharedialoglinkshareview_popover_menu_pending.handlebars +++ b/core/js/share/sharedialoglinkshareview_popover_menu_pending.handlebars @@ -1,14 +1,20 @@ -<div class="popovermenu pendingpopover menu"> +<div class="popovermenu open menu"> <ul> {{#if isPasswordEnforced}} - <li><span class="shareOption menuitem"> - <input type="checkbox" name="showPassword" id="showPassword-{{cid}}" checked="checked" disabled class="checkbox showPasswordCheckbox" value="1" /> - <label for="showPassword-{{cid}}">{{enablePasswordLabel}}</label> - </span></li> - <li class="linkPassMenu"><span class="shareOption menuitem icon-share-pass"> - <input id="linkPassText-{{cid}}" class="linkPassText" type="password" placeholder="{{passwordPlaceholder}}" autocomplete="new-password" /> - <span class="icon icon-loading-small hidden"></span> - </span></li> + <li> + <span class="menuitem icon-info"> + <p>{{enforcedPasswordLabel}}</p> + </span> + </li> + <li class="linkPassMenu"> + <span class="menuitem"> + <form autocomplete="off" class="enforcedPassForm"> + <input id="enforcedPassText" required class="enforcedPassText" type="password" + placeholder="{{passwordPlaceholder}}" autocomplete="new-password" minlength="4" /> + <input type="submit" value=" " class="primary icon-checkmark-white"> + </form> + </span> + </li> {{/if}} </ul> </div> diff --git a/core/js/share/sharedialogshareelistview.handlebars b/core/js/share/sharedialogshareelistview.handlebars index dc2496daaa8..92c07f80290 100644 --- a/core/js/share/sharedialogshareelistview.handlebars +++ b/core/js/share/sharedialogshareelistview.handlebars @@ -5,7 +5,7 @@ <span class="username" title="{{shareWithTitle}}">{{shareWithDisplayName}}</span> <span class="sharingOptionsGroup"> {{#if editPermissionPossible}} - <span class="shareOption"> + <span> <input id="canEdit-{{cid}}-{{shareId}}" type="checkbox" name="edit" class="permissions checkbox" /> <label for="canEdit-{{cid}}-{{shareId}}">{{canEditLabel}}</label> </span> diff --git a/core/js/share/sharedialogshareelistview_popover_menu.handlebars b/core/js/share/sharedialogshareelistview_popover_menu.handlebars index 84b6c93dde5..64fe51a3d24 100644 --- a/core/js/share/sharedialogshareelistview_popover_menu.handlebars +++ b/core/js/share/sharedialogshareelistview_popover_menu.handlebars @@ -2,7 +2,7 @@ <ul> {{#if isResharingAllowed}} {{#if sharePermissionPossible}} {{#unless isMailShare}} <li> - <span class="shareOption menuitem"> + <span class="menuitem"> <input id="canShare-{{cid}}-{{shareId}}" type="checkbox" name="share" class="permissions checkbox" {{#if hasSharePermission}}checked="checked"{{/if}} data-permissions="{{sharePermission}}" /> <label for="canShare-{{cid}}-{{shareId}}">{{canShareLabel}}</label> </span> @@ -11,7 +11,7 @@ {{#if isFolder}} {{#if createPermissionPossible}}{{#unless isMailShare}} <li> - <span class="shareOption menuitem"> + <span class="menuitem"> <input id="canCreate-{{cid}}-{{shareId}}" type="checkbox" name="create" class="permissions checkbox" {{#if hasCreatePermission}}checked="checked"{{/if}} data-permissions="{{createPermission}}"/> <label for="canCreate-{{cid}}-{{shareId}}">{{createPermissionLabel}}</label> </span> @@ -19,7 +19,7 @@ {{/unless}}{{/if}} {{#if updatePermissionPossible}}{{#unless isMailShare}} <li> - <span class="shareOption menuitem"> + <span class="menuitem"> <input id="canUpdate-{{cid}}-{{shareId}}" type="checkbox" name="update" class="permissions checkbox" {{#if hasUpdatePermission}}checked="checked"{{/if}} data-permissions="{{updatePermission}}"/> <label for="canUpdate-{{cid}}-{{shareId}}">{{updatePermissionLabel}}</label> </span> @@ -27,7 +27,7 @@ {{/unless}}{{/if}} {{#if deletePermissionPossible}}{{#unless isMailShare}} <li> - <span class="shareOption menuitem"> + <span class="menuitem"> <input id="canDelete-{{cid}}-{{shareId}}" type="checkbox" name="delete" class="permissions checkbox" {{#if hasDeletePermission}}checked="checked"{{/if}} data-permissions="{{deletePermission}}"/> <label for="canDelete-{{cid}}-{{shareId}}">{{deletePermissionLabel}}</label> </span> @@ -37,14 +37,14 @@ {{#if isMailShare}} {{#if hasCreatePermission}} <li> - <span class="shareOption menuitem"> + <span class="menuitem"> <input id="secureDrop-{{cid}}-{{shareId}}" type="checkbox" name="secureDrop" class="checkbox secureDrop" {{#if secureDropMode}}checked="checked"{{/if}} data-permissions="{{readPermission}}"/> <label for="secureDrop-{{cid}}-{{shareId}}">{{secureDropLabel}}</label> </span> </li> {{/if}} <li> - <span class="shareOption menuitem"> + <span class="menuitem"> <input id="password-{{cid}}-{{shareId}}" type="checkbox" name="password" class="password checkbox" {{#if isPasswordSet}}checked="checked"{{/if}}{{#if isPasswordSet}}{{#if isPasswordForMailSharesRequired}}disabled=""{{/if}}{{/if}}" /> <label for="password-{{cid}}-{{shareId}}">{{passwordLabel}}</label> </span> @@ -58,7 +58,7 @@ </li> {{#if isTalkEnabled}} <li> - <span class="shareOption menuitem"> + <span class="menuitem"> <input id="passwordByTalk-{{cid}}-{{shareId}}" type="checkbox" name="passwordByTalk" class="passwordByTalk checkbox" {{#if isPasswordByTalkSet}}checked="checked"{{/if}} /> <label for="passwordByTalk-{{cid}}-{{shareId}}">{{passwordByTalkLabel}}</label> </span> @@ -73,7 +73,7 @@ {{/if}} {{/if}} <li> - <span class="shareOption menuitem"> + <span class="menuitem"> <input id="expireDate-{{cid}}-{{shareId}}" type="checkbox" name="expirationDate" class="expireDate checkbox" {{#if hasExpireDate}}checked="checked"{{/if}}" /> <label for="expireDate-{{cid}}-{{shareId}}">{{expireDateLabel}}</label> </span> diff --git a/core/js/sharedialoglinkshareview.js b/core/js/sharedialoglinkshareview.js index 457170871f9..05564bd86c2 100644 --- a/core/js/sharedialoglinkshareview.js +++ b/core/js/sharedialoglinkshareview.js @@ -42,6 +42,9 @@ /** @type {boolean} **/ showPending: false, + /** @type {string} **/ + password: '', + events: { // open menu 'click .share-menu .icon-more': 'onToggleMenu', @@ -70,6 +73,8 @@ 'click .unshare': 'onUnshare', // new share 'click .new-share': 'newShare', + // enforced pass set + 'submit .enforcedPassForm': 'enforcedPasswordSet', }, initialize: function(options) { @@ -123,7 +128,6 @@ // show menu OC.showMenu(null, $menu); - this._menuOpen = shareId; var actionMsg = ''; if (/iPhone|iPad/i.test(navigator.userAgent)) { @@ -149,38 +153,71 @@ }); }, - newShare: function() { + newShare: function(event) { var self = this; - var $loading = this.$el.find('.icon-loading-small').eq(0); - if(!$loading.hasClass('hidden')) { + var $target = $(event.target); + var $li = $target.closest('li[data-share-id]'); + var shareId = $li.data('share-id'); + var $loading = $li.find('.share-menu > .icon-loading-small'); + + if(!$loading.hasClass('hidden') && this.password === '') { // in process return false; } + // hide all icons and show loading - this.$el.find('.icon').addClass('hidden'); + $li.find('.icon').addClass('hidden'); $loading.removeClass('hidden'); + // hide menu + OC.hideMenus(); + var shareData = {} + var isPasswordEnforced = this.configModel.get('enforcePasswordForPublicLink'); var isExpirationEnforced = this.configModel.get('isDefaultExpireDateEnforced'); + + // set default expire date if (isExpirationEnforced) { var defaultExpireDays = this.configModel.get('defaultExpireDate'); var expireDate = moment().add(defaultExpireDays, 'day').format('DD-MM-YYYY') shareData.expireDate = expireDate; } - this.model.saveLinkShare(shareData, { - success: function() { - $loading.addClass('hidden'); - self.$el.find('.icon').removeClass('hidden'); - self.render(); - }, - error: function(obj, msg) { - OC.Notification.showTemporary(t('core', 'Unable to create a link share')); - $loading.addClass('hidden'); - self.$el.find('.icon').removeClass('hidden'); - } - }) + // if password is set, add to data + if (isPasswordEnforced && this.password !== '') { + shareData.password = this.password + } + + // We need a password before the share creation + if (isPasswordEnforced && !this.showPending && this.password === '') { + this.showPending = shareId; + this.render(); + $li.find('#enforcedPassText').focus(); + } else { + // else, we have a password or it is not enforced + this.model.saveLinkShare(shareData, { + success: function() { + $loading.addClass('hidden'); + $li.find('.icon').removeClass('hidden'); + self.render(); + }, + error: function() { + OC.Notification.showTemporary(t('core', 'Unable to create a link share')); + $loading.addClass('hidden'); + $li.find('.icon').removeClass('hidden'); + } + }) + } + }, + + enforcedPasswordSet: function(event) { + event.preventDefault(); + var $form = $(event.target); + var $input = $form.find('input.enforcedPassText'); + this.password = $input.val(); + this.showPending = false; + this.newShare(event); }, onLinkTextClick: function(event) { @@ -412,6 +449,9 @@ render: function() { this.$el.find('.has-tooltip').tooltip(); + + // reset previously set passwords + this.password = ''; var linkShareTemplate = this.template(); var resharingAllowed = this.model.sharePermissionPossible(); @@ -479,7 +519,7 @@ social: social, urlLabel: t('core', 'Link'), hideDownloadLabel: t('core', 'Hide download'), - enablePasswordLabel: t('core', 'Password protect'), + enablePasswordLabel: isPasswordEnforced ? t('core', 'Password protection enforced') : t('core', 'Password protect'), passwordLabel: t('core', 'Password'), passwordPlaceholderInitial: passwordPlaceholderInitial, publicUpload: publicUpload, @@ -505,20 +545,19 @@ newShareLabel: t('core', 'New share link'), }; - var pendingPopoverBase = { - enablePasswordLabel: t('core', 'Password protect'), - passwordLabel: t('core', 'Password'), - passwordPlaceholderInitial: passwordPlaceholderInitial, + var pendingPopover = { isPasswordEnforced: isPasswordEnforced, + enforcedPasswordLabel: t('core', 'Password protection for links is mandatory'), + passwordPlaceholder: passwordPlaceholderInitial, }; + var pendingPopoverMenu = this.pendingPopoverMenuTemplate(_.extend({}, pendingPopover)) var linkShares = this.getShareeList(); if(_.isArray(linkShares)) { for (var i = 0; i < linkShares.length; i++) { var popover = this.getPopoverObject(linkShares[i]) - var pendingPopover = this.getPendingPopoverObject(linkShares[i]) linkShares[i].popoverMenu = this.popoverMenuTemplate(_.extend({}, popoverBase, popover)); - linkShares[i].pendingPopoverMenu = this.pendingPopoverMenuTemplate(_.extend({}, pendingPopoverBase, pendingPopover)); + linkShares[i].pendingPopoverMenu = pendingPopoverMenu } } @@ -527,7 +566,9 @@ shareAllowed: true, nolinkShares: linkShares.length === 0, newShareLabel: t('core', 'Share link'), - newShareTitle: t('core', 'New share link') + newShareTitle: t('core', 'New share link'), + pendingPopoverMenu: pendingPopoverMenu, + showPending: this.showPending === 'new', })); this.delegateEvents(); @@ -547,7 +588,14 @@ var shareId = $li.data('share-id'); OC.showMenu(null, $menu); - this._menuOpen = shareId; + + // focus the password if not set and enforced + var isPasswordEnabledByDefault = this.configModel.get('enableLinkPasswordByDefault') === true; + var haspassword = $menu.find('.linkPassText').val() !== ''; + + if (!haspassword && isPasswordEnabledByDefault) { + $menu.find('.linkPassText').focus(); + } }, /** @@ -681,11 +729,10 @@ shareAllowed: true, linkShareLabel: share.label !== '' ? share.label : t('core', 'Share link'), popoverMenu: {}, - pendingPopoverMenu: {}, - showPending: this.showPending, shareLinkURL: share.url, newShareTitle: t('core', 'New share link'), copyLabel: t('core', 'Copy link'), + showPending: this.showPending === share.id, }) }, @@ -709,7 +756,7 @@ var isPasswordSet = !!share.password; var isPasswordEnabledByDefault = this.configModel.get('enableLinkPasswordByDefault') === true; var isPasswordEnforced = this.configModel.get('enforcePasswordForPublicLink'); - var showPasswordCheckBox = !this.configModel.get('enforcePasswordForPublicLink') || !share.password; + var showPasswordCheckBox = !isPasswordEnforced || !share.password; var isExpirationEnforced = this.configModel.get('isDefaultExpireDateEnforced'); var defaultExpireDays = this.configModel.get('defaultExpireDate'); var hasExpireDate = !!share.expiration || isExpirationEnforced; @@ -759,22 +806,6 @@ } }, - getPendingPopoverObject: function(share) { - var isPasswordSet = !!share.password; - var showPasswordCheckBox = !this.configModel.get('enforcePasswordForPublicLink') || !share.password; - var isPasswordEnforced = this.configModel.get('enforcePasswordForPublicLink'); - - return { - cid: share.id, - enablePasswordLabel: t('core', 'Password protect'), - passwordLabel: t('core', 'Password'), - passwordPlaceholder: isPasswordSet ? PASSWORD_PLACEHOLDER : PASSWORD_PLACEHOLDER_MESSAGE, - showPasswordCheckBox: showPasswordCheckBox, - isPasswordEnforced: isPasswordEnforced, - } - - }, - onUnshare: function(event) { event.preventDefault(); event.stopPropagation(); diff --git a/core/js/sharetemplates.js b/core/js/sharetemplates.js index 674bc2c4bab..a29ddfb6f75 100644 --- a/core/js/sharetemplates.js +++ b/core/js/sharetemplates.js @@ -3,19 +3,33 @@ templates['sharedialoglinkshareview'] = template({"1":function(container,depth0,helpers,partials,data) { var stack1, alias1=depth0 != null ? depth0 : (container.nullContext || {}); - return "<ul id=\"shareLink\" class=\"shareWithList\">\n" + return "<ul class=\"shareWithList\">\n" + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.nolinkShares : depth0),{"name":"if","hash":{},"fn":container.program(2, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") - + ((stack1 = helpers.each.call(alias1,(depth0 != null ? depth0.linkShares : depth0),{"name":"each","hash":{},"fn":container.program(4, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") + + ((stack1 = helpers.each.call(alias1,(depth0 != null ? depth0.linkShares : depth0),{"name":"each","hash":{},"fn":container.program(7, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") + "</ul>\n"; },"2":function(container,depth0,helpers,partials,data) { - var 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 <div class=\"avatar icon-public-white\"></div>\n <span class=\"username\">" + return " <li data-share-id=\"new-share\">\n <div class=\"avatar icon-public-white\"></div>\n <span class=\"username\">" + alias4(((helper = (helper = helpers.newShareLabel || (depth0 != null ? depth0.newShareLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"newShareLabel","hash":{},"data":data}) : helper))) - + "</span>\n <span class=\"sharingOptionsGroup\">\n <span class=\"icon icon-add new-share has-tooltip\" title=\"" + + "</span>\n <span class=\"sharingOptionsGroup\">\n <div class=\"share-menu\">\n <a href=\"#\" class=\"icon icon-add new-share has-tooltip " + + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.showPending : depth0),{"name":"if","hash":{},"fn":container.program(3, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") + + "\" title=\"" + alias4(((helper = (helper = helpers.newShareTitle || (depth0 != null ? depth0.newShareTitle : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"newShareTitle","hash":{},"data":data}) : helper))) - + "\"></span>\n <span class=\"icon icon-loading-small hidden\"></span>\n </span>\n </li>\n"; -},"4":function(container,depth0,helpers,partials,data) { + + "\"></a>\n <span class=\"icon icon-loading-small " + + ((stack1 = helpers.unless.call(alias1,(depth0 != null ? depth0.showPending : depth0),{"name":"unless","hash":{},"fn":container.program(3, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") + + "\"></span>\n" + + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.showPending : depth0),{"name":"if","hash":{},"fn":container.program(5, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") + + " </div>\n </span>\n </li>\n"; +},"3":function(container,depth0,helpers,partials,data) { + return "hidden"; +},"5":function(container,depth0,helpers,partials,data) { + var stack1, helper; + + return " " + + ((stack1 = ((helper = (helper = helpers.pendingPopoverMenu || (depth0 != null ? depth0.pendingPopoverMenu : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"pendingPopoverMenu","hash":{},"data":data}) : helper))) != null ? stack1 : "") + + "\n"; +},"7":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 data-share-id=\"" @@ -28,27 +42,25 @@ templates['sharedialoglinkshareview'] = template({"1":function(container,depth0, + 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))) + "\" title=\"" + alias4(((helper = (helper = helpers.copyLabel || (depth0 != null ? depth0.copyLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"copyLabel","hash":{},"data":data}) : helper))) - + "\"></a>\n <div class=\"share-menu\" tabindex=\"0\"><span class=\"icon icon-more\"></span>\n" - + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.showPending : depth0),{"name":"if","hash":{},"fn":container.program(5, data, 0),"inverse":container.program(7, data, 0),"data":data})) != null ? stack1 : "") + + "\"></a>\n <div class=\"share-menu\">\n <a href=\"#\" class=\"icon icon-more " + + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.showPending : depth0),{"name":"if","hash":{},"fn":container.program(3, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") + + "\"></a>\n <span class=\"icon icon-loading-small " + + ((stack1 = helpers.unless.call(alias1,(depth0 != null ? depth0.showPending : depth0),{"name":"unless","hash":{},"fn":container.program(3, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") + + "\"></span>\n" + + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.showPending : depth0),{"name":"if","hash":{},"fn":container.program(5, data, 0),"inverse":container.program(8, data, 0),"data":data})) != null ? stack1 : "") + " </div>\n </span>\n </li>\n"; -},"5":function(container,depth0,helpers,partials,data) { - var stack1, helper; - - return " " - + ((stack1 = ((helper = (helper = helpers.pendingPopoverMenu || (depth0 != null ? depth0.pendingPopoverMenu : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"pendingPopoverMenu","hash":{},"data":data}) : helper))) != null ? stack1 : "") - + "\n"; -},"7":function(container,depth0,helpers,partials,data) { +},"8":function(container,depth0,helpers,partials,data) { var stack1, helper; return " " + ((stack1 = ((helper = (helper = helpers.popoverMenu || (depth0 != null ? depth0.popoverMenu : depth0)) != null ? helper : helpers.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"popoverMenu","hash":{},"data":data}) : helper))) != null ? stack1 : "") + "\n"; -},"9":function(container,depth0,helpers,partials,data) { +},"10":function(container,depth0,helpers,partials,data) { var stack1; - return ((stack1 = helpers["if"].call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? depth0.noSharingPlaceholder : depth0),{"name":"if","hash":{},"fn":container.program(10, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") + return ((stack1 = helpers["if"].call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? depth0.noSharingPlaceholder : depth0),{"name":"if","hash":{},"fn":container.program(11, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") + "\n"; -},"10":function(container,depth0,helpers,partials,data) { +},"11":function(container,depth0,helpers,partials,data) { var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=helpers.helperMissing, alias3="function", alias4=container.escapeExpression; return "<input id=\"shareWith-" @@ -59,12 +71,12 @@ templates['sharedialoglinkshareview'] = template({"1":function(container,depth0, },"compiler":[7,">= 4.0.0"],"main":function(container,depth0,helpers,partials,data) { var stack1; - return ((stack1 = helpers["if"].call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? depth0.shareAllowed : depth0),{"name":"if","hash":{},"fn":container.program(1, data, 0),"inverse":container.program(9, data, 0),"data":data})) != null ? stack1 : ""); + return ((stack1 = helpers["if"].call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? depth0.shareAllowed : depth0),{"name":"if","hash":{},"fn":container.program(1, data, 0),"inverse":container.program(10, data, 0),"data":data})) != null ? stack1 : ""); },"useData":true}); 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; - return " <li>\n <span class=\"shareOption menuitem\">\n <span class=\"icon-loading-small hidden\"></span>\n <input type=\"checkbox\" name=\"hideDownload\" id=\"sharingDialogHideDownload-" + return " <li>\n <span class=\"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 : "") @@ -78,7 +90,7 @@ templates['sharedialoglinkshareview_popover_menu'] = template({"1":function(cont },"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=\"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))) + "\" id=\"sharingDialogAllowPublicUpload-r-" + 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))) @@ -88,7 +100,7 @@ templates['sharedialoglinkshareview_popover_menu'] = template({"1":function(cont + 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.publicUploadRLabel || (depth0 != null ? depth0.publicUploadRLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"publicUploadRLabel","hash":{},"data":data}) : helper))) - + "</label>\n </span>\n </li>\n <li>\n <span class=\"shareOption menuitem\">\n <span class=\"icon-loading-small hidden\"></span>\n <input type=\"radio\" name=\"publicUpload\" value=\"" + + "</label>\n </span>\n </li>\n <li>\n <span class=\"menuitem\">\n <span class=\"icon-loading-small hidden\"></span>\n <input type=\"radio\" name=\"publicUpload\" value=\"" + alias4(((helper = (helper = helpers.publicUploadRWValue || (depth0 != null ? depth0.publicUploadRWValue : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"publicUploadRWValue","hash":{},"data":data}) : helper))) + "\" id=\"sharingDialogAllowPublicUpload-rw-" + 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))) @@ -98,7 +110,7 @@ templates['sharedialoglinkshareview_popover_menu'] = template({"1":function(cont + 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.publicUploadRWLabel || (depth0 != null ? depth0.publicUploadRWLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"publicUploadRWLabel","hash":{},"data":data}) : helper))) - + "</label>\n </span></li>\n <li>\n <span class=\"shareOption menuitem\">\n <span class=\"icon-loading-small hidden\"></span>\n <input type=\"radio\" name=\"publicUpload\" value=\"" + + "</label>\n </span></li>\n <li>\n <span class=\"menuitem\">\n <span class=\"icon-loading-small hidden\"></span>\n <input type=\"radio\" name=\"publicUpload\" value=\"" + alias4(((helper = (helper = helpers.publicUploadWValue || (depth0 != null ? depth0.publicUploadWValue : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"publicUploadWValue","hash":{},"data":data}) : helper))) + "\" id=\"sharingDialogAllowPublicUpload-w-" + 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))) @@ -112,7 +124,7 @@ templates['sharedialoglinkshareview_popover_menu'] = template({"1":function(cont },"6":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 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=\"menuitem\">\n <span class=\"icon-loading-small hidden\"></span>\n <input type=\"checkbox\" name=\"allowPublicEditing\" id=\"sharingDialogAllowPublicEditing-" + 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 publicEditingCheckbox\" " + ((stack1 = ((helper = (helper = helpers.publicEditingChecked || (depth0 != null ? depth0.publicEditingChecked : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"publicEditingChecked","hash":{},"data":data}) : helper))) != null ? stack1 : "") @@ -124,7 +136,7 @@ templates['sharedialoglinkshareview_popover_menu'] = template({"1":function(cont },"8":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 <input type=\"checkbox\" name=\"showPassword\" id=\"showPassword-" + return " <li>\n <span class=\"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))) + "\" class=\"checkbox showPasswordCheckbox\"\n " + ((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 : "") @@ -136,7 +148,7 @@ templates['sharedialoglinkshareview_popover_menu'] = template({"1":function(cont + 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=\"" + ((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=\"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))) + "\" 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))) @@ -160,7 +172,7 @@ templates['sharedialoglinkshareview_popover_menu'] = template({"1":function(cont },"21":function(container,depth0,helpers,partials,data) { 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=\"menuitem pop-up\" data-url=\"" + alias4(((helper = (helper = helpers.url || (depth0 != null ? depth0.url : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"url","hash":{},"data":data}) : helper))) + "\" data-window=\"" + alias4(((helper = (helper = helpers.newWindow || (depth0 != null ? depth0.newWindow : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"newWindow","hash":{},"data":data}) : helper))) @@ -183,7 +195,7 @@ templates['sharedialoglinkshareview_popover_menu'] = template({"1":function(cont + ((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.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=\"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))) + "\" type=\"checkbox\" name=\"expirationDate\" class=\"expireDate checkbox\"\n " + ((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 : "") @@ -234,21 +246,15 @@ templates['sharedialoglinkshareview_popover_menu'] = template({"1":function(cont templates['sharedialoglinkshareview_popover_menu_pending'] = template({"1":function(container,depth0,helpers,partials,data) { var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=helpers.helperMissing, alias3="function", alias4=container.escapeExpression; - return " <li><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))) - + "\" checked=\"checked\" disabled class=\"checkbox showPasswordCheckbox\" 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.enablePasswordLabel || (depth0 != null ? depth0.enablePasswordLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"enablePasswordLabel","hash":{},"data":data}) : helper))) - + "</label>\n </span></li>\n <li class=\"linkPassMenu\"><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))) - + "\" class=\"linkPassText\" type=\"password\" placeholder=\"" + return " <li>\n <span class=\"menuitem icon-info\">\n <p>" + + alias4(((helper = (helper = helpers.enforcedPasswordLabel || (depth0 != null ? depth0.enforcedPasswordLabel : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"enforcedPasswordLabel","hash":{},"data":data}) : helper))) + + "</p>\n </span>\n </li>\n <li class=\"linkPassMenu\">\n <span class=\"menuitem\">\n <form autocomplete=\"off\" class=\"enforcedPassForm\">\n <input id=\"enforcedPassText\" required class=\"enforcedPassText\" type=\"password\"\n 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))) - + "\" autocomplete=\"new-password\" />\n <span class=\"icon icon-loading-small hidden\"></span>\n </span></li>\n"; + + "\" autocomplete=\"new-password\" minlength=\"4\" />\n <input type=\"submit\" value=\" \" class=\"primary icon-checkmark-white\">\n </form>\n </span>\n </li>\n"; },"compiler":[7,">= 4.0.0"],"main":function(container,depth0,helpers,partials,data) { var stack1; - return "<div class=\"popovermenu pendingpopover menu\">\n <ul>\n" + return "<div class=\"popovermenu open menu\">\n <ul>\n" + ((stack1 = helpers["if"].call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? depth0.isPasswordEnforced : depth0),{"name":"if","hash":{},"fn":container.program(1, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") + " </ul>\n</div>\n"; },"useData":true}); @@ -310,7 +316,7 @@ templates['sharedialogshareelistview'] = template({"1":function(container,depth0 },"6":function(container,depth0,helpers,partials,data) { var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=helpers.helperMissing, alias3="function", alias4=container.escapeExpression; - return " <span class=\"shareOption\">\n <input id=\"canEdit-" + return " <span>\n <input id=\"canEdit-" + 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.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"shareId","hash":{},"data":data}) : helper))) @@ -360,7 +366,7 @@ templates['sharedialogshareelistview_popover_menu'] = template({"1":function(con },"3":function(container,depth0,helpers,partials,data) { var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=helpers.helperMissing, alias3="function", alias4=container.escapeExpression; - return "\n <li>\n <span class=\"shareOption menuitem\">\n <input id=\"canShare-" + return "\n <li>\n <span class=\"menuitem\">\n <input id=\"canShare-" + 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.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"shareId","hash":{},"data":data}) : helper))) @@ -394,7 +400,7 @@ templates['sharedialogshareelistview_popover_menu'] = template({"1":function(con },"8":function(container,depth0,helpers,partials,data) { var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=helpers.helperMissing, alias3="function", alias4=container.escapeExpression; - return "\n <li>\n <span class=\"shareOption menuitem\">\n <input id=\"canCreate-" + return "\n <li>\n <span class=\"menuitem\">\n <input id=\"canCreate-" + 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.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"shareId","hash":{},"data":data}) : helper))) @@ -416,7 +422,7 @@ templates['sharedialogshareelistview_popover_menu'] = template({"1":function(con },"11":function(container,depth0,helpers,partials,data) { var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=helpers.helperMissing, alias3="function", alias4=container.escapeExpression; - return "\n <li>\n <span class=\"shareOption menuitem\">\n <input id=\"canUpdate-" + return "\n <li>\n <span class=\"menuitem\">\n <input id=\"canUpdate-" + 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.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"shareId","hash":{},"data":data}) : helper))) @@ -438,7 +444,7 @@ templates['sharedialogshareelistview_popover_menu'] = template({"1":function(con },"14":function(container,depth0,helpers,partials,data) { var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=helpers.helperMissing, alias3="function", alias4=container.escapeExpression; - return "\n <li>\n <span class=\"shareOption menuitem\">\n <input id=\"canDelete-" + return "\n <li>\n <span class=\"menuitem\">\n <input id=\"canDelete-" + 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.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"shareId","hash":{},"data":data}) : helper))) @@ -457,7 +463,7 @@ templates['sharedialogshareelistview_popover_menu'] = template({"1":function(con var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=helpers.helperMissing, alias3="function", alias4=container.escapeExpression; return ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.hasCreatePermission : depth0),{"name":"if","hash":{},"fn":container.program(17, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") - + " <li>\n <span class=\"shareOption menuitem\">\n <input id=\"password-" + + " <li>\n <span class=\"menuitem\">\n <input id=\"password-" + 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.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"shareId","hash":{},"data":data}) : helper))) @@ -501,7 +507,7 @@ templates['sharedialogshareelistview_popover_menu'] = template({"1":function(con },"17":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 <input id=\"secureDrop-" + return " <li>\n <span class=\"menuitem\">\n <input id=\"secureDrop-" + 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.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"shareId","hash":{},"data":data}) : helper))) @@ -527,7 +533,7 @@ templates['sharedialogshareelistview_popover_menu'] = template({"1":function(con },"24":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 <input id=\"passwordByTalk-" + return " <li>\n <span class=\"menuitem\">\n <input id=\"passwordByTalk-" + 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.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"shareId","hash":{},"data":data}) : helper))) @@ -596,7 +602,7 @@ templates['sharedialogshareelistview_popover_menu'] = template({"1":function(con + "\n" + ((stack1 = helpers["if"].call(alias1,(depth0 != null ? depth0.isFolder : 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.isMailShare : depth0),{"name":"if","hash":{},"fn":container.program(16, data, 0),"inverse":container.noop,"data":data})) != null ? stack1 : "") - + " <li>\n <span class=\"shareOption menuitem\">\n <input id=\"expireDate-" + + " <li>\n <span class=\"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.shareId || (depth0 != null ? depth0.shareId : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"shareId","hash":{},"data":data}) : helper))) |