summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js/chrome
diff options
context:
space:
mode:
authorGéry Debongnie <ged@odoo.com>2018-01-05 13:09:43 +0100
committerAaron Bohy <aab@odoo.com>2018-01-26 19:26:03 +0100
commitcb339842d4d8b19f3870127c00a6868af2e95004 (patch)
tree5a738a06894b0318e4398e737ebadf1157b8c073 /addons/web/static/src/js/chrome
parent12fa4e565a734bd4e0be7cb83ff320f32cb4f33e (diff)
[REF] web,*: move fvg processing from DataManager to Views
*: mail, web_diagram
Diffstat (limited to 'addons/web/static/src/js/chrome')
-rw-r--r--addons/web/static/src/js/chrome/action_manager_act_window.js6
-rw-r--r--addons/web/static/src/js/chrome/search_view.js24
2 files changed, 27 insertions, 3 deletions
diff --git a/addons/web/static/src/js/chrome/action_manager_act_window.js b/addons/web/static/src/js/chrome/action_manager_act_window.js
index 1410063dcca..56c6e45a08d 100644
--- a/addons/web/static/src/js/chrome/action_manager_act_window.js
+++ b/addons/web/static/src/js/chrome/action_manager_act_window.js
@@ -347,11 +347,13 @@ ActionManager.include({
_.each(action.views, function (view) {
var viewType = view[1];
var fieldsView = fieldsViews[viewType];
- var View = view_registry.get(fieldsView.arch.attrs.js_class || viewType);
+ var parsedXML = new DOMParser().parseFromString(fieldsView.arch, "text/xml");
+ var key = parsedXML.documentElement.getAttribute('js_class');
+ var View = view_registry.get(key || viewType);
if (View) {
views.push({
accessKey: View.prototype.accessKey,
- fieldsView: fieldsViews[viewType],
+ fieldsView: fieldsView,
icon: View.prototype.icon,
isMobileFriendly: View.prototype.mobile_friendly,
multiRecord: View.prototype.multi_record,
diff --git a/addons/web/static/src/js/chrome/search_view.js b/addons/web/static/src/js/chrome/search_view.js
index 6fbda215814..d1b732477e6 100644
--- a/addons/web/static/src/js/chrome/search_view.js
+++ b/addons/web/static/src/js/chrome/search_view.js
@@ -9,6 +9,7 @@ var FilterMenu = require('web.FilterMenu');
var GroupByMenu = require('web.GroupByMenu');
var pyeval = require('web.pyeval');
var search_inputs = require('web.search_inputs');
+var utils = require('web.utils');
var Widget = require('web.Widget');
var _t = core._t;
@@ -274,7 +275,8 @@ var SearchView = Widget.extend({
this._super.apply(this, arguments);
this.options = options;
this.dataset = dataset;
- this.fields_view = fvg;
+ this.fields_view = this._processFieldsView(_.clone(fvg));
+
this.fields = this.fields_view.fields;
this.query = undefined;
this.title = this.options.action && this.options.action.name;
@@ -603,6 +605,26 @@ var SearchView = Widget.extend({
current_category = filter.category;
});
},
+
+ //--------------------------------------------------------------------------
+ // Private
+ //--------------------------------------------------------------------------
+
+ /**
+ * Processes a fieldsView in place. In particular, parses its arch.
+ *
+ * @todo: this function is also defined in AbstractView ; this code
+ * duplication could be removed once the SearchView will be rewritten.
+ * @private
+ * @param {Object} fv
+ * @param {string} fv.arch
+ * @returns {Object} the processed fieldsView
+ */
+ _processFieldsView: function (fv) {
+ var doc = $.parseXML(fv.arch).documentElement;
+ fv.arch = utils.xml_to_json(doc, true);
+ return fv;
+ },
});
_.extend(SearchView, {