Signed-off-by: Bjoern Schiessle <bjoern@schiessle.org>pull/1978/head
parent
7da3ba3f91
commit
f556c58c22
@ -1,178 +0,0 @@ |
|||||||
/* |
|
||||||
* Copyright (c) 2016 |
|
||||||
* |
|
||||||
* This file is licensed under the Affero General Public License version 3 |
|
||||||
* or later. |
|
||||||
* |
|
||||||
* See the COPYING-README file. |
|
||||||
* |
|
||||||
*/ |
|
||||||
|
|
||||||
/* globals escapeHTML, Handlebars */ |
|
||||||
|
|
||||||
(function() { |
|
||||||
if (!OC.Share) { |
|
||||||
OC.Share = {}; |
|
||||||
} |
|
||||||
|
|
||||||
var TEMPLATE =
|
|
||||||
'{{#if shareAllowed}}' + |
|
||||||
' {{#if mailPublicNotificationEnabled}}' + |
|
||||||
'<form id="emailPrivateLink" class="emailPrivateLinkForm oneline">' + |
|
||||||
' <input id="email" class="emailField" value="{{email}}" placeholder="{{mailPrivatePlaceholder}}" type="text" />' + |
|
||||||
' <a id="emailButton" class="icon icon-mail hasTooltip" title="Send e-mail"></a>' + |
|
||||||
'</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: { |
|
||||||
'click #emailButton': '_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; |
|
||||||
|
|
||||||
})(); |
|
Loading…
Reference in new issue