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

Merge pull request #2029 from openNAMU/dev

디자인 관련 팿
잉여개발기 2 лет назад
Родитель
Сommit
23c62b5f62

+ 11 - 0
app.py

@@ -318,6 +318,17 @@ def do_every_day():
             
             curs.execute(db_change("delete from re_admin where time < ?"), [time_calc])
 
+        # 전체 문서 수 재계산
+        curs.execute(db_change("select count(*) from data"))
+        count_data = curs.fetchall()
+        if count_data:
+            count_data = count_data[0][0]
+        else:
+            count_data = 0
+
+        curs.execute(db_change('delete from other where name = "count_all_title"'))
+        curs.execute(db_change('insert into other (name, data, coverage) values ("count_all_title", ?, "")'), [str(count_data)])
+
         # 사이트맵 생성 관리
         curs.execute(db_change('select data from other where name = "sitemap_auto_make"'))
         db_data = curs.fetchall()

+ 0 - 11
emergency_tool.py

@@ -39,7 +39,6 @@ print('8. Change version')
 print('9. Delete set.json')
 print('10. Change name')
 print('11. Delete mysql.json')
-print('12. All title count reset')
 print('14. Delete Main <HEAD>')
 print('15. Give owner')
 print('16. Delete 2FA password')
@@ -159,16 +158,6 @@ elif what_i_do == '10':
 elif what_i_do == '11':
     if os.path.exists(os.path.join('data', 'mysql.json')):
         os.remove(os.path.join('data', 'mysql.json'))
-elif what_i_do == '12':
-    curs.execute(db_change("select count(*) from data"))
-    count_data = curs.fetchall()
-    if count_data:
-        count_data = count_data[0][0]
-    else:
-        count_data = 0
-
-    curs.execute(db_change('delete from other where name = "count_all_title"'))
-    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':

+ 1 - 0
route/api_search.py

@@ -7,6 +7,7 @@ def api_search(name = 'Test', num = 10, page = 1):
         num = 1 if num > 1000 else num
         page = (page * (num - 1)) if page * num > 0 else 0
 
+        # 개편 예정
         curs.execute(db_change('select data from other where name = "count_all_title"'))
         if int(curs.fetchall()[0][0]) < 30000:
             curs.execute(db_change("" + \

+ 0 - 3
route/edit.py

@@ -194,9 +194,6 @@ def edit(name = 'Test', section = 0, do_type = ''):
             else:    
                 curs.execute(db_change("insert into data (title, data) values (?, ?)"), [name, content])
     
-                curs.execute(db_change('select data from other where name = "count_all_title"'))
-                curs.execute(db_change("update other set data = ? where name = 'count_all_title'"), [str(int(curs.fetchall()[0][0]) + 1)])
-    
             curs.execute(db_change("select user from scan where title = ? and type = ''"), [name])
             for scan_user in curs.fetchall():
                 add_alarm(scan_user[0], ip, '<a href="/w/' + url_pas(name) + '">' + html.escape(name) + '</a>')

+ 1 - 4
route/edit_delete.py

@@ -53,11 +53,8 @@ def edit_delete(name):
 
                 curs.execute(db_change("delete from back where link = ?"), [name])
                 curs.execute(db_change("delete from data where title = ?"), [name])
-                
-                conn.commit()
 
-            curs.execute(db_change('select data from other where name = "count_all_title"'))
-            curs.execute(db_change("update other set data = ? where name = 'count_all_title'"), [str(int(curs.fetchall()[0][0]) - 1)])
+                conn.commit()
 
             return redirect('/w/' + url_pas(name))
         else:            

+ 0 - 3
route/edit_move.py

@@ -68,9 +68,6 @@ def edit_move(name):
                     curs.execute(db_change("delete from back where title = ? and type = 'no'"), [move_title])
                     # 역링크 E
 
-                    curs.execute(db_change('select data from other where name = "count_all_title"'))
-                    curs.execute(db_change("update other set data = ? where name = 'count_all_title'"), [str(int(curs.fetchall()[0][0]) - 1)])
-
                     curs.execute(db_change("select id from history where title = ? order by id + 0 desc limit 1"), [move_title])
                     num = curs.fetchall()[0][0]
 

+ 0 - 3
route/edit_upload.py

@@ -92,9 +92,6 @@ def edit_upload():
 
                 curs.execute(db_change("insert into data (title, data) values (?, ?)"), ['file:' + name, file_d])
 
-                curs.execute(db_change('select data from other where name = "count_all_title"'))
-                curs.execute(db_change("update other set data = ? where name = 'count_all_title'"), [str(int(curs.fetchall()[0][0]) + 1)])
-
                 render_set(
                     doc_name = 'file:' + name,
                     doc_data = file_d,

+ 1 - 5
route/list_please.py

@@ -6,13 +6,9 @@ def list_please(arg_num = 1):
 
         sql_num = (arg_num * 50 - 50) if arg_num * 50 > 0 else 0
 
-        curs.execute(db_change('select data from other where name = "count_all_title"'))
-        if int(curs.fetchall()[0][0]) > 30000:
-            return re_error('/error/25')
-
         div = '<ul class="opennamu_ul">'
 
-        curs.execute(db_change("select distinct title, link from back where type = 'no' order by title asc limit ?, 50"), [sql_num])
+        curs.execute(db_change("select distinct title, link from back where type = 'no' limit ?, 50"), [sql_num])
         data_list = curs.fetchall()
         for data in data_list:
             div += '' + \

+ 5 - 0
route/main_setting_skin_set.py

@@ -144,6 +144,11 @@ def main_setting_skin_set():
                         <select name="main_css_view_history">
                             ''' + set_data["main_css_view_history"] + '''
                         </select>
+                        <h3>''' + load_lang("font_size") + '''</h3>
+                        ''' + set_data_main["main_css_font_size"] + '''
+                        <select name="main_css_font_size">
+                            ''' + set_data["main_css_font_size"] + '''
+                        </select>
                         <h2>''' + load_lang("edit") + '''</h2>
                         <h3>''' + load_lang("image_paste") + '''</h3>
                         <sup>''' + load_lang('only_korean') + '''</sup> <sup>''' + load_lang('unavailable_in_monaco') + '''</sup>

+ 20 - 14
route/tool/func.py

@@ -1013,7 +1013,7 @@ def wiki_css(data):
     data_css = ''
     data_css_add = ''
 
-    data_css_ver = '188'
+    data_css_ver = '189'
     data_css_ver = '.cache_v' + data_css_ver
 
     if 'main_css' in global_wiki_set:
@@ -1349,6 +1349,18 @@ def render_set(doc_name = '', doc_data = '', data_type = 'view', data_in = '', d
 
                 get_class_render[0] = '<div class="opennamu_render_complete">' + get_class_render[0] + '</div>'
 
+                font_size_set_data = get_main_skin_set(curs, flask.session, 'main_css_font_size', ip)
+                if font_size_set_data != 'default':
+                    font_size_set_data = number_check(font_size_set_data)
+
+                    get_class_render[0] = '''
+                        <style>
+                            .opennamu_render_complete {
+                                font-size: ''' + font_size_set_data + '''px !important;
+                            }
+                        </style>
+                    ''' + get_class_render[0]
+
                 curs.execute(db_change("select data from other where name = 'namumark_compatible'"))
                 db_data = curs.fetchall()
                 if db_data and db_data[0][0] != '':
@@ -1356,7 +1368,6 @@ def render_set(doc_name = '', doc_data = '', data_type = 'view', data_in = '', d
                         <style>
                             .opennamu_render_complete {
                                 font-size: 14.4px !important;
-
                                 line-height: 1.5;
                             }
 
@@ -1366,7 +1377,6 @@ def render_set(doc_name = '', doc_data = '', data_type = 'view', data_in = '', d
 
                             .opennamu_render_complete summary {
                                 list-style: none !important;
-                                
                                 font-weight: bold !important;
                             }
                         </style>
@@ -2490,19 +2500,15 @@ def history_plus(title, data, date, ip, send, leng, t_check = '', mode = ''):
             history_plus_rc_max(curs, mode)
             curs.execute(db_change("insert into rc (id, title, date, type) values (?, ?, ?, ?)"), [id_data, title, date, mode])
 
-            data_set_exist = '' if t_check != 'delete' else '1'
+            data_set_exist = '' if t_check != 'delete' else 'not_exist'
 
-            curs.execute(db_change("select doc_name from data_set where doc_name = ? and set_name = 'last_edit'"), [title])
-            if curs.fetchall():
-                curs.execute(db_change("update data_set set set_data = ?, doc_rev = ? where doc_name = ? and set_name = 'last_edit'"), [date, data_set_exist, title])
-            else:
-                curs.execute(db_change("insert into data_set (doc_name, doc_rev, set_name, set_data) values (?, ?, 'last_edit', ?)"), [title, data_set_exist, date])
+            curs.execute(db_change('delete from data_set where doc_name = ? and set_name = "last_edit"'), [title])
+            curs.execute(db_change("insert into data_set (doc_name, doc_rev, set_name, set_data) values (?, '', 'last_edit', ?)"), [title, date])
 
-            curs.execute(db_change("select doc_name from data_set where doc_name = ? and set_name = 'length'"), [title])
-            if curs.fetchall():
-                curs.execute(db_change("update data_set set set_data = ?, doc_rev = ? where doc_name = ? and set_name = 'length'"), [len(data), data_set_exist, title])
-            else:
-                curs.execute(db_change("insert into data_set (doc_name, doc_rev, set_name, set_data) values (?, ?, 'length', ?)"), [title, data_set_exist, len(data)])
+            curs.execute(db_change('delete from data_set where doc_name = ? and set_name = "length"'), [title])
+            curs.execute(db_change("insert into data_set (doc_name, doc_rev, set_name, set_data) values (?, '', 'length', ?)"), [title, len(data)])
+
+            curs.execute(db_change("update data_set set doc_rev = ? where doc_name = ? and (doc_rev = '' or doc_rev = 'not_exist')"), [data_set_exist, title])
 
         curs.execute(db_change("insert into history (id, title, data, date, ip, send, leng, hide, type) values (?, ?, ?, ?, ?, ?, ?, '', ?)"), [id_data, title, data, date, ip, send, leng, mode])
 

+ 6 - 1
route/tool/func_render_namumark.py

@@ -1019,7 +1019,12 @@ class class_do_render_namumark:
                         link_main = url_pas(link_main)
 
                         if self.data_category == '':
-                            self.data_category = '<div class="opennamu_category">' + self.get_tool_lang('category') + ' : '
+                            self.data_category = '' + \
+                                '<div class="opennamu_category">' + \
+                                    '<a class="opennamu_category_button" href="javascript:opennamu_do_category_spread();"> (+)</a>' + \
+                                    self.get_tool_lang('category') + ' : ' + \
+                                '' + \
+                            ''
                         else:
                             self.data_category += ' | '
 

+ 1 - 1
route/tool/func_tool.py

@@ -75,7 +75,7 @@ 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'
+        set_data = db_data[0][0] if db_data and db_data[0][0] != '' else 'default'
     else:
         set_data = flask_session[set_name] if set_name in flask_session and flask_session[set_name] != '' else 'default'
 

+ 14 - 0
route/user_setting_skin_set_main.py

@@ -92,6 +92,15 @@ def user_setting_skin_set_main_set_list():
             ['default', load_lang('default')],
             ['off', load_lang('off')],
             ['on', load_lang('use')]
+        ], 'main_css_font_size' : [
+            ['default', load_lang('default')],
+            ['10', '10'],
+            ['12', '12'],
+            ['14', '14'],
+            ['16', '16'],
+            ['18', '18'],
+            ['20', '20'],
+            ['22', '22'],
         ]
     }
 
@@ -263,6 +272,11 @@ def user_setting_skin_set_main():
                         <select name="main_css_view_history">
                             ''' + set_data["main_css_view_history"] + '''
                         </select>
+                        <h3>''' + load_lang("font_size") + '''</h3>
+                        ''' + set_data_main["main_css_font_size"] + '''
+                        <select name="main_css_font_size">
+                            ''' + set_data["main_css_font_size"] + '''
+                        </select>
                         <h2>''' + load_lang("edit") + '''</h2>
                         <h3>''' + load_lang("image_paste") + '''</h3>
                         <sup>''' + load_lang('only_korean') + '''</sup> <sup>''' + load_lang('unavailable_in_monaco') + '''</sup>

+ 1 - 1
version.json

@@ -1,6 +1,6 @@
 {
     "beta" : {
-        "r_ver" : "v3.4.6-RC5-dev78",
+        "r_ver" : "v3.4.6-RC5-dev81",
         "c_ver" : "3500374",
         "s_ver" : "3500112"
     }

+ 10 - 0
views/main_css/css/main.css

@@ -185,6 +185,16 @@ a:hover {
     border: 1px solid gainsboro;
     
     padding: 10px;
+    
+    white-space: pre;
+    overflow-x: hidden;
+    text-overflow: ellipsis;
+}
+
+.opennamu_category_button {
+    float: right;
+    z-index: 100;
+    position: relative;
 }
 
 .opennamu_category_blur {

+ 8 - 0
views/main_css/js/route/render.js

@@ -162,4 +162,12 @@ function opennamu_do_footnote_popover(set_name, load_name) {
     } else {
         document.getElementById(set_name + '_load').style.display = "none";
     }
+}
+
+function opennamu_do_category_spread() {
+    if(document.getElementsByClassName('opennamu_render_complete')) {
+        document.getElementsByClassName('opennamu_render_complete')[0].innerHTML = '' +
+            '<style>.opennamu_category_button { display: none; } .opennamu_category { white-space: pre-wrap; overflow-x: unset; text-overflow: unset; }</style>' +
+        '' + document.getElementsByClassName('opennamu_render_complete')[0].innerHTML
+    }
 }

+ 21 - 3
views/ringo/css/main.css

@@ -192,8 +192,6 @@ button.search_button#search:hover {
 aside {
     width: 250px;
     
-    float: left;
-    
     display: block;
     
     padding-top: 10px;
@@ -202,7 +200,19 @@ aside {
     
     background-color: #ffeaee;
     
-    min-height: calc(100vh - (50px + 20px));
+    min-height: calc(100vh - (50px + 12px));
+}
+
+.aside_width {
+    width: 290px;
+
+    float: left;
+}
+
+.do_fixed {
+    position: fixed;
+    
+    top: 52px;
 }
 
 aside button {
@@ -313,6 +323,14 @@ article.main#title h1 {
 
         width: 100%;
     }
+
+    .do_fixed {
+        position: inherit;
+    }
+
+    .aside_width {
+        display: none;
+    }
 }
 
 footer {

+ 36 - 19
views/ringo/index.html

@@ -13,11 +13,27 @@
         <script src="/views/ringo/js/main.js.cache_v2"></script>
         <script src="/views/ringo/js/sidebar.js.cache_v1"></script>
         <script src="/views/ringo/js/skin_set.js.cache_v1"></script>
-        <link rel="stylesheet" href="/views/ringo/css/main.css.cache_v4">
+        <link rel="stylesheet" href="/views/ringo/css/main.css.cache_v6">
         {% if request.cookies.get('main_css_darkmode', '') == '1' %}
             <link rel="stylesheet" href="/views/main_css/css/sub/dark.css.cache_v1">
             <link rel="stylesheet" href="/views/ringo/css/dark.css.cache_v1">
         {% endif %}
+        {% if request.cookies.get('main_css_off_sidebar', '') == '1' %}
+            <style>
+                section {
+                    display: block;
+                    margin: auto;
+                }
+
+                .aside_width {
+                    display: none;
+                }
+
+                .do_fixed {
+                    display: none;
+                }
+            </style>
+        {% endif %}
         <link rel="shortcut icon" href="/views/main_css/file/favicon.ico.cache_v1">
         {{imp[1][5]|safe}}
         {{imp[2][3]|safe}}
@@ -230,7 +246,8 @@
                 </article>
             </footer>
         </section>
-        <aside>
+        <div class="aside_width">A</div>
+        <aside class="do_fixed">
             <button id="side_button_1" class="side_button selected">{{'edit'|load_lang}}</button><!--
          --><button id="side_button_2" class="side_button">{{'discussion'|load_lang}}</button><!--
          --><button id="side_button_3" class="side_button">{{'toc'|load_lang}}</button><!--
@@ -238,24 +255,24 @@
             <div id="side_content">
                 Loading...
             </div>
-            <div id="nav_bar">
-                <div id="go_top">
-                    <a href="#main">
-                        <span class="iconify" data-icon="ic:baseline-arrow-upward" data-inline="true"></span>
-                    </a>
-                </div>
-                <div id="go_bottom">
-                    <a href="#footer">
-                        <span class="iconify" data-icon="ic:baseline-arrow-downward" data-inline="true"></span>
-                    </a>
-                </div>
-                <div id="go_toc">
-                    <a href="#toc">
-                        <span class="iconify" data-icon="ic:baseline-list" data-inline="true"></span>
-                    </a>
-                </div>
-            </div>
         </aside>
+        <div id="nav_bar">
+            <div id="go_top">
+                <a href="#main">
+                    <span class="iconify" data-icon="ic:baseline-arrow-upward" data-inline="true"></span>
+                </a>
+            </div>
+            <div id="go_bottom">
+                <a href="#footer">
+                    <span class="iconify" data-icon="ic:baseline-arrow-downward" data-inline="true"></span>
+                </a>
+            </div>
+            <div id="go_toc">
+                <a href="#toc">
+                    <span class="iconify" data-icon="ic:baseline-list" data-inline="true"></span>
+                </a>
+            </div>
+        </div>
         <footer class="only_mobile" id="footer">
             {{imp[1][1]|safe}}
             <br>

+ 1 - 1
views/ringo/info.json

@@ -1,5 +1,5 @@
 {
     "name" : "Ringo",
-    "skin_ver" : "v1.0.6",
+    "skin_ver" : "v1.0.8",
     "require_ver" : "3500112"
 }

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

@@ -17,6 +17,13 @@ function ringo_get_post() {
         document.cookie = 'main_css_use_sys_darkmode=0; path=/';
     }
 
+    const check_3 = document.getElementById('off_sidebar');
+    if(check_3.checked === true) {
+        document.cookie = 'main_css_off_sidebar=1; path=/';
+    } else {
+        document.cookie = 'main_css_off_sidebar=0; path=/';
+    }
+
     history.go(0);
 }
 
@@ -40,10 +47,12 @@ function ringo_load_skin_set() {
                 "save" : "Save",
                 "darkmode" : "Darkmode",
                 "use_sys_darkmode" : "Use system darkmode set",
+                "off_sidebar" : "Turn off sidebar",
             }, "ko-KR" : {
                 "save" : "저장",
                 "darkmode" : "다크모드",
                 "use_sys_darkmode" : "시스템 다크모드 설정 사용",
+                "off_sidebar" : "사이드바 끄기",
             }
         }
 
@@ -67,11 +76,17 @@ function ringo_load_skin_set() {
             set_data["use_sys_darkmode"] = "checked";
         }
 
+        if(cookies.match(ringo_do_regex_data('main_css_off_sidebar')) && cookies.match(ringo_do_regex_data('main_css_off_sidebar'))[1] === '1') {
+            set_data["off_sidebar"] = "checked";
+        }
+
         document.getElementById("main_skin_set").innerHTML = ' \
             <input ' + set_data["use_sys_darkmode"] + ' type="checkbox" id="use_sys_darkmode" name="use_sys_darkmode" value="use_sys_darkmode"> ' + set_language[language]['use_sys_darkmode'] + ' \
             <hr class="main_hr"> \
             <input ' + set_data["invert"] + ' type="checkbox" id="invert" name="invert" value="invert"> ' + set_language[language]['darkmode'] + ' \
             <hr class="main_hr"> \
+            <input ' + set_data["off_sidebar"] + ' type="checkbox" id="off_sidebar" name="off_sidebar" value="off_sidebar"> ' + set_language[language]['off_sidebar'] + ' \
+            <hr class="main_hr"> \
             <button onclick="ringo_get_post();">' + set_language[language]['save'] + '</button> \
         ';
     }