ソースを参照

https://github.com/openNAMU/openNAMU/issues/1586

잉여개발기 (SPDV) 2 年 前
コミット
fdaab7fd78

+ 9 - 3
route/edit.py

@@ -49,6 +49,8 @@ def edit_editor(curs, ip, data_main = '', do_type = 'edit', addon = ''):
             
     p_text = html.escape(sql_d[0][0]) if sql_d and sql_d[0][0] != '' else load_lang('default_edit_help')
     
+    monaco_editor_top += '<a href="javascript:do_monaco_to_textarea(); opennamu_do_editor_temp_save();">(' + load_lang('load_temp_save') + ')</a> <a href="javascript:opennamu_do_editor_temp_save_load();">(' + load_lang('load_temp_save_load') + ')</a> '
+    
     monaco_on = get_main_skin_set(curs, flask.session, 'main_css_monaco', ip)
     if monaco_on == 'use':
         editor_display = 'style="display: none;"'
@@ -57,7 +59,7 @@ def edit_editor(curs, ip, data_main = '', do_type = 'edit', addon = ''):
             <script src="https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.41.0/min/vs/loader.min.js" integrity="sha512-A+6SvPGkIN9Rf0mUXmW4xh7rDvALXf/f0VtOUiHlDUSPknu2kcfz1KzLpOJyL2pO+nZS13hhIjLqVgiQExLJrw==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
         '''
 
-        monaco_editor_top = '<a href="javascript:opennamu_edit_turn_off_monaco();">(' + load_lang('turn_off_monaco') + ')</a>'
+        monaco_editor_top += '<a href="javascript:opennamu_edit_turn_off_monaco();">(' + load_lang('turn_off_monaco') + ')</a>'
         
         if flask.request.cookies.get('main_css_darkmode', '0') == '1':
             monaco_thema = 'vs-dark'
@@ -76,7 +78,11 @@ def edit_editor(curs, ip, data_main = '', do_type = 'edit', addon = ''):
 
     return add_get_file + '''
         <textarea style="display: none;" id="opennamu_edit_origin" name="doc_data_org">''' + html.escape(data_main) + '''</textarea>
-        <div>''' + monaco_editor_top + ' ' + edit_button('opennamu_edit_textarea', 'opennamu_monaco_editor') + '''</div>
+        <div>
+            ''' + monaco_editor_top + '''
+            <hr class="main_hr">
+            ''' + edit_button() + '''
+        </div>
         
         <div id="opennamu_monaco_editor" class="''' + textarea_size + '''" ''' + monaco_display + '''></div>
         <textarea id="opennamu_edit_textarea" ''' + editor_display + ''' class="''' + textarea_size + '''" name="content" placeholder="''' + p_text + '''">''' + html.escape(data_main) + '''</textarea>
@@ -87,7 +93,7 @@ def edit_editor(curs, ip, data_main = '', do_type = 'edit', addon = ''):
 
         <script>
             do_stop_exit();
-            do_paste_image('opennamu_edit_textarea', 'opennamu_monaco_editor');
+            do_paste_image();
             ''' + add_script + '''
         </script>
                         

+ 3 - 3
route/tool/func.py

@@ -824,7 +824,7 @@ def get_tool_js_safe(data):
 
     return data
 
-def edit_button(ob_name = 'opennamu_edit_textarea', monaco_ob_name = 'opennamu_monaco_editor'):
+def edit_button():
     with get_db_connect() as conn:
         curs = conn.cursor()
 
@@ -837,7 +837,7 @@ def edit_button(ob_name = 'opennamu_edit_textarea', monaco_ob_name = 'opennamu_m
 
         data = ''
         for insert_data in insert_list:
-            data += '<a href="javascript:do_insert_data(\'' + ob_name + '\', \'' + get_tool_js_safe(insert_data[0]) + '\', \'' + monaco_ob_name + '\');">(' + html.escape(insert_data[1]) + ')</a> '
+            data += '<a href="javascript:do_insert_data(\'' + get_tool_js_safe(insert_data[0]) + '\');">(' + html.escape(insert_data[1]) + ')</a> '
 
         data += (' ' if data != '' else '') + '<a href="/filter/edit_top">(' + load_lang('add') + ')</a>'
         data += '<hr class="main_hr">'
@@ -1028,7 +1028,7 @@ def wiki_css(data):
     data_css = ''
     data_css_add = ''
 
-    data_css_ver = '182'
+    data_css_ver = '184'
     data_css_ver = '.cache_v' + data_css_ver
 
     if 'main_css' in global_wiki_set:

+ 1 - 1
version.json

@@ -1,6 +1,6 @@
 {
     "beta" : {
-        "r_ver" : "v3.4.6-RC5-dev35",
+        "r_ver" : "v3.4.6-RC5-dev36",
         "c_ver" : "3500373",
         "s_ver" : "3500112"
     }

+ 8 - 2
views/main_css/js/route/editor.js

@@ -1,6 +1,9 @@
 "use strict";
 
-function do_insert_data(name, data, monaco_name) {
+function do_insert_data(data) {
+    const name = 'opennamu_edit_textarea';
+    const monaco_name = 'opennamu_monaco_editor';
+
     if(!document.getElementById(monaco_name)) {
         // https://stackoverflow.com/questions/11076975/insert-text-into-textarea-at-cursor-position-javascript
         if(document.selection) {
@@ -36,7 +39,10 @@ function do_insert_data(name, data, monaco_name) {
 }
 
 // 아직 개편이 더 필요함
-function do_paste_image(name, monaco_name) {
+function do_paste_image() {
+    const name = 'opennamu_edit_textarea';
+    const monaco_name = 'opennamu_monaco_editor';
+
     window.addEventListener('DOMContentLoaded', async function() {
         let set = await opennamu_get_main_skin_set("main_css_image_paste");
         if(set === 'use') {

+ 21 - 1
views/main_css/js/route/editor_sub.js

@@ -6,7 +6,7 @@ function opennamu_do_editor_preview() {
         if (doc_name_input !== null) {
             doc_name = doc_name_input.value;
         }
-        fetch("/api/w_tool/preview/" + opennamu_do_url_encode(doc_name), {
+        fetch("/api/w_tool/preview/" + (opennamu_do_url_encode(doc_name)), {
             method: 'POST',
             headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
             body: new URLSearchParams({
@@ -23,3 +23,23 @@ function opennamu_do_editor_preview() {
         });
     }
 }
+function opennamu_do_editor_temp_save() {
+    var input = document.querySelector('#opennamu_edit_textarea');
+    if (input !== null) {
+        localStorage.setItem("key", input.value);
+    }
+}
+function opennamu_do_editor_temp_save_load() {
+    var data = localStorage.getItem("key");
+    console.log(data);
+    if (data !== null) {
+        var input = document.querySelector('#opennamu_edit_textarea');
+        if (input !== null) {
+            input.value = data;
+        }
+        var input_2 = document.querySelector('#opennamu_monaco_editor');
+        if (input_2 !== null) {
+            window.editor.setValue(data);
+        }
+    }
+}

+ 29 - 1
views/main_css/js/route/editor_sub.ts

@@ -1,3 +1,8 @@
+declare function opennamu_do_url_encode(data : any) : string;
+interface Window {
+    editor? : any;
+}
+
 function opennamu_do_editor_preview() {
     const input = document.querySelector('#opennamu_edit_textarea') as HTMLInputElement | null;
     if(input !== null) {
@@ -8,7 +13,7 @@ function opennamu_do_editor_preview() {
             doc_name = doc_name_input.value;
         }
 
-        fetch("/api/w_tool/preview/" + (opennamu_do_url_encode(doc_name) as (arg1 : string) => string), {
+        fetch("/api/w_tool/preview/" + (opennamu_do_url_encode(doc_name)), {
             method : 'POST',
             headers : { 'Content-Type': 'application/x-www-form-urlencoded' },
             body : new URLSearchParams({
@@ -24,4 +29,27 @@ function opennamu_do_editor_preview() {
             }
         });
     }
+}
+
+function opennamu_do_editor_temp_save() {
+    const input = document.querySelector('#opennamu_edit_textarea') as HTMLInputElement | null;
+    if(input !== null) {
+        localStorage.setItem("key", input.value);
+    }
+}
+
+function opennamu_do_editor_temp_save_load() {
+    const data = localStorage.getItem("key");
+    console.log(data);
+    if(data !== null) {
+        const input = document.querySelector('#opennamu_edit_textarea') as HTMLInputElement | null;
+        if(input !== null) {
+            input.value = data;
+        }
+
+        const input_2 = document.querySelector('#opennamu_monaco_editor') as any;
+        if(input_2 !== null) {
+            window.editor.setValue(data);
+        }
+    }
 }

+ 0 - 1
views/ringo/js/skin_set.js

@@ -23,7 +23,6 @@ function ringo_get_post() {
 function ringo_do_skin_set() {
     let cookies = document.cookie;
     if(!cookies.match(ringo_do_regex_data('main_css_use_sys_darkmode')) || (cookies.match(ringo_do_regex_data('main_css_use_sys_darkmode')) && cookies.match(ringo_do_regex_data('main_css_use_sys_darkmode'))[1] === '1')) {
-        console.log('test');
         if(window.matchMedia('(prefers-color-scheme: dark)').matches) {
             document.cookie = 'main_css_darkmode=1; path=/';
         } else {

+ 0 - 1
views/tenshi/js/skin_set.js

@@ -23,7 +23,6 @@ function ringo_get_post() {
 function ringo_do_skin_set() {
     let cookies = document.cookie;
     if(!cookies.match(ringo_do_regex_data('main_css_use_sys_darkmode')) || (cookies.match(ringo_do_regex_data('main_css_use_sys_darkmode')) && cookies.match(ringo_do_regex_data('main_css_use_sys_darkmode'))[1] === '1')) {
-        console.log('test');
         if(window.matchMedia('(prefers-color-scheme: dark)').matches) {
             document.cookie = 'main_css_darkmode=1; path=/';
         } else {