summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--addons/web/static/src/js/chrome.js47
1 files changed, 36 insertions, 11 deletions
diff --git a/addons/web/static/src/js/chrome.js b/addons/web/static/src/js/chrome.js
index d5f72ee8bb9..26f82665a03 100644
--- a/addons/web/static/src/js/chrome.js
+++ b/addons/web/static/src/js/chrome.js
@@ -615,22 +615,47 @@ instance.web.client_actions.add("login", "instance.web.Login");
/**
* Client action to reload the whole interface.
* If params has an entry 'menu_id', it opens the given menu entry.
+ * If params has an entry 'wait', reload will wait the openerp server to be reachable before reloading
*/
instance.web.Reload = function(parent, params) {
- var menu_id = (params && params.menu_id) || false;
- var l = window.location;
+ // hide errors
+ if (instance.client && instance.client.crashmanager) {
+ instance.client.crashmanager.destroy();
+ }
+
+ var reload = function() {
+ console.log('relocate');
+ var menu_id = (params && params.menu_id) || false;
+ var l = window.location;
- var sobj = $.deparam(l.search.substr(1));
- sobj.ts = new Date().getTime();
- var search = '?' + $.param(sobj);
+ var sobj = $.deparam(l.search.substr(1));
+ sobj.ts = new Date().getTime();
+ var search = '?' + $.param(sobj);
+
+ var hash = l.hash;
+ if (menu_id) {
+ hash = "#menu_id=" + menu_id;
+ }
+ var url = l.protocol + "//" + l.host + l.pathname + search + hash;
+ window.location = url;
+ };
+
+ var wait_server = function() {
+ parent.session.rpc("/web/webclient/version_info", {})
+ .done(function() {
+ reload();
+ })
+ .fail(function() {
+ setTimeout(wait_server, 250);
+ });
+ };
- var hash = l.hash;
- if (menu_id) {
- hash = "#menu_id=" + menu_id;
+ if (parent && params && params.wait) {
+ setTimeout(wait_server, 1000);
+ } else {
+ reload();
}
- var url = l.protocol + "//" + l.host + l.pathname + search + hash;
- window.onerror = function() {};
- window.location = url;
+
};
instance.web.client_actions.add("reload", "instance.web.Reload");