123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 |
- /*
- * 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;
- })();
|