diff options
| author | Antoine Guenet <age@odoo.com> | 2019-03-08 11:57:09 +0000 |
|---|---|---|
| committer | Antoine Guenet <age@odoo.com> | 2019-03-18 09:32:14 +0000 |
| commit | becfef8f7bb885da6ceff437f68bb6d43e59efce (patch) | |
| tree | bd35b7472a78e670e3f077188c558442055bedea /addons/website | |
| parent | 7e96d485c7d91e5fcb3ee59c71ecb5d76827298f (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/website')
| -rw-r--r-- | addons/website/static/src/js/editor/wysiwyg_multizone.js | 2 | ||||
| -rw-r--r-- | addons/website/static/src/js/tours/restricted_editor.js | 17 | ||||
| -rw-r--r-- | addons/website/tests/test_ui.py | 12 | ||||
| -rw-r--r-- | addons/website/views/website_templates.xml | 1 |
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"/> |
