diff --git a/bt5/erp5_code_mirror/SkinTemplateItem/portal_skins/erp5_code_mirror/codemirror.gadget.js.js b/bt5/erp5_code_mirror/SkinTemplateItem/portal_skins/erp5_code_mirror/codemirror.gadget.js.js index 7380aa9a5da2b6d9a24f71c0c04eb56b5cafface..a1933646e658bab6664bddaf4b28843ad9316aa6 100644 --- a/bt5/erp5_code_mirror/SkinTemplateItem/portal_skins/erp5_code_mirror/codemirror.gadget.js.js +++ b/bt5/erp5_code_mirror/SkinTemplateItem/portal_skins/erp5_code_mirror/codemirror.gadget.js.js @@ -81,6 +81,10 @@ mode = 'css'; } else if ((options.portal_type === 'Python Script') || (options.portal_type === 'Test Component') || + (options.portal_type === 'Module Component') || + (options.portal_type === 'Interface Component') || + (options.portal_type === 'Document Component') || + (options.portal_type === 'Tool Component') || (options.portal_type === 'Extension Component')) { mode = 'python'; } diff --git a/bt5/erp5_monaco_editor/SkinTemplateItem/portal_skins/erp5_monaco_editor/monaco-editor.gadget.html.html b/bt5/erp5_monaco_editor/SkinTemplateItem/portal_skins/erp5_monaco_editor/monaco-editor.gadget.html.html index 6edbbd25eaba6cd6aac4f4c533bd93081dfa3ca0..574b22d9aa4d7c501121200f25d18029cd0e8a77 100644 --- a/bt5/erp5_monaco_editor/SkinTemplateItem/portal_skins/erp5_monaco_editor/monaco-editor.gadget.html.html +++ b/bt5/erp5_monaco_editor/SkinTemplateItem/portal_skins/erp5_monaco_editor/monaco-editor.gadget.html.html @@ -24,7 +24,7 @@ -
- + + 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 52d818815fe4db7169f86af8de2e3753de26bb38..537103f21efa336318271dc1b385da0080b9cdcc 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 @@ -3,6 +3,11 @@ (function(window, rJS, monaco) { 'use strict'; + // globals + const JSLINT = window['JSLINT']; + const prettier = window['prettier']; + const prettierPlugins = window['prettierPlugins']; + rJS(window) .declareAcquiredMethod('notifySubmit', 'notifySubmit') .declareJob('deferNotifySubmit', function() { @@ -14,15 +19,14 @@ // Ensure error will be correctly handled return this.notifyChange(); }) - .ready(function() { - var context = this, - editor; + .ready(function(context) { + let editor; function deferNotifyChange() { if (!context.state.ignoredChangeDuringInitialization) { return context.deferNotifyChange(); } } - this.editor = editor = monaco.editor.create( + context.editor = editor = monaco.editor.create( this.element.querySelector('.monaco-container'), { /* because Alt+Click is LeftClick on ChromeOS */ @@ -84,7 +88,16 @@ model_language = 'javascript'; } else if (options.portal_type === 'Web Style') { model_language = 'css'; - } else if (options.portal_type === 'Python Script') { + } else if ( + options.portal_type === 'Python Script' || + options.portal_type === 'Test Component' || + options.portal_type === 'Extension Component' || + options.portal_type === 'Document Component' || + options.portal_type === 'Tool Component' || + options.portal_type === 'Interface Component' || + options.portal_type === 'Mixin Component' || + options.portal_type === 'Module Component' + ) { model_language = 'python'; } state_dict.model_language = model_language; @@ -154,18 +167,20 @@ }); // Type mapping for Nexedi libraries - function addExtraLibrary(script_name, lib_name) { - return fetch(script_name) - .then(function(resp) { - return resp.text(); - }) - .then(function(script_code) { - monaco.languages.typescript.javascriptDefaults.addExtraLib( - script_code, - lib_name - ); - }); - } + const addExtraLibrary = function(script_name, lib_name) { + return () => { + return fetch(script_name) + .then(function(resp) { + return resp.text(); + }) + .then(function(script_code) { + monaco.languages.typescript.javascriptDefaults.addExtraLib( + script_code, + lib_name + ); + }); + }; + }; queue .push(addExtraLibrary('./monaco-rsvp.d.ts', 'rsvp')) .push(addExtraLibrary('./monaco-renderjs.d.ts', 'renderjs')) @@ -190,4 +205,4 @@ } return form_data; }); -})(window, rJS, monaco); +})(window, rJS, window['monaco']); diff --git a/bt5/erp5_monaco_editor_ui_test/PathTemplateItem/portal_tests/monaco_editor_zuite/testCodeEditorRenderJSStyle.xml b/bt5/erp5_monaco_editor_ui_test/PathTemplateItem/portal_tests/monaco_editor_zuite/testCodeEditorRenderJSStyle.xml new file mode 100644 index 0000000000000000000000000000000000000000..8e713babcc7f9e94ee51022bd0f68375b850bd69 --- /dev/null +++ b/bt5/erp5_monaco_editor_ui_test/PathTemplateItem/portal_tests/monaco_editor_zuite/testCodeEditorRenderJSStyle.xml @@ -0,0 +1,58 @@ + +Python Code Editor Gadget RenderJS Style | ||
open | +${base_url}/foo_module/ListBoxZuite_reset | |
assertTextPresent | +Reset Successfully. | |
Set preferred text editor | ||
open | +${base_url}/portal_preferences/erp5_ui_test_preference/Preference_viewHtmlStyle | |
click | +//input[@name="field_my_preferred_text_editor" and @value="monaco"] | |
clickAndWait | +//button[@name='Base_edit:method'] | |
Switch to renderjs UI and edit components | ||
open | +${base_url}/web_site_module/renderjs_runner/#/portal_components?editable=true | |
Testing | ||
waitForElementPresent | +//a[@data-i18n='Add'] | |
click | +link=Add | |
waitForElementPresent | +//select[@name='field_your_select_action'] | |
select | +//select[@name='field_your_select_action'] | +label= |
Wait for editor to be loaded and edit | ||
waitForElementPresent | +//div[@data-gadget-scope="editor"]//iframe | |
selectFrame | +//div[@data-gadget-scope="editor"]//iframe | |
waitForElementPresent | +css=div.monaco-editor.vs | |
storeEval | +selenium.browserbot.getCurrentWindow().document.querySelector('div.monaco-editor.vs').getAttribute('data-uri') | +model-data-uri |
assertEval | +selenium.browserbot.getCurrentWindow().monaco.editor.getModel(storedVars['model-data-uri']).setValue("'ok'") | +null |
selectFrame | +relative=top | |
click | +//button[@data-i18n="Save"] | |
selectFrame | +//div[@data-gadget-scope="editor"]//iframe | |
waitForElementPresent | +css=div.monaco-editor.vs | |
storeEval | +selenium.browserbot.getCurrentWindow().document.querySelector('div.monaco-editor.vs').getAttribute('data-uri') | +model-data-uri |
assertEval | +selenium.browserbot.getCurrentWindow().monaco.editor.getModel(storedVars['model-data-uri']).setValue("Syntax:Error") | +null |
selectFrame | +relative=top | |
click | +//button[@data-i18n="Save"] | |
Check that our edition is reflected. | ||
waitForElementPresent | +//div[@data-gadget-scope="editor"]//iframe | |
selectFrame | +//div[@data-gadget-scope="editor"]//iframe | |
waitForText | +//body | + +glob:1*Syntax:Error |
selectFrame | +relative=top | |
Use breadcrumbs to go back to portal components | ||
waitForElementPresent | +//a[@data-i18n="Views"] | |
click | +//a[@data-i18n="Views"] | |
waitForElementPresent | +//a[.="portal_components"] | |
click | +//a[.="portal_components"] |