parent
7186975e35
commit
e7f07ba02e
5 changed files with 187 additions and 70 deletions
|
@ -32,6 +32,7 @@
|
|||
"sharedialogview.js",
|
||||
"sharedialogexpirationview.js",
|
||||
"sharedialoglinkshareview.js",
|
||||
"sharedialogmailview.js",
|
||||
"sharedialogresharerinfoview.js",
|
||||
"sharedialogshareelistview.js",
|
||||
"octemplate.js",
|
||||
|
|
|
@ -40,12 +40,6 @@
|
|||
'<label for="sharingDialogAllowPublicUpload-{{cid}}">{{publicUploadLabel}}</label>' +
|
||||
'</div>' +
|
||||
' {{/if}}' +
|
||||
' {{#if mailPublicNotificationEnabled}}' +
|
||||
'<form id="emailPrivateLink" class="emailPrivateLinkForm">' +
|
||||
' <input id="email" class="emailField" value="" placeholder="{{mailPrivatePlaceholder}}" type="text" />' +
|
||||
' <input id="emailButton" class="emailButton" type="submit" value="{{mailButtonText}}" />' +
|
||||
'</form>' +
|
||||
' {{/if}}' +
|
||||
'{{else}}' +
|
||||
// FIXME: this doesn't belong in this view
|
||||
'{{#if noSharingPlaceholder}}<input id="shareWith-{{cid}}" class="shareWithField" type="text" placeholder="{{noSharingPlaceholder}}" disabled="disabled"/>{{/if}}' +
|
||||
|
@ -76,7 +70,6 @@
|
|||
showLink: true,
|
||||
|
||||
events: {
|
||||
'submit .emailPrivateLinkForm': '_onEmailPrivateLink',
|
||||
'focusout input.linkPassText': 'onPasswordEntered',
|
||||
'keyup input.linkPassText': 'onPasswordKeyUp',
|
||||
'click .linkCheckbox': 'onLinkCheckBoxChange',
|
||||
|
@ -112,7 +105,6 @@
|
|||
|
||||
_.bindAll(
|
||||
this,
|
||||
'_onEmailPrivateLink',
|
||||
'onLinkCheckBoxChange',
|
||||
'onPasswordEntered',
|
||||
'onPasswordKeyUp',
|
||||
|
@ -218,34 +210,6 @@
|
|||
});
|
||||
},
|
||||
|
||||
_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();
|
||||
|
@ -299,39 +263,6 @@
|
|||
mailButtonText: t('core', 'Send')
|
||||
}));
|
||||
|
||||
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 );
|
||||
};
|
||||
}
|
||||
|
||||
// TODO drop with IE8 drop
|
||||
if($('html').hasClass('ie8')) {
|
||||
this.$el.find('#linkPassText').removeAttr('placeholder');
|
||||
this.$el.find('#linkPassText').val('');
|
||||
}
|
||||
|
||||
this.delegateEvents();
|
||||
|
||||
return this;
|
||||
|
|
176
core/js/sharedialogmailview.js
Normal file
176
core/js/sharedialogmailview.js
Normal file
|
@ -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;
|
||||
|
||||
})();
|
|
@ -26,6 +26,7 @@
|
|||
'<div class="shareeListView subView"></div>' +
|
||||
'<div class="linkShareView subView"></div>' +
|
||||
'<div class="expirationView subView"></div>' +
|
||||
'<div class="mailView subView"></div>' +
|
||||
'<div class="loading hidden" style="height: 50px"></div>';
|
||||
|
||||
var TEMPLATE_REMOTE_SHARE_INFO =
|
||||
|
@ -67,6 +68,9 @@
|
|||
/** @type {object} **/
|
||||
shareeListView: undefined,
|
||||
|
||||
/** @type {object} **/
|
||||
mailView: undefined,
|
||||
|
||||
events: {
|
||||
'input .shareWithField': 'onShareWithFieldChanged'
|
||||
},
|
||||
|
@ -103,7 +107,8 @@
|
|||
resharerInfoView: 'ShareDialogResharerInfoView',
|
||||
linkShareView: 'ShareDialogLinkShareView',
|
||||
expirationView: 'ShareDialogExpirationView',
|
||||
shareeListView: 'ShareDialogShareeListView'
|
||||
shareeListView: 'ShareDialogShareeListView',
|
||||
mailView: 'ShareDialogMailView'
|
||||
};
|
||||
|
||||
for(var name in subViews) {
|
||||
|
@ -360,6 +365,9 @@
|
|||
this.shareeListView.$el = this.$el.find('.shareeListView');
|
||||
this.shareeListView.render();
|
||||
|
||||
this.mailView.$el = this.$el.find('.mailView');
|
||||
this.mailView.render();
|
||||
|
||||
this.$el.find('.hasTooltip').tooltip();
|
||||
|
||||
return this;
|
||||
|
|
|
@ -90,6 +90,7 @@ class Share extends Constants {
|
|||
\OC_Util::addScript('core', 'shareitemmodel');
|
||||
\OC_Util::addScript('core', 'sharedialogresharerinfoview');
|
||||
\OC_Util::addScript('core', 'sharedialoglinkshareview');
|
||||
\OC_Util::addScript('core', 'sharedialogmailview');
|
||||
\OC_Util::addScript('core', 'sharedialogexpirationview');
|
||||
\OC_Util::addScript('core', 'sharedialogshareelistview');
|
||||
\OC_Util::addScript('core', 'sharedialogview');
|
||||
|
|
Loading…
Reference in a new issue