Kaynağa Gözat

fix more main skin set

잉여개발기 (SPDV) 3 yıl önce
ebeveyn
işleme
3bd9dd8de7

+ 5 - 0
route/api_setting.py

@@ -1,10 +1,15 @@
 from .tool.func import *
+from .user_setting_skin_set_main import user_setting_skin_set_main_set_list
 
 def api_setting(name = 'markup'):
     with get_db_connect() as conn:
         curs = conn.cursor()
         
+        # from other
         ok_list_1 = ['markup']
+        ok_list_1 += [for_a for for_a in user_setting_skin_set_main_set_list()]
+
+        # from html_filter
         ok_list_2 = ['inter_wiki']
         
         if name in ok_list_1:

+ 1 - 7
route/edit.py

@@ -228,13 +228,7 @@ def edit(name = 'Test', section = 0, do_type = ''):
             sql_d = curs.fetchall()
             p_text = html.escape(sql_d[0][0]) if sql_d and sql_d[0][0] != '' else load_lang('default_edit_help')
             
-            if ip_or_user(ip) == 0:
-                curs.execute(db_change('select data from user_set where name = "main_css_monaco" and id = ?'), [ip])
-                db_data = curs.fetchall()
-                monaco_on = db_data[0][0] if db_data else 'normal'
-            else:
-                monaco_on = flask.session['main_css_monaco'] if 'main_css_monaco' in flask.session else 'normal'
-            
+            monaco_on = get_main_skin_set(curs, flask.session, 'main_css_monaco', ip)
             if monaco_on == 'use':
                 editor_display = 'style="display: none;"'
                 monaco_display = ''

+ 2 - 0
route/filter_inter_wiki_add.py

@@ -101,6 +101,8 @@ def filter_inter_wiki_add(tool, name = None):
 
             return redirect('/' + re.sub(r'^plus_', '', tool))
         else:
+            # 추가 편집 구분 필요
+            # 각 파일 별로 분리 필요
             get_sub = 0
             stat = 'disabled' if admin_check() != 1 else ''
 

+ 3 - 3
route/main_setting_skin_set.py

@@ -90,8 +90,8 @@ def main_setting_skin_set():
                         <select name="main_css_darkmode">
                             ''' + set_data["main_css_darkmode"] + '''
                         </select>
-                        <h2>''' + load_lang("editor") + '''</h2>
-                        <h3>''' + load_lang("image_paste") + ''' (''' + load_lang("not_working") + ''')</h3>
+                        <h2>''' + load_lang("edit") + '''</h2>
+                        <h3>''' + load_lang("image_paste") + '''
                         <sup>''' + load_lang('only_korean') + '''</sup> <sup>''' + load_lang('unavailable_in_monaco') + '''</sup>
                         <hr class="main_hr">
                         <select name="main_css_image_paste">
@@ -105,5 +105,5 @@ def main_setting_skin_set():
                         <button type="submit">''' + load_lang('save') + '''</button>
                     </form>
                 '''),
-                menu = [['change', load_lang('user_setting')], ['change/skin_set', load_lang('skin_set')]]
+                menu = [['setting', load_lang('return')]]
             ))

+ 1 - 1
route/tool/func.py

@@ -1111,7 +1111,7 @@ def wiki_css(data):
     data_css += '<script defer src="/views/main_css/js/route/thread.js?ver=' + data_css_ver + '"></script>'
     
     # Route JS
-    data_css += '<script src="/views/main_css/js/load_editor.js?ver=' + data_css_ver + '"></script>'
+    data_css += '<script src="/views/main_css/js/route/editor.js?ver=' + data_css_ver + '"></script>'
     data_css += '<script src="/views/main_css/js/route/render.js?ver=' + data_css_ver + '"></script>'
     
     # Main CSS

+ 20 - 1
route/user_setting_skin_set_main.py

@@ -116,59 +116,78 @@ def user_setting_skin_set_main():
                     else:
                         set_data[for_b] += '<option value="' + for_a[0] + '">' + for_a[1] + '</option>'
 
+            set_data_main = {}
+            for for_b in set_list:
+                curs.execute(db_change('select data from other where name = ?'), [for_b])
+                db_data = curs.fetchall()
+                server_default = db_data[0][0] if db_data else 'default'
+                set_data_main[for_b] = load_lang('default') + ' : ' + ''.join([for_a[1] for for_a in set_list[for_b] if for_a[0] == server_default]) + '<hr class="main_hr">'
+
             return easy_minify(flask.render_template(skin_check(),
                 imp = [load_lang('main_skin_set'), wiki_set(), wiki_custom(), wiki_css([0, 0])],
                 data = render_simple_set('''
                     <form method="post">
                         <h2>''' + load_lang("render") + '''</h2>
                         <h3>''' + load_lang("strike") + '''</h3>
+                        ''' + set_data_main["main_css_strike"] + '''
                         <select name="main_css_strike">
                             ''' + set_data["main_css_strike"] + '''
                         </select>
                         <h3>''' + load_lang("bold") + '''</h3>
+                        ''' + set_data_main["main_css_bold"] + '''
                         <select name="main_css_bold">
                             ''' + set_data["main_css_bold"] + '''
                         </select>
                         <h3>''' + load_lang("category") + '''</h3>
+                        ''' + set_data_main["main_css_category_set"] + '''
                         <select name="main_css_category_set">
                             ''' + set_data["main_css_category_set"] + '''
                         </select>
                         <h3>''' + load_lang("footnote") + '''</h3>
+                        ''' + set_data_main["main_css_footnote_set"] + '''
                         <select name="main_css_footnote_set">
                             ''' + set_data["main_css_footnote_set"] + '''
                         </select>
                         <h3>''' + load_lang("include_link") + '''</h3>
+                        ''' + set_data_main["main_css_include_link"] + '''
                         <select name="main_css_include_link">
                             ''' + set_data["main_css_include_link"] + '''
                         </select>
                         <h3>''' + load_lang("image") + ''' (''' + load_lang("not_working") + ''')</h3>
+                        ''' + set_data_main["main_css_image_set"] + '''
                         <select name="main_css_image_set">
                             ''' + set_data["main_css_image_set"] + '''
                         </select>
                         <h3>''' + load_lang("toc") + '''</h3>
+                        ''' + set_data_main["main_css_toc_set"] + '''
                         <select name="main_css_toc_set">
                             ''' + set_data["main_css_toc_set"] + '''
                         </select>
                         <h3>''' + load_lang("exter_link") + '''</h3>
+                        ''' + set_data_main["main_css_exter_link"] + '''
                         <select name="main_css_exter_link">
                             ''' + set_data["main_css_exter_link"] + '''
                         </select>
                         <h3>''' + load_lang("link_delimiter") + '''</h3>
+                        ''' + set_data_main["main_css_link_delimiter"] + '''
                         <select name="main_css_link_delimiter">
                             ''' + set_data["main_css_link_delimiter"] + '''
                         </select>
                         <h3>''' + load_lang("force_darkmode") + '''</h3>
+                        ''' + set_data_main["main_css_darkmode"] + '''
                         <select name="main_css_darkmode">
                             ''' + set_data["main_css_darkmode"] + '''
                         </select>
-                        <h2>''' + load_lang("editor") + '''</h2>
+                        <h2>''' + load_lang("edit") + '''</h2>
                         <h3>''' + load_lang("image_paste") + '''</h3>
                         <sup>''' + load_lang('only_korean') + '''</sup> <sup>''' + load_lang('unavailable_in_monaco') + '''</sup>
                         <hr class="main_hr">
+                        ''' + set_data_main["main_css_image_paste"] + '''
                         <select name="main_css_image_paste">
                             ''' + set_data["main_css_image_paste"] + '''
                         </select>
                         <h3>''' + load_lang("monaco_editor") + '''</h3>
+                        ''' + set_data_main["main_css_monaco"] + '''
                         <select name="main_css_monaco">
                             ''' + set_data["main_css_monaco"] + '''
                         </select>

+ 16 - 0
views/main_css/js/func/func.js

@@ -14,4 +14,20 @@ function opennamu_do_url_encode(data) {
 
 function opennamu_cookie_split_regex(data) {
     return new RegExp('(?:^|; )' + data + '=([^;]*)');
+}
+
+function opennamu_get_main_skin_set(set_name) {
+    return fetch("/api/setting/" + opennamu_do_url_encode(set_name)).then(function(res) {
+        return res.json();
+    }).then(function(text) {
+        if(
+            document.cookie.match(opennamu_cookie_split_regex(set_name)) &&
+            document.cookie.match(opennamu_cookie_split_regex(set_name))[1] !== '' &&
+            document.cookie.match(opennamu_cookie_split_regex(set_name))[1] !== 'default'
+        ) {
+            return document.cookie.match(opennamu_cookie_split_regex(set_name))[1];
+        } else {
+            return text[set_name][0][0];
+        }
+    });
 }

+ 1 - 0
views/main_css/js/func/insert_user_info.js

@@ -1,5 +1,6 @@
 "use strict";
 
+// 폐지하고 다시 SSR 방식으로 전환 예정
 function do_insert_user_info() {
     if(document.getElementById('opennamu_get_user_info')) {
         let name = document.getElementById('opennamu_get_user_info').innerHTML;

+ 27 - 19
views/main_css/js/load_editor.js → views/main_css/js/route/editor.js

@@ -1,28 +1,30 @@
+"use strict";
+
 function do_insert_data(name, data, monaco_name) {
     if(!document.getElementById(monaco_name)) {
         // https://stackoverflow.com/questions/11076975/insert-text-into-textarea-at-cursor-position-javascript
         if(document.selection) {
             document.getElementById(name).focus();
 
-            var sel = document.selection.createRange();
+            let sel = document.selection.createRange();
             sel.text = data;
         } else if(
             document.getElementById(name).selectionStart || 
             document.getElementById(name).selectionStart == '0'
         ) {
-            var startPos = document.getElementById(name).selectionStart;
-            var endPos = document.getElementById(name).selectionEnd;
-            var myPos = document.getElementById(name).value;
+            let startPos = document.getElementById(name).selectionStart;
+            let endPos = document.getElementById(name).selectionEnd;
+            let myPos = document.getElementById(name).value;
 
             document.getElementById(name).value = myPos.substring(0, startPos) + data + myPos.substring(endPos, myPos.length);
         } else {
             document.getElementById(name).value += data;
         }
     } else {
-        var selection = editor.getSelection();
-        var id = { major: 1, minor: 1 };             
-        var text = data;
-        var op = {
+        let selection = editor.getSelection();
+        let id = { major: 1, minor: 1 };             
+        let text = data;
+        let op = {
             identifier: id, 
             range: selection, 
             text: text, 
@@ -35,16 +37,17 @@ function do_insert_data(name, data, monaco_name) {
 
 // 아직 개편이 더 필요함
 function do_paste_image(name, monaco_name) {
-    window.addEventListener('DOMContentLoaded', function() {
-        if(
-            document.cookie.match(opennamu_cookie_split_regex('main_css_image_paste')) &&
-            document.cookie.match(opennamu_cookie_split_regex('main_css_image_paste'))[1] === 'use'
-        ) {
+    window.addEventListener('DOMContentLoaded', async function() {
+        let set = await opennamu_get_main_skin_set("main_css_image_paste");
+        if(set === 'use') {
             let textarea;
-            if(!document.getElementById(monaco_name)) {
-                textarea = document.getElementById(monaco_name);   
+            if(
+                document.getElementById(monaco_name) !== null &&
+                document.getElementById(monaco_name) !== undefined
+            ) {
+                textarea = document.getElementById(monaco_name);
             } else {
-                textarea = document.getElementById(name);   
+                textarea = document.getElementById(name);
             }
 
             if(textarea) {
@@ -58,20 +61,25 @@ function pasteListener(e) {
     // find file
     if(e.clipboardData && e.clipboardData.items) {
         const items = e.clipboardData.items;
-        let haveImageInClipboard = false;
         const formData = new FormData();
+
+        let haveImageInClipboard = false;
+        let file_name = '';
+        
         for(let i = 0; i < items.length; i++) {
             if(items[i].type.indexOf("image") !== -1) {
                 const file = items[i].getAsFile();
                 const customName = prompt("파일 이름 (확장자 제외)");
                 
-                if (!customName) {
+                if(!customName) {
                     return alert("파일 이름 없음");
                 }
                 
-                var file_name = customName + ".png";
+                file_name = customName + ".png";
+                
                 const customFile = new File([file], file_name, { type: file.type });
                 formData.append("f_data[]", customFile);
+                
                 haveImageInClipboard = true;
                 e.preventDefault();
                 

+ 1 - 2
views/main_css/js/route/thread.js

@@ -1,5 +1,4 @@
-// 좀 더 개선 필요
-// use strict 적용 필요 (eval 동작에 문제 있음)
+// 폐지하고 다시 SSR 방식으로 전환 예정
 function opennamu_do_thread_make(topic_num, type_do = 'top', some = '', where = 'top_topic') {
     let url = '';
     if(type_do === 'top') {