diff --git a/addons/base/static/src/base.html b/addons/base/static/src/base.html
index 173539cace7..0c615ed8903 100644
--- a/addons/base/static/src/base.html
+++ b/addons/base/static/src/base.html
@@ -31,8 +31,8 @@
-
+
diff --git a/addons/base/static/src/js/base.js b/addons/base/static/src/js/base.js
index c0c1f9131d9..28022f8b764 100644
--- a/addons/base/static/src/js/base.js
+++ b/addons/base/static/src/js/base.js
@@ -72,9 +72,6 @@ openerp.base = function(instance) {
if (openerp.base.list) {
openerp.base.list(instance);
}
- if (openerp.base.tree) {
- openerp.base.tree(instance);
- }
if (openerp.base. m2o) {
openerp.base.m2o(instance);
}
@@ -87,6 +84,9 @@ openerp.base = function(instance) {
if (openerp.web_mobile) {
openerp.web_mobile(instance);
}
+ if (openerp.base.view_tree) {
+ openerp.base.view_tree(instance);
+ }
};
// vim:et fdc=0 fdl=0 foldnestmax=3 fdm=syntax:
diff --git a/addons/base/static/src/js/chrome.js b/addons/base/static/src/js/chrome.js
index 74dfb650f1f..33aa311e9a2 100644
--- a/addons/base/static/src/js/chrome.js
+++ b/addons/base/static/src/js/chrome.js
@@ -467,6 +467,9 @@ openerp.base.Controller = openerp.base.BasicController.extend( /** @lends opener
*/
rpc: function(url, data, success, error) {
return this.session.rpc(url, data, success, error);
+ },
+ do_action: function(action, on_finished) {
+ return this.parent.do_action(action, on_finished);
}
});
diff --git a/addons/base/static/src/js/data.js b/addons/base/static/src/js/data.js
index 90b4b7c002d..c9892ff4706 100644
--- a/addons/base/static/src/js/data.js
+++ b/addons/base/static/src/js/data.js
@@ -186,7 +186,7 @@ openerp.base.ContainerDataGroup = openerp.base.DataGroup.extend( /** @lends open
var child_context = _.extend({}, self.context, group.__context);
return _.extend(
new openerp.base.DataGroup(
- self.session, self.model, group.__domain,
+ self, self.model, group.__domain,
child_context, child_context.group_by,
self.level + 1),
group, {sort: self.sort});
diff --git a/addons/base/static/src/js/form.js b/addons/base/static/src/js/form.js
index b24f0e77c79..e28e42385ec 100644
--- a/addons/base/static/src/js/form.js
+++ b/addons/base/static/src/js/form.js
@@ -85,7 +85,8 @@ openerp.base.FormView = openerp.base.View.extend( /** @lends openerp.base.FormV
$('
' + openerp.base.json_node_to_xml(self.fields_view.arch, true) + '').dialog({ width: '95%', height: 600});
});
- this.view_manager.sidebar.set_toolbar(data.fields_view.toolbar);
+ if(this.view_manager.sidebar)
+ this.view_manager.sidebar.set_toolbar(data.fields_view.toolbar);
this.has_been_loaded.resolve();
},
do_show: function () {
@@ -98,7 +99,8 @@ openerp.base.FormView = openerp.base.View.extend( /** @lends openerp.base.FormV
promise = this.dataset.read_index(_.keys(this.fields_view.fields), this.on_record_loaded);
}
self.$element.show();
- this.view_manager.sidebar.do_refresh(true);
+ if(this.view_manager.sidebar)
+ this.view_manager.sidebar.do_refresh(true);
return promise;
},
do_hide: function () {
@@ -1299,7 +1301,7 @@ openerp.base.form.FieldMany2One = openerp.base.form.Field.extend({
if (!self.value) {
return;
}
- var pop = new openerp.base.form.FormOpenPopup(null, self.view.session);
+ var pop = new openerp.base.form.FormOpenPopup(self.view);
pop.show_element(self.field.relation, self.value[0],self.build_context(), {});
pop.on_write_completed.add_last(function() {
self.set_value(self.value[0]);
@@ -1749,7 +1751,7 @@ openerp.base.form.One2ManyListView = openerp.base.ListView.extend({
},
do_activate_record: function(index, id) {
var self = this;
- var pop = new openerp.base.form.FormOpenPopup(null, self.o2m.view.session);
+ var pop = new openerp.base.form.FormOpenPopup(self.o2m.view);
pop.show_element(self.o2m.field.relation, id, self.o2m.build_context(),{
auto_write: false,
alternative_form_view: self.o2m.field.views ? self.o2m.field.views["form"] : undefined,
@@ -1782,7 +1784,7 @@ openerp.base.form.FieldMany2Many = openerp.base.form.Field.extend({
self.on_ui_change();
});
- this.list_view = new openerp.base.form.Many2ManyListView(this.view.view_manager, this.list_id, this.dataset, false, {
+ this.list_view = new openerp.base.form.Many2ManyListView(new openerp.base.NullViewManager(this), this.list_id, this.dataset, false, {
'addable': 'Add',
'selectable': self.multi_selection
});
@@ -1874,7 +1876,7 @@ openerp.base.form.SelectCreatePopup = openerp.base.BaseWidget.extend({
},
start: function() {
this._super();
- this.dataset = new openerp.base.ReadOnlyDataSetSearch(this.session, this.model,
+ this.dataset = new openerp.base.ReadOnlyDataSetSearch(this, this.model,
this.context);
this.dataset.parent_view = this.options.parent_view;
if (this.options.initial_view == "search") {
@@ -1888,7 +1890,7 @@ openerp.base.form.SelectCreatePopup = openerp.base.BaseWidget.extend({
if (this.searchview) {
this.searchview.stop();
}
- this.searchview = new openerp.base.SearchView(null, this.session,
+ this.searchview = new openerp.base.SearchView(this,
this.element_id + "_search", this.dataset, false, {
"selectable": !this.options.disable_multiple_selection,
"deletable": false
@@ -1916,7 +1918,7 @@ openerp.base.form.SelectCreatePopup = openerp.base.BaseWidget.extend({
$sbutton.click(function() {
self.on_select_elements(self.selected_ids);
});
- self.view_list = new openerp.base.form.SelectCreateListView(this,
+ self.view_list = new openerp.base.form.SelectCreateListView(self,
self.element_id + "_view_list", self.dataset, false,
{'deletable': false});
self.view_list.popup = self;
@@ -1956,8 +1958,7 @@ openerp.base.form.SelectCreatePopup = openerp.base.BaseWidget.extend({
this.view_list.$element.hide();
}
this.dataset.index = null;
- this.view_form = new openerp.base.FormView(null, this.session,
- this.element_id + "_view_form", this.dataset, false);
+ this.view_form = new openerp.base.FormView(this, this.element_id + "_view_form", this.dataset, false);
if (this.options.alternative_form_view) {
this.view_form.set_embedded_view(this.options.alternative_form_view);
}
@@ -2014,8 +2015,7 @@ openerp.base.form.FormOpenPopup = openerp.base.BaseWidget.extend({
},
start: function() {
this._super();
- this.dataset = new openerp.base.ReadOnlyDataSetSearch(this.session, this.model,
- this.context);
+ this.dataset = new openerp.base.ReadOnlyDataSetSearch(this, this.model, this.context);
this.dataset.ids = [this.row_id];
this.dataset.index = 0;
this.dataset.parent_view = this.options.parent_view;
@@ -2035,8 +2035,7 @@ openerp.base.form.FormOpenPopup = openerp.base.BaseWidget.extend({
on_write_completed: function() {},
setup_form_view: function() {
var self = this;
- this.view_form = new openerp.base.FormView(null, this.session,
- this.element_id + "_view_form", this.dataset, false);
+ this.view_form = new openerp.base.FormView(this, this.element_id + "_view_form", this.dataset, false);
if (this.options.alternative_form_view) {
this.view_form.set_embedded_view(this.options.alternative_form_view);
}
diff --git a/addons/base/static/src/js/list.js b/addons/base/static/src/js/list.js
index e1506a9f8e1..6bed26ce692 100644
--- a/addons/base/static/src/js/list.js
+++ b/addons/base/static/src/js/list.js
@@ -254,9 +254,8 @@ openerp.base.ListView = openerp.base.View.extend( /** @lends openerp.base.ListVi
})
.val(self._limit || 'NaN');
});
- if(this.view_manager.sidebar == undefined)
- debugger;
- this.view_manager.sidebar.set_toolbar(data.fields_view.toolbar);
+ if(this.view_manager.sidebar)
+ this.view_manager.sidebar.set_toolbar(data.fields_view.toolbar);
},
/**
@@ -392,7 +391,8 @@ openerp.base.ListView = openerp.base.View.extend( /** @lends openerp.base.ListVi
this.groups.apoptosis().render());
this.hidden = false;
}
- this.view_manager.sidebar.do_refresh(true);
+ if(this.view_manager.sidebar)
+ this.view_manager.sidebar.do_refresh(true);
},
do_hide: function () {
this.$element.hide();
diff --git a/addons/base/static/src/js/search.js b/addons/base/static/src/js/search.js
index fcf4a175b3c..e6df3767f4a 100644
--- a/addons/base/static/src/js/search.js
+++ b/addons/base/static/src/js/search.js
@@ -593,32 +593,40 @@ openerp.base.search.BooleanField = openerp.base.search.Field.extend({
}
}
});
-openerp.base.search.IntegerField = openerp.base.search.Field.extend({
+openerp.base.search.NumberField = openerp.base.search.Field.extend(/** @lends openerp.base.search.NumberField# */{
get_value: function () {
if (!this.$element.val()) {
return null;
}
- var val = parseInt(this.$element.val());
- var check = Number(this.$element.val());
- if (isNaN(check) || val !== check) {
+ var val = this.parse(this.$element.val()),
+ check = Number(this.$element.val());
+ if (isNaN(val) || val !== check) {
this.$element.addClass('error');
throw new openerp.base.search.Invalid(
- this.attrs.name, this.$element.val(), "not a valid integer");
+ this.attrs.name, this.$element.val(), this.error_message);
}
this.$element.removeClass('error');
return val;
}
});
-openerp.base.search.FloatField = openerp.base.search.Field.extend({
- get_value: function () {
- var val = Number(this.$element.val());
- if (isNaN(val)) {
- this.$element.addClass('error');
- throw new openerp.base.search.Invalid(
- this.attrs.name, this.$element.val(), "not a valid number");
- }
- this.$element.removeClass('error');
- return val;
+/**
+ * @class
+ * @extends openerp.base.search.NumberField
+ */
+openerp.base.search.IntegerField = openerp.base.search.NumberField.extend(/** @lends openerp.base.search.IntegerField# */{
+ error_message: "not a valid integer",
+ parse: function (value) {
+ return parseInt(value, 10);
+ }
+});
+/**
+ * @class
+ * @extends openerp.base.search.NumberField
+ */
+openerp.base.search.FloatField = openerp.base.search.NumberField.extend(/** @lends openerp.base.search.FloatField# */{
+ error_message: "not a valid number",
+ parse: function (value) {
+ return parseFloat(value);
}
});
openerp.base.search.SelectionField = openerp.base.search.Field.extend({
diff --git a/addons/base/static/src/js/view_help.js b/addons/base/static/src/js/view_help.js
new file mode 100644
index 00000000000..704c982eb3a
--- /dev/null
+++ b/addons/base/static/src/js/view_help.js
@@ -0,0 +1,15 @@
+/*---------------------------------------------------------
+ * OpenERP base library
+ *---------------------------------------------------------*/
+
+openerp.base.view_help = function(openerp) {
+
+openerp.base.ProcessView = openerp.base.Controller.extend({
+});
+
+openerp.base.HelpView = openerp.base.Controller.extend({
+});
+
+};
+
+// vim:et fdc=0 fdl=0 foldnestmax=3 fdm=syntax:
diff --git a/addons/base/static/src/js/tree.js b/addons/base/static/src/js/view_tree.js
similarity index 93%
rename from addons/base/static/src/js/tree.js
rename to addons/base/static/src/js/view_tree.js
index e333c295473..ceb5478a4a7 100644
--- a/addons/base/static/src/js/tree.js
+++ b/addons/base/static/src/js/view_tree.js
@@ -2,7 +2,7 @@
* OpenERP base library
*---------------------------------------------------------*/
-openerp.base.tree = function(openerp) {
+openerp.base.view_tree = function(openerp) {
openerp.base.views.add('tree', 'openerp.base.TreeView');
openerp.base.TreeView = openerp.base.Controller.extend({
diff --git a/addons/base/static/src/js/views.js b/addons/base/static/src/js/views.js
index f76ecc52c71..d14fdcbc12f 100644
--- a/addons/base/static/src/js/views.js
+++ b/addons/base/static/src/js/views.js
@@ -81,6 +81,19 @@ openerp.base.ActionManager = openerp.base.Controller.extend({
}
});
+openerp.base.ActionDialog = openerp.base.Dialog.extend({
+ identifier_prefix: 'action_dialog',
+ stop: function() {
+ this._super(this, arguments);
+ if (this.close_callback) {
+ this.close_callback();
+ }
+ if (this.viewmanager) {
+ this.viewmanager.stop();
+ }
+ }
+});
+
openerp.base.ViewManager = openerp.base.Controller.extend({
init: function(parent, element_id, dataset, views) {
this._super(parent, element_id);
@@ -242,8 +255,10 @@ openerp.base.ViewManager = openerp.base.Controller.extend({
});
openerp.base.NullViewManager = openerp.base.generate_null_object_class(openerp.base.ViewManager, {
- init: function() {
- this._super();
+ init: function(parent) {
+ this._super(parent);
+ if(parent)
+ this.session = parent.session;
this.action = {flags: {}};
this.sidebar = new openerp.base.NullSidebar();
}
@@ -333,19 +348,6 @@ openerp.base.ViewManagerAction = openerp.base.ViewManager.extend({
}
});
-openerp.base.ActionDialog = openerp.base.Dialog.extend({
- identifier_prefix: 'action_dialog',
- stop: function() {
- this._super(this, arguments);
- if (this.close_callback) {
- this.close_callback();
- }
- if (this.viewmanager) {
- this.viewmanager.stop();
- }
- }
-});
-
openerp.base.Sidebar = openerp.base.BaseWidget.extend({
template: "ViewManager.sidebar",
init: function(parent, view_manager) {
@@ -490,12 +492,6 @@ openerp.base.View = openerp.base.Controller.extend({
*/
openerp.base.views = new openerp.base.Registry();
-openerp.base.ProcessView = openerp.base.Controller.extend({
-});
-
-openerp.base.HelpView = openerp.base.Controller.extend({
-});
-
openerp.base.json_node_to_xml = function(node, single_quote, indent) {
// For debugging purpose, this function will convert a json node back to xml
// Maybe usefull for xml view editor
diff --git a/addons/base/static/src/xml/base.xml b/addons/base/static/src/xml/base.xml
index c5e3614ca4a..04841a2e297 100644
--- a/addons/base/static/src/xml/base.xml
+++ b/addons/base/static/src/xml/base.xml
@@ -143,8 +143,8 @@
diff --git a/addons/base_graph/static/src/js/graph.js b/addons/base_graph/static/src/js/graph.js
index cf4cca20e59..25ce024638b 100644
--- a/addons/base_graph/static/src/js/graph.js
+++ b/addons/base_graph/static/src/js/graph.js
@@ -76,12 +76,20 @@ openerp.base_graph.GraphView = openerp.base.View.extend({
load_chart: function(data) {
var self = this;
+ var domain = false;
if(data){
this.x_title = this.all_fields[this.chart_info_fields]['string'];
this.y_title = this.all_fields[this.operator_field]['string'];
self.schedule_chart(data);
}else{
- this.dataset.read_slice(this.fields, 0, false, function(res) {
+ if(! _.isEmpty(this.view_manager.dataset.domain)){
+ domain = this.view_manager.dataset.domain;
+ }else if(! _.isEmpty(this.view_manager.action.domain)){
+ domain = this.view_manager.action.domain;
+ }
+ this.dataset.domain = domain;
+ this.dataset.context = this.view_manager.dataset.context;
+ this.dataset.read_slice(_(this.fields).keys(), 0, false, function(res) {
self.schedule_chart(res);
});
}
diff --git a/addons/base_graph/static/src/xml/base_graph.xml b/addons/base_graph/static/src/xml/base_graph.xml
index cb5b1b2b0c4..4320b9f156e 100644
--- a/addons/base_graph/static/src/xml/base_graph.xml
+++ b/addons/base_graph/static/src/xml/base_graph.xml
@@ -1,6 +1,4 @@
-
-
-
-
-
+
+
\ No newline at end of file