Răsfoiți Sursa

add func added menu

잉여개발기 (SPDV) 3 ani în urmă
părinte
comite
f98fca4121

+ 3 - 2
app.py

@@ -192,7 +192,7 @@ with get_db_connect() as conn:
         elif server_set_env[i] != None:
             server_set_val = server_set_env[i]
 
-            curs.execute(db_change('insert into other (name, data) values (?, ?)'), [i, server_set_env[i]])
+            curs.execute(db_change('insert into other (name, data, coverage) values (?, ?, "")'), [i, server_set_env[i]])
         else:
             if 'list' in server_set_var[i]:
                 print(server_set_var[i]['display'] + ' (' + server_set_var[i]['default'] + ') [' + ', '.join(server_set_var[i]['list']) + ']' + ' : ', end = '')
@@ -206,7 +206,7 @@ with get_db_connect() as conn:
                 if not server_set_val in server_set_var[i]['list']:
                     server_set_val = server_set_var[i]['default']
 
-            curs.execute(db_change('insert into other (name, data) values (?, ?)'), [i, server_set_val])
+            curs.execute(db_change('insert into other (name, data, coverage) values (?, ?, "")'), [i, server_set_val])
 
         print(server_set_var[i]['display'] + ' : ' + server_set_val)
 
@@ -640,6 +640,7 @@ 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)

+ 1 - 6
emergency_tool.py

@@ -198,12 +198,7 @@ elif what_i_do == '12':
         count_data = 0
 
     curs.execute(db_change('delete from other where name = "count_all_title"'))
-    curs.execute(
-        db_change(
-            'insert into other (name, data) values ("count_all_title", ?)'
-        ),
-        [str(count_data)]
-    )
+    curs.execute(db_change('insert into other (name, data, coverage) values ("count_all_title", ?, "")'), [str(count_data)])
 elif what_i_do == '14':
     curs.execute(db_change('delete from other where name = "head"'))
 elif what_i_do == '15':

+ 4 - 0
lang/en-US.json

@@ -227,6 +227,7 @@
         "multiple_ban" : "Multiple ban",
         "dont_move" : "Don't move",
         "file_delete" : "File delete",
+        "added_menu" : "Added menu",
         "_comment_" : "Edit",
             "load" : "Load another document",
             "turn_off_monaco" : "Turn off monaco editor",
@@ -264,6 +265,8 @@
             "adsense_enable" : "Adsense enable",
             "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_setting" : "Main settings",
                 "text_setting" : "Text settings",
@@ -519,6 +522,7 @@
             "history_delete_warning" : "If you erase history, it's hard to restore it, so please be careful.",
             "user_css_warning" : "If you have a problem using this, connect here.",
             "main_css_warning" : "If you have a problem using this, use the emergency tool.",
+            "not_support_skin_warning" : "It does not work on skins that do not support this feature.",
         "_comment_" : "Challenge",
             "challenge_title_register" : "Hello, World!",
             "challenge_info_register" : "Sign up",

+ 6 - 2
lang/ko-KR.json

@@ -487,6 +487,10 @@
     "topic_agree": "토론 합의 완료",
     "user_css_warning": "만약 사용하다가 문제가 생기면 여기로 접속하세요.",
     "main_css_warning": "만약 사용하다가 문제가 생기면 이머전시 툴을 사용하세요.",
-    "reset" : "초기화",
-    "namumark_fully_compatible_mode" : "나무마크 디자인 호환 모드"
+    "reset": "초기화",
+    "namumark_fully_compatible_mode": "나무마크 디자인 호환 모드",
+    "added_menu": "추가 메뉴",
+    "top_menu_setting": "추가 메뉴 설정",
+    "enter_top_menu_setting": "윗 줄에는 이름을 쓰고 아랫 줄에는 URL을 입력하세요.",
+    "not_support_skin_warning": "이 기능을 미지원하는 스킨에서는 작동하지 않습니다."
 }

+ 2 - 1
route/main_func_setting.py

@@ -10,7 +10,8 @@ def main_func_setting():
             ['head', load_lang('main_head')],
             ['body/top', load_lang('main_body')],
             ['body/bottom', load_lang('main_bottom_body')],
-            ['sitemap', load_lang('sitemap_management') + ' (' + load_lang('beta') + ')']
+            ['sitemap', load_lang('sitemap_management')],
+            ['top_menu', load_lang('top_menu_setting') + ' (' + load_lang('beta') + ')']
         ]
 
         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

@@ -40,7 +40,7 @@ def main_func_setting_acl():
                 if sql_d:
                     d_list[i] = sql_d[0][0]
                 else:
-                    curs.execute(db_change('insert into other (name, data) values (?, ?)'), [i_list[i], 'normal'])
+                    curs.execute(db_change('insert into other (name, data, coverage) values (?, ?, "")'), [i_list[i], 'normal'])
 
                     d_list[i] = 'normal'
 

+ 1 - 1
route/main_func_setting_external.py

@@ -42,7 +42,7 @@ def main_func_setting_external():
                 if sql_d:
                     d_list += [sql_d[0][0]]
                 else:
-                    curs.execute(db_change('insert into other (name, data) values (?, ?)'), [i, ''])
+                    curs.execute(db_change('insert into other (name, data, coverage) values (?, ?, "")'), [i, ''])
 
                     d_list += ['']
 

+ 1 - 5
route/main_func_setting_head.py

@@ -26,11 +26,7 @@ def main_func_setting_head(num, skin_name = '', set_preview = 0):
 
             curs.execute(db_change("select name from other where name = ? and coverage = ?"), [info_d, coverage])
             if curs.fetchall():
-                curs.execute(db_change("update other set data = ? where name = ? and coverage = ?"), [
-                    flask.request.form.get('content', ''),
-                    info_d,
-                    coverage
-                ])
+                curs.execute(db_change("update other set data = ? where name = ? and coverage = ?"), [flask.request.form.get('content', ''), info_d, coverage])
             else:
                 curs.execute(db_change("insert into other (name, data, coverage) values (?, ?, ?)"), [info_d, flask.request.form.get('content', ''), coverage])
 

+ 1 - 1
route/main_func_setting_main.py

@@ -56,7 +56,7 @@ 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 (?, ?)'), [
+                    curs.execute(db_change('insert into other (name, data, coverage) values (?, ?, "")'), [
                         setting_list[i][0],
                         setting_list[i][1]
                     ])

+ 1 - 1
route/main_func_setting_phrase.py

@@ -51,7 +51,7 @@ def main_func_setting_phrase():
                 if sql_d:
                     d_list += [sql_d[0][0]]
                 else:
-                    curs.execute(db_change('insert into other (name, data) values (?, ?)'), [i, ''])
+                    curs.execute(db_change('insert into other (name, data, coverage) values (?, ?, "")'), [i, ''])
 
                     d_list += ['']
 

+ 2 - 2
route/main_func_setting_robot.py

@@ -25,12 +25,12 @@ def main_func_setting_robot():
             if db_data:
                 curs.execute(db_change("update other set data = ? where name = 'robot'"), [flask.request.form.get('content', '')])
             else:
-                curs.execute(db_change("insert into other (name, data) values ('robot', ?)"), [flask.request.form.get('content', '')])
+                curs.execute(db_change("insert into other (name, data, coverage) values ('robot', ?, '')"), [flask.request.form.get('content', '')])
 
             if db_data_2:
                 curs.execute(db_change("update other set data = ? where name = 'robot_default'"), [flask.request.form.get('default', '')])
             else:
-                curs.execute(db_change("insert into other (name, data) values ('robot_default', ?)"), [flask.request.form.get('default', '')])
+                curs.execute(db_change("insert into other (name, data, coverage) values ('robot_default', ?, '')"), [flask.request.form.get('default', '')])
 
             conn.commit()
 

+ 51 - 0
route/main_func_setting_top_menu.py

@@ -0,0 +1,51 @@
+from .tool.func import *
+
+def main_func_setting_top_menu():
+    with get_db_connect() as conn:
+        curs = conn.cursor()
+
+        if admin_check() != 1:
+            return re_error('/ban')
+        
+        if flask.request.method == 'POST':
+            curs.execute(db_change("select name from other where name = 'top_menu'"))
+            if curs.fetchall():
+                curs.execute(db_change("update other set data = ? where name = 'top_menu'"), [flask.request.form.get('content', '')])
+            else:
+                curs.execute(db_change("insert into other (name, data, coverage) values ('top_menu', ?, '')"), [flask.request.form.get('content', '')])
+
+            conn.commit()
+
+            admin_check(None, 'edit_set (top_menu)')
+
+            return redirect('/setting/top_menu')
+        else:
+            curs.execute(db_change("select data from other where name = 'top_menu'"))
+            db_data = curs.fetchall()
+            db_data = db_data[0][0] if db_data else ''
+            
+            return easy_minify(flask.render_template(skin_check(),
+                imp = [load_lang('top_menu_setting'), wiki_set(), wiki_custom(), wiki_css([0, 0])],
+                data = '''
+                    <span>
+                        EX)
+                        <br>
+                        ONTS
+                        <br>
+                        https://2du.pythonanywhere.com/
+                        <br>
+                        FrontPage
+                        <br>
+                        /w/FrontPage
+                    </span>
+                    <hr class="main_hr">
+                    ''' + load_lang('not_support_skin_warning') + '''
+                    <hr class="main_hr">
+                    <form method="post">
+                        <textarea class="opennamu_textarea_500" placeholder="''' + load_lang('enter_top_menu_setting') + '''" name="content" id="content">''' + html.escape(db_data) + '''</textarea>
+                        <hr class="main_hr">
+                        <button id="opennamu_save_button" type="submit">''' + load_lang('save') + '''</button>
+                    </form>
+                ''',
+                menu = [['setting', load_lang('return')]]
+            ))

+ 30 - 8
route/tool/func.py

@@ -305,6 +305,7 @@ class class_check_json:
 
 def get_db_table_list():
     # Init-Create_DB
+    # --이거 개편한다더니 도대체 언제?--
     create_data = {}
 
     # 폐지 예정 (data_set으로 통합)
@@ -342,6 +343,9 @@ def get_db_table_list():
     create_data['ua_d'] = ['name', 'ip', 'ua', 'today', 'sub']
 
     create_data['user_set'] = ['name', 'id', 'data']
+
+    create_data['bbs_set'] = ['set_name', 'set_code', 'set_id', 'set_data']
+    create_data['bbs_data'] = ['set_name', 'set_code', 'set_id', 'set_data']
     
     return create_data
 
@@ -618,7 +622,13 @@ def update(ver_num, set_data):
                 'Allow: /w/' + \
             ''
             if db_data[0][0] == robot_default:
-                curs.execute(db_change("insert into other (name, data) values ('robot_default', 'on')"))
+                curs.execute(db_change("insert into other (name, data, coverage) values ('robot_default', 'on', '')"))
+
+    if ver_num < 3500355:
+        # other coverage 오류 해결
+        curs.execute(db_change(
+            "update other set coverage = '' where coverage is null"
+        ))
 
     conn.commit()
     
@@ -632,7 +642,7 @@ def set_init_always(ver_num):
     curs = conn.cursor()
 
     curs.execute(db_change('delete from other where name = "ver"'))
-    curs.execute(db_change('insert into other (name, data) values ("ver", ?)'), [ver_num])
+    curs.execute(db_change('insert into other (name, data, coverage) values ("ver", ?, "")'), [ver_num])
     
     curs.execute(db_change('delete from alist where name = "owner"'))
     curs.execute(db_change('insert into alist (name, acl) values ("owner", "owner")'))
@@ -642,15 +652,15 @@ def set_init_always(ver_num):
 
     curs.execute(db_change('select data from other where name = "key"'))
     if not curs.fetchall():
-        curs.execute(db_change('insert into other (name, data) values ("key", ?)'), [load_random_key()])
+        curs.execute(db_change('insert into other (name, data, coverage) values ("key", ?, "")'), [load_random_key()])
         
     curs.execute(db_change('select data from other where name = "salt_key"'))
     if not curs.fetchall():
-        curs.execute(db_change('insert into other (name, data) values ("salt_key", ?)'), [load_random_key(4)])
+        curs.execute(db_change('insert into other (name, data, coverage) values ("salt_key", ?, "")'), [load_random_key(4)])
 
     curs.execute(db_change('select data from other where name = "count_all_title"'))
     if not curs.fetchall():
-        curs.execute(db_change('insert into other (name, data) values ("count_all_title", "0")'))
+        curs.execute(db_change('insert into other (name, data, coverage) values ("count_all_title", "0", "")'))
         
     curs.execute(db_change('select data from other where name = "wiki_access_password_need"'))
     db_data = curs.fetchall()
@@ -690,9 +700,7 @@ def set_init():
             ['smtp_port', '587'], 
             ['smtp_security', 'starttls']
         ]:
-            curs.execute(db_change(
-                "insert into other (name, data) values (?, ?)"
-            ), [i[0], i[1]])
+            curs.execute(db_change("insert into other (name, data, coverage) values (?, ?, '')"), [i[0], i[1]])
         
     conn.commit()
 
@@ -1135,6 +1143,20 @@ def wiki_set(num = 1):
 
     data_list += [head_data]
 
+    curs.execute(db_change("select data from other where name = 'top_menu'"))
+    db_data = curs.fetchall()
+    db_data = db_data[0][0] if db_data else ''
+    db_data = db_data.replace('\r', '')
+    if db_data != '':
+        db_data = db_data.split('\n')
+    
+        if len(db_data) % 2 != 0:
+            db_data += ['']
+
+        db_data = [[db_data[for_a], db_data[for_a + 1]] for for_a in range(0, len(db_data), 2)]
+
+    data_list += [db_data]
+
     return data_list
 
 def wiki_custom():

+ 2 - 2
version.json

@@ -1,7 +1,7 @@
 {
     "beta" : {
-        "r_ver" : "v3.4.6-RC1 (stable1) (beta9-112)",
-        "c_ver" : "3500354",
+        "r_ver" : "v3.4.6-RC1 (stable1) (beta9-113)",
+        "c_ver" : "3500355",
         "s_ver" : "3500111"
     }
 }

+ 18 - 1
views/ringo/index.html

@@ -9,7 +9,7 @@
         {% endif %}
         {{imp[3][3]|safe}}
         <script src="https://code.iconify.design/1/1.0.3/iconify.min.js"></script>
-        <script src="/views/ringo/js/main.js?ver=1"></script>
+        <script src="/views/ringo/js/main.js?ver=2"></script>
         <link rel="stylesheet" href="/views/ringo/css/main.css?ver=2">
         <link rel="shortcut icon" href="/views/main_css/file/favicon.ico?ver=1">
         {{imp[1][5]|safe}}
@@ -135,6 +135,23 @@
                         {% endif %}
                     </div>
                 </div>
+                {% if imp[1][6] != '' %}
+                    <div class="top_cel" id="add_cel">
+                        <a href="javascript:ringo_opening('add_cel_in');">
+                            <span class="iconify" data-icon="ic:baseline-playlist-add" data-inline="true"></span>
+                            <span class="not_mobile">{{'added_menu'|load_lang}}</span>
+                            <span class="iconify" data-icon="ic:baseline-arrow-drop-down" data-inline="true"></span>
+                        </a>
+                        <div class="top_cel_in" id="add_cel_in" style="display: none;">
+                            {% for added_top_menu in imp[1][6] %}
+                                <a href="{{added_top_menu[1]}}">
+                                    <span class="iconify" data-icon="ic:baseline-plus" data-inline="true"></span>
+                                    {{added_top_menu[0]}}
+                                </a>
+                            {% endfor %}
+                        </div>
+                    </div>
+                {% endif %}
                 <form class="not_mobile" method="post" action="/search" role="search" id="search">
                     <input class="not_mobile search" name="search" placeholder="{{'search'|load_lang}}" autocomplete="off" type="search">
                     <button type="submit" id="goto" formaction="/goto" class="search_button">

+ 3 - 2
views/ringo/js/main.js

@@ -3,7 +3,8 @@ let ringo_open = 0;
 let ringo_menu_list = [
     'recent_cel',
     'other_cel',
-    'user_cel'
+    'user_cel',
+    'add_cel'
 ];
 
 function ringo_opening(data) {
@@ -41,7 +42,7 @@ document.onclick = function(event) {
         cel_list.push(document.getElementById(ringo_menu_list[for_a]));
     }
 
-    if(ringo_save_data !== '' && ringo_open == 2 && !cel_list.includes(event.path[1])) {
+    if(ringo_save_data !== '' && ringo_open == 2) {
         document.getElementById(ringo_save_data).style.display = 'none';
 
         setTimeout(function() { ringo_open = 0; }, 100);