Ver Fonte

Merge pull request #1709 from openNAMU/beta

fix bug
잉여개발기 (SPDV) há 3 anos atrás
pai
commit
faaa97cceb

+ 1 - 1
route/api_recent_change.py

@@ -10,7 +10,7 @@ def api_recent_change(num = 10):
         admin = admin_check(6)
         get_title = ''
 
-        curs.execute(db_change('select id, title from rc where type = "" order by date desc'))
+        curs.execute(db_change('select id, title from rc where type = "" order by date desc limit ?'), [num])
         for i in curs.fetchall():
             if repeat_ok == '1' or i[1] != get_title:
                 get_title = i[1]

+ 1 - 1
route/api_recent_discuss.py

@@ -4,7 +4,7 @@ def api_recent_discuss(num = 10, get_type = 'normal'):
     with get_db_connect() as conn:
         curs = conn.cursor()
 
-        num = 50 if num > 50 else num
+        num = 50 if (1 if not num > 0 else num) > 50 else num
         data_list = []
 
         if get_type == 'stop':

+ 3 - 0
route/edit_move.py

@@ -78,6 +78,9 @@ def edit_move(name):
                     curs.execute(db_change("update back set type = 'no' where title = ? and not type = 'cat' and not type = 'no'"), [name])
                     curs.execute(db_change("delete from back where title = ? and not type = 'cat' and type = 'no'"), [move_title])
 
+                    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])
                     data = curs.fetchall()
 

+ 1 - 1
route/give_acl.py

@@ -186,6 +186,6 @@ def give_acl_2(name):
                 menu = [
                     ['w/' + url_pas(name), load_lang('document')], 
                     ['manager', load_lang('admin')], 
-                    ['admin_log?search=' + url_pas('acl (' + name + ')'), load_lang('acl_record')]
+                    ['list/admin/auth_use/' + url_pas('acl (' + name + ')') + '/1', load_lang('acl_record')]
                 ]
             ))

+ 1 - 1
route/list_title_index.py

@@ -55,7 +55,7 @@ def list_title_index(num = 1):
                         <li>''' + load_lang('all') + ' : ' + all_title[0][0] + '''</li>
                 '''
 
-        data += '</ul>' + next_fix('/list/document/all/', num, title_list, num)
+        data += '</ul>' + next_fix('/list/document/all/', num, title_list)
         sub = ' (' + str(num) + ')'
 
         return easy_minify(flask.render_template(skin_check(),

+ 4 - 0
route/tool/func.py

@@ -1124,6 +1124,8 @@ def wiki_css(data):
 
 def cut_100(data):
     # without_DB
+    data = re.sub(r'.*<div class="opennamu_render_complete">', '', data, 1)
+
     data = data.replace('<br>', ' ')
     data = data.replace('\r', '') 
     data = data.replace('\n', ' ')
@@ -1372,6 +1374,8 @@ def render_set(doc_name = '', doc_data = '', data_type = 'view', data_in = '', d
 
                     for_a += 1
 
+            get_class_render[0] = '<div class="opennamu_render_complete">' + get_class_render[0] + '</div>'
+
             curs.execute(db_change("select data from other where name = 'namumark_compatible'"))
             db_data = curs.fetchall()
             if db_data and db_data[0][0] != '':

+ 0 - 2
route/tool/func_render_namumark.py

@@ -1898,8 +1898,6 @@ class class_do_render_namumark:
 
         self.render_data = re.sub(r'<a fn_target="([^"]+)"', do_render_last_footnote, self.render_data)
 
-        self.render_data = '<div class="opennamu_render_complete">' + self.render_data + '</div>'
-
     def __call__(self):
         self.do_render_remark()
         self.do_render_include_default()

+ 1 - 1
version.json

@@ -1,6 +1,6 @@
 {
     "beta" : {
-        "r_ver" : "v3.4.6-RC3-dev140",
+        "r_ver" : "v3.4.6-RC3-dev143",
         "c_ver" : "3500360",
         "s_ver" : "3500111"
     }

+ 0 - 3
views/main_css/js/func/render_simple.js

@@ -1,3 +0,0 @@
-let opennamu_do_render_simple_url = [
-    '/change/skin_set/main'
-];

+ 42 - 0
views/ringo/css/dark.css

@@ -0,0 +1,42 @@
+html, section {
+    background: black;
+    color: white;
+}
+
+aside {
+    background: #2a2526;
+}
+
+header#main {
+    background: #26373f;
+}
+
+header#main a, header#main a:hover {
+    background: #26373f;
+    color: white;
+}
+
+.top_cel_in {
+    background: #3e3741;
+}
+
+header#section {
+    background: #2c3439;
+}
+
+input, textarea, button, select, aside .side_button, .menu_item_link, input:hover, aside .side_button:hover, .menu_item_link:hover, #opennamu_save_button, #main_data button:hover {
+    background: black;
+    color: white;
+}
+
+button.search_button#goto, button.search_button#goto:hover {
+    background: #374433;
+}
+
+button.search_button#search, button.search_button#search:hover {
+    background: #39352e;
+}
+
+footer {
+    background: #393636;
+}

+ 10 - 2
views/ringo/css/main.css

@@ -3,7 +3,7 @@ html {
 }
 
 body {
-    font-family: "나눔바른고딕", "나눔고딕", "맑은고딕", "Sans-Serif";
+    font-family: 'SUIT', sans-serif;
     font-size: 14px;
 
     margin: 0;
@@ -15,6 +15,14 @@ h1, h2, h3, h4, h5, h6 {
     padding-bottom: 10px;
 }
 
+select {
+    font-family: 'SUIT', sans-serif;
+}
+
+textarea {
+    font-family: 'SUIT', monospace;
+}
+
 h1.blank, h2.blank, h3.blank, h4.blank, h5.blank, h6.blank {
     border-bottom: none;
 
@@ -194,7 +202,7 @@ aside {
     
     background-color: #ffeaee;
     
-    height: calc(100vh - (50px + 20px));
+    min-height: calc(100vh - (50px + 20px));
 }
 
 aside button {

+ 7 - 0
views/ringo/index.html

@@ -8,9 +8,16 @@
             <title>{{imp[0]}} - {{imp[1][0]}}</title>
         {% endif %}
         {{imp[3][3]|safe}}
+        <link href="https://cdn.jsdelivr.net/gh/sunn-us/SUIT/fonts/static/woff2/SUIT.css" rel="stylesheet">
         <script src="https://code.iconify.design/1/1.0.3/iconify.min.js"></script>
         <script src="/views/ringo/js/main.js?ver=2"></script>
+        <script src="/views/ringo/js/sidebar.js?ver=1"></script>
+        <script src="/views/ringo/js/skin_set.js?ver=1"></script>
         <link rel="stylesheet" href="/views/ringo/css/main.css?ver=2">
+        {% if request.cookies.get('main_css_darkmode', '') == '1' %}
+            <link rel="stylesheet" href="/views/main_css/css/sub/dark.css?ver=1">
+            <link rel="stylesheet" href="/views/ringo/css/dark.css?ver=1">
+        {% endif %}
         <link rel="shortcut icon" href="/views/main_css/file/favicon.ico?ver=1">
         {{imp[1][5]|safe}}
         {{imp[2][3]|safe}}

+ 2 - 2
views/ringo/info.json

@@ -1,5 +1,5 @@
 {
     "name" : "Ringo",
-    "skin_ver" : "v0.1.2",
-    "require_ver" : "3500110"
+    "skin_ver" : "v1.0.1",
+    "require_ver" : "3500111"
 }

+ 95 - 0
views/ringo/js/sidebar.js

@@ -0,0 +1,95 @@
+// func
+function ringo_do_xss_encode(data) {
+    data = data.replace(/'/g, '&#x27;');
+    data = data.replace(/"/g, '&quot;');
+    data = data.replace(/</g, '&lt;');
+    data = data.replace(/</g, '&gt;');
+
+    return data;
+}
+
+function ringo_do_url_encode(data) {
+    return encodeURIComponent(data);
+}
+
+// event
+function ringo_do_side_button_1() {
+    fetch("/api/recent_change/10").then(function(res) {
+        return res.json();
+    }).then(function(text) {
+        if(temp_save[0] === '') {
+            let data = '';
+            for(let for_a = 0; for_a < text.length; for_a++) {
+                data += '<a href="/w/' + ringo_do_url_encode(text[for_a][1]) + '">' + ringo_do_xss_encode(text[for_a][1]) + '</a><br>';
+                data += text[for_a][2] + ' | ' + ringo_do_xss_encode(text[for_a][3]) + '<br>';
+            }
+
+            document.getElementById('side_content').innerHTML = data;
+            temp_save[0] = data;
+        } else {
+            document.getElementById('side_content').innerHTML = temp_save[0];
+        }
+    }).catch(function(error) {
+        document.getElementById('side_content').innerHTML = 'Error';
+    });
+}
+
+function ringo_do_side_button_2() {
+    fetch("/api/recent_discuss/10").then(function(res) {
+        return res.json();
+    }).then(function(text) {
+        if(temp_save[1] === '') {
+            let data = '';
+            for(let for_a = 0; for_a < text.length; for_a++) {
+                data += '<a href="/w/' + ringo_do_url_encode(text[for_a][3]) + '">' + ringo_do_xss_encode(text[for_a][1]) + '</a><br>';
+                data += text[for_a][2] + '<br>';
+            }
+
+            document.getElementById('side_content').innerHTML = data;
+            temp_save[1] = data;
+        } else {
+            document.getElementById('side_content').innerHTML = temp_save[1];
+        }
+    }).catch(function(error) {
+        document.getElementById('side_content').innerHTML = 'Error';
+    });
+}
+
+function ringo_do_side_button_3() {
+    if(temp_save[2] === '') {
+        if(document.getElementsByClassName('opennamu_TOC').length > 0) {
+            temp_save[2] = document.getElementsByClassName('opennamu_TOC')[0].innerHTML;
+            document.getElementById('side_content').innerHTML = temp_save[2];
+        }
+    } else {
+        document.getElementById('side_content').innerHTML = temp_save[2];
+    }
+}
+
+function ringo_do_side_button_4() {
+    if(temp_save[3] === '') {
+        if(document.getElementsByClassName('opennamu_footnote').length > 0) {
+            let data = '';
+            for(let for_a = 0; for_a < document.getElementsByClassName('opennamu_footnote').length; for_a++) {
+                data += document.getElementsByClassName('opennamu_footnote')[for_a].innerHTML + '<br>';
+            }
+
+            document.getElementById('side_content').innerHTML = data;
+            temp_save[3] = data;
+        }
+    } else {
+        document.getElementById('side_content').innerHTML = temp_save[3];
+    }
+}
+
+// init
+let temp_save = ['', '', '', ''];
+
+window.addEventListener('DOMContentLoaded', function() {
+    document.getElementById("side_button_1").addEventListener("click", ringo_do_side_button_1);
+    document.getElementById("side_button_2").addEventListener("click", ringo_do_side_button_2);
+    document.getElementById("side_button_3").addEventListener("click", ringo_do_side_button_3);
+    document.getElementById("side_button_4").addEventListener("click", ringo_do_side_button_4);
+
+    ringo_do_side_button_1();
+});

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

@@ -0,0 +1,57 @@
+function ringo_do_regex_data(data) {
+    return new RegExp('(?:^|; )' + data + '=([^;]*)');
+}
+
+function ringo_get_post() {
+    check = document.getElementById('invert');
+    if(check.checked === true) {
+        document.cookie = 'main_css_darkmode=1; path=/';
+    } else {
+        document.cookie = 'main_css_darkmode=0; path=/';
+    }
+
+    history.go(0);
+}
+
+function ringo_do_skin_set() {
+    let cookies = document.cookie;
+    
+    if(window.location.pathname === '/change/skin_set') {
+        let set_language = {
+            "en-US" : {
+                "save" : "Save",
+                "darkmode" : "Darkmode"
+            }, "ko-KR" : {
+                "save" : "저장",
+                "darkmode" : "다크모드"
+            }
+        }
+
+        let language = cookies.match(ringo_do_regex_data('language'))[1];
+        let user_language = cookies.match(ringo_do_regex_data('user_language'))[1];
+        if(user_language in set_language) {
+            language = user_language;
+        }
+
+        if(!language in set_language) {
+            language = "en-US";
+        }
+
+        let set_data = {};
+
+        if(
+            cookies.match(ringo_do_regex_data('main_css_darkmode')) &&
+            cookies.match(ringo_do_regex_data('main_css_darkmode'))[1] === '1'
+        ) {
+            set_data["invert"] = "checked";
+        }
+
+        document.getElementById("main_skin_set").innerHTML = ' \
+            <input ' + set_data["invert"] + ' type="checkbox" id="invert" name="invert" value="invert"> ' + set_language[language]['darkmode'] + ' \
+            <hr class="main_hr"> \
+            <button onclick="ringo_get_post();">' + set_language[language]['save'] + '</button> \
+        ';
+    }
+}
+
+window.addEventListener('DOMContentLoaded', ringo_do_skin_set);

+ 26 - 8
views/tenshi/index.html

@@ -10,10 +10,11 @@
         {{imp[3][3]|safe}}
         <link rel="stylesheet" href="/views/tenshi/css/main.css?ver=20">
         {% if request.cookies.get('main_css_darkmode', '') == '1' %}
+            <link rel="stylesheet" href="/views/main_css/css/sub/dark.css?ver=1">
             <link rel="stylesheet" href="/views/tenshi/css/dark.css?ver=9">
         {% endif %}
-        <script src="/views/tenshi/js/skin_set.js?ver=9"></script>
-        <script src="/views/tenshi/js/main.js?ver=3"></script>
+        <script src="/views/tenshi/js/skin_set.js?ver=10"></script>
+        <script src="/views/tenshi/js/main.js?ver=4"></script>
         <script src="https://code.iconify.design/1/1.0.3/iconify.min.js"></script>
         <link rel="shortcut icon" href="/views/main_css/file/favicon.ico?ver=1">
         {{imp[1][5]|safe}}
@@ -39,12 +40,12 @@
                     <div id="top_tool">
                         <div id="top_tool_group">
                             <div id="top_tool_cel">
-                                <a href="javascript:opening('recent_cel');" class="top_in_cel">
+                                <a href="javascript:ringo_opening('recent_cel_in');" class="top_in_cel">
                                     <span class="iconify" data-icon="ic:baseline-access-time" data-inline="true"></span>
                                     <span class="not_mobile">{{'list'|load_lang}}</span>
                                     <span class="iconify" data-icon="ic:baseline-arrow-drop-down" data-inline="true"></span>
                                 </a>
-                                <div id="recent_cel" class="cel_in_cel" style="display: none;">
+                                <div id="recent_cel_in" class="cel_in_cel" style="display: none;">
                                     <a href="/recent_changes">
                                         <span class="iconify" data-icon="ic:baseline-autorenew" data-inline="true"></span>
                                         {{'recent_change'|load_lang}}
@@ -63,12 +64,12 @@
                             </div>
                             <div id="top_tool_cel">
-                                <a href="javascript:opening('other_cel');" class="top_in_cel">
+                                <a href="javascript:ringo_opening('other_cel_in');" class="top_in_cel">
                                     <span class="iconify" data-icon="ic:baseline-archive" data-inline="true"></span>
                                     <span class="not_mobile">{{'tool'|load_lang}}</span>
                                     <span class="iconify" data-icon="ic:baseline-arrow-drop-down" data-inline="true"></span>
                                 </a>
-                                <div id="other_cel" class="cel_in_cel" style="display: none;">
+                                <div id="other_cel_in" class="cel_in_cel" style="display: none;">
                                     <a href="/random">
                                         <span class="iconify" data-icon="ic:baseline-shuffle" data-inline="true"></span>
                                         {{'random'|load_lang}}
@@ -91,12 +92,30 @@
                                         {{'upload'|load_lang}}
                                     </a>
                                     <hr>
-                                    <a href="/skin_set">
+                                    <a href="/change/skin_set">
                                         <span class="iconify" data-icon="ic:baseline-settings" data-inline="true"></span>
                                         {{'skin_setting'|load_lang}}
                                     </a>
                                 </div>
                             </div>
+                            {% if imp[1][6] != '' %}
+                                 
+                                <div id="top_tool_cel">
+                                    <a href="javascript:ringo_opening('add_cel_in');" class="top_in_cel">
+                                        <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 id="add_cel_in" class="cel_in_cel" 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 %}
                             <div id="top_tool_cel" id="top_in_user">
                                 <a href="/user" class="top_in_cel">
@@ -220,6 +239,5 @@
                 </a>
             </div>
         </div>
-        <script>window.addEventListener('DOMContentLoaded', skin_set);</script>
     </body>
 </html>

+ 1 - 1
views/tenshi/info.json

@@ -1,5 +1,5 @@
 {
     "name" : "Tenshi",
-    "skin_ver" : "v2.0.3",
+    "skin_ver" : "v2.0.4",
     "require_ver" : "3500110"
 }

+ 40 - 20
views/tenshi/js/main.js

@@ -1,29 +1,49 @@
-var save_data = '';
-var open = 0;
-
-function opening(data) {
-    save_data = data;
-    if(data === 'recent_cel') {
-        var element = document.getElementById(data);
-        var element_2 = document.getElementById('other_cel');
-    } else {
-        var element = document.getElementById(data);
-        var element_2 = document.getElementById('recent_cel');
+let ringo_save_data = '';
+let ringo_open = 0;
+let ringo_menu_list = [
+    'recent_cel',
+    'other_cel',
+    'add_cel'
+];
+
+function ringo_opening(data) {
+    let element = [data];
+    
+    for(for_a in ringo_menu_list) {
+        if(ringo_menu_list[for_a] + '_in' !== data) {
+            element.push(ringo_menu_list[for_a] + '_in');
+        }
     }
 
-    if(element.style.display == 'none') {
-        element.style.display = 'block';
-        element_2.style.display = 'none';
+    if((document.getElementById(element[0]).style.display == 'none' && ringo_open == 0) || ringo_save_data !== data) {
+        document.getElementById(element[0]).style.display = 'block';
+
+        for(for_a in element) {
+            if(for_a !== '0') { 
+                document.getElementById(element[for_a]).style.display = 'none';
+            }
+        }
+
+        ringo_open = 1;
+        ringo_save_data = data;
+
+        setTimeout(function() { ringo_open = 2; }, 100);
     } else {
-        element.style.display = 'none';
-    }
+        document.getElementById(element[0]).style.display = 'none';
 
-    open = 1;
-    setTimeout(function() { open = 0; }, 100);
+        ringo_open = 0
+    }
 }
 
 document.onclick = function(event) {
-    if(save_data !== '' && open == 0) {
-        document.getElementById(save_data).style.display = 'none';
+    let cel_list = [];
+    for(for_a in ringo_menu_list) {
+        cel_list.push(document.getElementById(ringo_menu_list[for_a]));
+    }
+
+    if(ringo_save_data !== '' && ringo_open == 2) {
+        document.getElementById(ringo_save_data).style.display = 'none';
+
+        setTimeout(function() { ringo_open = 0; }, 100);
     }
 }

+ 17 - 15
views/tenshi/js/skin_set.js

@@ -1,23 +1,23 @@
-function regex_data(data) {
+function ringo_do_regex_data(data) {
     return new RegExp('(?:^|; )' + data + '=([^;]*)');
 }
 
-function get_post() {
+function ringo_get_post() {
     check = document.getElementById('invert');
     if(check.checked === true) {
-        document.cookie = 'main_css_darkmode=1;';
+        document.cookie = 'main_css_darkmode=1; path=/';
     } else {
-        document.cookie = 'main_css_darkmode=0;';
+        document.cookie = 'main_css_darkmode=0; path=/';
     }
 
     history.go(0);
 }
 
-function skin_set() {
+function ringo_do_skin_set() {
     let cookies = document.cookie;
-
-    if(window.location.pathname === '/skin_set') {
-        var set_language = {
+    
+    if(window.location.pathname === '/change/skin_set') {
+        let set_language = {
             "en-US" : {
                 "save" : "Save",
                 "darkmode" : "Darkmode"
@@ -27,8 +27,8 @@ function skin_set() {
             }
         }
 
-        var language = cookies.match(regex_data('language'))[1];
-        var user_language = cookies.match(regex_data('user_language'))[1];
+        let language = cookies.match(ringo_do_regex_data('language'))[1];
+        let user_language = cookies.match(ringo_do_regex_data('user_language'))[1];
         if(user_language in set_language) {
             language = user_language;
         }
@@ -37,11 +37,11 @@ function skin_set() {
             language = "en-US";
         }
 
-        var set_data = {};
+        let set_data = {};
 
         if(
-            cookies.match(regex_data('main_css_darkmode')) &&
-            cookies.match(regex_data('main_css_darkmode'))[1] === '1'
+            cookies.match(ringo_do_regex_data('main_css_darkmode')) &&
+            cookies.match(ringo_do_regex_data('main_css_darkmode'))[1] === '1'
         ) {
             set_data["invert"] = "checked";
         }
@@ -49,7 +49,9 @@ function skin_set() {
         document.getElementById("main_skin_set").innerHTML = ' \
             <input ' + set_data["invert"] + ' type="checkbox" id="invert" name="invert" value="invert"> ' + set_language[language]['darkmode'] + ' \
             <hr class="main_hr"> \
-            <button onclick="get_post();">' + set_language[language]['save'] + '</button> \
+            <button onclick="ringo_get_post();">' + set_language[language]['save'] + '</button> \
         ';
     }
-}
+}
+
+window.addEventListener('DOMContentLoaded', ringo_do_skin_set);