From 3d3ee5da8141ec282e69be60eed020b44e3abf86 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=A9rome=20Perrin?= <jerome@nexedi.com>
Date: Fri, 20 Dec 2019 08:24:15 +0100
Subject: [PATCH] monaco: support non editable mode

by setting "readOnly" to true.
Monaco also supports applying its style to a <pre> element (like on
https://microsoft.github.io/monaco-editor/playground.html#creating-the-editor-syntax-highlighting-for-html-elements
) but it would be a too big architecture change, a readOnly editor is
enough.
---
 .../portal_skins/erp5_monaco_editor/monaco-editor.gadget.js.js  | 2 ++
 .../SkinTemplateItem/portal_skins/erp5_core/gadget_editor.js.js | 2 ++
 2 files changed, 4 insertions(+)

diff --git a/bt5/erp5_monaco_editor/SkinTemplateItem/portal_skins/erp5_monaco_editor/monaco-editor.gadget.js.js b/bt5/erp5_monaco_editor/SkinTemplateItem/portal_skins/erp5_monaco_editor/monaco-editor.gadget.js.js
index bfd6704ea7..bdbfc3610e 100644
--- a/bt5/erp5_monaco_editor/SkinTemplateItem/portal_skins/erp5_monaco_editor/monaco-editor.gadget.js.js
+++ b/bt5/erp5_monaco_editor/SkinTemplateItem/portal_skins/erp5_monaco_editor/monaco-editor.gadget.js.js
@@ -171,6 +171,8 @@
             .push(addExtraLibrary('./monaco-renderjs.d.ts', 'renderjs'))
             .push(addExtraLibrary('./monaco-jio.d.ts', 'jio'));
         }
+      if (modification_dict.hasOwnProperty('editable')){
+        gadget.editor.updateOptions({readOnly: !this.state.editable});
       }
       return queue;
     })
diff --git a/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/gadget_editor.js.js b/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/gadget_editor.js.js
index b24a85c4fa..dfc467049e 100644
--- a/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/gadget_editor.js.js
+++ b/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/gadget_editor.js.js
@@ -112,6 +112,7 @@ lockGadgetInQueue, unlockGadgetInQueue, unlockGadgetInFailedQueue*/
              (editor_dict.hasOwnProperty(gadget.state.editor))) ||
             (!gadget.state.editable && gadget.state.editor === 'fck_editor') ||
             (!gadget.state.editable && gadget.state.editor === 'jsmd_editor') ||
+            (!gadget.state.editable && gadget.state.editor === 'monaco') ||
             (gadget.state.editor === 'pdf')) {
           queue
             .push(function () {
@@ -143,6 +144,7 @@ lockGadgetInQueue, unlockGadgetInQueue, unlockGadgetInFailedQueue*/
              (editor_dict.hasOwnProperty(gadget.state.editor))) ||
             (!gadget.state.editable && gadget.state.editor === 'fck_editor') ||
             (!gadget.state.editable && gadget.state.editor === 'jsmd_editor') ||
+            (!gadget.state.editable && gadget.state.editor === 'monaco') ||
             (gadget.state.editor === 'pdf')) {
         queue
           .push(function () {
-- 
2.30.9