summaryrefslogtreecommitdiff
path: root/addons
diff options
context:
space:
mode:
authorAntoine Guenet <age@odoo.com>2019-03-08 11:57:09 +0000
committerAntoine Guenet <age@odoo.com>2019-03-18 09:32:14 +0000
commitbecfef8f7bb885da6ceff437f68bb6d43e59efce (patch)
treebd35b7472a78e670e3f077188c558442055bedea /addons
parent7e96d485c7d91e5fcb3ee59c71ecb5d76827298f (diff)
[FIX] web_editor: properly start website edit mode as restricted editor
It was impossible to open the website's edit mode as a user with "restricted editor" permissions. The reason was that wysiwyg_multizone was trying to manipulate data that is not injected into the html node when `editable` is false (see `website.layout` template). closes odoo/odoo#31702 Signed-off-by: Pierre Paridans <pparidans@users.noreply.github.com>
Diffstat (limited to 'addons')
-rw-r--r--addons/website/static/src/js/editor/wysiwyg_multizone.js2
-rw-r--r--addons/website/static/src/js/tours/restricted_editor.js17
-rw-r--r--addons/website/tests/test_ui.py12
-rw-r--r--addons/website/views/website_templates.xml1
4 files changed, 31 insertions, 1 deletions
diff --git a/addons/website/static/src/js/editor/wysiwyg_multizone.js b/addons/website/static/src/js/editor/wysiwyg_multizone.js
index 660afe80bdf..070080369c4 100644
--- a/addons/website/static/src/js/editor/wysiwyg_multizone.js
+++ b/addons/website/static/src/js/editor/wysiwyg_multizone.js
@@ -331,7 +331,7 @@ var WysiwygMultizone = Wysiwyg.extend({
var data = this._super();
var res_id = $editable.data('oe-id');
var res_model = $editable.data('oe-model');
- if (!$editable.data('oe-model')) {
+ if (!$editable.data('oe-model') && $('html').data('editable')) {
var object = $('html').data('main-object');
res_model = object.split('(')[0];
res_id = +object.split('(')[1].split(',')[0];
diff --git a/addons/website/static/src/js/tours/restricted_editor.js b/addons/website/static/src/js/tours/restricted_editor.js
new file mode 100644
index 00000000000..10f24291be8
--- /dev/null
+++ b/addons/website/static/src/js/tours/restricted_editor.js
@@ -0,0 +1,17 @@
+odoo.define("website.tour.restricted_editor", function (require) {
+"use strict";
+
+var tour = require("web_tour.tour");
+
+tour.register("restricted_editor", {
+ test: true,
+ url: "/",
+}, [{
+ trigger: 'a[data-action=edit]',
+ content: "Click \"EDIT\" button of website as Restricted Editor",
+ extra_trigger: ".homepage",
+}, {
+ trigger: '#oe_snippets.o_loaded',
+ content: "Check that the snippets loaded properly",
+}]);
+});
diff --git a/addons/website/tests/test_ui.py b/addons/website/tests/test_ui.py
index da501da384a..d73a525e791 100644
--- a/addons/website/tests/test_ui.py
+++ b/addons/website/tests/test_ui.py
@@ -46,3 +46,15 @@ class TestUi(odoo.tests.HttpCase):
def test_02_admin_tour_banner(self):
self.phantom_js("/", "odoo.__DEBUG__.services['web_tour.tour'].run('banner')", "odoo.__DEBUG__.services['web_tour.tour'].tours.banner.ready", login='admin')
+
+ def test_03_restricted_editor(self):
+ self.restricted_editor = self.env['res.users'].create({
+ 'name': 'Restricted Editor',
+ 'login': 'restricted',
+ 'password': 'restricted',
+ 'groups_id': [(6, 0, [
+ self.ref('base.group_user'),
+ self.ref('website.group_website_publisher')
+ ])]
+ })
+ self.phantom_js("/", "odoo.__DEBUG__.services['web_tour.tour'].run('restricted_editor')", "odoo.__DEBUG__.services['web_tour.tour'].tours.restricted_editor.ready", login='restricted')
diff --git a/addons/website/views/website_templates.xml b/addons/website/views/website_templates.xml
index 3ec2fe607ef..4e6f94bd977 100644
--- a/addons/website/views/website_templates.xml
+++ b/addons/website/views/website_templates.xml
@@ -122,6 +122,7 @@
<script type="text/javascript" src="/website/static/src/js/tours/banner.js"/>
<script type="text/javascript" src="/website/static/src/js/tours/customize.js"/>
+ <script type="text/javascript" src="/website/static/src/js/tours/restricted_editor.js"/>
<script type="text/javascript" src="/website/static/src/js/tours/rte.js"/>
<script type="text/javascript" src="/website/static/src/js/widgets/ace.js"/>