diff options
| author | Géry Debongnie <ged@odoo.com> | 2015-03-09 16:35:38 +0100 |
|---|---|---|
| committer | Géry Debongnie <ged@odoo.com> | 2015-03-18 09:01:49 +0100 |
| commit | 5ed9c00e300a22fe3959fb2e9e894d2b172f9cf0 (patch) | |
| tree | 0be22fd983ab0dedfc2a0557ea4a7964d237e645 /addons/web | |
| parent | e8a00bc50da435d3859118ca127d20a2eb9a0cab (diff) | |
[IMP] web: add compatibility layer
This compatibility file reexports every symbols from the modules to the
old openerp namespace. The goal is to allow old unconverted odoo addons
to interact seamlessly with the new web client.
Diffstat (limited to 'addons/web')
| -rw-r--r-- | addons/web/static/src/js/compatibility.js | 225 |
1 files changed, 225 insertions, 0 deletions
diff --git a/addons/web/static/src/js/compatibility.js b/addons/web/static/src/js/compatibility.js new file mode 100644 index 00000000000..4c0a4538bc1 --- /dev/null +++ b/addons/web/static/src/js/compatibility.js @@ -0,0 +1,225 @@ +// ------------------------------------------------------------------------------ +// Compatibility with Odoo v8. +// +// With the new module system, no global variable can (and should) be accessed +// in openerp. This file exports everything, to mimic the previous global +// namespace structure. This is only supposed to be used by 3rd parties to +// facilitate migration. Odoo addons should not use the 'openerp' variable at +// all. +// ------------------------------------------------------------------------------ +odoo.define('web.compatibility', [ + 'web.ActionManager', + 'web.core', + 'web.data', + 'web.Dialog', + 'web.FavoriteMenu', + 'web.form_common', + 'web.form_relational', + 'web.form_widgets', + 'web.formats', + 'web.FormView', + 'web.framework', + 'web.ListView', + 'web.Menu', + 'web.Model', + 'web.pyeval', + 'web.Registry', + 'web.SearchView', + 'web.session', + 'web.Sidebar', + 'web.SystrayMenu', + 'web.time', + 'web.UserMenu', + 'web.utils', + 'web.View', + 'web.ViewManager', + 'web.WebClient', + 'web.Widget', + ], + function (require) { +"use strict"; + +var ActionManager = require('web.ActionManager'); +var core = require('web.core'); +var data = require('web.data'); +var Dialog = require('web.Dialog'); +var FavoriteMenu = require('web.FavoriteMenu'); +var form_common = require('web.form_common'); +var formats = require('web.formats'); +var FormView = require('web.FormView'); +var form_relational = require('web.form_relational'); // necessary +var form_widgets = require('web.form_widgets'); // necessary +var framework = require('web.framework'); +var ListView = require('web.ListView'); +var Menu = require('web.Menu'); +var Model = require('web.Model'); +var pyeval = require('web.pyeval'); +var Registry = require('web.Registry'); +var SearchView = require('web.SearchView'); +var session = require('web.session'); +var Sidebar = require('web.Sidebar'); +var SystrayMenu = require('web.SystrayMenu'); +var time = require('web.time'); +var UserMenu = require('web.UserMenu'); +var utils = require('web.utils'); +var View = require('web.View'); +var ViewManager = require('web.ViewManager'); +var WebClient = require('web.WebClient'); +var Widget = require('web.Widget'); + +var client_started = $.Deferred(); + +var OldRegistry = Registry.extend({ + add: function (key, path) { + }, + get_object: function (key) { + return get_object(this.map[key]); + }, +}); + +window.openerp = window.openerp || {}; + +$.Mutex = utils.Mutex; +openerp._session_id = "instance0"; +openerp._t = core._t; +openerp.get_cookie = utils.get_cookie; + +openerp.qweb = core.qweb; +openerp.session = session; + +openerp.web = openerp.web || {}; +openerp.web._t = core._t; +openerp.web._lt = core._lt; + +openerp.web.ActionManager = ActionManager; +openerp.web.auto_str_to_date = time.auto_str_to_date; +openerp.web.blockUI = framework.blockUI; +openerp.web.BufferedDataSet = data.BufferedDataSet; +openerp.web.bus = core.bus; +openerp.web.Class = core.Class; +openerp.web.client_actions = make_old_registry(core.action_registry); +openerp.web.CompoundContext = data.CompoundContext; +openerp.web.CompoundDomain = data.CompoundDomain; +openerp.web.DataSetSearch = data.DataSetSearch; +openerp.web.DataSet = data.DataSet; +openerp.web.date_to_str = time.date_to_str; +openerp.web.Dialog = Dialog; +openerp.web.DropMisordered = utils.DropMisordered; + +openerp.web.form = openerp.web.form || {}; +openerp.web.form.AbstractField = form_common.AbstractField; +openerp.web.form.compute_domain = data.compute_domain; +openerp.web.form.DefaultFieldManager = form_common.DefaultFieldManager; +openerp.web.form.FieldChar = core.form_widget_registry.get('char'); +openerp.web.form.FieldFloat = core.form_widget_registry.get('float'); +openerp.web.form.FieldStatus = core.form_widget_registry.get('statusbar'); +openerp.web.form.FieldMany2ManyTags = core.form_widget_registry.get('many2many_tags'); +openerp.web.form.FieldMany2One = core.form_widget_registry.get('many2one'); +openerp.web.form.FormWidget = form_common.FormWidget; +openerp.web.form.tags = make_old_registry(core.form_tag_registry); +openerp.web.form.widgets = make_old_registry(core.form_widget_registry); + +openerp.web.format_value = formats.format_value; +openerp.web.FormView = FormView; + +openerp.web.json_node_to_xml = utils.json_node_to_xml; + +openerp.web.ListView = ListView; +openerp.web.Menu = Menu; +openerp.web.Model = Model; +openerp.web.normalize_format = time.strftime_to_moment_format; +openerp.web.py_eval = pyeval.py_eval; +openerp.web.pyeval = pyeval; +openerp.web.qweb = core.qweb; + +openerp.web.Registry = OldRegistry; + +openerp.web.search = {}; +openerp.web.search.FavoriteMenu = FavoriteMenu; +openerp.web.SearchView = SearchView; +openerp.web.Sidebar = Sidebar; +openerp.web.str_to_date = time.str_to_date; +openerp.web.str_to_datetime = time.str_to_datetime; +openerp.web.SystrayItems = SystrayMenu.Items; +openerp.web.unblockUI = framework.unblockUI; +openerp.web.UserMenu = UserMenu; +openerp.web.View = View; +openerp.web.ViewManager = ViewManager; +openerp.web.views = make_old_registry(core.view_registry); +openerp.web.WebClient = WebClient; +openerp.web.Widget = Widget; + +openerp.Widget = openerp.web.Widget; +openerp.Widget.prototype.session = session; + + +WebClient.include({ + init: function () { + openerp.client = this; + openerp.webclient = this; + start_modules(); + client_started.resolve(); + this._super.apply(this, arguments); + }, +}); + + +function make_old_registry(registry) { + return { + add: function (key, path) { + client_started.done(function () { + registry.add(key, get_object(path)); + }); + }, + }; +} +function get_object(path) { + var object_match = openerp; + path = path.split('.'); + // ignore first section + for(var i=1; i<path.length; ++i) { + object_match = object_match[path[i]]; + } + return object_match; +} + +/** + * OpenERP instance constructor + * + * @param {Array|String} modules list of modules to initialize + */ +var inited = false; +function start_modules (modules) { + if (modules === undefined) { + modules = odoo._modules; + } + modules = _.without(modules, "web"); + if (inited) { + throw new Error("OpenERP was already inited"); + } + inited = true; + for(var i=0; i < modules.length; i++) { + var fct = openerp[modules[i]]; + if (typeof(fct) === "function") { + openerp[modules[i]] = {}; + for (var k in fct) { + openerp[modules[i]][k] = fct[k]; + } + fct(openerp, openerp[modules[i]]); + } + } + openerp._modules = ['web'].concat(modules); + return openerp; +}; + + +}); + +odoo.define('mail.compatibility', ['mail.mail'], function (require) { +var mail = require('mail.mail'); +return; +window.openerp = window.openerp || {}; +openerp.mail = {}; +openerp.mail.Wall = mail.Wall; + +}); |
