Prechádzať zdrojové kódy

문서 문법에 맞춰서 모나코 에디터 변경되도록 수정

잉여개발기 (SPDV) 2 rokov pred
rodič
commit
7c233719a1
5 zmenil súbory, kde vykonal 58 pridanie a 22 odobranie
  1. 9 2
      route/edit.py
  2. 1 1
      route/tool/func.py
  3. 26 15
      route/view_set.py
  4. 1 1
      version.json
  5. 21 3
      views/main_css/js/func/editor.js

+ 9 - 2
route/edit.py

@@ -2,6 +2,7 @@ import multiprocessing
 
 from .tool.func import *
 
+from .view_set import view_set_markup
 
 def edit_render_set(name, content):
     with get_db_connect() as conn:
@@ -67,10 +68,17 @@ def edit_editor(conn, ip, data_main = '', do_type = 'edit', addon = '', name = '
     else:
         editor_display[0] = ''
 
+    # 에디터 선택창
     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" ' + ('selected' if editor_display[0] == '' else '') + '>' + get_lang(conn, 'default') + '</option>'
     monaco_editor_top += '<option value="monaco" ' + ('selected' if editor_display[1] == '' else '') + '>' + get_lang(conn, 'monaco_editor') + '</option>'
-    monaco_editor_top += '</select>'
+    monaco_editor_top += '</select> '
+
+    # 문법 선택창
+    if do_type == 'edit':
+        monaco_editor_top += view_set_markup(conn, document_name = name, addon = 'id="opennamu_editor_markup" onclick="opennamu_do_sync_monaco_markup();"')
+    else:
+        monaco_editor_top += view_set_markup(conn, addon = 'id="opennamu_editor_markup" onclick="opennamu_do_sync_monaco_markup();"', disable = 'disabled')
 
     textarea_size = 'opennamu_textarea_500' if do_type == 'edit' else 'opennamu_textarea_100'
 
@@ -86,7 +94,6 @@ def edit_editor(conn, ip, data_main = '', do_type = 'edit', addon = '', name = '
         ''' + div + '''
 
         <div id="opennamu_monaco_editor" class="''' + textarea_size + '''" ''' + editor_display[1] + '''></div>
-        <textarea id="opennamu_simplemde" class="''' + textarea_size + '''" ''' + editor_display[2] + '''></textarea>
         <textarea id="opennamu_edit_textarea" class="''' + textarea_size + '''" ''' + editor_display[0] + ''' name="content" placeholder="''' + p_text + '''">''' + html.escape(data_main) + '''</textarea>
         <hr class="main_hr">
         

+ 1 - 1
route/tool/func.py

@@ -1072,7 +1072,7 @@ def skin_check(conn, set_n = 0):
         return skin
     
 def cache_v():
-    return '.cache_v254'
+    return '.cache_v255'
 
 def wiki_css(data):
     global global_wiki_set

+ 26 - 15
route/view_set.py

@@ -1,5 +1,30 @@
 from .tool.func import *
 
+def view_set_markup(conn, document_name = '', markup = '', addon = '', disable = ''):
+    curs = conn.cursor()
+
+    curs.execute(db_change('select data from other where name = "markup"'))
+    db_data = curs.fetchall()
+    default_markup = db_data[0][0] if db_data and db_data[0][0] != '' else 'namumark'
+
+    markup_load = markup
+    if markup == '':
+        curs.execute(db_change("select set_data from data_set where doc_name = ? and set_name = 'document_markup'"), [document_name])
+        db_data = curs.fetchall()
+        markup_load = db_data[0][0] if db_data and db_data[0][0] != '' else ''
+
+    markup_list = ['normal'] + get_init_set_list('markup')['list']
+    markup_html = ''
+    for for_a in markup_list:
+        if markup_load == for_a:
+            markup_html = '<option value="' + (for_a if for_a != 'normal' else default_markup) + '">' + for_a + '</option>' + markup_html
+        else:
+            markup_html += '<option value="' + (for_a if for_a != 'normal' else default_markup) + '">' + for_a + '</option>'
+    
+    markup_html = '<select name="document_markup" ' + disable + ' ' + addon + '>' + markup_html + '</select>'
+
+    return markup_html
+
 def view_set(name = 'Test'):
     with get_db_connect() as conn:
         curs = conn.cursor()
@@ -185,21 +210,7 @@ def view_set(name = 'Test'):
                 <h2>''' + get_lang(conn, 'markup') + '''</h2>
             '''
 
-            curs.execute(db_change("select set_data from data_set where doc_name = ? and set_name = 'document_markup'"), [name])
-            db_data = curs.fetchall()
-            markup_load = db_data[0][0] if db_data and db_data[0][0] != '' else ''
-
-            markup_list = ['normal'] + get_init_set_list('markup')['list']
-            markup_html = ''
-            for for_a in markup_list:
-                if markup_load == for_a:
-                    markup_html = '<option value="' + (for_a if for_a != 'normal' else '') + '">' + for_a + '</option>' + markup_html
-                else:
-                    markup_html += '<option value="' + (for_a if for_a != 'normal' else '') + '">' + for_a + '</option>'
-            
-            markup_html = '<select name="document_markup" ' + check_ok + '>' + markup_html + '</select>'
-
-            data += markup_html
+            data += view_set_markup(conn, document_name = name, disable = check_ok)
 
             save_button = '<button type="submit" ' + check_ok + '>' + get_lang(conn, 'save') + '</button>'
             if admin_check(conn) != 1:

+ 1 - 1
version.json

@@ -1,6 +1,6 @@
 {
     "beta" : {
-        "r_ver" : "v3.5.0-v118",
+        "r_ver" : "v3.5.0-v119",
         "c_ver" : "20240513",
         "s_ver" : "20240426"
     }

+ 21 - 3
views/main_css/js/func/editor.js

@@ -156,7 +156,7 @@ function do_monaco_to_textarea(set_value) {
     document.getElementById('opennamu_edit_textarea').value = set_value;
 }
 
-function do_textarea_to_manaco(set_value) {
+function do_textarea_to_monaco(set_value) {
     window.editor.setValue(set_value);
 }
 
@@ -171,11 +171,22 @@ function get_select_editor() {
     }
 }
 
+function get_select_editor_markup() {
+    let now_selected = document.getElementById("opennamu_editor_markup").value;
+    if(now_selected === 'namumark' || now_selected === 'namumark_beta') {
+        return 'namumark';
+    } else if(now_selected === 'markdown') {
+        return 'markdown';
+    } else {
+        return 'plaintext';
+    }
+}
+
 function do_sync_monaco_and_textarea(select = '') {
     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);
+        do_textarea_to_monaco(set_value);
     } else if(now_selected === 'monaco') {
         let set_value = window.editor.getValue();
         do_monaco_to_textarea(set_value);
@@ -231,7 +242,7 @@ class PlaceholderContentWidget {
     }
 }
 
-function do_monaco_init(monaco_thema, markup = "") {
+function do_monaco_init(monaco_thema) {
     require.config({ paths: { 'vs' : 'https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.48.0/min/vs' }});
     require.config({ 'vs/nls' : { availableLanguages: { '*' : 'ko' } }});
     require(["vs/editor/editor.main"], function () {
@@ -280,6 +291,8 @@ function do_monaco_init(monaco_thema, markup = "") {
         });
 
         new PlaceholderContentWidget(document.getElementById('opennamu_edit_textarea').placeholder, window.editor);
+
+        opennamu_do_sync_monaco_markup();
     });
 }
 
@@ -297,6 +310,11 @@ function opennamu_do_editor_preview() {
     }
 }
 
+function opennamu_do_sync_monaco_markup() {
+    let now_selected = get_select_editor_markup();
+    monaco.editor.setModelLanguage(window.editor.getModel(), now_selected);
+}
+
 function opennamu_do_editor_temp_save() {
     do_sync_monaco_and_textarea();