diff --git a/apps/files_sharing/css/sharetabview.scss b/apps/files_sharing/css/sharetabview.scss
index 61a310447d..14be956222 100644
--- a/apps/files_sharing/css/sharetabview.scss
+++ b/apps/files_sharing/css/sharetabview.scss
@@ -180,8 +180,8 @@
display: block;
.icon-more {
padding: 14px;
- height: 16px;
- width: 16px;
+ height: 44px;
+ width: 44px;
opacity: .5;
display: block;
cursor: pointer;
diff --git a/core/js/sharedialoglinkshareview.js b/core/js/sharedialoglinkshareview.js
index 0b2fec5588..736404e268 100644
--- a/core/js/sharedialoglinkshareview.js
+++ b/core/js/sharedialoglinkshareview.js
@@ -30,9 +30,13 @@
' ' +
' ' +
' ' +
- ' {{#if isLinkShare}}' +
+ ' {{#if showMenu}}' +
'
' +
' {{/if}}' +
' ' +
@@ -83,7 +87,8 @@
'{{/if}}' +
'{{#if showPasswordCheckBox}}' +
' ' +
' ' +
'{{/if}}' +
'' +
- '' +
'' +
- '' +
- '' +
+ ' ' +
'' +
'' +
'' +
@@ -128,6 +134,23 @@
'' +
'';
+ // popovermenu waiting for password or expiration date before saving the share
+ var TEMPLATE_POPOVER_MENU_PENDING =
+ '';
+
/**
* @class OCA.Share.ShareDialogLinkShareView
* @member {OC.Share.ShareItemModel} model
@@ -151,22 +174,36 @@
/** @type {Function} **/
_popoverMenuTemplate: undefined,
+ /** @type {Function} **/
+ _pendingPopoverMenuTemplate: undefined,
+
/** @type {boolean} **/
showLink: true,
+ /** @type {boolean} **/
+ showPending: false,
+
events: {
+ // enable/disable
+ 'change .linkCheckbox': 'onLinkCheckBoxChange',
+ // open menu
+ 'click .share-menu .icon-more': 'onToggleMenu',
+ // password
'focusout input.linkPassText': 'onPasswordEntered',
'keyup input.linkPassText': 'onPasswordKeyUp',
- 'click .linkCheckbox': 'onLinkCheckBoxChange',
- 'click .linkText': 'onLinkTextClick',
+ 'change .showPasswordCheckbox': 'onShowPasswordClick',
'change .publicEditingCheckbox': 'onAllowPublicEditingChange',
- 'click .showPasswordCheckbox': 'onShowPasswordClick',
- 'click .share-menu .icon-more': 'onToggleMenu',
+ // copy link url
+ 'click .linkText': 'onLinkTextClick',
+ // social
'click .pop-up': 'onPopUpClick',
+ // permission change
'change .publicUploadRadio': 'onPublicUploadChange',
+ // expire date
'click .expireDate' : 'onExpireDateChange',
'change .datepicker': 'onChangeExpirationDate',
'click .datepicker' : 'showDatePicker',
+ // note
'click .share-add': 'showNoteForm',
'click .share-note-delete': 'deleteNote',
'click .share-note-submit': 'updateNote'
@@ -253,20 +290,26 @@
}
if($checkBox.is(':checked')) {
- if(this.configModel.get('enforcePasswordForPublicLink') === false && this.configModel.get('enableLinkPasswordByDefault') === false) {
+ if(this.configModel.get('enforcePasswordForPublicLink') === false) {
$loading.removeClass('hidden');
// this will create it
this.model.saveLinkShare();
+ $('.share-menu .icon-more').click();
+ $('.share-menu .icon-more + .popovermenu .clipboardButton').click();
} else {
- this.$el.find('.linkPass').slideToggle(OC.menuSpeed);
- this.$el.find('.linkPassText').focus();
+ // force the rendering of the menu
+ this.showPending = true;
+ this.render()
+ $('.share-menu .icon-more').click();
+ $('.share-menu .icon-more + .popovermenu input:eq(1)').focus()
}
} else {
if (this.model.get('linkShare').isLinkShare) {
$loading.removeClass('hidden');
this.model.removeLinkShare();
} else {
- this.$el.find('.linkPass').slideToggle(OC.menuSpeed);
+ this.showPending = false;
+ this.render()
}
}
},
@@ -388,8 +431,7 @@
var shareId = $li.data('share-id');
var $menu = $element.closest('li');
var $form = $menu.next('li.share-note-form');
-
- console.log($form.find('.share-note'));
+
$form.find('.share-note').val('');
$form.addClass('hidden');
@@ -492,6 +534,8 @@
var isLinkShare = this.model.get('linkShare').isLinkShare;
var isPasswordSet = !!this.model.get('linkShare').password;
+ var isPasswordEnforced = this.configModel.get('enforcePasswordForPublicLink')
+ var isPasswordEnabledByDefault = this.configModel.get('enableLinkPasswordByDefault') === true
var showPasswordCheckBox = isLinkShare
&& ( !this.configModel.get('enforcePasswordForPublicLink')
|| !this.model.get('linkShare').password);
@@ -565,7 +609,7 @@
passwordLabel: t('core', 'Password'),
passwordPlaceholder: isPasswordSet ? PASSWORD_PLACEHOLDER : PASSWORD_PLACEHOLDER_MESSAGE,
passwordPlaceholderInitial: passwordPlaceholderInitial,
- isPasswordSet: isPasswordSet,
+ isPasswordSet: isPasswordSet || isPasswordEnabledByDefault || isPasswordEnforced,
showPasswordCheckBox: showPasswordCheckBox,
publicUpload: publicUpload && isLinkShare,
publicEditing: publicEditable,
@@ -587,12 +631,23 @@
expirationDatePlaceholder: t('core', 'Expiration date'),
hasExpireDate: hasExpireDate,
isExpirationEnforced: isExpirationEnforced,
+ isPasswordEnforced: isPasswordEnforced,
expireDate: expireDate,
defaultExpireDate: moment().add(1, 'day').format('DD-MM-YYYY'), // Can't expire today
shareNote: this.model.get('linkShare').note,
addNoteLabel: t('core', 'Note to recipient'),
});
+ var pendingPopover = this.pendingPopoverMenuTemplate({
+ cid: this.model.get('linkShare').id,
+ enablePasswordLabel: t('core', 'Password protect'),
+ passwordLabel: t('core', 'Password'),
+ passwordPlaceholder: isPasswordSet ? PASSWORD_PLACEHOLDER : PASSWORD_PLACEHOLDER_MESSAGE,
+ passwordPlaceholderInitial: passwordPlaceholderInitial,
+ showPasswordCheckBox: showPasswordCheckBox,
+ isPasswordEnforced: isPasswordEnforced,
+ });
+
this.$el.html(linkShareTemplate({
cid: this.model.get('linkShare').id,
shareAllowed: true,
@@ -600,6 +655,9 @@
linkShareLabel: t('core', 'Share link'),
linkShareEnableLabel: t('core', 'Enable'),
popoverMenu: popover,
+ pendingPopoverMenu: pendingPopover,
+ showMenu: isLinkShare || this.showPending,
+ showPending: this.showPending && !isLinkShare
}));
this.delegateEvents();
@@ -645,6 +703,19 @@
return this._popoverMenuTemplate(data);
},
+ /**
+ * renders the pending popover template and returns the resulting HTML
+ *
+ * @param {Object} data
+ * @returns {string}
+ */
+ pendingPopoverMenuTemplate: function(data) {
+ if(!this._pendingPopoverMenuTemplate) {
+ this._pendingPopoverMenuTemplate = Handlebars.compile(TEMPLATE_POPOVER_MENU_PENDING);
+ }
+ return this._pendingPopoverMenuTemplate(data);
+ },
+
onPopUpClick: function(event) {
event.preventDefault();
event.stopPropagation();
@@ -701,7 +772,6 @@
self.setExpirationDate(expireDate);
}
});
- console.log(event, $(expirationDatePicker));
$(expirationDatePicker).datepicker('show');
$(expirationDatePicker).focus();