잉여개발기 (SPDV) 3 лет назад
Родитель
Сommit
b9228ee532

+ 4 - 6
app.py

@@ -495,7 +495,10 @@ app.route('/change/head', methods=['GET', 'POST'], defaults = { 'skin_name' : ''
 app.route('/change/head/<skin_name>', methods=['GET', 'POST'])(user_setting_head)
 app.route('/change/head_reset', methods=['GET', 'POST'])(user_setting_head_reset)
 app.route('/change/skin_set')(user_setting_skin_set)
-app.route('/change/skin_set/main')(user_setting_skin_set)
+# 하위 호환용 S
+app.route('/skin_set')(user_setting_skin_set)
+# 하위 호환용 E
+app.route('/change/skin_set/main', methods = ['POST', 'GET'])(user_setting_skin_set_main)
 
 app.route('/user')(user_info)
 app.route('/user/<name>')(user_info)
@@ -514,11 +517,6 @@ app.route('/watch_list/<everything:name>', defaults = { 'tool' : 'watch_list' })
 app.route('/star_doc', defaults = { 'tool' : 'star_doc' })(user_watch_list)
 app.route('/star_doc/<everything:name>', defaults = { 'tool' : 'star_doc' })(user_watch_list_name)
 
-# 하위 호환용 S
-# /change/skin_set
-app.route('/skin_set')(user_setting_skin_set)
-# 하위 호환용 E
-
 # 개편 보류중 S
 @app.route('/change/email', methods = ['POST', 'GET'])
 def user_setting_email():

+ 9 - 3
route/edit.py

@@ -228,8 +228,14 @@ 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')
             
-            monaco_on = flask.request.cookies.get('main_css_monaco', '0')
-            if monaco_on == '1':
+            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'
+            
+            if monaco_on == 'use':
                 editor_display = 'style="display: none;"'
                 monaco_display = ''
                 add_get_file = '''
@@ -333,7 +339,7 @@ def edit(name = 'Test', section = 0, do_type = ''):
                         }
 
                         do_stop_exit();
-                        do_paste_image();
+                        do_paste_image('opennamu_edit_textarea', 'opennamu_monaco_editor');
 
                         ''' + add_script + '''
                     </script>

+ 4 - 1
route/main_func_setting_main.py

@@ -56,7 +56,10 @@ def main_func_setting_main(db_set):
                 curs.execute(db_change('select data from other where name = ?'), [setting_list[i][0]])
                 db_data = curs.fetchall()
                 if not db_data:
-                    curs.execute(db_change('insert into other (name, data) values (?, ?)'), [setting_list[i][0], setting_list[i][1]])
+                    curs.execute(db_change('insert into other (name, data) values (?, ?)'), [
+                        setting_list[i][0],
+                        setting_list[i][1]
+                    ])
 
                 d_list[i] = db_data[0][0] if db_data else setting_list[i][1]
             else:

+ 7 - 29
route/tool/func.py

@@ -1041,7 +1041,7 @@ def wiki_css(data):
     data += ['' for _ in range(0, 3 - len(data))]
     
     data_css = ''
-    data_css_ver = '171'
+    data_css_ver = '172'
     
     # Func JS + Defer
     data_css += '<script src="/views/main_css/js/func/func.js?ver=' + data_css_ver + '"></script>'
@@ -1054,14 +1054,11 @@ def wiki_css(data):
     data_css += '<script defer src="/views/main_css/js/func/ie_end_of_life.js?ver=' + data_css_ver + '"></script>'
     data_css += '<script defer src="/views/main_css/js/func/shortcut.js?ver=' + data_css_ver + '"></script>'
     
-    data_css += '<script defer src="/views/main_css/js/func/render_simple.js?ver=' + data_css_ver + '"></script>'
-    
     # Route JS + Defer
     data_css += '<script defer src="/views/main_css/js/route/thread.js?ver=' + data_css_ver + '"></script>'
     
     # 레거시 일반 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/load_skin_set.js?ver=' + data_css_ver + '"></script>'
     
     # Main CSS
     data_css += '<link rel="stylesheet" href="/views/main_css/css/main.css?ver=' + data_css_ver + '">'
@@ -1380,7 +1377,7 @@ def render_simple_set(data):
         if footnote_count != 1:
             footnote_data += '<br>'
     
-        footnote_data += '<a id="fn_' + footnote_count_str + '" href="#rfn_' + footnote_count_str + '">(' + footnote_count_str + ')</a> ' + footnote_search
+        footnote_data += '<a id="fn-' + footnote_count_str + '" href="#rfn-' + footnote_count_str + '">(' + footnote_count_str + ')</a> ' + footnote_search
         data = re.sub(footnote_regex, '<sup id="rfn-' + footnote_count_str + '"><a href="#fn-' + footnote_count_str + '">(' + footnote_count_str + ')</a></sup>', data, 1)
         
         footnote_count += 1
@@ -1527,20 +1524,6 @@ def captcha_post(re_data, num = 1):
         return 0
 
 # Func-user
-def ip_or_user(data = ''):
-    # without_DB
-
-    # 1 == ip
-    # 0 == reg
-    
-    if data == '':
-        data = ip_check()
-
-    if re.search(r'(\.|:)', data):
-        return 1
-    else:
-        return 0
-
 def admin_check(num = None, what = None, name = ''):
     curs = conn.cursor()
 
@@ -2451,17 +2434,12 @@ def re_error(data):
             data = '???'
 
         if num == 5:
-            if not flask.request.path in ('/main_skin_set', '/change/skin_set/main'):
-                if flask.request.path != '/skin_set':
-                    data += '<br>' + load_lang('error_skin_set_old') + ' <a href="/skin_set">(' + load_lang('go') + ')</a>'
+            if flask.request.path != '/skin_set':
+                data += '<br>' + load_lang('error_skin_set_old') + ' <a href="/skin_set">(' + load_lang('go') + ')</a>'
 
-                title = load_lang('skin_set')
-                tool = [['change', load_lang('user_setting')], ['change/skin_set/main', load_lang('main_skin_set')]]
-                load_skin_set = ''
-            else:
-                title = load_lang('main_skin_set')
-                tool = [['change', load_lang('user_setting')], ['change/skin_set', load_lang('skin_set')]]
-                load_skin_set = '<script>main_css_skin_set();</script>'
+            title = load_lang('skin_set')
+            tool = [['change', load_lang('user_setting')], ['change/skin_set/main', load_lang('main_skin_set')]]
+            load_skin_set = ''
         
             return easy_minify(flask.render_template(skin_check(),
                 imp = [title, wiki_set(), wiki_custom(), wiki_css([0, 0])],

+ 45 - 11
route/tool/func_render_namumark.py

@@ -10,6 +10,7 @@ class class_do_render_namumark:
         self.doc_include = self.doc_set['doc_include'] if 'doc_include' in self.doc_set else ''
 
         self.lang_data = lang_data
+        self.ip = ip_check()
 
         self.data_temp_storage = {}
         self.data_temp_storage_count = 0
@@ -170,12 +171,18 @@ class class_do_render_namumark:
 
     def do_render_text(self):
         # <b> function
-        bold_user_set = flask.request.cookies.get('main_css_del_bold', '0')
+        if ip_or_user(self.ip) == 0:
+            self.curs.execute(db_change('select data from user_set where name = "main_css_bold" and id = ?'), [self.ip])
+            db_data = self.curs.fetchall()
+            bold_user_set = db_data[0][0] if db_data else 'normal'
+        else:
+            bold_user_set = flask.session['main_css_bold'] if 'main_css_bold' in flask.session else 'normal'
+
         def do_render_text_bold(match):
             data = match.group(1)
-            if bold_user_set == '0':
+            if bold_user_set == 'normal':
                 data_name = self.get_tool_data_storage('<b>', '</b>', match.group(0))
-            elif bold_user_set == '1':
+            elif bold_user_set == 'change':
                 data_name = self.get_tool_data_storage('', '', match.group(0))
             else:
                 return ''
@@ -229,13 +236,19 @@ class class_do_render_namumark:
         # <sub> 2
         self.render_data = re.sub(r",,((?:(?!,,).)+),,", do_render_text_sub, self.render_data)
 
-        # <sub> function
-        strike_user_set = flask.request.cookies.get('main_css_del_strike', '0')
+        # <s> function
+        if ip_or_user(self.ip) == 0:
+            self.curs.execute(db_change('select data from user_set where name = "main_css_strike" and id = ?'), [self.ip])
+            db_data = self.curs.fetchall()
+            strike_user_set = db_data[0][0] if db_data else 'normal'
+        else:
+            strike_user_set = flask.session['main_css_strike'] if 'main_css_strike' in flask.session else 'normal'
+
         def do_render_text_strike(match):
             data = match.group(1)
-            if bold_user_set == '0':
+            if strike_user_set == 'normal':
                 data_name = self.get_tool_data_storage('<s>', '</s>', match.group(0))
-            elif bold_user_set == '1':
+            elif strike_user_set == 'change':
                 data_name = self.get_tool_data_storage('', '', match.group(0))
             else:
                 return ''
@@ -1083,8 +1096,15 @@ class class_do_render_namumark:
                     self.data_backlink += [[self.doc_name, include_name, 'include']]
 
                     # include link func
+                    if ip_or_user(self.ip) == 0:
+                        self.curs.execute(db_change('select data from user_set where name = "main_css_include_link" and id = ?'), [self.ip])
+                        db_data = self.curs.fetchall()
+                        include_set_data = db_data[0][0] if db_data else 'normal'
+                    else:
+                        include_set_data = flask.session['main_css_include_link'] if 'main_css_include_link' in flask.session else 'normal'
+
                     include_link = ''
-                    if flask.request.cookies.get('main_css_include_link', '') == '1':
+                    if include_set_data == 'use':
                         include_link = '<div><a href="/w/' + url_pas(include_name) + '">(' + include_name_org + ')</a></div>'
 
                     include_data = db_data[0][0].replace('\r', '')
@@ -1730,7 +1750,14 @@ class class_do_render_namumark:
             if self.data_category != '':
                 data_name = self.get_tool_data_storage(self.data_category, '</div>', '')
 
-                if flask.request.cookies.get('main_css_category_set', '0') == '0':
+                if ip_or_user(self.ip) == 0:
+                    self.curs.execute(db_change('select data from user_set where name = "main_css_category_set" and id = ?'), [self.ip])
+                    db_data = self.curs.fetchall()
+                    category_set_data = db_data[0][0] if db_data else 'normal'
+                else:
+                    category_set_data = flask.session['main_css_category_set'] if 'main_css_category_set' in flask.session else 'normal'
+
+                if category_set_data == 'normal':
                     if re.search(r'<footnote_category>', self.render_data):
                         self.render_data = re.sub(r'<footnote_category>', '<hr><' + data_name + '></' + data_name + '>', self.render_data, 1)
                     else:
@@ -1778,8 +1805,15 @@ class class_do_render_namumark:
             self.data_toc = toc_data
             self.data_toc = re.sub(r'<toc_inside>((?:(?!<toc_inside>|<\/toc_inside>).)*)<\/toc_inside>', do_render_last_toc, self.data_toc)
 
+            if ip_or_user(self.ip) == 0:
+                self.curs.execute(db_change('select data from user_set where name = "main_css_toc_set" and id = ?'), [self.ip])
+                db_data = self.curs.fetchall()
+                toc_set_data = db_data[0][0] if db_data else 'normal'
+            else:
+                toc_set_data = flask.session['main_css_toc_set'] if 'main_css_toc_set' in flask.session else 'normal'
+
             self.render_data = re.sub(toc_search_regex, '', self.render_data)
-            if flask.request.cookies.get('main_css_toc_set', '0') != '1':
+            if toc_set_data != 'off':
                 if re.search(r'<toc_need_part>', self.render_data):
                     toc_data_on = 1
 
@@ -1790,7 +1824,7 @@ class class_do_render_namumark:
 
             if  self.doc_include != '' or \
                 re.search(r'<toc_no_auto>', self.render_data) or \
-                flask.request.cookies.get('main_css_toc_set', '0') != '0' or \
+                toc_set_data != 'normal' or \
                 toc_data_on == 1:
                 self.render_data = re.sub(r'<toc_no_auto>', '', self.render_data)
             else:

+ 14 - 0
route/tool/func_tool.py

@@ -43,6 +43,20 @@ def ip_check(d_type = 0):
 
     return ip
 
+def ip_or_user(data = ''):
+    # without_DB
+
+    # 1 == ip
+    # 0 == reg
+    
+    if data == '':
+        data = ip_check()
+
+    if re.search(r'(\.|:)', data):
+        return 1
+    else:
+        return 0
+
 def url_pas(data):
     return urllib.parse.quote(data).replace('/','%2F')
 

+ 2 - 2
route/user_setting.py

@@ -5,9 +5,9 @@ def user_setting():
         curs = conn.cursor()
 
         support_language = ['default'] + get_init_set_list()['language']['list']
+        
         ip = ip_check()
-
-        if ban_check() == 1:
+        if ban_check(ip) == 1:
             return re_error('/ban')
 
         if ip_or_user(ip) == 0:

+ 154 - 7
route/user_setting_skin_set_main.py

@@ -4,22 +4,169 @@ def user_setting_skin_set_main():
     with get_db_connect() as conn:
         curs = conn.cursor()
 
-        if ban_check() == 1:
+        ip = ip_check()
+        if ban_check(ip) == 1:
             return re_error('/ban')
             
+        set_list = {
+            'main_css_strike' : [
+                ['normal', load_lang('default')],
+                ['change', load_lang('change_to_normal')],
+                ['delete', load_lang('delete')]
+            ], 'main_css_bold' : [
+                ['normal', load_lang('default')],
+                ['change', load_lang('change_to_normal')],
+                ['delete', load_lang('delete')]
+            ], 'main_css_include_link' : [
+                ['normal', load_lang('default')],
+                ['use', load_lang('use')]
+            ], 'main_css_image_paste' : [
+                ['normal', load_lang('default')],
+                ['use', load_lang('use')]
+            ], 'main_css_category_set' : [
+                ['bottom', load_lang('bottom')],
+                ['top', load_lang('top')]
+            ], 'main_css_footnote_set' : [
+                ['normal', load_lang('default')],
+                ['spread', load_lang('spread')]
+            ], 'main_css_image_set' : [
+                ['normal', load_lang('default')],
+                ['click', load_lang('change_to_link')],
+                ['new_click', load_lang('click_load')]
+            ], 'main_css_toc_set' : [
+                ['normal', load_lang('default')],
+                ['off', load_lang('all_off')],
+                ['half_off', load_lang('in_content')]
+            ], 'main_css_monaco' : [
+                ['normal', load_lang('default')],
+                ['use', load_lang('use')]
+            ], 'main_css_exter_link' : [
+                ['blank', load_lang('default')],
+                ['self', load_lang('self_tab')]
+            ], 'main_css_link_delimiter' : [
+                ['normal', load_lang('default')],
+                ['use', load_lang('use')]
+            ], 'main_css_darkmode' : [
+                ['0', load_lang('default')],
+                ['1', load_lang('use')]
+            ], 'main_css_font_size' : [
+                ['']
+            ]
+        }
+        use_cookie = ['main_css_image_paste', 'main_css_darkmode']
+
         if flask.request.method == 'POST':
+            html_data = flask.make_response(redirect('/change/skin_set/main'))
+
+            for for_b in set_list:
+                if for_b in use_cookie:
+                    html_data.set_cookie(for_b, flask.request.form.get(for_b, set_list[for_b][0][0]))
+                elif ip_or_user(ip) == 0:
+                    curs.execute(db_change('select data from user_set where name = ? and id = ?'), [for_b, ip])
+                    db_data = curs.fetchall()
+                    if db_data:
+                        curs.execute(db_change("update user_set set data = ? where name = ? and id = ?"), [
+                            flask.request.form.get(for_b, set_list[for_b][0][0]),
+                            for_b,
+                            ip
+                        ])
+                    else:
+                        curs.execute(db_change('insert into user_set (name, id, data) values (?, ?, ?)'), [
+                            for_b, 
+                            ip,
+                            flask.request.form.get(for_b, set_list[for_b][0][0])
+                        ])
+                else:
+                    flask.session[for_b] = flask.request.form.get(for_b, set_list[for_b][0][0])
 
             conn.commit()
 
-            return redirect('/change')
+            return html_data
         else:
+            set_data = {}
+            for for_b in set_list:
+                set_data[for_b] = ''
+                if for_b in use_cookie:
+                    get_data = flask.request.cookies.get(for_b, '')
+                elif ip_or_user(ip) == 0:
+                    curs.execute(db_change('select data from user_set where name = ? and id = ?'), [for_b, ip])
+                    db_data = curs.fetchall()
+                    get_data = db_data[0][0] if db_data else ''
+                else:
+                    get_data = flask.session[for_b] if for_b in flask.session else ''
+
+                if set_list[for_b][0] == ['']:
+                    set_data[for_b] = get_data
+                else:
+                    for for_a in set_list[for_b]:
+                        if get_data == for_a[0]:
+                            set_data[for_b] = '<option value="' + for_a[0] + '">' + for_a[1] + '</option>' + set_data[for_b]
+                        else:
+                            set_data[for_b] += '<option value="' + for_a[0] + '">' + for_a[1] + '</option>'
 
             return easy_minify(flask.render_template(skin_check(),
-                imp = [load_lang('user_setting'), wiki_set(), wiki_custom(), wiki_css([0, 0])],
-                data = '''
+                imp = [load_lang('main_skin_set'), wiki_set(), wiki_custom(), wiki_css(['(' + load_lang('beta') + ')', 0])],
+                data = render_simple_set('''
                     <form method="post">
-
+                        <h2>render</h2>
+                        <h3>strike</h3>
+                        <select name="main_css_strike">
+                            ''' + set_data["main_css_strike"] + '''
+                        </select>
+                        <h3>bold</h3>
+                        <select name="main_css_bold">
+                            ''' + set_data["main_css_bold"] + '''
+                        </select>
+                        <h3>category</h3>
+                        <select name="main_css_category_set">
+                            ''' + set_data["main_css_category_set"] + '''
+                        </select>
+                        <h3>footnote</h3>
+                        <select name="main_css_footnote_set">
+                            ''' + set_data["main_css_footnote_set"] + '''
+                        </select>
+                        <h3>include link</h3>
+                        <select name="main_css_include_link">
+                            ''' + set_data["main_css_include_link"] + '''
+                        </select>
+                        <h3>image</h3>
+                        <select name="main_css_image_set">
+                            ''' + set_data["main_css_image_set"] + '''
+                        </select>
+                        <h3>toc</h3>
+                        <select name="main_css_toc_set">
+                            ''' + set_data["main_css_toc_set"] + '''
+                        </select>
+                        <h3>exter link</h3>
+                        <select name="main_css_exter_link">
+                            ''' + set_data["main_css_exter_link"] + '''
+                        </select>
+                        <h3>link delimiter</h3>
+                        <select name="main_css_link_delimiter">
+                            ''' + set_data["main_css_link_delimiter"] + '''
+                        </select>
+                        <h3>force darkmode</h3>
+                        <select name="main_css_darkmode">
+                            ''' + set_data["main_css_darkmode"] + '''
+                        </select>
+                        <h3>font size</h3>
+                        (EX : 11) (''' + load_lang('off') + ''' : ''' + load_lang('empty') + ''')
+                        <hr class="main_hr">
+                        <input id="main_css_font_size" value="''' + set_data["main_css_font_size"] + '''">
+                        <h2>editor</h2>
+                        <h3>image paste</h3>
+                        <sup>''' + load_lang('only_korean') + '''</sup> <sup>''' + load_lang('unavailable_in_monaco') + '''</sup>
+                        <hr class="main_hr">
+                        <select name="main_css_image_paste">
+                            ''' + set_data["main_css_image_paste"] + '''
+                        </select>
+                        <h3>monaco</h3>
+                        <select name="main_css_monaco">
+                            ''' + set_data["main_css_monaco"] + '''
+                        </select>
+                        <hr class="main_hr">
+                        <button type="submit">''' + load_lang('save') + '''</button>
                     </form>
-                ''',
-                menu = [['user', load_lang('return')]]
+                '''),
+                menu = [['change', load_lang('user_setting')], ['change/skin_set', load_lang('skin_set')]]
             ))

+ 1 - 1
version.json

@@ -1,6 +1,6 @@
 {
     "beta" : {
-        "r_ver" : "v3.4.6-RC1 (stable1) (beta9-109)",
+        "r_ver" : "v3.4.6-RC1 (stable1) (beta9-110)",
         "c_ver" : "3500354",
         "s_ver" : "3500111"
     }

+ 10 - 4
views/main_css/js/load_editor.js

@@ -34,14 +34,20 @@ function do_insert_data(name, data, monaco_name) {
 }
 
 // 아직 개편이 더 필요함
-function do_paste_image() {
+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] === '1'
+            document.cookie.match(opennamu_cookie_split_regex('main_css_image_paste'))[1] === 'use'
         ) {
-            const textarea = document.querySelector("textarea");
-            if (textarea) {
+            let textarea;
+            if(!document.getElementById(monaco_name)) {
+                textarea = document.getElementById(monaco_name);   
+            } else {
+                textarea = document.getElementById(name);   
+            }
+
+            if(textarea) {
                 textarea.addEventListener("paste", pasteListener);
             }
         }