Browse Source
extract mail view for sending share invitations
extract mail view for sending share invitations
fixes #22947remotes/origin/open-menus-on-hover
committed by
Christoph Wurst
No known key found for this signature in database
GPG Key ID: FEECD2543CA6EAF0
5 changed files with 187 additions and 70 deletions
-
1core/js/core.json
-
69core/js/sharedialoglinkshareview.js
-
176core/js/sharedialogmailview.js
-
10core/js/sharedialogview.js
-
1lib/private/share/share.php
@ -0,0 +1,176 @@ |
|||
/* |
|||
* Copyright (c) 2016 |
|||
* |
|||
* This file is licensed under the Affero General Public License version 3 |
|||
* or later. |
|||
* |
|||
* See the COPYING-README file. |
|||
* |
|||
*/ |
|||
|
|||
(function() { |
|||
if (!OC.Share) { |
|||
OC.Share = {}; |
|||
} |
|||
|
|||
var TEMPLATE = |
|||
'{{#if shareAllowed}}' + |
|||
' {{#if mailPublicNotificationEnabled}}' + |
|||
'<form id="emailPrivateLink" class="emailPrivateLinkForm">' + |
|||
' <input id="email" class="emailField" value="{{email}}" placeholder="{{mailPrivatePlaceholder}}" type="text" />' + |
|||
' <input id="emailButton" class="emailButton" type="submit" value="{{mailButtonText}}" />' + |
|||
'</form>' + |
|||
' {{/if}}' + |
|||
'{{/if}}' |
|||
; |
|||
|
|||
/** |
|||
* @class OCA.Share.ShareDialogMailView |
|||
* @member {OC.Share.ShareItemModel} model |
|||
* @member {jQuery} $el |
|||
* @memberof OCA.Sharing |
|||
* @classdesc |
|||
* |
|||
* Represents the GUI of the share dialogue |
|||
* |
|||
*/ |
|||
var ShareDialogMailView = OC.Backbone.View.extend({ |
|||
/** @type {string} **/ |
|||
id: 'shareDialogMailView', |
|||
|
|||
/** @type {OC.Share.ShareConfigModel} **/ |
|||
configModel: undefined, |
|||
|
|||
/** @type {Function} **/ |
|||
_template: undefined, |
|||
|
|||
/** @type {boolean} **/ |
|||
showLink: true, |
|||
|
|||
events: { |
|||
'submit .emailPrivateLinkForm': '_onEmailPrivateLink' |
|||
}, |
|||
|
|||
initialize: function(options) { |
|||
var view = this; |
|||
|
|||
this.model.on('change:linkShare', function() { |
|||
view.render(); |
|||
}); |
|||
|
|||
if(!_.isUndefined(options.configModel)) { |
|||
this.configModel = options.configModel; |
|||
} else { |
|||
throw 'missing OC.Share.ShareConfigModel'; |
|||
} |
|||
|
|||
_.bindAll( |
|||
this, |
|||
'_onEmailPrivateLink' |
|||
); |
|||
}, |
|||
|
|||
_onEmailPrivateLink: function(event) { |
|||
event.preventDefault(); |
|||
|
|||
var $emailField = this.$el.find('.emailField'); |
|||
var $emailButton = this.$el.find('.emailButton'); |
|||
var email = $emailField.val(); |
|||
if (email !== '') { |
|||
$emailField.prop('disabled', true); |
|||
$emailButton.prop('disabled', true); |
|||
$emailField.val(t('core', 'Sending ...')); |
|||
this.model.sendEmailPrivateLink(email).done(function() { |
|||
$emailField.css('font-weight', 'bold').val(t('core','Email sent')); |
|||
setTimeout(function() { |
|||
$emailField.val(''); |
|||
$emailField.css('font-weight', 'normal'); |
|||
$emailField.prop('disabled', false); |
|||
$emailButton.prop('disabled', false); |
|||
}, 2000); |
|||
}).fail(function() { |
|||
$emailField.val(email); |
|||
$emailField.css('font-weight', 'normal'); |
|||
$emailField.prop('disabled', false); |
|||
$emailButton.prop('disabled', false); |
|||
}); |
|||
} |
|||
return false; |
|||
}, |
|||
|
|||
render: function() { |
|||
var linkShareTemplate = this.template(); |
|||
var resharingAllowed = this.model.sharePermissionPossible(); |
|||
var email = this.$el.find('.emailField').val(); |
|||
|
|||
if(!resharingAllowed |
|||
|| !this.showLink |
|||
|| !this.configModel.isShareWithLinkAllowed()) |
|||
{ |
|||
var templateData = {shareAllowed: false}; |
|||
if (!resharingAllowed) { |
|||
// add message
|
|||
templateData.noSharingPlaceholder = t('core', 'Resharing is not allowed'); |
|||
} |
|||
this.$el.html(linkShareTemplate(templateData)); |
|||
return this; |
|||
} |
|||
|
|||
var isLinkShare = this.model.get('linkShare').isLinkShare; |
|||
|
|||
this.$el.html(linkShareTemplate({ |
|||
cid: this.cid, |
|||
shareAllowed: true, |
|||
mailPublicNotificationEnabled: isLinkShare && this.configModel.isMailPublicNotificationEnabled(), |
|||
mailPrivatePlaceholder: t('core', 'Email link to person'), |
|||
mailButtonText: t('core', 'Send link via email'), |
|||
email: email |
|||
})); |
|||
|
|||
var $emailField = this.$el.find('.emailField'); |
|||
if (isLinkShare && $emailField.length !== 0) { |
|||
$emailField.autocomplete({ |
|||
minLength: 1, |
|||
source: function (search, response) { |
|||
$.get( |
|||
OC.generateUrl('core/ajax/share.php'), { |
|||
fetch: 'getShareWithEmail', |
|||
search: search.term |
|||
}, function(result) { |
|||
if (result.status == 'success' && result.data.length > 0) { |
|||
response(result.data); |
|||
} |
|||
}); |
|||
}, |
|||
select: function( event, item ) { |
|||
$emailField.val(item.item.email); |
|||
return false; |
|||
} |
|||
}) |
|||
.data("ui-autocomplete")._renderItem = function( ul, item ) { |
|||
return $('<li>') |
|||
.append('<a>' + escapeHTML(item.displayname) + "<br>" + escapeHTML(item.email) + '</a>' ) |
|||
.appendTo( ul ); |
|||
}; |
|||
} |
|||
this.delegateEvents(); |
|||
|
|||
return this; |
|||
}, |
|||
|
|||
/** |
|||
* @returns {Function} from Handlebars |
|||
* @private |
|||
*/ |
|||
template: function () { |
|||
if (!this._template) { |
|||
this._template = Handlebars.compile(TEMPLATE); |
|||
} |
|||
return this._template; |
|||
} |
|||
|
|||
}); |
|||
|
|||
OC.Share.ShareDialogMailView = ShareDialogMailView; |
|||
|
|||
})(); |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue