summaryrefslogtreecommitdiff
path: root/addons/mail/static/src/js/activity.js
diff options
context:
space:
mode:
authorChristophe Simonis <chs@odoo.com>2018-09-10 19:21:57 +0200
committerChristophe Simonis <chs@odoo.com>2018-09-10 19:21:57 +0200
commit826cd9b3d3281fa78bf7a8b10d2ca1efff87d703 (patch)
tree538e6b7162ba66be03958ddf5f7b7cf027b98a75 /addons/mail/static/src/js/activity.js
parent4850fb08385de3f0851a732c97c90402e89838b7 (diff)
parentc3ea0a781132b6bb4c00e7856b2e0aa1b5c20f28 (diff)
[MERGE] forward port branch 11.0 up to c3ea0a78113
Diffstat (limited to 'addons/mail/static/src/js/activity.js')
-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');
}
},