From d1a5c72972b056212053a0a8ee580afcffc0e30f Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Wed, 10 Aug 2011 12:38:36 +0200 Subject: [PATCH 01/32] [FIX] Fixed remaining references to session.action_manager bzr revid: fme@openerp.com-20110810103836-li6e7kx8tdk52iil --- addons/base/static/src/js/form.js | 3 +-- addons/base/static/src/js/list.js | 9 ++++----- addons/base/static/src/js/view_tree.js | 2 +- addons/base/static/src/js/views.js | 3 +-- addons/base_dashboard/static/src/js/dashboard.js | 1 - addons/base_graph/static/src/js/graph.js | 2 +- 6 files changed, 8 insertions(+), 12 deletions(-) diff --git a/addons/base/static/src/js/form.js b/addons/base/static/src/js/form.js index e488bb3dfa1..b6ce4b10bfb 100644 --- a/addons/base/static/src/js/form.js +++ b/addons/base/static/src/js/form.js @@ -767,8 +767,7 @@ openerp.base.form.WidgetButton = openerp.base.form.Widget.extend({ var self = this; this.view.execute_action( - this.node.attrs, this.view.dataset, this.session.action_manager, - this.view.datarecord.id, function () { + this.node.attrs, this.view.dataset, this.view.datarecord.id, function () { self.view.reload(); }); } diff --git a/addons/base/static/src/js/list.js b/addons/base/static/src/js/list.js index 11440a003b5..54612b360d4 100644 --- a/addons/base/static/src/js/list.js +++ b/addons/base/static/src/js/list.js @@ -460,11 +460,10 @@ openerp.base.ListView = openerp.base.View.extend( /** @lends openerp.base.ListVi return field.name === name; }); if (!action) { return; } - this.execute_action( - action, this.dataset, this.session.action_manager, id, function () { - $.when(callback.apply(this, arguments).then(function () { - self.compute_aggregates(); - })); + this.execute_action(action, this.dataset, id, function () { + $.when(callback.apply(this, arguments).then(function () { + self.compute_aggregates(); + })); }); }, /** diff --git a/addons/base/static/src/js/view_tree.js b/addons/base/static/src/js/view_tree.js index 05f58c077ff..9951d9429f8 100644 --- a/addons/base/static/src/js/view_tree.js +++ b/addons/base/static/src/js/view_tree.js @@ -177,7 +177,7 @@ openerp.base.TreeView = openerp.base.View.extend({ if (!actions.length) { return; } var action = actions[0][2]; action.flags.new_window = true; - self.session.action_manager.do_action(action); + self.do_action(action); }); }, diff --git a/addons/base/static/src/js/views.js b/addons/base/static/src/js/views.js index f3e0bf2fc64..dd81d87cd40 100644 --- a/addons/base/static/src/js/views.js +++ b/addons/base/static/src/js/views.js @@ -476,11 +476,10 @@ openerp.base.View = openerp.base.Widget.extend({ * @param {String} [action_data.type='workflow'] the action type, if present, one of ``'object'``, ``'action'`` or ``'workflow'`` * @param {Object} [action_data.context=null] additional action context, to add to the current context * @param {openerp.base.DataSet} dataset a dataset object used to communicate with the server - * @param {openerp.base.ActionManager} action_manager object able to actually execute the action, if any is fetched * @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, action_manager, record_id, on_closed) { + execute_action: function (action_data, dataset, record_id, on_closed) { var self = this; var handler = function (r) { var action = r.result; diff --git a/addons/base_dashboard/static/src/js/dashboard.js b/addons/base_dashboard/static/src/js/dashboard.js index d03923b19e4..b4e04dbd22a 100644 --- a/addons/base_dashboard/static/src/js/dashboard.js +++ b/addons/base_dashboard/static/src/js/dashboard.js @@ -333,7 +333,6 @@ openerp.base_dashboard.ConfigOverview = openerp.base.View.extend({ type: 'object', name: 'action_launch' }, self.dataset, - self.session.action_manager, $(this).data('id'), function () { // after action popup closed, refresh configuration // thingie diff --git a/addons/base_graph/static/src/js/graph.js b/addons/base_graph/static/src/js/graph.js index 25ce024638b..5ad85e4a8b0 100644 --- a/addons/base_graph/static/src/js/graph.js +++ b/addons/base_graph/static/src/js/graph.js @@ -442,7 +442,7 @@ openerp.base_graph.GraphView = openerp.base.View.extend({ } views.push(view); }); - this.session.action_manager.do_action({ + this.do_action({ "res_model" : this.dataset.model, "domain" : this.dataset.domain, "views" : views, From 85b1852aa6c7ca79b48ae294c53a96b9e0871966 Mon Sep 17 00:00:00 2001 From: Antony Lesuisse Date: Wed, 10 Aug 2011 13:49:14 +0200 Subject: [PATCH 02/32] [FIX] double action manager bzr revid: al@openerp.com-20110810114914-rnokf7v1mp8kmtu1 --- addons/base/static/src/js/chrome.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/addons/base/static/src/js/chrome.js b/addons/base/static/src/js/chrome.js index 822dc52b5c2..25949d375b3 100644 --- a/addons/base/static/src/js/chrome.js +++ b/addons/base/static/src/js/chrome.js @@ -374,6 +374,7 @@ openerp.base.Dialog = openerp.base.OldWidget.extend({ this.open(); } this._super(); + return this; }, open: function(dialog_options) { // TODO fme: bind window on resize @@ -988,6 +989,8 @@ openerp.base.WebClient = openerp.base.Widget.extend({ this.notification.notify("OpenERP Client", "The openerp client has been initialized."); }, on_logged: function() { + if(this.action_manager) + this.action_manager.stop(); this.action_manager = new openerp.base.ActionManager(this); this.action_manager.appendTo($("#oe_app")); From 52ba9d992d70e0fe5d45b63eee841183b6ce4325 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Wed, 10 Aug 2011 14:05:48 +0200 Subject: [PATCH 03/32] [REM] Removed auto open argument from Dialog#start() bzr revid: fme@openerp.com-20110810120548-697agu5xajf11tvx --- addons/base/static/src/js/chrome.js | 7 ++----- addons/base/static/src/js/views.js | 4 ++-- addons/base_calendar/static/src/js/calendar.js | 2 +- 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/addons/base/static/src/js/chrome.js b/addons/base/static/src/js/chrome.js index 25949d375b3..41f60be72c9 100644 --- a/addons/base/static/src/js/chrome.js +++ b/addons/base/static/src/js/chrome.js @@ -368,11 +368,8 @@ openerp.base.Dialog = openerp.base.OldWidget.extend({ return parseInt(val, 10); } }, - start: function (auto_open) { + start: function () { this.$dialog = $('
').dialog(this.dialog_options); - if (auto_open !== false) { - this.open(); - } this._super(); return this; }, @@ -964,7 +961,7 @@ openerp.base.WebClient = openerp.base.Widget.extend({ this.session = new openerp.base.Session(this,"oe_errors"); this.loading = new openerp.base.Loading(this,"oe_loading"); this.crashmanager = new openerp.base.CrashManager(this); - this.crashmanager.start(false); + this.crashmanager.start(); // Do you autorize this ? will be replaced by notify() in controller openerp.base.Widget.prototype.notification = new openerp.base.Notification(this, "oe_notification"); diff --git a/addons/base/static/src/js/views.js b/addons/base/static/src/js/views.js index dd81d87cd40..3b7374b7822 100644 --- a/addons/base/static/src/js/views.js +++ b/addons/base/static/src/js/views.js @@ -79,7 +79,7 @@ openerp.base.ActionManager = openerp.base.Widget.extend({ if (this.dialog == null) { this.dialog = new openerp.base.ActionDialog(this, { title: action.name, width: '80%' }); this.dialog.close_callback = on_closed; - this.dialog.start(false); + this.dialog.start(); this.dialog_viewmanager = new openerp.base.ViewManagerAction(this, action); this.dialog_viewmanager.appendTo(this.dialog.$element); this.dialog.open(); @@ -572,7 +572,7 @@ openerp.base.View = openerp.base.Widget.extend({ }, on_sidebar_export: function() { var export_view = new openerp.base.DataExport(this, this.dataset); - export_view.start(false); + export_view.start(); }, on_sidebar_translate: function() { }, diff --git a/addons/base_calendar/static/src/js/calendar.js b/addons/base_calendar/static/src/js/calendar.js index f488c083b84..8b92300a5f7 100644 --- a/addons/base_calendar/static/src/js/calendar.js +++ b/addons/base_calendar/static/src/js/calendar.js @@ -411,7 +411,7 @@ openerp.base_calendar.CalendarFormDialog = openerp.base.Dialog.extend({ this.view = view; }, start: function() { - this._super(false); + this._super(); this.form = new openerp.base.FormView(this, this.element_id, this.dataset, this.view_id, { sidebar: false, pager: false From 42b4e254db2eba34fb6788af0e6507e44f43bb5c Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Wed, 10 Aug 2011 14:16:25 +0200 Subject: [PATCH 04/32] [IMP] Reactivated date & datetime widgets bzr revid: fme@openerp.com-20110810121625-mxbmxmr8qdy10zu6 --- addons/base/static/src/js/form.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/addons/base/static/src/js/form.js b/addons/base/static/src/js/form.js index b6ce4b10bfb..2931bad659a 100644 --- a/addons/base/static/src/js/form.js +++ b/addons/base/static/src/js/form.js @@ -2319,10 +2319,8 @@ openerp.base.form.widgets = new openerp.base.Registry({ 'url' : 'openerp.base.form.FieldUrl', 'text' : 'openerp.base.form.FieldText', 'text_wiki' : 'openerp.base.form.FieldText', -// 'date' : 'openerp.base.form.FieldDate', -// 'datetime' : 'openerp.base.form.FieldDatetime', - 'date' : 'openerp.base.form.FieldChar', - 'datetime' : 'openerp.base.form.FieldChar', + 'date' : 'openerp.base.form.FieldDate', + 'datetime' : 'openerp.base.form.FieldDatetime', 'selection' : 'openerp.base.form.FieldSelection', 'many2one' : 'openerp.base.form.FieldMany2One', 'many2many' : 'openerp.base.form.FieldMany2Many', From bdacad5c2d1e9472932c60169ff7ebdd3422b4ab Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Wed, 10 Aug 2011 12:49:10 +0200 Subject: [PATCH 05/32] [IMP] make search boolean field inherit from selection bzr revid: xmo@openerp.com-20110810104910-sz4236szqt5pmjst --- addons/base/static/src/js/search.js | 76 ++++++++++++++++------------- 1 file changed, 42 insertions(+), 34 deletions(-) diff --git a/addons/base/static/src/js/search.js b/addons/base/static/src/js/search.js index 0a1f2396123..4eb8c83eeb4 100644 --- a/addons/base/static/src/js/search.js +++ b/addons/base/static/src/js/search.js @@ -624,39 +624,6 @@ openerp.base.search.CharField = openerp.base.search.Field.extend( /** @lends ope return this.$element.val(); } }); -openerp.base.search.BooleanField = openerp.base.search.Field.extend({ - template: 'SearchView.field.selection', - init: function () { - this._super.apply(this, arguments); - this.attrs.selection = [ - ['true', 'Yes'], - ['false', 'No'] - ]; - }, - /** - * Search defaults likely to be boolean values (for a boolean field). - * - * In the HTML, we only get strings, and our strings here are - * 'true' and 'false', so ensure we get only - * those by truth-testing the default value. - * - * @param {Object} defaults default values for this search view - */ - render: function (defaults) { - var name = this.attrs.name; - if (name in defaults) { - defaults[name] = defaults[name] ? "true" : "false"; - } - return this._super(defaults); - }, - get_value: function () { - switch (this.$element.val()) { - case 'false': return false; - case 'true': return true; - default: return null; - } - } -}); openerp.base.search.NumberField = openerp.base.search.Field.extend(/** @lends openerp.base.search.NumberField# */{ get_value: function () { if (!this.$element.val()) { @@ -693,12 +660,53 @@ openerp.base.search.FloatField = openerp.base.search.NumberField.extend(/** @len return parseFloat(value); } }); -openerp.base.search.SelectionField = openerp.base.search.Field.extend({ +/** + * @class + * @extends openerp.base.search.Field + */ +openerp.base.search.SelectionField = openerp.base.search.Field.extend(/** @lends openerp.base.search.SelectionField# */{ template: 'SearchView.field.selection', get_value: function () { return this.$element.val(); } }); +openerp.base.search.BooleanField = openerp.base.search.SelectionField.extend(/** @lends openerp.base.search.BooleanField# */{ + /** + * @constructs + * @extends openerp.base.search.BooleanField + */ + init: function () { + this._super.apply(this, arguments); + this.attrs.selection = [ + ['true', 'Yes'], + ['false', 'No'] + ]; + }, + /** + * Search defaults likely to be boolean values (for a boolean field). + * + * In the HTML, we only want/get strings, and our strings here are ``true`` + * and ``false``, so ensure we use precisely those by truth-testing the + * default value (iif there is one in the view's defaults). + * + * @param {Object} defaults default values for this search view + * @returns {String} rendered boolean field + */ + render: function (defaults) { + var name = this.attrs.name; + if (name in defaults) { + defaults[name] = defaults[name] ? "true" : "false"; + } + return this._super(defaults); + }, + get_value: function () { + switch (this.$element.val()) { + case 'false': return false; + case 'true': return true; + default: return null; + } + } +}); openerp.base.search.DateField = openerp.base.search.Field.extend( /** @lends openerp.base.search.DateField# */{ template: 'SearchView.fields.date', /** From f7369a8de722855d95d83b004ce749dd44200be7 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Wed, 10 Aug 2011 13:00:55 +0200 Subject: [PATCH 06/32] [IMP] make date field a single-component field, domained by equality bzr revid: xmo@openerp.com-20110810110055-y2zmsn33lfbeksct --- addons/base/static/src/js/search.js | 63 ++--------------------------- addons/base/static/src/xml/base.xml | 16 -------- 2 files changed, 4 insertions(+), 75 deletions(-) diff --git a/addons/base/static/src/js/search.js b/addons/base/static/src/js/search.js index 4eb8c83eeb4..084f9effdb7 100644 --- a/addons/base/static/src/js/search.js +++ b/addons/base/static/src/js/search.js @@ -708,75 +708,20 @@ openerp.base.search.BooleanField = openerp.base.search.SelectionField.extend(/** } }); openerp.base.search.DateField = openerp.base.search.Field.extend( /** @lends openerp.base.search.DateField# */{ - template: 'SearchView.fields.date', /** * enables date picker on the HTML widgets */ start: function () { this._super(); - this.$element.find('input').datepicker({ + this.$element.addClass('field_date').datepicker({ dateFormat: 'yy-mm-dd' }); }, stop: function () { - this.$element.find('input').datepicker('destroy'); + this.$element.datepicker('destroy'); }, - /** - * Returns an object with two optional keys ``from`` and ``to`` providing - * the values for resp. the from and to sections of the date widget. - * - * If a key is absent, then the corresponding field was not filled. - * - * @returns {Object} - */ - get_values: function () { - var values_array = this.$element.find('input').serializeArray(); - - if (!values_array || !values_array[0]) { - throw new openerp.base.search.Invalid( - this.attrs.name, null, "widget not ready"); - } - var from = values_array[0].value, - to = values_array[1].value; - - var field_values = {}; - if (from) { - field_values.from = from; - } - if (to) { - field_values.to = to; - } - return field_values; - }, - get_context: function () { - var values = this.get_values(); - if (!this.attrs.context || _.isEmpty(values)) { - return null; - } - return _.extend( - {}, this.attrs.context, - {own_values: {self: values}}); - }, - get_domain: function () { - var values = this.get_values(); - if (_.isEmpty(values)) { - return null; - } - var domain = this.attrs['filter_domain']; - if (!domain) { - domain = []; - if (values.from) { - domain.push([this.attrs.name, '>=', values.from]); - } - if (values.to) { - domain.push([this.attrs.name, '<=', values.to]); - } - return domain; - } - - return _.extend( - {}, domain, - {own_values: {self: values}}); + get_value: function () { + return this.$element.val(); } }); openerp.base.search.DateTimeField = openerp.base.search.DateField.extend({ diff --git a/addons/base/static/src/xml/base.xml b/addons/base/static/src/xml/base.xml index 79fe7336ec8..92f95bacc90 100644 --- a/addons/base/static/src/xml/base.xml +++ b/addons/base/static/src/xml/base.xml @@ -968,22 +968,6 @@ - - -
- - to - - -
-