From 614666257fd10521964a5eb542181579267a6b7f Mon Sep 17 00:00:00 2001 From: Nicolas Lempereur <nle@odoo.com> Date: Fri, 8 Nov 2019 12:24:18 +0000 Subject: [PATCH] [FIX] web_editor: reintroduce source mode in debug In 12.3 there was a number of changes in source mode. This was reverted before 13.0 and somehow it seems the source mode was lost between the 12.3 editor changes and its revert. With this changeset, we introduce back source mode as it was in 12. opw-2091649 opw-2116960 closes #40026 closes odoo/odoo#40120 X-original-commit: e29c08969f6e7ad981e9b7b79027d84dc89fbca2 Signed-off-by: Nicolas Lempereur (nle) <nle@odoo.com> --- .../static/src/js/backend/field_html.js | 29 ++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/addons/web_editor/static/src/js/backend/field_html.js b/addons/web_editor/static/src/js/backend/field_html.js index cc06bc53c96d..28613d9e0a75 100644 --- a/addons/web_editor/static/src/js/backend/field_html.js +++ b/addons/web_editor/static/src/js/backend/field_html.js @@ -3,6 +3,7 @@ odoo.define('web_editor.field.html', function (require) { var ajax = require('web.ajax'); var basic_fields = require('web.basic_fields'); +var config = require('web.config'); var core = require('web.core'); var Wysiwyg = require('web_editor.wysiwyg.root'); var field_registry = require('web.field_registry'); @@ -14,6 +15,8 @@ var TranslatableFieldMixin = basic_fields.TranslatableFieldMixin; var QWeb = core.qweb; var assetsLoaded; +var jinjaRegex = /(^|\n)\s*%\s(end|set\s)/; + /** * FieldHtml Widget * Intended to display HTML content. This widget uses the wysiwyg editor @@ -96,6 +99,10 @@ var FieldHtml = basic_fields.DebouncedField.extend(TranslatableFieldMixin, { */ commitChanges: function () { var self = this; + if (config.isDebug() && this.mode === 'edit') { + var layoutInfo = $.summernote.core.dom.makeLayoutInfo(this.wysiwyg.$editor); + $.summernote.pluginEvents.codeview(undefined, undefined, layoutInfo, false); + } if (this.mode == "readonly" || !this.isRendered) { return this._super(); } @@ -199,6 +206,20 @@ var FieldHtml = basic_fields.DebouncedField.extend(TranslatableFieldMixin, { if (para && para[1] && para[1].indexOf('checklist') === -1) { para[1].splice(2, 0, 'checklist'); } + if (config.isDebug()) { + options.codeview = true; + var view = _.find(options.toolbar, function (item) { + return item[0] === 'view'; + }); + if (view) { + if (!view[1].includes('codeview')) { + view[1].splice(-1, 0, 'codeview'); + } + } else { + options.toolbar.splice(-1, 0, ['view', ['codeview']]); + } + } + options.prettifyHtml = false; return options; }, }); @@ -341,7 +362,7 @@ var FieldHtml = basic_fields.DebouncedField.extend(TranslatableFieldMixin, { */ _textToHtml: function (text) { var value = text || ""; - if (/%\send/.test(value)) { // is jinja + if (jinjaRegex.test(value)) { // is jinja return value; } try { @@ -464,6 +485,12 @@ var FieldHtml = basic_fields.DebouncedField.extend(TranslatableFieldMixin, { top: '+5px', }); this.$el.append($button); + // force source editor if it contains multiline Jinja directives + if (jinjaRegex.test(this._getValue())) { + var layoutInfo = $.summernote.core.dom.makeLayoutInfo(this.wysiwyg.$editor); + layoutInfo.toolbar().hide(); + $.summernote.pluginEvents.codeview(undefined, undefined, layoutInfo, true); + } }, /** * @private -- GitLab