@ -69,28 +69,36 @@
[if or [winix_function_is "emacs"] [winix_function_is "env"] [winix_function_is "meta"]]
< script type = "text/javascript" src = "[doc_base_url_common]/codemirror/5. 59.2 /lib/codemirror.js"> < / script >
< link rel = "stylesheet" href = "[doc_base_url_common]/codemirror/5. 59.2 /lib/codemirror.css" type = "text/css" >
< script type = "text/javascript" src = "[doc_base_url_common]/codemirror/5. 64.0 /lib/codemirror.js"> < / script >
< link rel = "stylesheet" href = "[doc_base_url_common]/codemirror/5. 64.0 /lib/codemirror.css" type = "text/css" >
< script src = "[doc_base_url_common]/codemirror/5.59.2/mode/css/css.js" > < / script >
< script src = "[doc_base_url_common]/codemirror/5.59.2/mode/javascript/javascript.js" > < / script >
< script src = "[doc_base_url_common]/codemirror/5.59.2/mode/xml/xml.js" > < / script >
< script src = "[doc_base_url_common]/codemirror/5.59.2/mode/htmlmixed/htmlmixed.js" > < / script >
< script src = "[doc_base_url_common]/codemirror/5.64.0/mode/css/css.js" > < / script >
< script src = "[doc_base_url_common]/codemirror/5.64.0/mode/javascript/javascript.js" > < / script >
< script src = "[doc_base_url_common]/codemirror/5.64.0/mode/xml/xml.js" > < / script >
< script src = "[doc_base_url_common]/codemirror/5.64.0/mode/htmlmixed/htmlmixed.js" > < / script >
< script src = "[doc_base_url_common]/codemirror/5.64.0/mode/markdown/markdown.js" > < / script >
<!-- <link rel="stylesheet" href="[doc_base_url_common]/codemirror/5. 59.2 /theme/base16- light.css" type="text/css"> -->
<!-- <link rel="stylesheet" href="[doc_base_url_common]/codemirror/5. 64.0 /theme/base16- light.css" type="text/css"> -->
< script src = "[doc_base_url_common]/codemirror/5. 59.2 /addon/display/fullscreen.js"> < / script >
< link rel = "stylesheet" href = "[doc_base_url_common]/codemirror/5. 59.2 /addon/display/fullscreen.css" type = "text/css" >
< script src = "[doc_base_url_common]/codemirror/5. 64.0 /addon/display/fullscreen.js"> < / script >
< link rel = "stylesheet" href = "[doc_base_url_common]/codemirror/5. 64.0 /addon/display/fullscreen.css" type = "text/css" >
[if false]
< script src = "[doc_base_url_common]/codemirror/5. 59.2 /addon/search/search.js"> < / script >
< link rel = "stylesheet" href = "[doc_base_url_common]/codemirror/5. 59.2 /addon/search/matchesonscrollbar.css" type = "text/css" >
< script src = "[doc_base_url_common]/codemirror/5. 64.0 /addon/search/search.js"> < / script >
< link rel = "stylesheet" href = "[doc_base_url_common]/codemirror/5. 64.0 /addon/search/matchesonscrollbar.css" type = "text/css" >
[end]
< script src = "[doc_base_url_common]/codemirror/5.59.2/addon/fold/xml-fold.js" > < / script >
< script src = "[doc_base_url_common]/codemirror/5.59.2/addon/edit/matchtags.js" > < / script >
< script src = "[doc_base_url_common]/codemirror/5.64.0/addon/fold/xml-fold.js" > < / script >
< script src = "[doc_base_url_common]/codemirror/5.64.0/addon/edit/matchtags.js" > < / script >
< script src = "[doc_base_url_common]/codemirror/5.64.0/addon/selection/active-line.js" > < / script >
[# markdown to html converter]
[# https://github.com/showdownjs/showdown ]
< script src = "[doc_base_url_common]/showdown/1.9.1/dist/showdown.min.js" > < / script >
< script src = "[doc_base_url_common]/codemirror/5.59.2/addon/selection/active-line.js" > < / script >
< style >
@ -112,14 +120,27 @@
< script type = "text/javascript" >
var winix_code_mirror_editor;
var winix_code_mirror_editor = null;
var winix_showdown_converter = null;
var winix_converter_output = null;
var winix_content_parsed = null;
var winix_emacs_mode = 0;
function winix_initialize_editor()
\{
var text_area = document.getElementById("winix_content_id");
var winix_contenttype = document.getElementById("winix_contenttype_id");
var onchange_delay = null;
winix_content_parsed = document.getElementById("winix_content_parsed_id");
if( text_area )
\{
winix_showdown_converter = new showdown.Converter();
winix_converter_output = document.getElementById("winix_output_preview");
winix_code_mirror_editor = CodeMirror.fromTextArea(text_area, \{
mode: "htmlmixed",
mode: winix_get_codemirror_mode(winix_emacs_mode) ,
theme: "default",
indentUnit: 4,
smartIndent: true,
@ -135,9 +156,99 @@
matchTags: true,
styleActiveLine: true
\});
winix_codemirror_preview();
winix_code_mirror_editor.on("change", function(instance) \{
if( onchange_delay !== null )
clearTimeout(onchange_delay);
onchange_delay = setTimeout(winix_codemirror_preview, 300);
\});
\}
if( winix_contenttype )
\{
winix_emacs_mode = parseInt(winix_contenttype.value);
winix_set_codemirror_mode();
winix_contenttype.addEventListener("change", function(e) \{
winix_emacs_mode = parseInt(this.value);
winix_set_codemirror_mode();
\});
\}
\}
function winix_codemirror_preview()
\{
if( winix_code_mirror_editor !== null )
\{
if( winix_emacs_mode == 2 )
\{
let sourceMarkup = winix_code_mirror_editor.getValue();
winix_converter_output.innerHTML = sourceMarkup;
if( winix_content_parsed !== null )
winix_content_parsed.value = "";
\}
else
if( winix_emacs_mode == 5 )
\{
let sourceMarkup = winix_code_mirror_editor.getValue();
let htmlMarkup = winix_showdown_converter.makeHtml(sourceMarkup);
if( winix_converter_output !== null )
winix_converter_output.innerHTML = htmlMarkup;
if( winix_content_parsed !== null )
winix_content_parsed.value = htmlMarkup;
\}
else
\{
[# IMPROVEME add support for text and formated text ]
winix_converter_output.innerHTML = "";
if( winix_content_parsed !== null )
winix_content_parsed.value = "";
\}
\}
\}
function winix_get_codemirror_mode(mode)
\{
switch(mode)
\{
case 5:
return "markdown";
case 2: // html
return "htmlmixed";
case 0: // text
case 1: // formatted text
case 3: // bbcode
case 4: // other
default:
return "text/plain";
\}
\}
function winix_set_codemirror_mode()
\{
if( winix_code_mirror_editor !== null )
\{
let codeMirrorMode = winix_get_codemirror_mode(winix_emacs_mode);
console.log("changing mode to: " + codeMirrorMode);
winix_code_mirror_editor.setOption("mode", codeMirrorMode);
winix_codemirror_preview();
\}
\}
[if false]
this will probably be used to change the mode in the fly
winix_code_mirror_editor.setOption("mode", "");
@ -147,11 +258,8 @@ cm.save()
Copy the content of the editor into the textarea.
[end]
if( window.addEventListener )
window.addEventListener("load", winix_initialize_editor, false);
else
if( window.attachEvent )
window.attachEvent("onload", winix_initialize_editor);
window.addEventListener("load", winix_initialize_editor, false);
< / script >
[end]