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

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

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

+ 17 - 16
app.py

@@ -646,21 +646,22 @@ app.route('/search_data/<int:num>/<everything:name>', defaults = { 'search_type'
 app.route('/goto', methods=['POST'])(main_search_goto)
 app.route('/goto/<everything:name>', methods=['POST'])(main_search_goto)
 
-app.route('/setting')(main_func_setting)
-app.route('/setting/main', defaults = { 'db_set' : data_db_set['type'] }, methods = ['POST', 'GET'])(main_func_setting_main)
-app.route('/setting/main/logo', methods = ['POST', 'GET'])(main_func_setting_main_logo)
-app.route('/setting/top_menu', methods = ['POST', 'GET'])(main_func_setting_top_menu)
-app.route('/setting/phrase', methods = ['POST', 'GET'])(main_func_setting_phrase)
-app.route('/setting/head', defaults = { 'num' : 3 }, methods = ['POST', 'GET'])(main_func_setting_head)
-app.route('/setting/head/<skin_name>', defaults = { 'num' : 3 }, methods = ['POST', 'GET'])(main_func_setting_head)
-app.route('/setting/body/top', defaults = { 'num' : 4 }, methods = ['POST', 'GET'])(main_func_setting_head)
-app.route('/setting_preview/body/top', defaults = { 'num' : 4, 'set_preview' : 1 }, methods = ['POST'])(main_func_setting_head)
-app.route('/setting/body/bottom', defaults = { 'num' : 7 }, methods = ['POST', 'GET'])(main_func_setting_head)
-app.route('/setting_preview/body/bottom', defaults = { 'num' : 7, 'set_preview' : 1 }, methods = ['POST'])(main_func_setting_head)
-app.route('/setting/robot', methods = ['POST', 'GET'])(main_func_setting_robot)
-app.route('/setting/external', methods = ['POST', 'GET'])(main_func_setting_external)
-app.route('/setting/acl', methods = ['POST', 'GET'])(main_func_setting_acl)
-app.route('/setting/sitemap', methods = ['POST', 'GET'])(main_func_setting_sitemap)
+app.route('/setting')(main_setting)
+app.route('/setting/main', defaults = { 'db_set' : data_db_set['type'] }, methods = ['POST', 'GET'])(main_setting_main)
+app.route('/setting/main/logo', methods = ['POST', 'GET'])(main_setting_main_logo)
+app.route('/setting/top_menu', methods = ['POST', 'GET'])(main_setting_top_menu)
+app.route('/setting/phrase', methods = ['POST', 'GET'])(main_setting_phrase)
+app.route('/setting/head', defaults = { 'num' : 3 }, methods = ['POST', 'GET'])(main_setting_head)
+app.route('/setting/head/<skin_name>', defaults = { 'num' : 3 }, methods = ['POST', 'GET'])(main_setting_head)
+app.route('/setting/body/top', defaults = { 'num' : 4 }, methods = ['POST', 'GET'])(main_setting_head)
+app.route('/setting_preview/body/top', defaults = { 'num' : 4, 'set_preview' : 1 }, methods = ['POST'])(main_setting_head)
+app.route('/setting/body/bottom', defaults = { 'num' : 7 }, methods = ['POST', 'GET'])(main_setting_head)
+app.route('/setting_preview/body/bottom', defaults = { 'num' : 7, 'set_preview' : 1 }, methods = ['POST'])(main_setting_head)
+app.route('/setting/robot', methods = ['POST', 'GET'])(main_setting_robot)
+app.route('/setting/external', methods = ['POST', 'GET'])(main_setting_external)
+app.route('/setting/acl', methods = ['POST', 'GET'])(main_setting_acl)
+app.route('/setting/sitemap', methods = ['POST', 'GET'])(main_setting_sitemap)
+app.route('/setting/skin_set', methods = ['POST', 'GET'])(main_setting_skin_set)
 
 app.route('/easter_egg')(main_func_easter_egg)
 
@@ -675,7 +676,7 @@ app.route('/shutdown', methods = ['POST', 'GET'])(main_sys_shutdown)
 app.route('/restart', methods = ['POST', 'GET'])(main_sys_restart)
 app.route('/update', methods = ['POST', 'GET'])(main_sys_update)
 
-app.errorhandler(404)(main_error_404)
+app.errorhandler(404)(main_func_error_404)
 
 if __name__ == "__main__":
     waitress.serve(

+ 12 - 7
lang/en-US.json

@@ -110,7 +110,9 @@
         "example" : "Example",
         "reset" : "Reset",
         "top" : "Top",
+        "bottom" : "Bottom",
         "use" : "Use",
+        "spread" : "Speard",
         "_comment_1.1_" : "Time",
             "second" : "Second(s)",
             "hour" : "Hour(s)",
@@ -288,7 +290,7 @@
                 "image_license_add" : "Add image license",
                 "extension_filter_add" : "Add extension filter",
                 "document_filter_add" : "Add document filter",
-        "_comment_2.2_" : "Setting",
+        "_comment_" : "Setting",
             "setting" : "Setting",
             "restart_required" : "Restart required",
             "adsense_setting" : "Adsense settings",
@@ -296,15 +298,16 @@
             "skin_setting" : "Skin settings",
             "main_acl_setting" : "Default ACL settings",
             "top_menu_setting" : "Added menu setting",
-            "enter_top_menu_setting" : "Enter name in the upper line and URL in the lower line.",
-            "_comment_2.2.1_" : "List",
+            "main_skin_set_default" : "Main skin setting(s) default",
+
+            "_comment_" : "List",
                 "main_setting" : "Main settings",
                 "text_setting" : "Text settings",
                 "main_head" : "Global <HEAD>",
                 "main_body" : "Top of body",
                 "main_bottom_body" : "Bottom of body",
                 "ext_api_req_set" : "External API required setting",
-            "_comment_2.2.2_" : "Main",
+            "_comment_" : "Main",
                 "basic_set" : "Basic settings",
                 "design_set" : "Design-related settings",
                 "login_set" : "Login-related settings",
@@ -345,7 +348,7 @@
                 "set_wiki_access_password_need" : "Password required for wiki access",
                 "set_wiki_access_password" : "Wiki access password",
                 "set_history_recording_off" : "Stop recording history",
-            "_comment_2.2.3_" : "Text",
+            "_comment_" : "Text",
                 "register_text" : "Terms of sign-up",
                 "non_login_alert" : "Non-login alert",
                 "edit_bottom_text" : "Editing textarea bottom notice",
@@ -365,13 +368,13 @@
                 "phrase_user_page_admin" : "Administrator user page phrase",
                 "phrase_user_page_owner" : "Onwer user page phrase",
                 "phrase_old_page_warring" : "Warning on previous revision document visit",
-            "_comment_2.2.4_" : "Ext_API",
+            "_comment_" : "Ext_API",
                 "recaptcha" : "reCAPTCHA",
                 "hcaptcha" : "hCAPTCHA",
                 "captcha" : "CAPTCHA",
                 
                 "email_setting" : "Email settings",
-                "_comment_2.2.4.1_" : "SMTP",
+                "_comment_" : "SMTP",
                     "smtp_setting" : "Email SMTP settings",
                     "smtp_server" : "SMTP Server address",
                     "smtp_security": "SMTP Connection security",
@@ -382,6 +385,8 @@
                 "oauth" : "OAuth",
                 "_comment_2.2.4.2_" : "OAuth",
                     "oauth_client_id" : "OAuth client ID",
+            "_comment_" : "Top",
+                "enter_top_menu_setting" : "Enter name in the upper line and URL in the lower line.",
             "_comment_" : "Sitemap",
                 "sitemap_management" : "sitemap.xml management",
                 "stiemap_exclude_domain" : "Exclude domain",

+ 4 - 1
lang/ko-KR.json

@@ -498,6 +498,7 @@
     "acl_thread_change": "스레드 ACL 변경",
     "new_application": "새로운 가입 신청이 있습니다.",
     "top": "상단",
+    "bottom" : "하단",
     "use": "사용",
     "change_to_normal": "일반 글자로 변경",
     "change_to_link": "링크로 변경",
@@ -522,5 +523,7 @@
     "document_set" : "문서 설정",
     "move_redirect_make" : "리다이렉트 문서 생성 (가능한 경우에만)",
     "slow_edit_acl" : "편집 속도 제한 시간 제외 대상 ACL",
-    "edit_bottom_compulsion_acl": "편집 사유 필수 제외 대상 ACL"
+    "edit_bottom_compulsion_acl": "편집 사유 필수 제외 대상 ACL",
+    "main_skin_set_default" : "기본 스킨 설정 기본값",
+    "spread" : "펼침"
 }

+ 1 - 1
route/main_error_404.py → route/main_func_error_404.py

@@ -1,6 +1,6 @@
 from .tool.func import *
 
-def main_error_404(e = ''):
+def main_func_error_404(e = ''):
     with get_db_connect() as conn:
         curs = conn.cursor()
         

+ 3 - 2
route/main_func_setting.py → route/main_setting.py

@@ -1,6 +1,6 @@
 from .tool.func import *
 
-def main_func_setting():
+def main_setting():
     with get_db_connect() as conn:
         li_list = [
             ['main', load_lang('main_setting')],
@@ -11,7 +11,8 @@ def main_func_setting():
             ['body/top', load_lang('main_body')],
             ['body/bottom', load_lang('main_bottom_body')],
             ['sitemap', load_lang('sitemap_management')],
-            ['top_menu', load_lang('top_menu_setting') + ' (' + load_lang('beta') + ')']
+            ['top_menu', load_lang('top_menu_setting')],
+            ['skin_set', load_lang('main_skin_set_default')],
         ]
 
         li_data = ''.join(['<li><a href="/setting/' + str(li[0]) + '">' + li[1] + '</a></li>' for li in li_list])

+ 1 - 1
route/main_func_setting_acl.py → route/main_setting_acl.py

@@ -1,6 +1,6 @@
 from .tool.func import *
 
-def main_func_setting_acl():
+def main_setting_acl():
     with get_db_connect() as conn:
         curs = conn.cursor()
 

+ 1 - 1
route/main_func_setting_external.py → route/main_setting_external.py

@@ -1,6 +1,6 @@
 from .tool.func import *
 
-def main_func_setting_external():
+def main_setting_external():
     with get_db_connect() as conn:
         curs = conn.cursor()
 

+ 1 - 1
route/main_func_setting_head.py → route/main_setting_head.py

@@ -1,6 +1,6 @@
 from .tool.func import *
 
-def main_func_setting_head(num, skin_name = '', set_preview = 0):
+def main_setting_head(num, skin_name = '', set_preview = 0):
     with get_db_connect() as conn:
         curs = conn.cursor()
 

+ 1 - 1
route/main_func_setting_main.py → route/main_setting_main.py

@@ -1,6 +1,6 @@
 from .tool.func import *
 
-def main_func_setting_main(db_set):
+def main_setting_main(db_set):
     with get_db_connect() as conn:
         curs = conn.cursor()
 

+ 1 - 1
route/main_func_setting_main_logo.py → route/main_setting_main_logo.py

@@ -1,6 +1,6 @@
 from .tool.func import *
 
-def main_func_setting_main_logo():
+def main_setting_main_logo():
     with get_db_connect() as conn:
         curs = conn.cursor()
         

+ 1 - 1
route/main_func_setting_phrase.py → route/main_setting_phrase.py

@@ -1,6 +1,6 @@
 from .tool.func import *
 
-def main_func_setting_phrase():
+def main_setting_phrase():
     with get_db_connect() as conn:
         curs = conn.cursor()
 

+ 1 - 1
route/main_func_setting_robot.py → route/main_setting_robot.py

@@ -1,6 +1,6 @@
 from .tool.func import *
 
-def main_func_setting_robot():
+def main_setting_robot():
     with get_db_connect() as conn:
         curs = conn.cursor()
 

+ 1 - 1
route/main_func_setting_sitemap.py → route/main_setting_sitemap.py

@@ -1,6 +1,6 @@
 from .tool.func import *
 
-def main_func_setting_sitemap():
+def main_setting_sitemap():
     with get_db_connect() as conn:
         curs = conn.cursor()
 

+ 109 - 0
route/main_setting_skin_set.py

@@ -0,0 +1,109 @@
+from .tool.func import *
+from .user_setting_skin_set_main import user_setting_skin_set_main_set_list
+
+def main_setting_skin_set():
+    with get_db_connect() as conn:
+        curs = conn.cursor()
+
+        ip = ip_check()
+        if ban_check(ip) == 1:
+            return re_error('/ban')
+            
+        set_list = user_setting_skin_set_main_set_list()
+
+        if flask.request.method == 'POST':
+            for for_b in set_list:
+                curs.execute(db_change('select data from other where name = ?'), [for_b])
+                if curs.fetchall():
+                    curs.execute(db_change("update other set data = ? where name = ?"), [
+                        flask.request.form.get(for_b, set_list[for_b][0][0]),
+                        for_b
+                    ])
+                else:
+                    curs.execute(db_change('insert into other (name, data, coverage) values (?, ?, "")'), [
+                        for_b, 
+                        flask.request.form.get(for_b, set_list[for_b][0][0])
+                    ])
+            
+            conn.commit()
+
+            admin_check(None, 'edit_set (skin_set)')
+
+            return redirect('/setting/skin_set')
+        else:
+            set_data = {}
+            for for_b in set_list:
+                set_data[for_b] = ''
+                get_data = ''
+
+                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('main_skin_set_default'), wiki_set(), wiki_custom(), wiki_css(['(' + load_lang('beta') + ')', 0])],
+                data = render_simple_set('''
+                    <form method="post">
+                        <h2>''' + load_lang("render") + '''</h2>
+                        <h3>''' + load_lang("strike") + '''</h3>
+                        <select name="main_css_strike">
+                            ''' + set_data["main_css_strike"] + '''
+                        </select>
+                        <h3>''' + load_lang("bold") + '''</h3>
+                        <select name="main_css_bold">
+                            ''' + set_data["main_css_bold"] + '''
+                        </select>
+                        <h3>''' + load_lang("category") + '''</h3>
+                        <select name="main_css_category_set">
+                            ''' + set_data["main_css_category_set"] + '''
+                        </select>
+                        <h3>''' + load_lang("footnote") + '''</h3>
+                        <select name="main_css_footnote_set">
+                            ''' + set_data["main_css_footnote_set"] + '''
+                        </select>
+                        <h3>''' + load_lang("include_link") + '''</h3>
+                        <select name="main_css_include_link">
+                            ''' + set_data["main_css_include_link"] + '''
+                        </select>
+                        <h3>''' + load_lang("image") + ''' (''' + load_lang("not_working") + ''')</h3>
+                        <select name="main_css_image_set">
+                            ''' + set_data["main_css_image_set"] + '''
+                        </select>
+                        <h3>''' + load_lang("toc") + '''</h3>
+                        <select name="main_css_toc_set">
+                            ''' + set_data["main_css_toc_set"] + '''
+                        </select>
+                        <h3>''' + load_lang("exter_link") + '''</h3>
+                        <select name="main_css_exter_link">
+                            ''' + set_data["main_css_exter_link"] + '''
+                        </select>
+                        <h3>''' + load_lang("link_delimiter") + '''</h3>
+                        <select name="main_css_link_delimiter">
+                            ''' + set_data["main_css_link_delimiter"] + '''
+                        </select>
+                        <h3>''' + load_lang("force_darkmode") + '''</h3>
+                        <select name="main_css_darkmode">
+                            ''' + set_data["main_css_darkmode"] + '''
+                        </select>
+                        <h2>''' + load_lang("editor") + '''</h2>
+                        <h3>''' + load_lang("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>''' + load_lang("monaco_editor") + '''</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 = [['change', load_lang('user_setting')], ['change/skin_set', load_lang('skin_set')]]
+            ))

+ 1 - 1
route/main_func_setting_top_menu.py → route/main_setting_top_menu.py

@@ -1,6 +1,6 @@
 from .tool.func import *
 
-def main_func_setting_top_menu():
+def main_setting_top_menu():
     with get_db_connect() as conn:
         curs = conn.cursor()
 

+ 26 - 27
route/main_view.py

@@ -1,34 +1,33 @@
 from .tool.func import *
-from .main_error_404 import main_error_404
+from .main_func_error_404 import main_func_error_404
 
 def main_view(name = ''):
-    with get_db_connect() as conn:
-        file_name = re.search(r'([^/]+)$', name)
-        if not file_name:
-            return main_error_404()
-        else:
-            file_name = file_name.group(1)
-            dir_name = './views/' + re.sub(r'\.{2,}', '', re.sub(r'([^/]+)$', '', name))
+    file_name = re.search(r'([^/]+)$', name)
+    if not file_name:
+        return main_func_error_404()
+    else:
+        file_name = file_name.group(1)
+        dir_name = './views/' + re.sub(r'\.{2,}', '', re.sub(r'([^/]+)$', '', name))
 
-            mime_type = file_name.split('.')
-            if len(mime_type) < 2:
+        mime_type = file_name.split('.')
+        if len(mime_type) < 2:
+            mime_type = 'text/plain'
+        else:
+            mime_type = mime_type[len(mime_type) - 1].lower()
+            image_type = ['jpeg', 'jpg', 'gif', 'png', 'webp', 'ico', 'svg']
+            if mime_type in image_type:
+                if not mime_type == 'svg':
+                    mime_type = 'image/' + mime_type
+                else:
+                    mime_type = 'image/svg+xml'
+            elif mime_type == 'js':
+                mime_type = 'text/javascript'
+            elif mime_type == 'txt':
                 mime_type = 'text/plain'
             else:
-                mime_type = mime_type[len(mime_type) - 1].lower()
-                image_type = ['jpeg', 'jpg', 'gif', 'png', 'webp', 'ico', 'svg']
-                if mime_type in image_type:
-                    if not mime_type == 'svg':
-                        mime_type = 'image/' + mime_type
-                    else:
-                        mime_type = 'image/svg+xml'
-                elif mime_type == 'js':
-                    mime_type = 'text/javascript'
-                elif mime_type == 'txt':
-                    mime_type = 'text/plain'
-                else:
-                    mime_type = 'text/' + mime_type
+                mime_type = 'text/' + mime_type
 
-            return flask.send_from_directory(
-                dir_name, file_name, 
-                mimetype = mime_type
-            )
+        return flask.send_from_directory(
+            dir_name, file_name, 
+            mimetype = mime_type
+        )

+ 2 - 2
route/main_view_file.py

@@ -1,5 +1,5 @@
 from .tool.func import *
-from .main_error_404 import main_error_404
+from .main_func_error_404 import main_func_error_404
 
 def main_view_file(data = ''):
     with get_db_connect() as conn:
@@ -23,4 +23,4 @@ def main_view_file(data = ''):
             else:
                 return flask.send_from_directory('./', data, mimetype = 'text/xml')
         else:
-            return main_error_404()
+            return main_func_error_404()

+ 12 - 13
route/main_view_image.py

@@ -1,17 +1,16 @@
 from .tool.func import *
-from .main_error_404 import main_error_404
+from .main_func_error_404 import main_func_error_404
 
 def main_view_image(name = ''):
-    with get_db_connect() as conn:
-        mime_type = re.search(r'([^.]+)$', name)
-        if mime_type:
-            mime_type = mime_type.group(1).lower()
-            if mime_type == 'svg':
-                mime_type = 'svg+xml'
+    mime_type = re.search(r'([^.]+)$', name)
+    if mime_type:
+        mime_type = mime_type.group(1).lower()
+        if mime_type == 'svg':
+            mime_type = 'svg+xml'
 
-            return flask.send_from_directory(
-                './' + load_image_url(), name, 
-                mimetype = 'image/' + mime_type
-            )
-        else:
-            return main_error_404()
+        return flask.send_from_directory(
+            './' + load_image_url(), name, 
+            mimetype = 'image/' + mime_type
+        )
+    else:
+        return main_func_error_404()

+ 2 - 1
route/tool/func.py

@@ -67,7 +67,8 @@ else:
 print('----')
 
 # Init-Load
-from .func_render import *
+from .func_tool import *
+from .func_render import class_do_render
 
 from diff_match_patch import diff_match_patch
 

+ 2 - 1
route/tool/func_render.py

@@ -1,4 +1,5 @@
-from .func_render_namumark import *
+from .func_tool import *
+from .func_render_namumark import class_do_render_namumark
 
 # 커스텀 마크 언젠간 다시 추가 예정
 

+ 17 - 41
route/tool/func_render_namumark.py

@@ -188,21 +188,16 @@ class class_do_render_namumark:
 
     def do_render_text(self):
         # <b> function
-        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 = self.flask_session['main_css_bold'] if 'main_css_bold' in self.flask_session else 'normal'
+        bold_user_set = get_main_skin_set(self.curs, self.flask_session, 'main_css_bold', self.ip)
 
         def do_render_text_bold(match):
             data = match.group(1)
-            if bold_user_set == 'normal':
-                data_name = self.get_tool_data_storage('<b>', '</b>', match.group(0))
+            if bold_user_set == 'delete':
+                return ''
             elif bold_user_set == 'change':
                 data_name = self.get_tool_data_storage('', '', match.group(0))
             else:
-                return ''
+                data_name = self.get_tool_data_storage('<b>', '</b>', match.group(0))
             
             return '<' + data_name + '>' + data + '</' + data_name + '>'
 
@@ -254,21 +249,16 @@ class class_do_render_namumark:
         self.render_data = re.sub(r",,((?:(?!,,).)+),,", do_render_text_sub, self.render_data)
 
         # <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 = self.flask_session['main_css_strike'] if 'main_css_strike' in self.flask_session else 'normal'
+        strike_user_set = get_main_skin_set(self.curs, self.flask_session, 'main_css_strike', self.ip)
 
         def do_render_text_strike(match):
             data = match.group(1)
-            if strike_user_set == 'normal':
-                data_name = self.get_tool_data_storage('<s>', '</s>', match.group(0))
+            if strike_user_set == 'delete':
+                return ''
             elif strike_user_set == 'change':
                 data_name = self.get_tool_data_storage('', '', match.group(0))
             else:
-                return ''
+                data_name = self.get_tool_data_storage('<s>', '</s>', match.group(0))
             
             return '<' + data_name + '>' + data + '</' + data_name + '>'
         
@@ -1125,12 +1115,7 @@ class class_do_render_namumark:
                         include_data = db_data[0][0].replace('\r', '')
 
                         # 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 = self.flask_session['main_css_include_link'] if 'main_css_include_link' in self.flask_session else 'normal'
+                        include_set_data = get_main_skin_set(self.curs, self.flask_session, 'main_css_include_link', self.ip)
 
                         include_link = ''
                         if include_set_data == 'use':
@@ -1773,14 +1758,9 @@ class class_do_render_namumark:
             if self.data_category != '':
                 data_name = self.get_tool_data_storage(self.data_category, '</div>', '')
 
-                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 = self.flask_session['main_css_category_set'] if 'main_css_category_set' in self.flask_session else 'normal'
+                category_set_data = get_main_skin_set(self.curs, self.flask_session, 'main_css_category_set', self.ip)
 
-                if category_set_data == 'normal':
+                if category_set_data == 'bottom':
                     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:
@@ -1855,26 +1835,22 @@ 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 = self.flask_session['main_css_toc_set'] if 'main_css_toc_set' in self.flask_session else 'normal'
+            toc_set_data = get_main_skin_set(self.curs, self.flask_session, 'main_css_toc_set', self.ip)
 
             self.render_data = re.sub(toc_search_regex, '', self.render_data)
-            if toc_set_data != 'off':
+            if toc_set_data == 'off':
+                self.render_data = re.sub(r'<toc_need_part>', '', self.render_data)
+            else:
                 if re.search(r'<toc_need_part>', self.render_data):
                     toc_data_on = 1
 
                 self.render_data = re.sub(r'<toc_need_part>', lambda x : (self.data_toc), self.render_data, 20)
                 self.render_data = re.sub(r'<toc_need_part>', '', self.render_data)
-            else:
-                self.render_data = re.sub(r'<toc_need_part>', '', self.render_data)
 
             if  self.doc_include != '' or \
                 re.search(r'<toc_no_auto>', self.render_data) or \
-                toc_set_data != 'normal' or \
+                toc_set_data == 'half_off' or \
+                toc_set_data == 'off' or \
                 toc_data_on == 1:
                 self.render_data = re.sub(r'<toc_no_auto>', '', self.render_data)
             else:

+ 16 - 1
route/tool/func_tool.py

@@ -68,4 +68,19 @@ def sha224_replace(data):
     return hashlib.sha224(bytes(data, 'utf-8')).hexdigest()
 
 def md5_replace(data):
-    return hashlib.md5(data.encode()).hexdigest()
+    return hashlib.md5(data.encode()).hexdigest()
+
+def get_main_skin_set(curs, flask_session, set_name, ip):
+    if ip_or_user(ip) == 0:
+        curs.execute(db_change('select data from user_set where name = ? and id = ?'), [set_name, ip])
+        db_data = curs.fetchall()
+        set_data = db_data[0][0] if db_data else 'default'
+    else:
+        set_data = flask_session[set_name] if set_name in flask_session and flask_session[set_name] != '' else 'default'
+
+    if set_data == 'default':
+        curs.execute(db_change('select data from other where name = ?'), [set_name])
+        db_data = curs.fetchall()
+        set_data = db_data[0][0] if db_data and db_data[0][0] != '' else 'default'
+
+    return set_data

+ 62 - 50
route/user_setting_skin_set_main.py

@@ -1,5 +1,65 @@
 from .tool.func import *
 
+def user_setting_skin_set_main_set_list():
+    set_list = {
+        'main_css_strike' : [
+            ['default', load_lang('default')],
+            ['normal', load_lang('off')],
+            ['change', load_lang('change_to_normal')],
+            ['delete', load_lang('delete')]
+        ], 'main_css_bold' : [
+            ['default', load_lang('default')],
+            ['normal', load_lang('off')],
+            ['change', load_lang('change_to_normal')],
+            ['delete', load_lang('delete')]
+        ], 'main_css_include_link' : [
+            ['default', load_lang('default')],
+            ['normal', load_lang('off')],
+            ['use', load_lang('use')]
+        ], 'main_css_image_paste' : [
+            ['default', load_lang('default')],
+            ['normal', load_lang('off')],
+            ['use', load_lang('use')]
+        ], 'main_css_category_set' : [
+            ['default', load_lang('default')],
+            ['bottom', load_lang('bottom')],
+            ['top', load_lang('top')]
+        ], 'main_css_footnote_set' : [
+            ['default', load_lang('default')],
+            ['normal', load_lang('normal')],
+            ['spread', load_lang('spread')],
+            ['popup', load_lang('popup')]
+        ], 'main_css_image_set' : [
+            ['default', load_lang('default')],
+            ['normal', load_lang('normal')],
+            ['click', load_lang('change_to_link')],
+            ['new_click', load_lang('click_load')]
+        ], 'main_css_toc_set' : [
+            ['default', load_lang('default')],
+            ['normal', load_lang('normal')],
+            ['off', load_lang('all_off')],
+            ['half_off', load_lang('in_content')]
+        ], 'main_css_monaco' : [
+            ['default', load_lang('default')],
+            ['normal', load_lang('off')],
+            ['use', load_lang('use')]
+        ], 'main_css_exter_link' : [
+            ['default', load_lang('default')],
+            ['blank', load_lang('normal')],
+            ['self', load_lang('self_tab')]
+        ], 'main_css_link_delimiter' : [
+            ['default', load_lang('default')],
+            ['normal', load_lang('off')],
+            ['use', load_lang('use')]
+        ], 'main_css_darkmode' : [
+            ['default', load_lang('default')],
+            ['0', load_lang('off')],
+            ['1', load_lang('use')]
+        ]
+    }
+
+    return set_list
+
 def user_setting_skin_set_main():
     with get_db_connect() as conn:
         curs = conn.cursor()
@@ -8,51 +68,7 @@ def user_setting_skin_set_main():
         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('default')],
-                ['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' : [
-                ['']
-            ]
-        }
+        set_list = user_setting_skin_set_main_set_list()
         use_cookie = ['main_css_image_paste', 'main_css_darkmode']
 
         if flask.request.method == 'POST':
@@ -104,7 +120,7 @@ def user_setting_skin_set_main():
                             set_data[for_b] += '<option value="' + for_a[0] + '">' + for_a[1] + '</option>'
 
             return easy_minify(flask.render_template(skin_check(),
-                imp = [load_lang('main_skin_set'), wiki_set(), wiki_custom(), wiki_css(['(' + load_lang('beta') + ')', 0])],
+                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>
@@ -148,10 +164,6 @@ def user_setting_skin_set_main():
                         <select name="main_css_darkmode">
                             ''' + set_data["main_css_darkmode"] + '''
                         </select>
-                        <h3>''' + load_lang("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>''' + load_lang("editor") + '''</h2>
                         <h3>''' + load_lang("image_paste") + '''</h3>
                         <sup>''' + load_lang('only_korean') + '''</sup> <sup>''' + load_lang('unavailable_in_monaco') + '''</sup>

+ 0 - 444
views/main_css/js/load_skin_set.js

@@ -1,444 +0,0 @@
-function main_css_get_post() {    
-    var check = document.getElementById('main_css_strike');
-    if(check.value === 'normal') {
-        document.cookie = 'main_css_del_strike=0; path=/;';
-    } else if(check.value === 'change') {
-        document.cookie = 'main_css_del_strike=1; path=/;';
-    } else {
-        document.cookie = 'main_css_del_strike=2; path=/;';
-    }
-
-    check = document.getElementById('main_css_bold');
-    if(check.value === 'normal') {
-        document.cookie = 'main_css_del_bold=0; path=/;';
-    } else if(check.value === 'change') {
-        document.cookie = 'main_css_del_bold=1; path=/;';
-    } else {
-        document.cookie = 'main_css_del_bold=2; path=/;';
-    }
-
-    check = document.getElementById('main_css_include');
-    if(check.checked) {
-        document.cookie = 'main_css_include_link=1; path=/;';
-    } else {
-        document.cookie = 'main_css_include_link=0; path=/;';
-    }
-
-    check = document.getElementById('main_css_category');
-    if(check.value === 'bottom') {
-        document.cookie = 'main_css_category_set=0; path=/;';
-    } else {
-        document.cookie = 'main_css_category_set=1; path=/;';
-    }
-
-    check = document.getElementById('main_css_footnote');
-    if(check.value === 'spread') {
-        document.cookie = 'main_css_footnote_set=1; path=/;';
-    } else {
-        document.cookie = 'main_css_footnote_set=0; path=/;';
-    }
-
-    check = document.getElementById('main_css_image');
-    if(check.value === 'new_click') {
-        document.cookie = 'main_css_image_set=2; path=/;';
-    } else if(check.value === 'click') {
-        document.cookie = 'main_css_image_set=1; path=/;';
-    } else {
-        document.cookie = 'main_css_image_set=0; path=/;';
-    }
-
-    check = document.getElementById('main_css_image_paste');
-    if(check.checked) {
-        document.cookie = 'main_css_image_paste=1; path=/;';
-    } else {
-        document.cookie = 'main_css_image_paste=0; path=/;';
-    }
-
-    check = document.getElementById('main_css_toc');
-    if(check.value === 'on') {
-        document.cookie = 'main_css_toc_set=2; path=/;';
-    } else if(check.value === 'off') {
-        document.cookie = 'main_css_toc_set=1; path=/;';
-    } else {
-        document.cookie = 'main_css_toc_set=0; path=/;';
-    }
-    
-    check = document.getElementById('main_css_font_size');
-    if(check.value.match(/^[0-9]+$/)) {
-        document.cookie = 'main_css_font_size=' + check.value + '; path=/;';
-    } else {
-        document.cookie = 'main_css_font_size=; path=/;';
-    }
-
-    check = document.getElementById('main_css_monaco');
-    if(check.checked) {
-        document.cookie = 'main_css_monaco=1; path=/;';
-    } else {
-        document.cookie = 'main_css_monaco=0; path=/;';
-    }
-    
-    check = document.getElementById('main_css_exter_link');
-    if(check.value === 'self') {
-        document.cookie = 'main_css_exter_link=1; path=/;';
-    } else {
-        document.cookie = 'main_css_exter_link=0; path=/;';
-    }
-    
-    check = document.getElementById('main_css_link_delimiter');
-    if(check.checked) {
-        document.cookie = 'main_css_link_delimiter=1; path=/;';
-    } else {
-        document.cookie = 'main_css_link_delimiter=0; path=/;';
-    }
-    
-    history.go(0);
-}
-
-function main_css_skin_load() {    
-    var head_data = document.querySelector('head');
-    if(document.cookie.match(opennamu_cookie_split_regex('main_css_toc_set'))) {
-        if(document.cookie.match(opennamu_cookie_split_regex('main_css_toc_set'))[1] === '2') {
-            head_data.innerHTML += '<style>#auto_toc { display: none; }</style>';
-        } else if(document.cookie.match(opennamu_cookie_split_regex('main_css_toc_set'))[1] === '1') {
-            head_data.innerHTML += '<style>#toc { display: none; }</style>';
-        }
-    }
-    
-    if(
-        document.cookie.match(opennamu_cookie_split_regex('main_css_font_size')) &&
-        document.cookie.match(opennamu_cookie_split_regex('main_css_font_size'))[1] !== ''
-    ) {
-        head_data.innerHTML += '<style>body, input, textarea { font-size: ' + document.cookie.match(opennamu_cookie_split_regex('main_css_font_size'))[1] + 'px; }</style>';
-    }
-    
-    /* 개편 필요 */
-    if(
-        document.cookie.match(opennamu_cookie_split_regex('main_css_link_delimiter')) &&
-        document.cookie.match(opennamu_cookie_split_regex('main_css_link_delimiter'))[1] === '1'
-    ) {
-        head_data.innerHTML += '<style>#real_normal_link::before, #not_thing::before, #inside::before { content: \'🅸\'; font-weight: lighter; background: transparent; }</style>';
-    }
-}
-
-function main_css_load_lang(name) {
-    var set_language = {
-        "en-US" : {
-            "default" : "Default",
-            "change_to_normal" : "Change to normal text",
-            "delete" : "Delete",
-            "include_link" : "Using include link",
-            "save" : "Save",
-            "strike" : "Strike",
-            "bold" : "Bold",
-            "other" : "Other",
-            "where_category" : "Set category location",
-            "bottom" : "Bottom",
-            "top" : "Top",
-            "set_footnote" : "Set footnote",
-            "renderer" : "Renderer",
-            "spread" : "Spread",
-            "set_image" : "Set image",
-            "set_toc" : "Set TOC",
-            "click_load" : "Load on click",
-            "in_content" : "Only when TOC is in the document",
-            "all_off" : "Always off",
-            "set_font_size" : "Set font size",
-            "change_to_link" : "Change to link",
-            "font_size" : "font size",
-            "editor" : "Editor",
-            "main" : "Main",
-            "clipboard_upload" : "Clipboard upload",
-            "only_korean" : "Supported in korean only",
-            "except_ie" : "Not supported for Internet Explorer",
-            "use_monaco" : "Use monaco editor",
-            "self_tab" : "Current tab",
-            "exter_link_open_method" : "External link",
-            "link_delimiter" : "Add link delimiter"
-        }, "ko-KR" : {
-            "default" : "기본값",
-            "change_to_normal" : "일반 텍스트로 변경",
-            "delete" : "삭제",
-            "include_link" : "틀 링크 사용",
-            "save" : "저장",
-            "strike" : "취소선",
-            "bold" : "볼드체",
-            "other" : "기타",
-            "where_category" : "분류 위치 설정",
-            "bottom" : "아래",
-            "top" : "위",
-            "set_footnote" : "각주 설정",
-            "renderer" : "렌더러",
-            "spread" : "펼치기",
-            "set_image" : "이미지 설정",
-            "set_toc" : "목차 설정",
-            "click_load" : "클릭시 불러오기",
-            "in_content" : "문서 안에 있을 때만",
-            "all_off" : "항상 끔",
-            "set_font_size" : "글자 크기 설정",
-            "change_to_link" : "링크로 변경",
-            "font_size" : "글자 크기",
-            "editor" : "편집기",
-            "main" : "메인",
-            "clipboard_upload" : "클립보드 파일 올리기",
-            "only_korean" : "한국어로만 지원됨",
-            "except_ie" : "인터넷 익스플로러에선 지원되지 않음",
-            "use_monaco" : "모나코 에디터 사용",
-            "self_tab" : "현재 탭",
-            "exter_link_open_method" : "외부 링크",
-            "link_delimiter" : "링크 구분자 추가"
-        }
-    }
-
-    var server_language = document.cookie.match(opennamu_cookie_split_regex('language'))[1];
-    var user_language = document.cookie.match(opennamu_cookie_split_regex('user_language'))[1];
-    if(user_language in set_language) {
-        language = user_language;
-    } else {
-        if(server_language in set_language) {
-            language = server_language;
-        } else {
-            language = 'en-US';
-        }
-    }
-
-    if(name in set_language[language]) {
-        return set_language[language][name];
-    } else {
-        return name + ' (' + language + ')';
-    }
-}
-
-function main_css_skin_set() {    
-    var set_data = {};
-    var strike_list = [
-        ['0', 'normal', main_css_load_lang('default')],
-        ['1', 'change', main_css_load_lang('change_to_normal')],
-        ['2', 'delete', main_css_load_lang('delete')]
-    ];
-    set_data["strike"] = '';
-    var i = 0;
-    while(strike_list[i]) {
-        if(
-            document.cookie.match(opennamu_cookie_split_regex('main_css_del_strike')) && 
-            document.cookie.match(opennamu_cookie_split_regex('main_css_del_strike'))[1] === strike_list[i][0]
-        ) {
-            set_data["strike"] = '<option value="' + strike_list[i][1] + '">' + strike_list[i][2] + '</option>' + set_data["strike"];
-        } else {
-            set_data["strike"] += '<option value="' + strike_list[i][1] + '">' + strike_list[i][2] + '</option>';
-        }
-
-        i += 1;
-    }
-
-    var bold_list = [
-        ['0', 'normal', main_css_load_lang('default')],
-        ['1', 'change', main_css_load_lang('change_to_normal')],
-        ['2', 'delete', main_css_load_lang('delete')]
-    ];
-    set_data["bold"] = '';
-    i = 0;
-    while(bold_list[i]) {
-        if(
-            document.cookie.match(opennamu_cookie_split_regex('main_css_del_bold')) && 
-            document.cookie.match(opennamu_cookie_split_regex('main_css_del_bold'))[1] === bold_list[i][0]
-        ) {
-            set_data["bold"] = '<option value="' + bold_list[i][1] + '">' + bold_list[i][2] + '</option>' + set_data["bold"];
-        } else {
-            set_data["bold"] += '<option value="' + bold_list[i][1] + '">' + bold_list[i][2] + '</option>';
-        }
-
-        i += 1;
-    }
-
-    if(
-        document.cookie.match(opennamu_cookie_split_regex('main_css_include_link')) &&
-        document.cookie.match(opennamu_cookie_split_regex('main_css_include_link'))[1] === '1'
-    ) {
-        set_data["include"] = "checked";
-    } else {
-        set_data["include"] = "";
-    }
-
-    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'
-    ) {
-        set_data["image_paste"] = "checked";
-    } else {
-        set_data["image_paste"] = "";
-    }
-
-    var category_list = [
-        ['0', 'bottom', main_css_load_lang('bottom')],
-        ['1', 'top', main_css_load_lang('top')],
-    ];
-    set_data["category"] = '';
-    i = 0;
-    while(category_list[i]) {
-        if(
-            document.cookie.match(opennamu_cookie_split_regex('main_css_category_set')) && 
-            document.cookie.match(opennamu_cookie_split_regex('main_css_category_set'))[1] === category_list[i][0]
-        ) {
-            set_data["category"] = '<option value="' + category_list[i][1] + '">' + category_list[i][2] + '</option>' + set_data["category"];
-        } else {
-            set_data["category"] += '<option value="' + category_list[i][1] + '">' + category_list[i][2] + '</option>';
-        }
-
-        i += 1;
-    }
-
-    var footnote_list = [
-        ['0', 'normal', main_css_load_lang('default')],
-        ['1', 'spread', main_css_load_lang('spread')]
-    ];
-    set_data["footnote"] = '';
-    i = 0;
-    while(footnote_list[i]) {
-        if(
-            document.cookie.match(opennamu_cookie_split_regex('main_css_footnote_set')) && 
-            document.cookie.match(opennamu_cookie_split_regex('main_css_footnote_set'))[1] === footnote_list[i][0]
-        ) {
-            set_data["footnote"] = '<option value="' + footnote_list[i][1] + '">' + footnote_list[i][2] + '</option>' + set_data["footnote"];
-        } else {
-            set_data["footnote"] += '<option value="' + footnote_list[i][1] + '">' + footnote_list[i][2] + '</option>';
-        }
-
-        i += 1;
-    }
-
-    var image_list = [
-        ['0', 'normal', main_css_load_lang('default')],
-        ['1', 'click', main_css_load_lang('change_to_link')],
-        ['2', 'new_click', main_css_load_lang('click_load')]
-    ];
-    set_data["image"] = '';
-    i = 0;
-    while(image_list[i]) {
-        if(
-            document.cookie.match(opennamu_cookie_split_regex('main_css_image_set')) && 
-            document.cookie.match(opennamu_cookie_split_regex('main_css_image_set'))[1] === image_list[i][0]
-        ) {
-            set_data["image"] = '<option value="' + image_list[i][1] + '">' + image_list[i][2] + '</option>' + set_data["image"];
-        } else {
-            set_data["image"] += '<option value="' + image_list[i][1] + '">' + image_list[i][2] + '</option>';
-        }
-
-        i += 1;
-    }
-
-    var toc_list = [
-        ['0', 'normal', main_css_load_lang('default')],
-        ['1', 'off', main_css_load_lang('all_off')],
-        ['2', 'on', main_css_load_lang('in_content')]
-    ];
-    set_data["toc"] = '';
-    i = 0;
-    while(toc_list[i]) {
-        if(
-            document.cookie.match(opennamu_cookie_split_regex('main_css_toc_set')) && 
-            document.cookie.match(opennamu_cookie_split_regex('main_css_toc_set'))[1] === toc_list[i][0]
-        ) {
-            set_data["toc"] = '<option value="' + toc_list[i][1] + '">' + toc_list[i][2] + '</option>' + set_data["toc"];
-        } else {
-            set_data["toc"] += '<option value="' + toc_list[i][1] + '">' + toc_list[i][2] + '</option>';
-        }
-
-        i += 1;
-    }
-
-    if(
-        document.cookie.match(opennamu_cookie_split_regex('main_css_monaco')) &&
-        document.cookie.match(opennamu_cookie_split_regex('main_css_monaco'))[1] === '1'
-    ) {
-        set_data["monaco"] = "checked";
-    } else {
-        set_data["monaco"] = "";
-    }
-    
-    if(document.cookie.match(opennamu_cookie_split_regex('main_css_font_size'))) {
-        set_data["font_size"] = document.cookie.match(opennamu_cookie_split_regex('main_css_font_size'))[1];
-    } else {
-        set_data["font_size"] = '';
-    }
-    
-    let exter_link_list = [
-        ['0', 'blank', main_css_load_lang('default')],
-        ['1', 'self', main_css_load_lang('self_tab')]
-    ];
-    set_data["exter_link"] = '';
-    for(let i = 0; exter_link_list[i]; i++) {
-        if(
-            document.cookie.match(opennamu_cookie_split_regex('main_css_exter_link')) && 
-            document.cookie.match(opennamu_cookie_split_regex('main_css_exter_link'))[1] === exter_link_list[i][0]
-        ) {
-            set_data["exter_link"] = '<option value="' + exter_link_list[i][1] + '">' + exter_link_list[i][2] + '</option>' + set_data["exter_link"];
-        } else {
-            set_data["exter_link"] += '<option value="' + exter_link_list[i][1] + '">' + exter_link_list[i][2] + '</option>';
-        }
-    }
-    
-    if(
-        document.cookie.match(opennamu_cookie_split_regex('main_css_link_delimiter')) &&
-        document.cookie.match(opennamu_cookie_split_regex('main_css_link_delimiter'))[1] === '1'
-    ) {
-        set_data["link_delimiter"] = "checked";
-    } else {
-        set_data["link_delimiter"] = "";
-    }
-
-    document.getElementById("main_skin_set").innerHTML = ' \
-        <div id="opennamu_simple_render"> \
-            <h2>1. ' + main_css_load_lang('renderer') + '</h2> \
-            <h3>1.1. ' + main_css_load_lang('strike') + '</h3> \
-            <select id="main_css_strike"> \
-                ' + set_data["strike"] + ' \
-            </select> \
-            <h3>1.2. ' + main_css_load_lang('bold') + '</h3> \
-            <select id="main_css_bold"> \
-                ' + set_data["bold"] + ' \
-            </select> \
-            <h3>1.3. ' + main_css_load_lang('where_category') + '</h3> \
-            <select id="main_css_category"> \
-                ' + set_data["category"] + ' \
-            </select> \
-            <h3>1.4. ' + main_css_load_lang('set_footnote') + '</h3> \
-            <select id="main_css_footnote"> \
-                ' + set_data["footnote"] + ' \
-            </select> \
-            <h3>1.5. ' + main_css_load_lang('set_image') + '</h3> \
-            <select id="main_css_image"> \
-                ' + set_data["image"] + ' \
-            </select> \
-            <h3>1.6. ' + main_css_load_lang('other') + '</h3> \
-            <input ' + set_data["include"] + ' type="checkbox" id="main_css_include" value="include"> ' + main_css_load_lang('include_link') + ' \
-            <hr class="main_hr"> \
-            <input ' + set_data["link_delimiter"] + ' type="checkbox" id="main_css_link_delimiter" value="link_delimiter"> ' + main_css_load_lang('link_delimiter') + '<sup>(1)</sup> \
-            <h3>1.7. ' + main_css_load_lang('set_toc') + '</h3> \
-            <select id="main_css_toc"> \
-                ' + set_data["toc"] + ' \
-            </select> \
-            <h3>1.8. ' + main_css_load_lang('set_font_size') + '</h3> \
-            <input id="main_css_font_size" placeholder="' + main_css_load_lang('font_size') + ' (EX : 11)" value="' + set_data["font_size"] + '"> \
-            <h3>1.9. ' + main_css_load_lang('exter_link_open_method') + '</h3> \
-            <select id="main_css_exter_link"> \
-                ' + set_data["exter_link"] + ' \
-            </select> \
-            <h2>2. ' + main_css_load_lang('editor') + '</h2> \
-            <h3>2.1. ' + main_css_load_lang('main') + '</h3> \
-            <input ' + set_data["monaco"] + ' type="checkbox" id="main_css_monaco" value="monaco"> ' + main_css_load_lang('use_monaco') + '<sup>(1)</sup> \
-            <hr class="main_hr"> \
-            <input ' + set_data["image_paste"] + ' type="checkbox" id="main_css_image_paste" value="image_paste"> ' + 
-                main_css_load_lang('clipboard_upload') + '<sup>(ko-KR)</sup><sup>(1)</sup> \
-            <hr class="main_hr"> \
-            <button onclick="main_css_get_post();">' + main_css_load_lang('save') + '</button> \
-            <hr class="main_hr"> \
-            <ul id="footnote_data"> \
-                <li><a id="note_1_end" href="#note_1">(1)</a> ' + main_css_load_lang('except_ie') + '</li> \
-                <li><a href="#note_1_1">(1.1)</a></li> \
-                <li><a id="note_2_end" href="#note_2">(ko-KR)</a> ' + main_css_load_lang('only_korean') + '</li> \
-            </ul> \
-        </div> \
-    ';
-}
-
-document.addEventListener("DOMContentLoaded", main_css_skin_load);