Przeglądaj źródła

topic sys remake & ie eos

2du 5 lat temu
rodzic
commit
e6c749e29a

+ 21 - 96
route/api_topic_sub.py

@@ -18,103 +18,28 @@ def api_topic_sub_2(conn, topic_num):
 
     data = curs.fetchall()
     if data:
-        json_data = {}
+        data_a = {}
         admin = admin_check(3)
 
-        if flask.request.args.get('render', None):
-            all_ip = ip_pas([i[3] for i in data])
-            for i in data:
-                ip = all_ip[i[3]]
-
-                if i[4] != 'O':
-                    t_data_f = i[1]
-                    b_color = 'toron_color'
-                else:
-                    t_data_f = ''
-                    b_color = 'toron_color_not'
-
-                    ip += ' <a href="/admin_log?search=blind%20(code%20' + topic_num + '#' + i[0] + '">(B)</a>'
-
-                    if admin == 1:
-                        ip += ' <a href="/thread/' + topic_num + '/raw/' + i[0] + '">(R)</a>'
-
-                if i[0] == '1':
-                    s_user = i[3]
-                else:
-                    if flask.request.args.get('num', None):
-                        curs.execute(db_change("select ip from topic where code = ? order by id + 0 asc limit 1"), [topic_num])
-                        g_data = curs.fetchall()
-                        if g_data:
-                            s_user = g_data[0][0]
-                        else:
-                            s_user = ''
-
-                if flask.request.args.get('top', None):
-                    t_color = 'toron_color_red'
-                elif i[3] == s_user and i[5] != '1':
-                    t_color = 'toron_color_green'
-                elif i[5] == '1':
-                    t_color = 'toron_color_blue'
-                else:
-                    t_color = 'toron_color'
-
-                if admin == 1 or b_color != 'toron_color_not':
-                    ip += ' <a href="/thread/' + topic_num + '/admin/' + i[0] + '">(' + load_lang('discussion_tool') + ')</a>'
-
-                if t_data_f == '':
-                    t_data_f = '[br]'
-
-                t_data_f = render_set(data = t_data_f, num = 2, include = 'topic_' + i[0], acl = get_acl)
-                t_plus_data = t_data_f[1]
-                t_data_f = t_data_f[0]
-
-                t_data_f = re.sub(
-                    r'&lt;topic_a&gt;((?:(?!&lt;\/topic_a&gt;).)+)&lt;\/topic_a&gt;', 
-                    '<a href="\g<1>">\g<1></a>', 
-                    t_data_f
-                )
-                t_data_f = re.sub(
-                    r'&lt;topic_call&gt;@((?:(?!&lt;\/topic_call&gt;).)+)&lt;\/topic_call&gt;', 
-                    '<a href="/w/user:\g<1>">@\g<1></a>', 
-                    t_data_f
-                )
-
-                all_data = '' + \
-                    '<table id="toron">' + \
-                        '<tbody>' + \
-                            '<tr>' + \
-                               '<td id="' + t_color + '">' + \
-                                    '<a href="javascript:void(0);" id="' + i[0] + '">#' + i[0] + '</a> ' + ip + ' <span style="float: right;">' + i[2] + '</span>' + \
-                                '</td>' + \
-                            '</tr>' + \
-                            '<tr>' + \
-                                '<td id="' + b_color + '">' + \
-                                    '<div id="topic_scroll">' + t_data_f + '</div>' + \
-                                '</td>' + \
-                            '</tr>' + \
-                        '</tbody>' + \
-                    '</table>' + \
-                    '<hr class="main_hr">' + \
-                ''
-
-                json_data[i[0]] = {
-                    "data" : all_data,
-                    "plus_data" : t_plus_data
-                }
-        else:
-            for i in data:
-                if i[4] != 'O' or (i[4] == 'O' and admin == 1):
-                    t_data_f = i[1]
-                else:
-                    t_data_f = '(B)'
-
-                json_data[i[0]] = {
-                    "data" : t_data_f,
-                    "date" : i[2],
-                    "ip" : ip_pas(i[3], 1),
-                    "block" : i[4],
-                }
-
-        return flask.jsonify(json_data)
+        curs.execute(db_change("select ip from topic where code = ? order by id + 0 asc limit 1"), [topic_num])
+        data_f = curs.fetchall()
+        data_f = data_f[0][0] if data_f else ''
+        data_a['data_main'] = {
+            "ip_first" : ip_pas(data_f, 1),
+            "admin" : str(admin)
+        }
+            
+        ip_a = ip_pas([i[3] for i in data])
+        ip_a_2 = ip_pas([i[3] for i in data], 1)
+        for i in data:
+            data_a[i[0]] = {
+                "data" : i[1] if i[4] != 'O' or admin == 1 else '',
+                "date" : i[2],
+                "ip" : ip_a_2[i[3]],
+                "ip_pas" : ip_a[i[3]],
+                "blind" : i[4],
+            }
+
+        return flask.jsonify(data_a)
     else:
         return flask.jsonify({})

+ 1 - 1
route/tool/func.py

@@ -1236,7 +1236,7 @@ def edit_filter_do(data):
     return 0
 
 def redirect(data = '/'):
-    return '<script>window.location.href = "' + data.replace('"', '\\"') + '";</script>'
+    return '<script>document.location.href = "' + data + '";</script>'
 
 def get_acl_list(type_d = 'normal'):
     if type_d == 'user':

+ 1 - 1
route/topic.py

@@ -102,7 +102,7 @@ def topic_2(conn, topic_num):
                 <div id="top_topic"></div>
                 <div id="main_topic"></div>
                 <div id="plus_topic"></div>
-                <script>topic_top_load("''' + topic_num + '''");</script>
+                <script>new_topic_load("''' + topic_num + '''");</script>
                 <a href="/thread/''' + topic_num + '/tool">(' + load_lang('topic_tool') + ''')</a>
                 <hr class="main_hr">
                 <form style="''' + display + '''" method="post">

+ 10 - 14
route/topic_close_list.py

@@ -35,39 +35,35 @@ def topic_close_list_2(conn, name):
 
         plus = '''
             <a href="/topic/''' + url_pas(name) + '?tool=close">(' + load_lang('closed_discussion') + ')</a> <a href="/topic/' + url_pas(name) + '?tool=agree">(' + load_lang('agreed_discussion') + ''')</a>
-            <hr class=\"main_hr\">
+            <hr class="main_hr">
             <form style="''' + display + '" method="post" action="/thread/' + topic_num + '''">
                 <input placeholder="''' + load_lang('discussion_name') + '''" name="title">
-                <hr class=\"main_hr\">
+                <hr class="main_hr">
                 <textarea rows="10" id="content" placeholder="''' + load_lang('content') + '''" name="content"></textarea>
-                <hr class=\"main_hr\">
+                <hr class="main_hr">
                 ''' + captcha_get() + (ip_warring() if display == '' else '') + '''
                 <input style="display: none;" name="topic" value="''' + name + '''">
                 <button type="submit">''' + load_lang('send') + '''</button>
                 <button id="preview" type="button" onclick="load_preview(\'''' + url_pas(name) + '\')">' + load_lang('preview') + '''</button>
             </form>
-            <hr class=\"main_hr\">
+            <hr class="main_hr">
             <div id="see_preview"></div>
         '''
 
         curs.execute(db_change("select code, sub from rd where title = ? and stop != 'O' order by date desc"), [name])
 
-    t_num = 0
     for data in curs.fetchall():
-        t_num += 1
-        t_str_num = str(t_num)
-
-        curs.execute(db_change("select id from topic where code = ? order by date 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()
 
         div += '''
-            <h2><a href="/thread/''' + data[0] + '">' + t_str_num + '. ' + data[1] + '''</a></h2>
-            <div id="topic_pre_''' + t_str_num + '''"></div>
-            <div id="topic_back_pre_''' + t_str_num + '''"></div>
+            <h2><a href="/thread/''' + data[0] + '">' + data[0] + '. ' + data[1] + '''</a></h2>
+            <div id="topic_pre_''' + data[0] + '''"></div>
+            <div id="topic_back_pre_''' + data[0] + '''"></div>
             <script>
-                topic_list_load(''' + data[0] + ', 1, "topic_pre_' + t_str_num + '''");
+                new_topic_load(''' + data[0] + ', 0, 1, "?num=1", "topic_pre_' + data[0] + '''");
                 if(''' + t_data[0][0] + ''' !== 1) {
-                    topic_list_load(''' + data[0] + ', ' + t_data[0][0] + ', "topic_back_pre_' + t_str_num + '''");
+                    new_topic_load(''' + data[0] + ', 0, 1, "?num=' + t_data[0][0] + '", "topic_back_pre_' + data[0] + '''");
                 }
             </script>
         '''

+ 1 - 1
version.json

@@ -1,6 +1,6 @@
 {
     "beta" : {
-        "r_ver" : "v3.2.0-stable-13 (beta-58) (dev-2021-03-19-01)",
+        "r_ver" : "v3.2.0-stable-13 (beta-59) (dev-2021-03-23-01)",
         "c_ver" : "3205500",
         "s_ver" : "11"
     }

+ 12 - 1
views/main_css/js/load_something.js

@@ -56,4 +56,15 @@ function do_skin_ver_check() {
 function do_twofa_check(init = 0) {
     var data_check = document.getElementById('twofa_check_input').checked;
     document.getElementById('fa_plus_content').style.display = data_check === true ? "block" : "none";
-}
+}
+
+function ie_end_support() {
+    if(document.currentScript === undefined) {
+        window.location = 'microsoft-edge:' + window.location;
+        setTimeout(function() {
+            window.location = 'https://go.microsoft.com/fwlink/?linkid=2135547';
+        }, 1);
+    }
+}
+
+ie_end_support();

+ 96 - 0
views/main_css/js/load_topic.js

@@ -120,5 +120,101 @@ function topic_top_load(topic_num) {
             topic_main_load(topic_num, null);
         }
     }
+}
+
+function new_topic_load(topic_num, con = 1, type_do = 0, some = '', where = 'top_topic') {
+    if(type_do === 0) {
+        var url = "/api/thread/" + topic_num + "?top=1";
+    } else {
+        var url = "/api/thread/" + topic_num + some;
+    }
+
+    var xhr = new XMLHttpRequest();
+    xhr.open("GET", url, true);
+    xhr.send(null);
 
+    xhr.onreadystatechange = function() {
+        if(this.readyState === 4 && this.status === 200) {
+            var data_t = JSON.parse(this.responseText);
+            var data_a = '';
+            var start = 0;
+            
+            for(var key in data_t) {
+                if(start === 0) {
+                    var admin = data_t['data_main']['admin'];
+                    var ip_first = data_t['data_main']['ip_first'];
+                    
+                    start = 1;
+                }
+                
+                if(key === 'data_main') {
+                    continue;
+                }
+                
+                var color_b = '';
+                var color_t = '';
+                
+                var ip = data_t[key]['ip_pas'];
+                var ip_o = data_t[key]['ip'];
+                var blind = data_t[key]['blind'];
+                var data_i = data_t[key]['data'];
+                
+                if(data_i === '') {
+                    data_i = '<br>';
+                }
+                
+                if(blind === 'O') {
+                    color_b = 'toron_color_not';
+                } else {
+                    color_b = 'toron_color';
+                }
+                
+                if(blind === 'O') {
+                    ip += ' <a href="/admin_log?search=blind%20(code%20' + topic_num + '#' + i[0] + '">(B)</a>';
+                    
+                    if(admin === '1') {
+                        ip += ' <a href="/thread/' + topic_num + '/raw/' + key + '">(R)</a>';
+                    }
+                }
+                
+                if(admin === '1' || blind !== 'O') {
+                    ip += ' <a href="/thread/' + topic_num + '/admin/' + key + '">(T)</a>';
+                }
+                
+                if(type_do === 0) {
+                    color_t = 'toron_color_red';
+                } else if(blind === '1') {
+                    color_t = 'toron_color_blue';
+                } else if(ip_o === ip_first) {
+                    color_t = 'toron_color_green';
+                } else {
+                    color_t = 'toron_color';
+                }
+                
+                data_a += '' + 
+                    '<table id="toron">' + 
+                        '<tr>' + 
+                            '<td id="' + color_t + '">' + 
+                                '<a href="javascript:void(0);" id="' + key + '">#' + key + '</a> ' + 
+                                ip + 
+                                '<span style="float: right;">' + data_t[key]['date'] + '</span>' + 
+                            '</td>' + 
+                        '</tr>' + 
+                        '<tr>' + 
+                            '<td id="' + color_b + '">' + 
+                                '<div id="topic_scroll">' + data_t[key]['data'] + '</div>' + 
+                            '</td>' + 
+                        '</tr>' +
+                    '</table>' + 
+                    '<hr class="main_hr">' + 
+                ''
+            }
+            
+            document.getElementById(where).innerHTML += data_a;
+            
+            if(con === 1) {
+                new_topic_load(topic_num, 0, type_do + 1, '', where);
+            }
+        }
+    }
 }