summaryrefslogtreecommitdiff
path: root/addons/base/static
diff options
context:
space:
mode:
authorYogesh (OpenERP) <ysa@tinyerp.com>2011-08-12 10:22:22 +0530
committerYogesh (OpenERP) <ysa@tinyerp.com>2011-08-12 10:22:22 +0530
commit2c80de89cf26e456151db4588d4c8cc91c0b2995 (patch)
tree696a2a01bd50b942b19def47c07b89cc93fbee7e /addons/base/static
parent8f00fb00c9374331e172e060d57dba9677388312 (diff)
parenta94ac45ed761c632f4f8ecd4c6b8fdbf7549efcf (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.css2
-rw-r--r--addons/base/static/src/js/form.js71
-rw-r--r--addons/base/static/src/js/list.js7
-rw-r--r--addons/base/static/src/js/search.js7
-rw-r--r--addons/base/static/src/js/view_tree.js1
-rw-r--r--addons/base/static/src/js/views.js7
-rw-r--r--addons/base/static/src/xml/base.xml14
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 &amp; New</button>
+ <button type="button" class="oe_selectcreatepopup-form-save">Save &amp; 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">