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