Browse Source

Merge pull request #2006 from openNAMU/dev

Dev
잉여개발기 2 năm trước cách đây
mục cha
commit
3631953f79

+ 3 - 0
app.py

@@ -406,6 +406,9 @@ app.route('/record/<int:num>/<set_type>/<name>', defaults = { 'tool' : 'record'
 app.route('/record/reset/<name>', methods = ['POST', 'GET'])(recent_record_reset)
 app.route('/record/reset/<name>', methods = ['POST', 'GET'])(recent_record_reset)
 app.route('/record/topic/<name>')(recent_record_topic)
 app.route('/record/topic/<name>')(recent_record_topic)
 
 
+app.route('/record/bbs/<name>', defaults = { 'tool' : 'record' })(bbs_w)
+app.route('/record/bbs_comment/<name>', defaults = { 'tool' : 'comment_record' })(bbs_w)
+
 app.route('/history/<everything:name>', defaults = { 'tool' : 'history' }, methods = ['POST', 'GET'])(recent_change)
 app.route('/history/<everything:name>', defaults = { 'tool' : 'history' }, methods = ['POST', 'GET'])(recent_change)
 app.route('/history_page/<int:num>/<set_type>/<everything:name>', defaults = { 'tool' : 'history' }, methods = ['POST', 'GET'])(recent_change)
 app.route('/history_page/<int:num>/<set_type>/<everything:name>', defaults = { 'tool' : 'history' }, methods = ['POST', 'GET'])(recent_change)
 
 

+ 1 - 1
route/api_topic.py

@@ -1,7 +1,7 @@
 from .tool.func import *
 from .tool.func import *
 
 
 def api_topic_thread_make(user_id, date, data, code, color = '', blind = '', add_style = ''):
 def api_topic_thread_make(user_id, date, data, code, color = '', blind = '', add_style = ''):
-    if blind != '':
+    if blind == 'O':
         if data == '':
         if data == '':
             color_b = 'opennamu_comment_blind'
             color_b = 'opennamu_comment_blind'
         else:
         else:

+ 101 - 34
route/bbs_w.py

@@ -1,11 +1,12 @@
 from .tool.func import *
 from .tool.func import *
 
 
-def bbs_w(bbs_num = '', tool = 'bbs'):
+def bbs_w(bbs_num = '', tool = 'bbs', page = 1, name = ''):
     with get_db_connect() as conn:
     with get_db_connect() as conn:
         curs = conn.cursor()
         curs = conn.cursor()
         
         
         data = ''
         data = ''
         title_name = ''
         title_name = ''
+        sub = ''
         bbs_name_dict = {}
         bbs_name_dict = {}
 
 
         admin_auth = admin_check()
         admin_auth = admin_check()
@@ -20,7 +21,24 @@ def bbs_w(bbs_num = '', tool = 'bbs'):
             bbs_num_str = str(bbs_num)
             bbs_num_str = str(bbs_num)
 
 
             title_name = bbs_name
             title_name = bbs_name
+            sub = '(' + load_lang('bbs') + ')'
             menu = [['bbs/main', load_lang('return')], ['bbs/edit/' + bbs_num_str, load_lang('add')], ['bbs/set/' + bbs_num_str, load_lang('bbs_set')]]
             menu = [['bbs/main', load_lang('return')], ['bbs/edit/' + bbs_num_str, load_lang('add')], ['bbs/set/' + bbs_num_str, load_lang('bbs_set')]]
+        elif tool == 'record':
+            curs.execute(db_change('select set_data, set_id from bbs_set where set_name = "bbs_name"'))
+            db_data = curs.fetchall()
+            bbs_name_dict = { for_a[1] : for_a[0] for for_a in db_data } if db_data else {}
+            
+            title_name = name
+            sub = '(' + load_lang('bbs_record') + ')'
+            menu = [['user/' + url_pas(name), load_lang('user_tool')]]
+        elif tool == 'comment_record':
+            curs.execute(db_change('select set_data, set_id from bbs_set where set_name = "bbs_name"'))
+            db_data = curs.fetchall()
+            bbs_name_dict = { for_a[1] : for_a[0] for for_a in db_data } if db_data else {}
+            
+            title_name = name
+            sub = '(' + load_lang('bbs_comment_record') + ')'
+            menu = [['user/' + url_pas(name), load_lang('user_tool')]]
         else:
         else:
             curs.execute(db_change('select set_data, set_id from bbs_set where set_name = "bbs_name"'))
             curs.execute(db_change('select set_data, set_id from bbs_set where set_name = "bbs_name"'))
             db_data = curs.fetchall()
             db_data = curs.fetchall()
@@ -51,16 +69,26 @@ def bbs_w(bbs_num = '', tool = 'bbs'):
             data += '<hr class="main_hr">'
             data += '<hr class="main_hr">'
 
 
             title_name = load_lang('bbs_main')
             title_name = load_lang('bbs_main')
-            menu = [['other', load_lang('return')]] + ([['bbs/make', load_lang('add')]] if admin_auth == 1 else [])
+            menu = [['other', load_lang('other_tool')]] + ([['bbs/make', load_lang('add')]] if admin_auth == 1 else [])
 
 
-        data += '''
-            <table id="main_table_set">
-                <tr id="main_table_top_tr">
-                    <td id="main_table_width">''' + load_lang('editor') + '''</td>
-                    <td id="main_table_width">''' + load_lang('time') + '''</td>
-                    <td id="main_table_width">''' + load_lang('last_comment_time') + '''</td>
-                </tr>
-        '''
+        if tool == 'comment_record':
+            data += '''
+                <table id="main_table_set">
+                    <tr id="main_table_top_tr">
+                        <td id="main_table_width">''' + load_lang('editor') + '''</td>
+                        <td id="main_table_width">''' + load_lang('time') + '''</td>
+                        <td id="main_table_width">''' + load_lang('comment') + '''</td>
+                    </tr>
+            '''
+        else:
+            data += '''
+                <table id="main_table_set">
+                    <tr id="main_table_top_tr">
+                        <td id="main_table_width">''' + load_lang('editor') + '''</td>
+                        <td id="main_table_width">''' + load_lang('time') + '''</td>
+                        <td id="main_table_width">''' + load_lang('last_comment_time') + '''</td>
+                    </tr>
+            '''
 
 
         if tool == 'bbs':
         if tool == 'bbs':
             curs.execute(db_change('select set_code, set_id, set_name from bbs_data where set_name = "pinned" and set_id like ? order by set_data desc'), [bbs_num])
             curs.execute(db_change('select set_code, set_id, set_name from bbs_data where set_name = "pinned" and set_id like ? order by set_data desc'), [bbs_num])
@@ -70,6 +98,12 @@ def bbs_w(bbs_num = '', tool = 'bbs'):
             curs.execute(db_change('select set_code, set_id from bbs_data where set_name = "title" and set_id like ? order by set_code + 0 desc'), [bbs_num])
             curs.execute(db_change('select set_code, set_id from bbs_data where set_name = "title" and set_id like ? order by set_code + 0 desc'), [bbs_num])
             db_data_2 = curs.fetchall()
             db_data_2 = curs.fetchall()
             db_data += list(db_data_2) if db_data_2 else []
             db_data += list(db_data_2) if db_data_2 else []
+        elif tool == 'record':
+            curs.execute(db_change('select set_code, set_id, set_data from bbs_data where set_name = "date" and (set_code, set_id) in (select set_code, set_id from bbs_data where set_name = "user_id" and set_data = ?) order by set_data desc limit 50'), [name])
+            db_data = curs.fetchall()
+        elif tool == 'comment_record':
+            curs.execute(db_change('select set_code, set_id, set_data from bbs_data where set_name = "comment_date" and (set_code, set_id) in (select set_code, set_id from bbs_data where set_name = "comment_user_id" and set_data = ?) order by set_data desc limit 50'), [name])
+            db_data = curs.fetchall()
         else:
         else:
             curs.execute(db_change('select set_code, set_id, set_data from bbs_data where set_name = "date" order by set_data desc limit 50'))
             curs.execute(db_change('select set_code, set_id, set_data from bbs_data where set_name = "date" order by set_data desc limit 50'))
             db_data = curs.fetchall()
             db_data = curs.fetchall()
@@ -81,16 +115,11 @@ def bbs_w(bbs_num = '', tool = 'bbs'):
 
 
             temp_dict = { for_a[0] : for_a[1] for for_a in db_data }
             temp_dict = { for_a[0] : for_a[1] for for_a in db_data }
 
 
-            curs.execute(db_change('select count(*) from bbs_data where set_name = "comment_date" and (set_id = ? or set_id like ?) order by set_code + 0 desc'), [for_b[1] + '-' + for_b[0], for_b[1] + '-' + for_b[0] + '-%'])
-            db_data = curs.fetchall()
-            comment_count = str(db_data[0][0]) if db_data else '0'
-
-            curs.execute(db_change('select set_data from bbs_data where set_name = "comment_date" and (set_id = ? or set_id like ?) order by set_data desc limit 1'), [for_b[1] + '-' + for_b[0], for_b[1] + '-' + for_b[0] + '-%'])
-            db_data = curs.fetchall()
-            last_comment_date = db_data[0][0] if db_data else '0'
-
             bbs_name_select = ''
             bbs_name_select = ''
-            if tool != 'bbs':
+            bbs_split = for_b[1].split('-')
+            if tool == 'comment_record':
+                bbs_name_select = '(' + bbs_name_dict[bbs_split[0]] + ')'
+            elif tool != 'bbs':
                 bbs_name_select = '(' + bbs_name_dict[for_b[1]] + ')'
                 bbs_name_select = '(' + bbs_name_dict[for_b[1]] + ')'
 
 
             if tool == 'bbs':
             if tool == 'bbs':
@@ -98,25 +127,63 @@ def bbs_w(bbs_num = '', tool = 'bbs'):
             else:
             else:
                 notice = 0
                 notice = 0
 
 
-            data += '''
-                <tr class="''' + ('opennamu_comment_color_red' if notice == 1 else '') + '''">
-                    <td>''' + ip_pas(temp_dict['user_id']) + '''</td>
-                    <td>''' + temp_dict['date'] + '''</td>
-                    <td>''' + last_comment_date + '''</td>
-                </tr>
-                <tr>
-                    <td colspan="3">
-                        <a href="/bbs/w/''' + for_b[1] + '/' + for_b[0] + '">' + html.escape(temp_dict['title']) + '''</a> 
-                        (''' + comment_count + ''') 
-                        ''' + bbs_name_select + '''
-                    </td>
-                </tr>
-            '''
+            if tool == 'comment_record':
+                print(for_b, bbs_split)
+                curs.execute(db_change('select set_name, set_data, set_code, set_id from bbs_data where set_name = "title" and set_code = ? and set_id = ?'), [bbs_split[1], bbs_split[0]])
+                db_data = curs.fetchall()
+                db_data = list(db_data) if db_data else []
+                print(db_data)
+                for for_a in db_data:
+                    temp_dict[for_a[0]] = for_a[1]
+            
+                comment_link = ''
+                if len(bbs_split) > 2:
+                    comment_link = '-'.join(bbs_split[2:])
+                    
+                comment_link += ('-' + for_b[0] if comment_link != '' else for_b[0])
+                    
+                
+                data += '''
+                    <tr>
+                        <td>''' + ip_pas(temp_dict['comment_user_id']) + '''</td>
+                        <td>''' + temp_dict['comment_date'] + '''</td>
+                        <td>''' + ('#' + comment_link) + '''</td>
+                    </tr>
+                    <tr>
+                        <td colspan="3">
+                            <a href="/bbs/w/''' + bbs_split[0] + '/' + bbs_split[1] + '#' + comment_link + '">' + html.escape(temp_dict['title']) + '''</a> 
+                            ''' + bbs_name_select + '''
+                        </td>
+                    </tr>
+                '''
+            else:
+                curs.execute(db_change('select count(*) from bbs_data where set_name = "comment_date" and (set_id = ? or set_id like ?) order by set_code + 0 desc'), [for_b[1] + '-' + for_b[0], for_b[1] + '-' + for_b[0] + '-%'])
+                db_data = curs.fetchall()
+                comment_count = str(db_data[0][0]) if db_data else '0'
+
+                curs.execute(db_change('select set_data from bbs_data where set_name = "comment_date" and (set_id = ? or set_id like ?) order by set_data desc limit 1'), [for_b[1] + '-' + for_b[0], for_b[1] + '-' + for_b[0] + '-%'])
+                db_data = curs.fetchall()
+                last_comment_date = db_data[0][0] if db_data else '0'
+            
+                data += '''
+                    <tr class="''' + ('opennamu_comment_color_red' if notice == 1 else '') + '''">
+                        <td>''' + ip_pas(temp_dict['user_id']) + '''</td>
+                        <td>''' + temp_dict['date'] + '''</td>
+                        <td>''' + last_comment_date + '''</td>
+                    </tr>
+                    <tr>
+                        <td colspan="3">
+                            <a href="/bbs/w/''' + for_b[1] + '/' + for_b[0] + '">' + html.escape(temp_dict['title']) + '''</a> 
+                            (''' + comment_count + ''') 
+                            ''' + bbs_name_select + '''
+                        </td>
+                    </tr>
+                '''
                 
                 
         data += '</table>'
         data += '</table>'
 
 
         return easy_minify(flask.render_template(skin_check(),
         return easy_minify(flask.render_template(skin_check(),
-            imp = [title_name, wiki_set(), wiki_custom(), wiki_css(['(' + load_lang('bbs') + ')', 0])],
+            imp = [title_name, wiki_set(), wiki_custom(), wiki_css([sub, 0])],
             data = data,
             data = data,
             menu = menu
             menu = menu
         ))
         ))

+ 33 - 11
route/main_setting_skin_set.py

@@ -15,15 +15,9 @@ def main_setting_skin_set():
             for for_b in set_list:
             for for_b in set_list:
                 curs.execute(db_change('select data from other where name = ?'), [for_b])
                 curs.execute(db_change('select data from other where name = ?'), [for_b])
                 if curs.fetchall():
                 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
-                    ])
+                    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:
                 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])
-                    ])
+                    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()
             conn.commit()
 
 
@@ -45,82 +39,108 @@ def main_setting_skin_set():
                     else:
                     else:
                         set_data[for_b] += '<option value="' + for_a[0] + '">' + for_a[1] + '</option>'
                         set_data[for_b] += '<option value="' + for_a[0] + '">' + for_a[1] + '</option>'
 
 
+            set_data_main = { for_b : '' for for_b in set_list }
+
             return easy_minify(flask.render_template(skin_check(),
             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])],
                 imp = [load_lang('main_skin_set_default'), wiki_set(), wiki_custom(), wiki_css(['(' + load_lang('beta') + ')', 0])],
                 data = render_simple_set('''
                 data = render_simple_set('''
                     <form method="post">
                     <form method="post">
                         <h2>''' + load_lang("render") + '''</h2>
                         <h2>''' + load_lang("render") + '''</h2>
                         <h3>''' + load_lang("strike") + '''</h3>
                         <h3>''' + load_lang("strike") + '''</h3>
+                        ''' + set_data_main["main_css_strike"] + '''
                         <select name="main_css_strike">
                         <select name="main_css_strike">
                             ''' + set_data["main_css_strike"] + '''
                             ''' + set_data["main_css_strike"] + '''
                         </select>
                         </select>
                         <h3>''' + load_lang("bold") + '''</h3>
                         <h3>''' + load_lang("bold") + '''</h3>
+                        ''' + set_data_main["main_css_bold"] + '''
                         <select name="main_css_bold">
                         <select name="main_css_bold">
                             ''' + set_data["main_css_bold"] + '''
                             ''' + set_data["main_css_bold"] + '''
                         </select>
                         </select>
                         <h3>''' + load_lang("category") + '''</h3>
                         <h3>''' + load_lang("category") + '''</h3>
                         <h4>''' + load_lang("position") + '''</h4>
                         <h4>''' + load_lang("position") + '''</h4>
+                        ''' + set_data_main["main_css_category_set"] + '''
                         <select name="main_css_category_set">
                         <select name="main_css_category_set">
                             ''' + set_data["main_css_category_set"] + '''
                             ''' + set_data["main_css_category_set"] + '''
                         </select>
                         </select>
                         <h4>''' + load_lang("category_change_title") + '''</h4>
                         <h4>''' + load_lang("category_change_title") + '''</h4>
+                        ''' + set_data_main["main_css_category_change_title"] + '''
                         <select name="main_css_category_change_title">
                         <select name="main_css_category_change_title">
                             ''' + set_data["main_css_category_change_title"] + '''
                             ''' + set_data["main_css_category_change_title"] + '''
                         </select>
                         </select>
                         <h3>''' + load_lang("footnote") + ''' (''' + load_lang('beta') + ''')</h3>
                         <h3>''' + load_lang("footnote") + ''' (''' + load_lang('beta') + ''')</h3>
                         <h4>''' + load_lang("footnote_render") + '''</h4>
                         <h4>''' + load_lang("footnote_render") + '''</h4>
+                        ''' + set_data_main["main_css_footnote_set"] + '''
                         <select name="main_css_footnote_set">
                         <select name="main_css_footnote_set">
                             ''' + set_data["main_css_footnote_set"] + '''
                             ''' + set_data["main_css_footnote_set"] + '''
                         </select>
                         </select>
                         <h4>''' + load_lang("footnote_number") + '''</h4>
                         <h4>''' + load_lang("footnote_number") + '''</h4>
+                        ''' + set_data_main["main_css_footnote_number"] + '''
                         <select name="main_css_footnote_number">
                         <select name="main_css_footnote_number">
                             ''' + set_data["main_css_footnote_number"] + '''
                             ''' + set_data["main_css_footnote_number"] + '''
                         </select>
                         </select>
                         <h4>''' + load_lang("footnote_real_num_view") + '''</h4>
                         <h4>''' + load_lang("footnote_real_num_view") + '''</h4>
+                        ''' + set_data_main["main_css_view_real_footnote_num"] + '''
                         <select name="main_css_view_real_footnote_num">
                         <select name="main_css_view_real_footnote_num">
                             ''' + set_data["main_css_view_real_footnote_num"] + '''
                             ''' + set_data["main_css_view_real_footnote_num"] + '''
                         </select>
                         </select>
                         <h3>''' + load_lang("include_link") + '''</h3>
                         <h3>''' + load_lang("include_link") + '''</h3>
+                        ''' + set_data_main["main_css_include_link"] + '''
                         <select name="main_css_include_link">
                         <select name="main_css_include_link">
                             ''' + set_data["main_css_include_link"] + '''
                             ''' + set_data["main_css_include_link"] + '''
                         </select>
                         </select>
-                        <h3>''' + load_lang("image") + '''</h3>
+                        <h3>''' + load_lang("image") + ''' (''' + load_lang('beta') + ''')</h3>
+                        ''' + set_data_main["main_css_image_set"] + '''
                         <select name="main_css_image_set">
                         <select name="main_css_image_set">
                             ''' + set_data["main_css_image_set"] + '''
                             ''' + set_data["main_css_image_set"] + '''
                         </select>
                         </select>
                         <h3>''' + load_lang("toc") + '''</h3>
                         <h3>''' + load_lang("toc") + '''</h3>
+                        ''' + set_data_main["main_css_toc_set"] + '''
                         <select name="main_css_toc_set">
                         <select name="main_css_toc_set">
                             ''' + set_data["main_css_toc_set"] + '''
                             ''' + set_data["main_css_toc_set"] + '''
                         </select>
                         </select>
                         <h3>''' + load_lang("exter_link") + '''</h3>
                         <h3>''' + load_lang("exter_link") + '''</h3>
+                        ''' + set_data_main["main_css_exter_link"] + '''
                         <select name="main_css_exter_link">
                         <select name="main_css_exter_link">
                             ''' + set_data["main_css_exter_link"] + '''
                             ''' + set_data["main_css_exter_link"] + '''
                         </select>
                         </select>
                         <h3>''' + load_lang("link_delimiter") + '''</h3>
                         <h3>''' + load_lang("link_delimiter") + '''</h3>
+                        ''' + set_data_main["main_css_link_delimiter"] + '''
                         <select name="main_css_link_delimiter">
                         <select name="main_css_link_delimiter">
                             ''' + set_data["main_css_link_delimiter"] + '''
                             ''' + set_data["main_css_link_delimiter"] + '''
                         </select>
                         </select>
-                        <h3>''' + load_lang("force_darkmode") + ''' (''' + load_lang("not_working") + ''')</h3>
+                        <h3>''' + load_lang("force_darkmode") + '''</h3>
+                        ''' + set_data_main["main_css_darkmode"] + '''
                         <select name="main_css_darkmode">
                         <select name="main_css_darkmode">
                             ''' + set_data["main_css_darkmode"] + '''
                             ''' + set_data["main_css_darkmode"] + '''
                         </select>
                         </select>
-                        <h3>''' + load_lang("table_scroll") + '''</h3>
+                        <h3>''' + load_lang("table") + '''</h3>
+                        <h4>''' + load_lang("table_scroll") + '''</h4>
+                        ''' + set_data_main["main_css_table_scroll"] + '''
                         <select name="main_css_table_scroll">
                         <select name="main_css_table_scroll">
                             ''' + set_data["main_css_table_scroll"] + '''
                             ''' + set_data["main_css_table_scroll"] + '''
                         </select>
                         </select>
+                        <h4>''' + load_lang("table_transparent") + '''</h4>
+                        ''' + set_data_main["main_css_table_transparent"] + '''
+                        <select name="main_css_table_transparent">
+                            ''' + set_data["main_css_table_transparent"] + '''
+                        </select>
                         <h3>''' + load_lang("list_view_change") + '''</h3>
                         <h3>''' + load_lang("list_view_change") + '''</h3>
+                        ''' + set_data_main["main_css_list_view_change"] + '''
                         <select name="main_css_list_view_change">
                         <select name="main_css_list_view_change">
                             ''' + set_data["main_css_list_view_change"] + '''
                             ''' + set_data["main_css_list_view_change"] + '''
                         </select>
                         </select>
                         <h3>''' + load_lang("view_joke") + '''</h3>
                         <h3>''' + load_lang("view_joke") + '''</h3>
+                        ''' + set_data_main["main_css_view_joke"] + '''
                         <select name="main_css_view_joke">
                         <select name="main_css_view_joke">
                             ''' + set_data["main_css_view_joke"] + '''
                             ''' + set_data["main_css_view_joke"] + '''
                         </select>
                         </select>
                         <h3>''' + load_lang("math_scroll") + '''</h3>
                         <h3>''' + load_lang("math_scroll") + '''</h3>
+                        ''' + set_data_main["main_css_math_scroll"] + '''
                         <select name="main_css_math_scroll">
                         <select name="main_css_math_scroll">
                             ''' + set_data["main_css_math_scroll"] + '''
                             ''' + set_data["main_css_math_scroll"] + '''
                         </select>
                         </select>
                         <h3>''' + load_lang("view_history") + '''</h3>
                         <h3>''' + load_lang("view_history") + '''</h3>
+                        ''' + set_data_main["main_css_view_history"] + '''
                         <select name="main_css_view_history">
                         <select name="main_css_view_history">
                             ''' + set_data["main_css_view_history"] + '''
                             ''' + set_data["main_css_view_history"] + '''
                         </select>
                         </select>
@@ -128,10 +148,12 @@ def main_setting_skin_set():
                         <h3>''' + load_lang("image_paste") + '''</h3>
                         <h3>''' + load_lang("image_paste") + '''</h3>
                         <sup>''' + load_lang('only_korean') + '''</sup> <sup>''' + load_lang('unavailable_in_monaco') + '''</sup>
                         <sup>''' + load_lang('only_korean') + '''</sup> <sup>''' + load_lang('unavailable_in_monaco') + '''</sup>
                         <hr class="main_hr">
                         <hr class="main_hr">
+                        ''' + set_data_main["main_css_image_paste"] + '''
                         <select name="main_css_image_paste">
                         <select name="main_css_image_paste">
                             ''' + set_data["main_css_image_paste"] + '''
                             ''' + set_data["main_css_image_paste"] + '''
                         </select>
                         </select>
                         <h3>''' + load_lang("monaco_editor") + '''</h3>
                         <h3>''' + load_lang("monaco_editor") + '''</h3>
+                        ''' + set_data_main["main_css_monaco"] + '''
                         <select name="main_css_monaco">
                         <select name="main_css_monaco">
                             ''' + set_data["main_css_monaco"] + '''
                             ''' + set_data["main_css_monaco"] + '''
                         </select>
                         </select>

+ 2 - 3
route/main_tool_other.py

@@ -5,10 +5,9 @@ def main_tool_other():
         return easy_minify(flask.render_template(skin_check(),
         return easy_minify(flask.render_template(skin_check(),
             imp = [load_lang('other_tool'), wiki_set(), wiki_custom(), wiki_css([0, 0])],
             imp = [load_lang('other_tool'), wiki_set(), wiki_custom(), wiki_css([0, 0])],
             data = render_simple_set('''
             data = render_simple_set('''
-                <h2>''' + load_lang('record') + '''</h2>
+                <h2>''' + load_lang('user_tool') + '''</h2>
                 <ul class="opennamu_ul">
                 <ul class="opennamu_ul">
-                    <li><a href="/manager/6">''' + load_lang('edit_record') + '''</a></li>
-                    <li><a href="/manager/7">''' + load_lang('discussion_record') + '''</a></li>
+                    <li><a href="/manager/6">''' + load_lang('user_tool') + '''</a></li>
                 </ul>
                 </ul>
                 <h2>''' + load_lang('list') + '''</h2>
                 <h2>''' + load_lang('list') + '''</h2>
                 <h3>''' + load_lang('admin') + '''</h3>
                 <h3>''' + load_lang('admin') + '''</h3>

+ 1 - 2
route/main_tool_redirect.py

@@ -9,8 +9,7 @@ def main_tool_redirect(num = 1, add_2 = ''):
             1 : [0, '/list/user/check', load_lang('check')],
             1 : [0, '/list/user/check', load_lang('check')],
             2 : [load_lang('file_name'), '/filter/file_filter/add', load_lang('file_filter_add')],
             2 : [load_lang('file_name'), '/filter/file_filter/add', load_lang('file_filter_add')],
             3 : [0, '/auth/give', load_lang('authorize')],
             3 : [0, '/auth/give', load_lang('authorize')],
-            4 : [0, '/record', load_lang('edit_record')],
-            5 : [0, '/record/topic', load_lang('discussion_record')],
+            4 : [0, '/user', load_lang('user_tool')],
             6 : [load_lang('name'), '/auth/list/add', load_lang('add_admin_group')],
             6 : [load_lang('name'), '/auth/list/add', load_lang('add_admin_group')],
             7 : [load_lang('name'), '/filter/edit_filter/add', load_lang('edit_filter_add')],
             7 : [load_lang('name'), '/filter/edit_filter/add', load_lang('edit_filter_add')],
             8 : [load_lang('document_name'), '/search', load_lang('search')],
             8 : [load_lang('document_name'), '/search', load_lang('search')],

+ 1 - 4
route/recent_change.py

@@ -199,10 +199,7 @@ def recent_change(name = '', tool = '', num = 1, set_type = 'normal'):
                 ''
                 ''
 
 
                 title = name
                 title = name
-                menu = [
-                    ['other', load_lang('other')], 
-                    ['user', load_lang('user')]
-                ]
+                menu = [['user/' + url_pas(name), load_lang('user_tool')]]
                 if admin == 1:
                 if admin == 1:
                     menu += [['record/reset/' + url_pas(name), load_lang('record_reset')]]
                     menu += [['record/reset/' + url_pas(name), load_lang('record_reset')]]
 
 

+ 1 - 4
route/recent_record_topic.py

@@ -42,8 +42,5 @@ def recent_record_topic(name = 'Test'):
         return easy_minify(flask.render_template(skin_check(),
         return easy_minify(flask.render_template(skin_check(),
             imp = [load_lang('discussion_record'), wiki_set(), wiki_custom(), wiki_css([sub, 0])],
             imp = [load_lang('discussion_record'), wiki_set(), wiki_custom(), wiki_css([sub, 0])],
             data = div,
             data = div,
-            menu = [
-                ['other', load_lang('other')], 
-                ['user', load_lang('user')]
-            ]
+            menu = [['other', load_lang('other')], ['user/' + url_pas(name), load_lang('user_tool')]]
         ))
         ))

+ 14 - 0
route/tool/func.py

@@ -1371,6 +1371,20 @@ def render_set(doc_name = '', doc_data = '', data_type = 'view', data_in = '', d
                 if math_set_data == 'on':
                 if math_set_data == 'on':
                     get_class_render[0] = '<style>.katex .base { overflow-x: scroll; }</style>' + get_class_render[0]
                     get_class_render[0] = '<style>.katex .base { overflow-x: scroll; }</style>' + get_class_render[0]
 
 
+                transparent_set_data = get_main_skin_set(curs, flask.session, 'main_css_table_transparent', ip)
+                if transparent_set_data == 'on':
+                    get_class_render[0] = '''
+                        <style>
+                            .table_safe td {
+                                background: transparent !important;
+                            }
+
+                            .table_safe span {
+                                color: inherit !important;
+                            }
+                        </style>
+                    ''' + get_class_render[0]
+
                 if data_type == 'api_view' or data_type == 'api_thread':
                 if data_type == 'api_view' or data_type == 'api_thread':
                     return [
                     return [
                         get_class_render[0], 
                         get_class_render[0], 

+ 4 - 2
route/user_info.py

@@ -64,12 +64,14 @@ def user_info(name = ''):
                 ''' + tool_menu + '''
                 ''' + tool_menu + '''
                 <h2>''' + load_lang('other') + '''</h2>
                 <h2>''' + load_lang('other') + '''</h2>
                 <ul class="opennamu_ul">
                 <ul class="opennamu_ul">
-                    <li><a href="/record/''' + url_pas(ip) + '''">''' + load_lang('record') + '''</a></li>
+                    <li><a href="/record/''' + url_pas(ip) + '''">''' + load_lang('edit_record') + '''</a></li>
                     <li><a href="/record/topic/''' + url_pas(ip) + '''">''' + load_lang('discussion_record') + '''</a></li>
                     <li><a href="/record/topic/''' + url_pas(ip) + '''">''' + load_lang('discussion_record') + '''</a></li>
+                    <li><a href="/record/bbs/''' + url_pas(ip) + '''">''' + load_lang('bbs_record') + '''</a></li>
+                    <li><a href="/record/bbs_comment/''' + url_pas(ip) + '''">''' + load_lang('bbs_comment_record') + '''</a></li>
                     <li><a href="/topic/user:''' + url_pas(ip) + '''">''' + load_lang('user_discussion') + '''</a></li>
                     <li><a href="/topic/user:''' + url_pas(ip) + '''">''' + load_lang('user_discussion') + '''</a></li>
                     <li><a href="/count/''' + url_pas(ip) + '''">''' + load_lang('count') + '''</a></li>
                     <li><a href="/count/''' + url_pas(ip) + '''">''' + load_lang('count') + '''</a></li>
                 </ul>
                 </ul>
                 ''' + admin_menu + '''
                 ''' + admin_menu + '''
             ''',
             ''',
-            menu = 0
+            menu = [['other', load_lang('other_tool')]]
         ))
         ))

+ 11 - 1
route/user_setting_skin_set_main.py

@@ -88,6 +88,10 @@ def user_setting_skin_set_main_set_list():
             ['default', load_lang('default')],
             ['default', load_lang('default')],
             ['off', load_lang('off')],
             ['off', load_lang('off')],
             ['on', load_lang('use')]
             ['on', load_lang('use')]
+        ], 'main_css_table_transparent' : [
+            ['default', load_lang('default')],
+            ['off', load_lang('off')],
+            ['on', load_lang('use')]
         ]
         ]
     }
     }
 
 
@@ -228,11 +232,17 @@ def user_setting_skin_set_main():
                         <select name="main_css_darkmode">
                         <select name="main_css_darkmode">
                             ''' + set_data["main_css_darkmode"] + '''
                             ''' + set_data["main_css_darkmode"] + '''
                         </select>
                         </select>
-                        <h3>''' + load_lang("table_scroll") + '''</h3>
+                        <h3>''' + load_lang("table") + '''</h3>
+                        <h4>''' + load_lang("table_scroll") + '''</h4>
                         ''' + set_data_main["main_css_table_scroll"] + '''
                         ''' + set_data_main["main_css_table_scroll"] + '''
                         <select name="main_css_table_scroll">
                         <select name="main_css_table_scroll">
                             ''' + set_data["main_css_table_scroll"] + '''
                             ''' + set_data["main_css_table_scroll"] + '''
                         </select>
                         </select>
+                        <h4>''' + load_lang("table_transparent") + '''</h4>
+                        ''' + set_data_main["main_css_table_transparent"] + '''
+                        <select name="main_css_table_transparent">
+                            ''' + set_data["main_css_table_transparent"] + '''
+                        </select>
                         <h3>''' + load_lang("list_view_change") + '''</h3>
                         <h3>''' + load_lang("list_view_change") + '''</h3>
                         ''' + set_data_main["main_css_list_view_change"] + '''
                         ''' + set_data_main["main_css_list_view_change"] + '''
                         <select name="main_css_list_view_change">
                         <select name="main_css_list_view_change">

+ 1 - 1
version.json

@@ -1,6 +1,6 @@
 {
 {
     "beta" : {
     "beta" : {
-        "r_ver" : "v3.4.6-RC5-dev57",
+        "r_ver" : "v3.4.6-RC5-dev60",
         "c_ver" : "3500373",
         "c_ver" : "3500373",
         "s_ver" : "3500112"
         "s_ver" : "3500112"
     }
     }