Răsfoiți Sursa

Merge pull request #1802 from openNAMU/dev

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

+ 5 - 1
route/bbs_main.py

@@ -15,8 +15,12 @@ def bbs_main():
                 curs.execute(db_change('select set_data from bbs_set where set_name = "bbs_type" and set_id = ?'), [for_a[1]])
                 curs.execute(db_change('select set_data from bbs_set where set_name = "bbs_type" and set_id = ?'), [for_a[1]])
                 db_data_2 = curs.fetchall()
                 db_data_2 = curs.fetchall()
                 bbs_type = db_data_2[0][0] if db_data_2 else 'comment'
                 bbs_type = db_data_2[0][0] if db_data_2 else 'comment'
+                
+                curs.execute(db_change('select set_data from bbs_data where set_id = ? and set_name = "date" order by set_code + 0 desc limit 1'), [for_a[1]])
+                db_data_2 = curs.fetchall()
+                last_date = ('(' + db_data_2[0][0] + ')') if db_data_2 else ''
 
 
-                data += '<li><a href="/bbs/w/' + for_a[1] + '">' + for_a[0] + ' (' + bbs_type + ')</a></li>'
+                data += '<li><a href="/bbs/w/' + for_a[1] + '">' + for_a[0] + ' (' + bbs_type + ') ' + last_date + '</a></li>'
 
 
             data += '</ul>'
             data += '</ul>'
 
 

+ 10 - 1
route/bbs_w.py

@@ -30,6 +30,11 @@ def bbs_w(bbs_num = ''):
         for for_a in db_data + [['', '', '']]:
         for for_a in db_data + [['', '', '']]:
             if temp_id != for_a[2]:
             if temp_id != for_a[2]:
                 if temp_id != '':
                 if temp_id != '':
+                    curs.execute(db_change('select set_data from bbs_data where set_name = "comment_date" and set_id = ? order by set_code + 0 desc'), [bbs_num_str + '-' + temp_dict['code']])
+                    db_data = curs.fetchall()
+                    last_comment_date = db_data[0][0] if db_data else '0'
+                    comment_count = str(len(db_data)) if db_data else '0'
+                    
                     data += '''
                     data += '''
                         <tr>
                         <tr>
                             <td>''' + temp_dict['code'] + '''</td>
                             <td>''' + temp_dict['code'] + '''</td>
@@ -37,7 +42,11 @@ def bbs_w(bbs_num = ''):
                             <td>''' + temp_dict['date'] + '''</td>
                             <td>''' + temp_dict['date'] + '''</td>
                         </tr>
                         </tr>
                         <tr>
                         <tr>
-                            <td colspan="3">''' + ('<a href="/bbs/w/' + bbs_num_str + '/' + temp_dict['code'] + '">' + temp_dict['title'] + '</a>') + '''</td>
+                            <td colspan="3">
+                                <a href="/bbs/w/''' + bbs_num_str + '/' + temp_dict['code'] + '">' + temp_dict['title'] + '''</a> 
+                                (''' + comment_count + ''') 
+                                (''' + last_comment_date + ''')
+                            </td>
                         </tr>
                         </tr>
                     '''
                     '''
 
 

+ 1 - 8
route/tool/func.py

@@ -1097,7 +1097,7 @@ def wiki_css(data):
     data += ['' for _ in range(0, 3 - len(data))]
     data += ['' for _ in range(0, 3 - len(data))]
     
     
     data_css = ''
     data_css = ''
-    data_css_ver = '173'
+    data_css_ver = '174'
     
     
     # Func JS + Defer
     # Func JS + Defer
     data_css += '<script src="/views/main_css/js/func/func.js?ver=' + data_css_ver + '"></script>'
     data_css += '<script src="/views/main_css/js/func/func.js?ver=' + data_css_ver + '"></script>'
@@ -1120,13 +1120,6 @@ def wiki_css(data):
     # Main CSS
     # Main CSS
     data_css += '<link rel="stylesheet" href="/views/main_css/css/main.css?ver=' + data_css_ver + '">'
     data_css += '<link rel="stylesheet" href="/views/main_css/css/main.css?ver=' + data_css_ver + '">'
 
 
-    # External
-    data_css += '<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.5.0/build/styles/default.min.css">'
-    data_css += '<script src="https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.5.0/build/highlight.min.js"></script>'
-    
-    data_css += '<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.4/dist/katex.min.css" integrity="sha384-vKruj+a13U8yHIkAyGgK1J3ArTLzrFGBbBc0tDp4ad/EyewESeXE/Iv67Aj8gKZ0" crossorigin="anonymous">'
-    data_css += '<script src="https://cdn.jsdelivr.net/npm/katex@0.16.4/dist/katex.min.js" integrity="sha384-PwRUT/YqbnEjkZO0zZxNqcxACrXe+j766U2amXcgMg5457rve2Y7I6ZJSm2A0mS4" crossorigin="anonymous"></script>'
-
     data = data[0:2] + ['', data_css] + data[2:]
     data = data[0:2] + ['', data_css] + data[2:]
 
 
     return data
     return data

+ 24 - 10
route/tool/func_render_namumark.py

@@ -48,6 +48,7 @@ class class_do_render_namumark:
         self.render_data = self.doc_data
         self.render_data = self.doc_data
         self.render_data = html.escape(self.render_data)
         self.render_data = html.escape(self.render_data)
         self.render_data = '<back_br>\n' + self.render_data + '\n<front_br>'
         self.render_data = '<back_br>\n' + self.render_data + '\n<front_br>'
+        self.render_data_cdn = ''
         self.render_data_js = ''
         self.render_data_js = ''
 
 
     def get_tool_lang(self, name):
     def get_tool_lang(self, name):
@@ -671,6 +672,10 @@ class class_do_render_namumark:
         def do_render_math_sub(match):
         def do_render_math_sub(match):
             data = match.group(1)
             data = match.group(1)
 
 
+            if self.data_math_count == 0:
+                self.render_data_cdn += '<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.4/dist/katex.min.css" integrity="sha384-vKruj+a13U8yHIkAyGgK1J3ArTLzrFGBbBc0tDp4ad/EyewESeXE/Iv67Aj8gKZ0" crossorigin="anonymous">'
+                self.render_data_cdn += '<script src="https://cdn.jsdelivr.net/npm/katex@0.16.4/dist/katex.min.js" integrity="sha384-PwRUT/YqbnEjkZO0zZxNqcxACrXe+j766U2amXcgMg5457rve2Y7I6ZJSm2A0mS4" crossorigin="anonymous"></script>'
+
             data = re.sub(r'\n', '', data)
             data = re.sub(r'\n', '', data)
             data = self.get_tool_data_revert(data)
             data = self.get_tool_data_revert(data)
 
 
@@ -1566,7 +1571,7 @@ class class_do_render_namumark:
                         data_name = self.get_tool_data_storage('<div id="' + self.doc_include + 'opennamu_wiki_' + str(wiki_count) + '"></div>', '', middle_data_org)
                         data_name = self.get_tool_data_storage('<div id="' + self.doc_include + 'opennamu_wiki_' + str(wiki_count) + '"></div>', '', middle_data_org)
                         wiki_count += 1
                         wiki_count += 1
                     elif middle_name == '#!html':
                     elif middle_name == '#!html':
-                        html_data = re.sub(r'^#!html ', '', middle_data)
+                        html_data = re.sub(r'^#!html( |\n)', '', middle_data)
                         if middle_slash:
                         if middle_slash:
                             html_data += '\\'
                             html_data += '\\'
 
 
@@ -1621,11 +1626,17 @@ class class_do_render_namumark:
                             wiki_data_syntax = wiki_data_syntax.group(1)
                             wiki_data_syntax = wiki_data_syntax.group(1)
                             if not wiki_data_syntax:
                             if not wiki_data_syntax:
                                 wiki_data_syntax = 'python'
                                 wiki_data_syntax = 'python'
+                            else:
+                                if wiki_data_syntax == 'asm' or wiki_data_syntax == 'assembly':
+                                    wiki_data_syntax = 'x86arm'
                         else:
                         else:
                             wiki_data_syntax = 'python'
                             wiki_data_syntax = 'python'
 
 
                         if syntax_count == 0:
                         if syntax_count == 0:
                             self.render_data_js += 'hljs.highlightAll();\n'
                             self.render_data_js += 'hljs.highlightAll();\n'
+                            self.render_data_cdn += '<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/default.min.css" integrity="sha512-hasIneQUHlh06VNBe7f6ZcHmeRTLIaQWFd43YriJ0UND19bvYRauxthDg8E4eVNPm9bRUhr5JGeqH7FRFXQu5g==" crossorigin="anonymous" referrerpolicy="no-referrer" />'
+                            self.render_data_cdn += '<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js" integrity="sha512-rdhY3cbXURo13l/WU9VlaRyaIYeJ/KBakckXIvJNAQde8DgpOmE+eZf7ha4vdqVjTtwQt69bD2wH2LXob/LB7Q==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>'
+                            self.render_data_cdn += '<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/languages/x86asm.min.js" integrity="sha512-HeAchnWb+wLjUb2njWKqEXNTDlcd1QcyOVxb+Mc9X0bWY0U5yNHiY5hTRUt/0twG8NEZn60P3jttqBvla/i2gA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>'
 
 
                         data_name = self.get_tool_data_storage('<pre id="syntax"><code class="' + wiki_data_syntax + '">' + wiki_data, '</code></pre>', middle_data_org)
                         data_name = self.get_tool_data_storage('<pre id="syntax"><code class="' + wiki_data_syntax + '">' + wiki_data, '</code></pre>', middle_data_org)
                         syntax_count += 1
                         syntax_count += 1
@@ -1635,7 +1646,7 @@ class class_do_render_namumark:
                             self.render_data = re.sub(middle_regex, lambda x : middle_data_org, self.render_data, 1)
                             self.render_data = re.sub(middle_regex, lambda x : middle_data_org, self.render_data, 1)
                             continue
                             continue
 
 
-                        wiki_data = re.sub(r'^\+[1-5] ', '', middle_data)
+                        wiki_data = re.sub(r'^\+[1-5]( |\n)', '', middle_data)
                         if middle_name == '+5':
                         if middle_name == '+5':
                             wiki_size = '200'
                             wiki_size = '200'
                         elif middle_name == '+4':
                         elif middle_name == '+4':
@@ -1655,7 +1666,7 @@ class class_do_render_namumark:
                             self.render_data = re.sub(middle_regex, lambda x : middle_data_org, self.render_data, 1)
                             self.render_data = re.sub(middle_regex, lambda x : middle_data_org, self.render_data, 1)
                             continue
                             continue
 
 
-                        wiki_data = re.sub(r'^\-[1-5] ', '', middle_data)
+                        wiki_data = re.sub(r'^\-[1-5]( |\n)', '', middle_data)
                         if middle_name == '-5':
                         if middle_name == '-5':
                             wiki_size = '50'
                             wiki_size = '50'
                         elif middle_name == '-4':
                         elif middle_name == '-4':
@@ -1695,7 +1706,7 @@ class class_do_render_namumark:
                         wiki_color = self.get_tool_css_safe(wiki_color_data)
                         wiki_color = self.get_tool_css_safe(wiki_color_data)
                         wiki_color = self.get_tool_dark_mode_split(wiki_color)
                         wiki_color = self.get_tool_dark_mode_split(wiki_color)
 
 
-                        wiki_data = re.sub(r'^@(?:((?:[0-9a-f-A-F]{3}){1,2})|(\w+))(?:,@(?:((?:[0-9a-f-A-F]{3}){1,2})|(\w+)))? ?', '', middle_data)
+                        wiki_data = re.sub(r'^@(?:((?:[0-9a-f-A-F]{3}){1,2})|(\w+))(?:,@(?:((?:[0-9a-f-A-F]{3}){1,2})|(\w+)))?( |\n)', '', middle_data)
 
 
                         middle_data_pass = wiki_data
                         middle_data_pass = wiki_data
                         data_name = self.get_tool_data_storage('<span style="background-color:' + wiki_color + '">', '</span>', middle_data_org)
                         data_name = self.get_tool_data_storage('<span style="background-color:' + wiki_color + '">', '</span>', middle_data_org)
@@ -1725,7 +1736,7 @@ class class_do_render_namumark:
                         wiki_color = self.get_tool_css_safe(wiki_color_data)
                         wiki_color = self.get_tool_css_safe(wiki_color_data)
                         wiki_color = self.get_tool_dark_mode_split(wiki_color)
                         wiki_color = self.get_tool_dark_mode_split(wiki_color)
 
 
-                        wiki_data = re.sub(r'^#(?:((?:[0-9a-f-A-F]{3}){1,2})|(\w+))(?:,#(?:((?:[0-9a-f-A-F]{3}){1,2})|(\w+)))? ?', '', middle_data)
+                        wiki_data = re.sub(r'^#(?:((?:[0-9a-f-A-F]{3}){1,2})|(\w+))(?:,#(?:((?:[0-9a-f-A-F]{3}){1,2})|(\w+)))?( |\n)', '', middle_data)
 
 
                         middle_data_pass = wiki_data
                         middle_data_pass = wiki_data
                         data_name = self.get_tool_data_storage('<span style="color:' + wiki_color + '">', '</span>', middle_data_org)
                         data_name = self.get_tool_data_storage('<span style="color:' + wiki_color + '">', '</span>', middle_data_org)
@@ -1803,15 +1814,16 @@ class class_do_render_namumark:
                 list_len = 1
                 list_len = 1
 
 
             list_style = {
             list_style = {
-                1 : 'list-style: unset;',
-                2 : 'list-style: circle;',
-                3 : 'list-style: square;',
+                1 : 'opennamu_list_1',
+                2 : 'opennamu_list_2',
+                3 : 'opennamu_list_3',
+                4 : 'opennamu_list_4'
             }
             }
-            list_style_data = 'list-style: square;'
+            list_style_data = 'opennamu_list_5'
             if list_len in list_style:
             if list_len in list_style:
                 list_style_data = list_style[list_len]
                 list_style_data = list_style[list_len]
 
 
-            return '<li style="margin-left: ' + str(list_len * 20) + 'px;' + list_style_data + '">' + list_data + '</li>'
+            return '<li style="margin-left: ' + str(list_len * 20) + 'px;" class="' + list_style_data + '">' + list_data + '</li>'
 
 
         list_regex = r'((?:\n *\* ?[^\n]*)+)\n'
         list_regex = r'((?:\n *\* ?[^\n]*)+)\n'
         list_count_max = len(re.findall(list_regex, self.render_data)) * 3
         list_count_max = len(re.findall(list_regex, self.render_data)) * 3
@@ -1955,6 +1967,8 @@ class class_do_render_namumark:
 
 
         self.render_data = re.sub(r'<a fn_target="([^"]+)"', do_render_last_footnote, self.render_data)
         self.render_data = re.sub(r'<a fn_target="([^"]+)"', do_render_last_footnote, self.render_data)
 
 
+        self.render_data = self.render_data_cdn + self.render_data
+
     def __call__(self):
     def __call__(self):
         self.do_render_remark()
         self.do_render_remark()
         self.do_render_include_default()
         self.do_render_include_default()

+ 11 - 7
route/topic_list.py

@@ -1,4 +1,5 @@
 from .tool.func import *
 from .tool.func import *
+from .api_topic import api_topic
 
 
 def topic_list(name = 'Test'):
 def topic_list(name = 'Test'):
     with get_db_connect() as conn:
     with get_db_connect() as conn:
@@ -33,14 +34,17 @@ def topic_list(name = 'Test'):
 
 
         for data in curs.fetchall():
         for data in curs.fetchall():
             curs.execute(db_change("select id from topic where code = ? order by id + 0 desc limit 1"), [data[0]])
             curs.execute(db_change("select id from topic where code = ? order by id + 0 desc limit 1"), [data[0]])
-            t_data = curs.fetchall()
+            db_data = curs.fetchall()
+            last_thread = db_data[0][0] if db_data else '1'
 
 
-            div += '''
-                <h2><a href="/thread/''' + data[0] + '">' + data[0] + '. ' + html.escape(data[1]) + '''</a></h2>
-                <div class="topic_pre" id="opennamu_thread_''' + data[0] + '''"></div>
-                <div class="topic_back_pre" id="opennamu_thread_back_''' + data[0] + '''"></div>
-                <!-- JS : opennamu_do_thread_make -->
-            '''
+            div += '<h2><a href="/thread/' + data[0] + '">' + data[0] + '. ' + html.escape(data[1]) + '</a></h2>'
+
+            first_data = json.loads(api_topic(data[0], 'normal', 1, 'render').data)
+            div += first_data['data'] if 'data' in first_data else ''
+
+            if last_thread != '1':
+                last_data = json.loads(api_topic(data[0], 'normal', int(last_thread), 'render').data)
+                div += last_data['data'] if 'data' in last_data else ''
 
 
         if div == '':
         if div == '':
             plus = re.sub(r'^<br>', '', plus)
             plus = re.sub(r'^<br>', '', plus)

+ 53 - 19
route/view_diff.py

@@ -26,32 +26,66 @@ def view_diff(name = 'Test', num_a = 1, num_b = 1):
             if first_raw_data == second_raw_data:
             if first_raw_data == second_raw_data:
                 result = ''
                 result = ''
             else:
             else:
-                i = 1
-                change_count = 0
-                diff_data = diff_match_patch().diff_prettyHtml(
-                    diff_match_patch().diff_main(first_raw_data, second_raw_data)
-                )
-                end_data = ''
+                diff_data = diff_match_patch().diff_main(first_raw_data, second_raw_data)
+                diff_data += [[0, '\n']]
+                
+                diff_data_2 = []
+                temp_list = []
+                line = 1
+                line_change = 0
+                for for_a in diff_data:
+                    line_split = re.findall(r'(.*\n)|(.+$)', for_a[1])
+                    if line_split:
+                        for for_b in line_split:
+                            if for_b[0] != '':
+                                if for_a[0] != 0:
+                                    line_change = 1
+                                
+                                temp_list += [[line, for_a[0], for_b[0].replace('\n', '')]]
 
 
-                diff_data = diff_data.replace('&para;<br>', '\n')
-                diff_data = diff_data.replace('<span>', '')
-                diff_data = diff_data.replace('</span>', '')
+                                if line_change == 1:
+                                    diff_data_2 += temp_list
+                                
+                                temp_list = []
+                                line_change = 0
+                                line += 1
+                            else:
+                                if for_a[0] != 0:
+                                    line_change = 1
 
 
-                re_data = re.findall(r'(?:(?:(?:(?!\n).)*)(?:\n)|(?:(?:(?!\n).)+)$)', diff_data)
-                for re_in_data in re_data:
-                    change_find_start = len(re.findall(r'<(?:del|ins) ', re_in_data))
-                    change_find_end = len(re.findall(r'<\/(?:del|ins)>', re_in_data))
+                                temp_list += [[line, for_a[0], for_b[1]]]
+                    else:
+                        if for_a[0] != 0:
+                            line_change = 1
 
 
-                    change_count += (change_find_start - change_find_end)
-                    if change_count != 0 or change_find_start != 0 or change_find_end != 0:
-                        end_data += str(i) + ' : ' + re_in_data
+                        temp_list += [[line, for_a[0], for_a[1]]]
 
 
-                    i += 1
+                result = '<table style="width: 100%;"><tr><td colspan="2">r' + first + ' ➤ r' + second + '</td></tr>'
+                result += '<tr><td style="width: 40px; user-select: none;">'
 
 
-                result = '<pre>' + end_data + '</pre>'
+                # 개행만 추가된 경우 조정 필요
+                
+                line = 0
+                for for_a in diff_data_2:
+                    if line == 0:
+                        line = for_a[0]
+                        result += str(line) + '</td><td>'
+                    else:
+                        if line != for_a[0]:
+                            line = for_a[0]
+                            result += '</td></tr><tr><td style="width: 40px; user-select: none;">' + str(line) + '</td><td>'
+
+                    if for_a[1] == 1:
+                        result += '<span style="background: #eaf2c2;">' + for_a[2] + '</span>'
+                    elif for_a[1] == 0:
+                        result += for_a[2]
+                    else:
+                        result += '<span style="background: #fadad7;">' + for_a[2] + '</span>'
+
+                result += '</td></tr></table>'
 
 
             return easy_minify(flask.render_template(skin_check(),
             return easy_minify(flask.render_template(skin_check(),
-                imp = [name, wiki_set(), wiki_custom(), wiki_css(['(' + load_lang('compare') + ') (r' + first + ') (r' + second + ')', 0])],
+                imp = [name, wiki_set(), wiki_custom(), wiki_css(['(' + load_lang('compare') + ')', 0])],
                 data = result,
                 data = result,
                 menu = [['history/' + url_pas(name), load_lang('return')]]
                 menu = [['history/' + url_pas(name), load_lang('return')]]
             ))
             ))

+ 1 - 1
route/view_read.py

@@ -213,7 +213,7 @@ def view_read(name = 'Test', doc_rev = '', doc_from = '', do_type = ''):
                 if flask.session and 'lastest_document' in flask.session:
                 if flask.session and 'lastest_document' in flask.session:
                     end_data = '''
                     end_data = '''
                         <div id="redirect">
                         <div id="redirect">
-                            <a href="/w_from/''' + url_pas(flask.session['lastest_document']) + '''">''' + flask.session['lastest_document'] + '''</a>  <b>''' + name + '''</b>
+                            <a href="/w_from/''' + url_pas(flask.session['lastest_document']) + '''">''' + flask.session['lastest_document'] + '''</a>  <b>''' + name + '''</b>
                         </div>
                         </div>
                         <hr class="main_hr">
                         <hr class="main_hr">
                     ''' + end_data
                     ''' + end_data

+ 1 - 1
version.json

@@ -1,6 +1,6 @@
 {
 {
     "beta" : {
     "beta" : {
-        "r_ver" : "v3.4.6-RC3-dev173",
+        "r_ver" : "v3.4.6-RC3-dev179",
         "c_ver" : "3500361",
         "c_ver" : "3500361",
         "s_ver" : "3500111"
         "s_ver" : "3500111"
     }
     }

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

@@ -205,6 +205,10 @@ pre {
     margin: 0;
     margin: 0;
 }
 }
 
 
+code, pre {
+    font-family: Consolas, Monaco, monospace;
+}
+
 #syntax {
 #syntax {
     padding: 0;
     padding: 0;
 }
 }
@@ -339,4 +343,38 @@ s:hover, strike:hover, del:hover {
 
 
 .opennamu_width_200 {
 .opennamu_width_200 {
     width: 200px;
     width: 200px;
+}
+
+.opennamu_list_1 {
+    list-style: disc;
+}
+
+.opennamu_list_2 {
+    list-style: circle;
+}
+
+.opennamu_list_3 {
+    list-style: square;
+}
+
+.opennamu_list_4 {
+    list-style: none;
+}
+
+.opennamu_list_4::before {
+    display: inline-block;
+    content: "⬦";
+    width: 1.2em;
+    margin-left: -1.2em;
+}
+
+.opennamu_list_5 {
+    list-style: none;
+}
+
+.opennamu_list_5::before {
+    display: inline-block;
+    content: "⬥";
+    width: 1.2em;
+    margin-left: -1.2em;
 }
 }

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

@@ -39,4 +39,12 @@ button.search_button#search, button.search_button#search:hover {
 
 
 footer {
 footer {
     background: #393636;
     background: #393636;
+}
+
+#nav_bar {
+    background: #322c33;
+}
+
+#nav_bar a {
+    color: white;
 }
 }

+ 48 - 0
views/ringo/css/main.css

@@ -345,4 +345,52 @@ input, textarea, button, select {
 
 
 #opennamu_save_button {
 #opennamu_save_button {
     background: antiquewhite;
     background: antiquewhite;
+}
+
+/* nav_bar */
+#nav_bar {
+    z-index: 100;
+    
+    font-size: 25px;
+    
+    position: fixed;
+    bottom: 0;
+    right: 0;
+    
+    background: #f7dfff;
+    
+    text-align: center;
+}
+
+#go_toc {
+    display: inline-block;
+
+    padding-right: 10px;
+    padding-left: 10px;
+    padding-top: 5px;
+    padding-bottom: 5px;
+    
+    width: 25px;
+}
+
+#go_top {
+    display: inline-block;
+    
+    padding-right: 10px;
+    padding-left: 10px;
+    
+    width: 25px;
+}
+
+#go_bottom {
+    display: inline-block;
+
+    padding-right: 10px;
+    padding-left: 10px;
+    
+    width: 25px;
+}
+
+#nav_bar a {
+    color: black;
 }
 }

+ 17 - 0
views/ringo/index.html

@@ -235,6 +235,23 @@
             <div id="side_content">
             <div id="side_content">
                 Loading...
                 Loading...
             </div>
             </div>
+            <div id="nav_bar">
+                <div id="go_top">
+                    <a href="#logo">
+                        <span class="iconify" data-icon="ic:baseline-arrow-upward" data-inline="true"></span>
+                    </a>
+                </div>
+                <div id="go_bottom">
+                    <a href="#b_logo">
+                        <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>
         </aside>
         <footer class="only_mobile">
         <footer class="only_mobile">
             {{imp[1][1]|safe}}
             {{imp[1][1]|safe}}

+ 1 - 1
views/ringo/info.json

@@ -1,5 +1,5 @@
 {
 {
     "name" : "Ringo",
     "name" : "Ringo",
-    "skin_ver" : "v1.0.2",
+    "skin_ver" : "v1.0.3",
     "require_ver" : "3500111"
     "require_ver" : "3500111"
 }
 }

+ 7 - 5
views/tenshi/css/main.css

@@ -288,7 +288,7 @@ pre, #toc, #cate, #redirect {
 }
 }
 */
 */
 
 
-#redirect, #cate, #toc, blockquote, button#opennamu_save_button, button#opennamu_preview_button {
+#redirect, #cate, #toc, button#opennamu_save_button, button#opennamu_preview_button {
     border: 0;
     border: 0;
     
     
     padding: 10px;
     padding: 10px;
@@ -296,6 +296,12 @@ pre, #toc, #cate, #redirect {
     box-shadow: 0 2px 4px 0 rgba(0,0,0,0.16), 0 2px 10px 0 rgba(0,0,0,0.12);
     box-shadow: 0 2px 4px 0 rgba(0,0,0,0.16), 0 2px 10px 0 rgba(0,0,0,0.12);
 }
 }
 
 
+blockquote {
+    border: 0;
+    
+    box-shadow: 0 2px 4px 0 rgba(0,0,0,0.16), 0 2px 10px 0 rgba(0,0,0,0.12);
+}
+
 button#opennamu_save_button {
 button#opennamu_save_button {
     background: #92f7f4;
     background: #92f7f4;
 }
 }
@@ -461,11 +467,7 @@ div#last_edit {
 
 
 blockquote {
 blockquote {
     background-color: #ffefff;
     background-color: #ffefff;
-
-    padding: 15px 40px 15px 15px;
     border-left: 4px solid #ffb3ff;
     border-left: 4px solid #ffb3ff;
-    
-    margin-bottom: 20px;
 }
 }
 
 
 #b_logo {
 #b_logo {

+ 1 - 1
views/tenshi/index.html

@@ -8,7 +8,7 @@
             <title>{{imp[0]}} - {{imp[1][0]}}</title>
             <title>{{imp[0]}} - {{imp[1][0]}}</title>
         {% endif %}
         {% endif %}
         {{imp[3][3]|safe}}
         {{imp[3][3]|safe}}
-        <link rel="stylesheet" href="/views/tenshi/css/main.css?ver=20">
+        <link rel="stylesheet" href="/views/tenshi/css/main.css?ver=21">
         {% if request.cookies.get('main_css_darkmode', '') == '1' %}
         {% 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/main_css/css/sub/dark.css?ver=1">
             <link rel="stylesheet" href="/views/tenshi/css/dark.css?ver=9">
             <link rel="stylesheet" href="/views/tenshi/css/dark.css?ver=9">

+ 1 - 1
views/tenshi/info.json

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