diff options
| author | Christophe Simonis <chs@odoo.com> | 2018-09-10 19:21:57 +0200 |
|---|---|---|
| committer | Christophe Simonis <chs@odoo.com> | 2018-09-10 19:21:57 +0200 |
| commit | 826cd9b3d3281fa78bf7a8b10d2ca1efff87d703 (patch) | |
| tree | 538e6b7162ba66be03958ddf5f7b7cf027b98a75 /addons/mail/static/src/js/activity.js | |
| parent | 4850fb08385de3f0851a732c97c90402e89838b7 (diff) | |
| parent | c3ea0a781132b6bb4c00e7856b2e0aa1b5c20f28 (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.js | 35 |
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'); } }, |
