diff --git a/addons/website/models/ir_module_module.py b/addons/website/models/ir_module_module.py
index 9ec53dcc519..b23052fe79f 100644
--- a/addons/website/models/ir_module_module.py
+++ b/addons/website/models/ir_module_module.py
@@ -361,10 +361,14 @@ class IrModuleModule(models.Model):
self._theme_upgrade_upstream()
active_todo = self.env['ir.actions.todo'].search([('state', '=', 'open')], limit=1)
+ result = None
if active_todo:
- return active_todo.action_launch()
+ result = active_todo.action_launch()
else:
- return website.button_go_website(mode_edit=True)
+ result = website.button_go_website(mode_edit=True)
+ if result.get('url') and 'enable_editor' in result['url']:
+ result['url'] = result['url'].replace('enable_editor', 'with_loader=1&enable_editor')
+ return result
def button_remove_theme(self):
"""Remove the current theme of the current website."""
diff --git a/addons/website/static/src/js/menu/edit.js b/addons/website/static/src/js/menu/edit.js
index d8006e0ddac..d3382932560 100644
--- a/addons/website/static/src/js/menu/edit.js
+++ b/addons/website/static/src/js/menu/edit.js
@@ -83,12 +83,14 @@ var EditPageMenu = websiteNavbarData.WebsiteNavbarActionWidget.extend({
this._editorAutoStart = (context.editable && window.location.search.indexOf('enable_editor') >= 0);
this._mustEditTranslations = context.edit_translations;
+ var url = new URL(window.location.href)
if (this._mustEditTranslations) {
- var url = window.location.href.replace(/([?&])&*edit_translations[^]*&?/, '\$1');
+ url.searchParams.delete('edit_translations')
window.history.replaceState({}, null, url);
this._startTranslateMode();
} else {
- var url = window.location.href.replace(/([?&])&*enable_editor[^]*&?/, '\$1');
+ url.searchParams.delete('enable_editor')
+ url.searchParams.delete('with_loader')
window.history.replaceState({}, null, url);
}
},
@@ -147,6 +149,10 @@ var EditPageMenu = websiteNavbarData.WebsiteNavbarActionWidget.extend({
this.wysiwyg = await this._createWysiwyg();
await this.wysiwyg.attachTo($('#wrapwrap'));
+ const $loader = $('div.o_theme_install_loader_container');
+ if ($loader) {
+ $loader.remove();
+ }
var res = await new Promise((resolve, reject) => {
this.trigger_up('widgets_start_request', {
diff --git a/addons/website/static/src/scss/website.backend.scss b/addons/website/static/src/scss/website.backend.scss
index a3ec2034d62..058c779b341 100644
--- a/addons/website/static/src/scss/website.backend.scss
+++ b/addons/website/static/src/scss/website.backend.scss
@@ -424,18 +424,3 @@
display: none;
}
}
-
-
-.o_theme_install_loader_container {
- background-color: rgba($o-shadow-color, .9);
- pointer-events: all;
-}
-.o_theme_install_loader {
- position: relative;
- display: inline-block;
- width: 400px;
- height: 220px;
- background-image: url('/website/static/src/img/theme_loader.gif');
- background-size: cover;
- border-radius: 6px;
-}
diff --git a/addons/website/static/src/scss/website.theme_install.scss b/addons/website/static/src/scss/website.theme_install.scss
new file mode 100644
index 00000000000..cfa4a00cbcd
--- /dev/null
+++ b/addons/website/static/src/scss/website.theme_install.scss
@@ -0,0 +1,15 @@
+.o_theme_install_loader_container {
+ background-color: rgba($o-shadow-color, .9);
+ pointer-events: all;
+ // above menu bar
+ z-index: $zindex-modal - 1;
+}
+.o_theme_install_loader {
+ position: relative;
+ display: inline-block;
+ width: 400px;
+ height: 220px;
+ background-image: url('/website/static/src/img/theme_loader.gif');
+ background-size: cover;
+ border-radius: 6px;
+}
diff --git a/addons/website/views/assets.xml b/addons/website/views/assets.xml
index b0f6c75596b..7ce8cb9c48a 100644
--- a/addons/website/views/assets.xml
+++ b/addons/website/views/assets.xml
@@ -35,6 +35,7 @@
+
@@ -145,6 +146,7 @@
+
diff --git a/addons/website/views/website_navbar_templates.xml b/addons/website/views/website_navbar_templates.xml
index 718b7cb52cd..4176e04e8f9 100644
--- a/addons/website/views/website_navbar_templates.xml
+++ b/addons/website/views/website_navbar_templates.xml
@@ -20,6 +20,9 @@
+