Просмотр исходного кода

에디터 하나 더 추가 준비

잉여개발기 (SPDV) 2 лет назад
Родитель
Сommit
b97f53550e
2 измененных файлов с 45 добавлено и 23 удалено
  1. 12 5
      route/edit.py
  2. 33 18
      views/main_css/js/func/editor.js

+ 12 - 5
route/edit.py

@@ -56,14 +56,19 @@ def edit_editor(conn, ip, data_main = '', do_type = 'edit', addon = '', name = '
             
     p_text = html.escape(sql_d[0][0]) if sql_d and sql_d[0][0] != '' else get_lang(conn, 'default_edit_help')
     
-    monaco_editor_top += '<a href="javascript:opennamu_do_editor_temp_save();">(' + get_lang(conn, 'load_temp_save') + ')</a> <a href="javascript:opennamu_do_editor_temp_save_load();">(' + get_lang(conn, 'load_temp_save_load') + ')</a> '
-    monaco_editor_top += '<a href="javascript:opennamu_edit_turn_off_monaco();">(' + get_lang(conn, 'turn_off_monaco') + ')</a>'
+    monaco_editor_top += '<a href="javascript:opennamu_do_editor_temp_save();">(' + get_lang(conn, 'load_temp_save') + ')</a> <a href="javascript:opennamu_do_editor_temp_save_load();">(' + get_lang(conn, 'load_temp_save_load') + ')</a>'
+    monaco_editor_top += '<hr class="main_hr">'
+    
+    monaco_editor_top += '<select onclick="do_sync_monaco_and_textarea();" id="opennamu_select_editor" onchange="opennamu_edit_turn_off_monaco();">'
+    monaco_editor_top += '<option value="default">' + get_lang(conn, 'default') + '</option>'
+    monaco_editor_top += '<option value="monaco">' + get_lang(conn, 'monaco_editor') + '</option>'
+    monaco_editor_top += '<option value="new_ide">' + get_lang(conn, 'new_ide') + '</option>'
+    monaco_editor_top += '</select>'
+    
     
     darkmode = flask.request.cookies.get('main_css_darkmode', '0')
     monaco_thema = 'vs-dark' if darkmode == '1' else ''
     
-    add_script = 'do_monaco_init("' + monaco_thema + '");'
-    
     monaco_on = get_main_skin_set(conn, flask.session, 'main_css_monaco', ip)
     if monaco_on == 'use':
         editor_display = 'style="display: none;"'
@@ -83,6 +88,7 @@ def edit_editor(conn, ip, data_main = '', do_type = 'edit', addon = '', name = '
         ''' + div + '''
 
         <div id="opennamu_monaco_editor" class="''' + textarea_size + '''" ''' + monaco_display + '''></div>
+        <textarea id="opennamu_simplemde" class="''' + textarea_size + '''" ''' + monaco_display + '''></textarea>
         <textarea id="opennamu_edit_textarea" ''' + editor_display + ''' class="''' + textarea_size + '''" name="content" placeholder="''' + p_text + '''">''' + html.escape(data_main) + '''</textarea>
         <hr class="main_hr">
         
@@ -93,7 +99,8 @@ def edit_editor(conn, ip, data_main = '', do_type = 'edit', addon = '', name = '
             window.addEventListener('DOMContentLoaded', function() {
                 do_stop_exit();
                 do_paste_image();
-                ''' + add_script + '''
+                do_monaco_init("''' + monaco_thema + '''");
+                do_simplemde_init();
             });
         </script>
                         

+ 33 - 18
views/main_css/js/func/editor.js

@@ -132,38 +132,53 @@ function do_stop_exit_release() {
 }
 
 function opennamu_edit_turn_off_monaco() {
-    do_sync_monaco_and_textarea();
-
-    if(get_select_editor() === 'textarea') {
-        document.getElementById('opennamu_edit_textarea').style.display = 'none';
-        document.getElementById('opennamu_monaco_editor').style.display = 'block';
+    let now_selected = get_select_editor();
+    let editor_list = [
+        ['opennamu_edit_textarea', 'none'], 
+        ['opennamu_monaco_editor', 'none']
+    ];
+
+    if(now_selected === 'textarea') {
+        editor_list[0][1] = 'block';
+    } else if(now_selected === 'monaco') {
+        editor_list[1][1] = 'block';
     } else {
-        document.getElementById('opennamu_edit_textarea').style.display = 'block';
-        document.getElementById('opennamu_monaco_editor').style.display = 'none';
+    }
+
+    for(let for_a = 0; for_a < editor_list.length; for_a++) {
+        document.getElementById(editor_list[for_a][0]).style.display = editor_list[for_a][1];
     }
 }
 
-function do_monaco_to_textarea() {
-    document.getElementById('opennamu_edit_textarea').value = window.editor.getValue();
+function do_monaco_to_textarea(set_value) {
+    document.getElementById('opennamu_edit_textarea').value = set_value;
 }
 
-function do_textarea_to_manaco() {
-    window.editor.setValue(document.getElementById('opennamu_edit_textarea').value);
+function do_textarea_to_manaco(set_value) {
+    window.editor.setValue(set_value);
 }
 
 function get_select_editor() {
-    if(document.getElementById('opennamu_monaco_editor').style.display === 'none') {
-        return 'textarea'
+    let now_selected = document.getElementById("opennamu_select_editor").value;
+    if(now_selected === 'default') {
+        return 'textarea';
+    } else if(now_selected === 'monaco') {
+        return 'monaco';
     } else {
-        return 'monaco'
+        return '';
     }
 }
 
 function do_sync_monaco_and_textarea(select = '') {
-    if(select === 'textarea_to_monaco' || get_select_editor() === 'textarea') {
-        do_textarea_to_manaco();
+    let now_selected = get_select_editor();
+    if(select === 'textarea_to' || now_selected === 'textarea') {
+        let set_value = document.getElementById('opennamu_edit_textarea').value;
+        do_textarea_to_manaco(set_value);
+    } else if(now_selected === 'monaco') {
+        let set_value = window.editor.getValue();
+        do_monaco_to_textarea(set_value);
     } else {
-        do_monaco_to_textarea();
+
     }
 }
 
@@ -297,6 +312,6 @@ function opennamu_do_editor_temp_save_load() {
             input.value = data;
         }
         
-        do_textarea_to_manaco();
+        do_sync_monaco_and_textarea('textarea_to');
     }
 }