diff options
| author | Xavier Morel <xmo@openerp.com> | 2012-01-13 16:16:38 +0100 |
|---|---|---|
| committer | Xavier Morel <xmo@openerp.com> | 2012-01-13 16:16:38 +0100 |
| commit | 33c42c76cd2d6cf691191e2b3535fa3353f163b5 (patch) | |
| tree | 47febfe70dc3c9d5ec04d746d2f6f08afb02575f /addons/web/static/src | |
| parent | 0a04e3640dc43c0348f5d42a45460c011dffd8f6 (diff) | |
| parent | 1eff27c138e45cb868e1a665ad9f1eea01591dd5 (diff) | |
[FIX] loading of new modules after installation
bzr revid: xmo@openerp.com-20120113151638-qoa0vlhunxiq1g2p
Diffstat (limited to 'addons/web/static/src')
| -rw-r--r-- | addons/web/static/src/js/chrome.js | 7 | ||||
| -rw-r--r-- | addons/web/static/src/js/core.js | 19 |
2 files changed, 17 insertions, 9 deletions
diff --git a/addons/web/static/src/js/chrome.js b/addons/web/static/src/js/chrome.js index 7af729205be..32a70d587a7 100644 --- a/addons/web/static/src/js/chrome.js +++ b/addons/web/static/src/js/chrome.js @@ -1124,8 +1124,11 @@ openerp.web.WebClient = openerp.web.Widget.extend(/** @lends openerp.web.WebClie this.$element.children().remove(); }, do_reload: function() { - return this.session.session_reload().pipe( - $.proxy(this.menu, 'do_reload')); + var self = this; + return this.session.session_reload().pipe(function () { + openerp.connection.load_modules(true).pipe( + self.menu.proxy('do_reload')); }); + }, do_notify: function() { var n = this.notification; diff --git a/addons/web/static/src/js/core.js b/addons/web/static/src/js/core.js index 0584c49f6b2..b36e576ae47 100644 --- a/addons/web/static/src/js/core.js +++ b/addons/web/static/src/js/core.js @@ -676,27 +676,31 @@ openerp.web.Connection = openerp.web.CallbackEnabled.extend( /** @lends openerp. }, /** * Load additional web addons of that instance and init them + * + * @param {Boolean} [no_session_valid_signal=false] prevents load_module from triggering ``on_session_valid``. */ - load_modules: function() { + load_modules: function(no_session_valid_signal) { var self = this; return this.rpc('/web/session/modules', {}).pipe(function(result) { - self.module_list = result; var lang = self.user_context.lang; var params = { mods: ["web"].concat(result), lang: lang}; - var modules = self.module_list.join(','); + var to_load = _.difference(result, self.module_list).join(','); + self.module_list = result; return $.when( - self.rpc('/web/webclient/csslist', {mods: modules}, self.do_load_css), - self.rpc('/web/webclient/qweblist', {mods: modules}).pipe(self.do_load_qweb), + self.rpc('/web/webclient/csslist', {mods: to_load}, self.do_load_css), + self.rpc('/web/webclient/qweblist', {mods: to_load}).pipe(self.do_load_qweb), self.rpc('/web/webclient/translations', params).pipe(function(trans) { openerp.web._t.database.set_bundle(trans); var file_list = ["/web/static/lib/datejs/globalization/" + lang.replace("_", "-") + ".js"]; - return self.rpc('/web/webclient/jslist', {mods: modules}).pipe(function(files) { + return self.rpc('/web/webclient/jslist', {mods: to_load}).pipe(function(files) { return self.do_load_js(file_list.concat(files)); }); }) ).then(function() { self.on_modules_loaded(); - self.on_session_valid(); + if (!no_session_valid_signal) { + self.on_session_valid(); + } }); }); }, @@ -738,6 +742,7 @@ openerp.web.Connection = openerp.web.CallbackEnabled.extend( /** @lends openerp. _.each(files, function(file) { self.qweb_mutex.exec(function() { return self.rpc('/web/proxy/load', {path: file}).pipe(function(xml) { + if (!xml) { return; } openerp.web.qweb.add_template(_.str.trim(xml)); }); }); |
