summaryrefslogtreecommitdiff
path: root/addons/mail/static/src
diff options
context:
space:
mode:
Diffstat (limited to 'addons/mail/static/src')
-rw-r--r--addons/mail/static/src/js/activity.js35
1 files changed, 27 insertions, 8 deletions
diff --git a/addons/mail/static/src/js/activity.js b/addons/mail/static/src/js/activity.js
index fce7eb29f6f..6e66d73ea07 100644
--- a/addons/mail/static/src/js/activity.js
+++ b/addons/mail/static/src/js/activity.js
@@ -187,6 +187,28 @@ var Activity = AbstractActivityField.extend({
this.trigger_up('reload_mail_fields', fieldsToReload);
},
+ /** Binds a focusout handler on a bootstrap popover
+ * Useful to do some operations on the popover's HTML,
+ * like keeping the user's input for the feedback
+ * @param {JQuery} $popover_el: the element on which
+ * the popover() method has been called
+ */
+ _bindPopoverFocusout: function ($popover_el) {
+ var self = this;
+ // Retrieve the actual popover's HTML
+ var $popover = $popover_el.data("bs.popover").tip();
+ var activity_id = $popover_el.data('activity-id');
+ $popover.off('focusout');
+ $popover.focusout(function (e) {
+ // outside click of popover hides the popover
+ // e.relatedTarget is the element receiving the focus
+ self.feedbackValue[activity_id] = $popover.find('#activity_feedback').val().trim();
+ if(!$popover.is(e.relatedTarget) && !$popover.find(e.relatedTarget).length) {
+ $popover_el.popover('hide');
+ }
+ });
+ },
+
// handlers
_onClickRedirect: function (ev) {
var id = $(ev.target).data('oe-id');
@@ -236,19 +258,23 @@ var Activity = AbstractActivityField.extend({
})
.then(this._reload.bind(this, {activity: true}));
},
+
_onMarkActivityDone: function (event) {
event.preventDefault();
var self = this;
+ this.feedbackValue = this.feedbackValue || {};
var $popover_el = $(event.currentTarget);
var activity_id = $popover_el.data('activity-id');
var previous_activity_type_id = $popover_el.data('previous-activity-type-id');
if (!$popover_el.data('bs.popover')) {
+ this.feedbackValue[activity_id] = "";
$popover_el.popover({
title : _t('Feedback'),
html: 'true',
trigger:'click',
content : function() {
var $popover = $(QWeb.render("mail.activity_feedback_form", {'previous_activity_type_id': previous_activity_type_id}));
+ $popover.find('#activity_feedback').val(self.feedbackValue[activity_id]);
$popover.on('click', '.o_activity_popover_done_next', function () {
var feedback = _.escape($popover.find('#activity_feedback').val());
var previous_activity_type_id = $popover_el.data('previous-activity-type-id');
@@ -272,14 +298,7 @@ var Activity = AbstractActivityField.extend({
}).on("shown.bs.popover", function () {
var $popover = $(this).data("bs.popover").tip();
$popover.find('#activity_feedback').focus();
- $popover.off('focusout');
- $popover.focusout(function (e) {
- // outside click of popover hide the popover
- // e.relatedTarget is the element receiving the focus
- if(!$popover.is(e.relatedTarget) && !$popover.find(e.relatedTarget).length) {
- $popover.popover('hide');
- }
- });
+ self._bindPopoverFocusout($(this));
}).popover('show');
}
},