diff options
| author | Yogesh (OpenERP) <ysa@tinyerp.com> | 2011-08-12 10:22:22 +0530 |
|---|---|---|
| committer | Yogesh (OpenERP) <ysa@tinyerp.com> | 2011-08-12 10:22:22 +0530 |
| commit | 2c80de89cf26e456151db4588d4c8cc91c0b2995 (patch) | |
| tree | 696a2a01bd50b942b19def47c07b89cc93fbee7e /addons/base/static | |
| parent | 8f00fb00c9374331e172e060d57dba9677388312 (diff) | |
| parent | a94ac45ed761c632f4f8ecd4c6b8fdbf7549efcf (diff) | |
[MeRGE] Merge with trunk upto revision no 802.
bzr revid: ysa@tinyerp.com-20110812045222-993fbrjuzma3jywe
Diffstat (limited to 'addons/base/static')
| -rw-r--r-- | addons/base/static/src/css/base.css | 2 | ||||
| -rw-r--r-- | addons/base/static/src/js/form.js | 71 | ||||
| -rw-r--r-- | addons/base/static/src/js/list.js | 7 | ||||
| -rw-r--r-- | addons/base/static/src/js/search.js | 7 | ||||
| -rw-r--r-- | addons/base/static/src/js/view_tree.js | 1 | ||||
| -rw-r--r-- | addons/base/static/src/js/views.js | 7 | ||||
| -rw-r--r-- | addons/base/static/src/xml/base.xml | 14 |
7 files changed, 74 insertions, 35 deletions
diff --git a/addons/base/static/src/css/base.css b/addons/base/static/src/css/base.css index a629e559d4c..13294819f6b 100644 --- a/addons/base/static/src/css/base.css +++ b/addons/base/static/src/css/base.css @@ -923,7 +923,7 @@ label.error { height: 15px; } .openerp td.required input, .openerp td.required select { - background-color: #D2D2FF; + background-color: #D2D2FF !important; } .openerp td.invalid input, .openerp td.invalid select, .openerp td.invalid textarea { background-color: #F66 !important; diff --git a/addons/base/static/src/js/form.js b/addons/base/static/src/js/form.js index bbf7a4e5f31..0afdee26cf2 100644 --- a/addons/base/static/src/js/form.js +++ b/addons/base/static/src/js/form.js @@ -1506,7 +1506,6 @@ openerp.base.form.FieldMany2One = openerp.base.form.Field.extend({ var dataset = new openerp.base.DataSetStatic(self, self.field.relation, self.build_context()); dataset.name_get([element_ids[0]], function(data) { self._change_int_ext_value(data[0]); - pop.stop(); }); }); }, @@ -1842,16 +1841,16 @@ openerp.base.form.One2ManyListView = openerp.base.ListView.extend({ pop.select_element(self.o2m.field.relation,{ initial_view: "form", alternative_form_view: self.o2m.field.views ? self.o2m.field.views["form"] : undefined, - auto_create: false, + create_function: function(data) { + return self.o2m.dataset.create(data, function(r) { + self.o2m.dataset.set_ids(self.o2m.dataset.ids.concat([r.result])); + self.o2m.dataset.on_change(); + }); + }, parent_view: self.o2m.view }, self.o2m.build_domain(), self.o2m.build_context()); - pop.on_create.add(function(data) { - self.o2m.dataset.create(data, function(r) { - self.o2m.dataset.set_ids(self.o2m.dataset.ids.concat([r.result])); - self.o2m.dataset.on_change(); - pop.stop(); - self.o2m.reload_current_view(); - }); + pop.on_select_elements.add_last(function() { + self.o2m.reload_current_view(); }); } }, @@ -1946,7 +1945,6 @@ openerp.base.form.Many2ManyListView = openerp.base.ListView.extend({ self.reload_content(); } }); - pop.stop(); }); }, do_activate_record: function(index, id) { @@ -1968,16 +1966,22 @@ openerp.base.form.SelectCreatePopup = openerp.base.OldWidget.extend({ * - initial_view: form or search (default search) * - disable_multiple_selection * - alternative_form_view - * - auto_create (default true) + * - create_function (defaults to a naive saving behavior) * - parent_view */ select_element: function(model, options, domain, context) { + var self = this; this.model = model; this.domain = domain || []; this.context = context || {}; - this.options = _.defaults(options || {}, {"initial_view": "search", "auto_create": true}); + this.options = _.defaults(options || {}, {"initial_view": "search", "create_function": function() { + return self.create_row.apply(self, arguments); + }}); this.initial_ids = this.options.initial_ids; - openerp.base.form.dialog(this.render()); + this.created_elements = []; + openerp.base.form.dialog(this.render(), {close:function() { + self.check_exit(); + }}); this.start(); }, start: function() { @@ -2023,6 +2027,7 @@ openerp.base.form.SelectCreatePopup = openerp.base.OldWidget.extend({ } $sbutton.click(function() { self.on_select_elements(self.selected_ids); + self.stop(); }); self.view_list = new openerp.base.form.SelectCreateListView(self, self.element_id + "_view_list", self.dataset, false, @@ -2035,15 +2040,11 @@ openerp.base.form.SelectCreatePopup = openerp.base.OldWidget.extend({ }); this.searchview.start(); }, - on_create: function(data) { - if (!this.options.auto_create) - return; + create_row: function(data) { var self = this; var wdataset = new openerp.base.DataSetSearch(this, this.model, this.context, this.domain); wdataset.parent_view = this.options.parent_view; - wdataset.create(data, function(r) { - self.on_select_elements([r.result]); - }); + return wdataset.create(data); }, on_select_elements: function(element_ids) { }, @@ -2071,18 +2072,43 @@ openerp.base.form.SelectCreatePopup = openerp.base.OldWidget.extend({ this.view_form.start(); this.view_form.on_loaded.add_last(function() { var $buttons = self.view_form.$element.find(".oe_form_buttons"); - $buttons.html(QWeb.render("SelectCreatePopup.form.buttons")); + $buttons.html(QWeb.render("SelectCreatePopup.form.buttons", {widget:self})); + var $nbutton = $buttons.find(".oe_selectcreatepopup-form-save-new"); + $nbutton.click(function() { + self._created = $.Deferred().then(function() { + self._created = undefined; + self.view_form.on_button_new(); + }); + self.view_form.do_save(); + }); var $nbutton = $buttons.find(".oe_selectcreatepopup-form-save"); $nbutton.click(function() { + self._created = $.Deferred().then(function() { + self._created = undefined; + self.check_exit(); + }); self.view_form.do_save(); }); var $cbutton = $buttons.find(".oe_selectcreatepopup-form-close"); $cbutton.click(function() { - self.stop(); + self.check_exit(); + }); + }); + this.dataset.on_create.add(function(data) { + self.options.create_function(data).then(function(r) { + self.created_elements.push(r.result); + if (self._created) { + self._created.resolve(); + } }); }); - this.dataset.on_create.add(this.on_create); this.view_form.do_show(); + }, + check_exit: function() { + if (this.created_elements.length > 0) { + this.on_select_elements(this.created_elements); + } + this.stop(); } }); @@ -2092,6 +2118,7 @@ openerp.base.form.SelectCreateListView = openerp.base.ListView.extend({ }, select_record: function(index) { this.popup.on_select_elements([this.dataset.ids[index]]); + this.popup.stop(); }, do_select: function(ids, records) { this._super(ids, records); diff --git a/addons/base/static/src/js/list.js b/addons/base/static/src/js/list.js index e7abfdfaf0f..3032e702a73 100644 --- a/addons/base/static/src/js/list.js +++ b/addons/base/static/src/js/list.js @@ -352,8 +352,9 @@ openerp.base.ListView = openerp.base.View.extend( /** @lends openerp.base.ListVi * Reloads the list view based on the current settings (dataset & al) * * @param {Boolean} [grouped] Should the list be displayed grouped + * @param {Object} [context] context to send the server while loading the view */ - reload_view: function (grouped) { + reload_view: function (grouped, context) { var self = this; var callback = function (field_view_get) { self.on_loaded(field_view_get, grouped); @@ -364,7 +365,7 @@ openerp.base.ListView = openerp.base.View.extend( /** @lends openerp.base.ListVi return this.rpc('/base/listview/load', { model: this.model, view_id: this.view_id, - context: this.dataset.get_context(), + context: this.dataset.get_context(context), toolbar: this.options.sidebar }, callback); } @@ -411,7 +412,7 @@ openerp.base.ListView = openerp.base.View.extend( /** @lends openerp.base.ListVi results.group_by = null; } - this.reload_view(!!results.group_by).then( + this.reload_view(!!results.group_by, results.context).then( $.proxy(this, 'reload_content')); }, /** diff --git a/addons/base/static/src/js/search.js b/addons/base/static/src/js/search.js index 661e0d650b8..e88e31ebba0 100644 --- a/addons/base/static/src/js/search.js +++ b/addons/base/static/src/js/search.js @@ -361,7 +361,6 @@ openerp.base.search.fields = new openerp.base.Registry({ 'selection': 'openerp.base.search.SelectionField', 'datetime': 'openerp.base.search.DateTimeField', 'date': 'openerp.base.search.DateField', - 'one2many': 'openerp.base.search.OneToManyField', 'many2one': 'openerp.base.search.ManyToOneField', 'many2many': 'openerp.base.search.ManyToManyField' }); @@ -796,6 +795,12 @@ openerp.base.search.ManyToOneField = openerp.base.search.CharField.extend({ return this._super(); } }); +/** + * m2m search field behaves pretty much exactly like a char field + * + * @class + */ +openerp.base.search.ManyToManyField = openerp.base.search.CharField.extend({}); openerp.base.search.ExtendedSearch = openerp.base.OldWidget.extend({ template: 'SearchView.extended_search', diff --git a/addons/base/static/src/js/view_tree.js b/addons/base/static/src/js/view_tree.js index da426080574..5c3c7457e1c 100644 --- a/addons/base/static/src/js/view_tree.js +++ b/addons/base/static/src/js/view_tree.js @@ -176,7 +176,6 @@ openerp.base.TreeView = openerp.base.View.extend({ }, function (actions) { if (!actions.length) { return; } var action = actions[0][2]; - action.flags.new_window = true; self.do_action(action); }); }, diff --git a/addons/base/static/src/js/views.js b/addons/base/static/src/js/views.js index 78615a7667c..8cf30c42fdb 100644 --- a/addons/base/static/src/js/views.js +++ b/addons/base/static/src/js/views.js @@ -39,7 +39,6 @@ openerp.base.ActionManager = openerp.base.Widget.extend({ var type = action.type.replace(/\./g,'_'); var popup = action.target === 'new'; action.flags = _.extend({ - popup: popup, views_switcher : !popup, search_view : !popup, action_buttons : !popup, @@ -53,7 +52,7 @@ openerp.base.ActionManager = openerp.base.Widget.extend({ this[type](action, on_closed); }, ir_actions_act_window: function (action, on_close) { - if (action.flags.popup) { + if (action.target === 'new') { if (this.dialog == null) { this.dialog = new openerp.base.Dialog(this, { title: action.name, width: '80%' }); if(on_close) @@ -252,13 +251,15 @@ openerp.base.ViewManager = openerp.base.Widget.extend({ openerp.base.ViewManagerAction = openerp.base.ViewManager.extend({ init: function(parent, action) { this.session = parent.session; + this.action = action; var dataset; if (!action.res_id) { dataset = new openerp.base.DataSetSearch(this, action.res_model, action.context, action.domain); } else { + this.action.flags.search_view = false; dataset = new openerp.base.DataSetStatic(this, action.res_model, action.context, [action.res_id]); + dataset.index = 0; } - this.action = action; this._super(parent, dataset, action.views); this.action = action; this.flags = this.action.flags || {}; diff --git a/addons/base/static/src/xml/base.xml b/addons/base/static/src/xml/base.xml index 4e581e8c175..f9ec63dd69c 100644 --- a/addons/base/static/src/xml/base.xml +++ b/addons/base/static/src/xml/base.xml @@ -1114,11 +1114,17 @@ </t> <t t-name="SelectCreatePopup.search.buttons"> <button type="button" class="oe_selectcreatepopup-search-select" disabled="disabled">Select</button> - <button type="button" class="oe_selectcreatepopup-search-close">Close</button> + <button type="button" class="oe_selectcreatepopup-search-close">Cancel</button> </t> <t t-name="SelectCreatePopup.form.buttons"> - <button type="button" class="oe_selectcreatepopup-form-save">Save</button> - <button type="button" class="oe_selectcreatepopup-form-close">Close</button> + <t t-if="widget.options.disable_multiple_selection"> + <button type="button" class="oe_selectcreatepopup-form-save">Save</button> + </t> + <t t-if="! widget.options.disable_multiple_selection"> + <button type="button" class="oe_selectcreatepopup-form-save-new">Save & New</button> + <button type="button" class="oe_selectcreatepopup-form-save">Save & Close</button> + </t> + <button type="button" class="oe_selectcreatepopup-form-close">Cancel</button> </t> <t t-name="FormOpenPopup"> <div t-att-id="element_id"> @@ -1127,7 +1133,7 @@ </t> <t t-name="FormOpenPopup.form.buttons"> <button type="button" class="oe_formopenpopup-form-save">Save</button> - <button type="button" class="oe_formopenpopup-form-close">Close</button> + <button type="button" class="oe_formopenpopup-form-close">Cancel</button> </t> <t t-name="ListView.row.frame" t-extend="WidgetFrame"> <t t-jquery="tr"> |
