From 74d0339fb0138485d5f3ca21ca91abfa480a31dd Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Wed, 14 Sep 2011 14:13:05 +0200 Subject: [PATCH] [ADD] base res_log display bzr revid: xmo@openerp.com-20110914121305-mcey8e3t36omkr2k --- addons/web/static/src/css/base.css | 15 ++++++++ addons/web/static/src/js/core.js | 1 + addons/web/static/src/js/form.js | 2 +- addons/web/static/src/js/list.js | 4 +-- addons/web/static/src/js/views.js | 35 ++++++++++++++++--- addons/web/static/src/xml/base.xml | 3 ++ .../web_dashboard/static/src/js/dashboard.js | 2 +- addons/web_kanban/static/src/js/kanban.js | 2 +- 8 files changed, 53 insertions(+), 11 deletions(-) diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css index 433cdd2e638..7c6e8432950 100644 --- a/addons/web/static/src/css/base.css +++ b/addons/web/static/src/css/base.css @@ -1013,6 +1013,21 @@ label.error { text-decoration: underline; color: inherit; } +.openerp .oe-view-manager-logs { + font-size: 85%; + margin: 0.5em 0; + background: #fff; + padding: 0 10px; + color: #4C4C4C; + list-style: none; +} +.openerp .oe-view-manager-logs li:before { + content: '→'; +} +.openerp .oe-view-manager-logs a { + text-decoration: none; + color: inherit; +} .openerp .view-manager-main-sidebar { width: 180px; diff --git a/addons/web/static/src/js/core.js b/addons/web/static/src/js/core.js index f279a7d23d7..6462529d0c9 100644 --- a/addons/web/static/src/js/core.js +++ b/addons/web/static/src/js/core.js @@ -888,6 +888,7 @@ openerp.web.Widget = openerp.web.SessionAware.extend(/** @lends openerp.web.Widg * If that's not the case this method will simply return `false`. */ do_action: function(action, on_finished) { + console.log('Widget.do_action', action, on_finished); if (this.widget_parent) { return this.widget_parent.do_action(action, on_finished); } diff --git a/addons/web/static/src/js/form.js b/addons/web/static/src/js/form.js index 7bb4c7aa392..ff8e695278e 100644 --- a/addons/web/static/src/js/form.js +++ b/addons/web/static/src/js/form.js @@ -836,7 +836,7 @@ openerp.web.form.WidgetButton = openerp.web.form.Widget.extend({ on_confirmed: function() { var self = this; - this.view.execute_action( + this.view.do_execute_action( this.node.attrs, this.view.dataset, this.view.datarecord.id, function () { self.view.reload(); }); diff --git a/addons/web/static/src/js/list.js b/addons/web/static/src/js/list.js index 95a8207144b..60ba22dc68c 100644 --- a/addons/web/static/src/js/list.js +++ b/addons/web/static/src/js/list.js @@ -41,8 +41,6 @@ openerp.web.ListView = openerp.web.View.extend( /** @lends openerp.web.ListView# * @param {void|String} [options.addable="New"] should the new-record button be displayed, and what should its label be. Use ``null`` to hide the button. * @param {Boolean} [options.sortable=true] is it possible to sort the table by clicking on column headers * @param {Boolean} [options.reorderable=true] is it possible to reorder list rows - * - * @borrows openerp.web.ActionExecutor#execute_action as #execute_action */ init: function(parent, element_id, dataset, view_id, options) { var self = this; @@ -490,7 +488,7 @@ openerp.web.ListView = openerp.web.View.extend( /** @lends openerp.web.ListView# return field.name === name; }); if (!action) { return; } - this.execute_action(action, this.dataset, id, callback); + this.do_execute_action(action, this.dataset, id, callback); }, /** * Handles the activation of a record (clicking on it) diff --git a/addons/web/static/src/js/views.js b/addons/web/static/src/js/views.js index 5048f18d4c2..b113c60afd3 100644 --- a/addons/web/static/src/js/views.js +++ b/addons/web/static/src/js/views.js @@ -297,7 +297,11 @@ openerp.web.ViewManager = openerp.web.Widget.extend(/** @lends openerp.web.View on_remove: function() { }, on_edit: function() { - } + }, + /** + * Called by children view after executing an action + */ + on_action_executed: function () {} }); openerp.web.ViewManagerAction = openerp.web.ViewManager.extend(/** @lends oepnerp.web.ViewManagerAction# */{ @@ -446,6 +450,23 @@ openerp.web.ViewManagerAction = openerp.web.ViewManager.extend(/** @lends oepner $shortcut_toggle.addClass("oe-shortcut-remove"); } }); + }, + /** + * Intercept do_action resolution from children views + */ + on_action_executed: function () { + new openerp.web.DataSet(this, 'res.log') + .call('get', [], this.do_display_log); + }, + /** + * @param {Array} log_records + */ + do_display_log: function (log_records) { + var logs = this.$element.find('ul.oe-view-manager-logs:first').empty(); + _(log_records).each(function (record) { + // TODO: fix link: bind action? + logs.append(_.sprintf('
  • %s
  • ', record.name)); + }); } }); @@ -721,8 +742,12 @@ openerp.web.View = openerp.web.Widget.extend(/** @lends openerp.web.View# */{ * @param {Object} [record_id] the identifier of the object on which the action is to be applied * @param {Function} on_closed callback to execute when dialog is closed or when the action does not generate any result (no new action) */ - execute_action: function (action_data, dataset, record_id, on_closed) { + do_execute_action: function (action_data, dataset, record_id, on_closed) { var self = this; + var result_handler = function () { + if (on_closed) { on_closed.apply(null, arguments); } + self.widget_parent.on_action_executed.apply(null, arguments); + }; var handler = function (r) { var action = r.result; if (action && action.constructor == Object) { @@ -733,9 +758,9 @@ openerp.web.View = openerp.web.Widget.extend(/** @lends openerp.web.View# */{ active_model: dataset.model }); action.context = new openerp.web.CompoundContext(dataset.get_context(), action.context); - self.do_action(action, on_closed); - } else if (on_closed) { - on_closed(action); + self.do_action(action, result_handler); + } else { + result_handler(); } }; diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index 69ead1d2c32..bf91e2d65e4 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -461,6 +461,9 @@ + +
      +
      diff --git a/addons/web_dashboard/static/src/js/dashboard.js b/addons/web_dashboard/static/src/js/dashboard.js index 9fe904319f9..b2d1eab5377 100644 --- a/addons/web_dashboard/static/src/js/dashboard.js +++ b/addons/web_dashboard/static/src/js/dashboard.js @@ -333,7 +333,7 @@ openerp.web_dashboard.ConfigOverview = openerp.web.View.extend({ }); }) .delegate('li:not(.oe-done)', 'click', function () { - self.widget_parent.widget_parent.widget_parent.execute_action({ + self.widget_parent.widget_parent.widget_parent.do_execute_action({ type: 'object', name: 'action_launch' }, self.dataset, diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index dfaf7769df5..d90f4bc5ed8 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -224,7 +224,7 @@ openerp.web_kanban.KanbanView = openerp.web.View.extend({ }, on_execute_button_click: function (dataset, button_attrs, record_id) { var self = this; - this.execute_action( + this.do_execute_action( button_attrs, dataset, record_id, function () { var count = 1;