Browse Source

fix render

surplus-dev 4 years ago
parent
commit
a1eba511a1
5 changed files with 183 additions and 75 deletions
  1. 7 0
      app.py
  2. 21 0
      route/api_setting.py
  3. 1 1
      version.json
  4. 150 70
      views/main_css/js/render_onmark.js
  5. 4 4
      views/main_css/js/render_wiki.js

+ 7 - 0
app.py

@@ -787,23 +787,30 @@ app.route('/api/w/<everything:name>/doc_tool/<tool>/doc_rev/<int(signed = True):
 app.route('/api/w/<everything:name>/doc_tool/<tool>', methods = ['GET', 'POST'])(api_w)
 app.route('/api/w/<everything:name>', methods = ['GET', 'POST'])(api_w)
 app.route('/api/raw/<everything:name>')(api_raw)
+
 app.route('/api/version', defaults = { 'version_list' : version_list })(api_version)
 app.route('/api/skin_info')(api_skin_info)
 app.route('/api/skin_info/<name>')(api_skin_info)
 app.route('/api/markup')(api_markup)
 app.route('/api/user_info/<name>')(api_user_info)
+app.route('/api/setting/<name>')(api_setting)
+
 app.route('/api/thread/<int:topic_num>/<tool>/<int:num>')(api_topic_sub)
 app.route('/api/thread/<int:topic_num>/<tool>')(api_topic_sub)
 app.route('/api/thread/<int:topic_num>')(api_topic_sub)
+
 app.route('/api/search/<everything:name>/doc_num/<int:num>/<int:page>')(api_search)
 app.route('/api/search/<everything:name>')(api_search)
+
 app.route('/api/recent_change/<int:num>')(api_recent_change)
 app.route('/api/recent_change')(api_recent_change)
 # recent_changes -> recent_change
 app.route('/api/recent_changes')(api_recent_change)
+
 app.route('/api/recent_discuss/<get_type>/<int:num>')(api_recent_discuss)
 app.route('/api/recent_discuss/<int:num>')(api_recent_discuss)
 app.route('/api/recent_discuss')(api_recent_discuss)
+
 app.route('/api/sha224/<everything:data>', methods = ['POST', 'GET'])(api_sha224)
 app.route('/api/title_index')(api_title_index)
 app.route('/api/image/<everything:name>', methods = ['POST', 'GET'])(api_image_view)

+ 21 - 0
route/api_setting.py

@@ -0,0 +1,21 @@
+from .tool.func import *
+
+def api_setting(name = 'markup'):
+    with get_db_connect() as conn:
+        curs = conn.cursor()
+        
+        ok_list_1 = ['markup']
+        ok_list_2 = ['inter_wiki']
+        
+        if name in ok_list_1:
+            curs.execute(db_change('select data from other where name = ?'), [name])
+            rep_data = curs.fetchall()
+            if rep_data:
+                return flask.jsonify({ name : rep_data })
+        elif name in ok_list_2:
+            curs.execute(db_change("select html, plus, plus_t from html_filter where kind = ?"), [name])
+            rep_data = curs.fetchall()
+            if rep_data:
+                return flask.jsonify({ name : rep_data })
+
+        return flask.jsonify({})

+ 1 - 1
version.json

@@ -1,6 +1,6 @@
 {
     "beta" : {
-        "r_ver" : "v3.4.3 (stable1) (beta13) (dev25)",
+        "r_ver" : "v3.4.3 (stable1) (beta13) (dev26)",
         "c_ver" : "3500101",
         "s_ver" : "3500110"
     }

+ 150 - 70
views/main_css/js/render_onmark.js

@@ -140,7 +140,12 @@ function do_onmark_text_render(data) {
     return data;
 }
 
-function do_onmark_heading_render(data, data_js, name_doc, name_include) {
+function do_onmark_heading_render(
+    data, 
+    data_js, 
+    name_doc, 
+    name_include
+) {
     var heading_re = /\n(={1,6})(#)? ?([^=]+) ?#?={1,6}\n/;
     var heading_level_all = [0, 0, 0, 0, 0, 0];
     var toc_data = '';
@@ -186,16 +191,21 @@ function do_onmark_heading_render(data, data_js, name_doc, name_include) {
             '<span style="margin-left: ' + String((heading_level_string.match(/\./g).length - 1) * 10) + 'px;">' +
                 '<a href="#s-' + heading_level_string_no_end + '">' + 
                     heading_level_string + ' ' +
-                '</a>' + heading_data_text +
+                '</a> ' + 
+                '<span id="toc_text_' + heading_level_string_no_end + '"></span>'
             '</span>' +
             '\n' +
         ''
+        data_js += 'document.getElementById("toc_text_' + heading_level_string_no_end + '").innerHTML = document.getElementById("heading_text_' + heading_level_string_no_end + '").innerText;\n';
+        
         data = data.replace(heading_re, 
             '\n' +
             (toc_n === 1 ? '' : '</div>') +
             '<h' + heading_level + ' class="render_heading_text">' + 
                 '<a href="#toc" id="s-' + heading_level_string_no_end + '">' + heading_level_string + '</a> ' + 
-                heading_data_text + ' ' +
+                '<span id="heading_text_' + heading_level_string_no_end + '">' +
+                    heading_data_text + 
+                '</span> ' +
                 '<a id="edit_load_' + String(toc_n) + '" ' +
                     'style="font-size: 70%;"' +
                     'href="/edit/' + do_url_change(name_doc) + '/doc_section/' + String(toc_n) + '">✎</a> ' +
@@ -227,7 +237,7 @@ function do_onmark_heading_render(data, data_js, name_doc, name_include) {
     
     data = data.replace(toc_re, toc_data);
     
-    return data;
+    return [data, data_js];
 }
 
 function do_onmark_link_render(data, data_js, name_doc, name_include, data_nowiki, data_wiki_set) {
@@ -1260,7 +1270,9 @@ function do_onmark_redirect_render(data, data_js, name_doc) {
         }
         
         return [
-            data.replace(redirect_re, '/w/' + do_url_change(link_main) + '/doc_from/' + do_url_change(name_doc) + link_sub), 
+            '/w/' + do_url_change(link_main) + 
+            '/doc_from/' + do_url_change(name_doc) + 
+            link_sub,
             data_js, 
             1
         ];
@@ -1290,7 +1302,6 @@ function do_onmark_render(
         var data = '\n' + 
             document.getElementById(name_id + '_load').innerHTML.replace(/\r/g, '') + 
         '\n';
-        data_wiki_set = JSON.parse(document.getElementById(name_id + '_set').innerHTML);
     } else if(test_mode === 'manual') { 
         var data = '\n' + 
             doc_data.replace(/\r/g, '') + 
@@ -1304,71 +1315,140 @@ function do_onmark_render(
     var data_backlink = [];
     var data_nowiki = {};
 
-    var data_var = do_onmark_redirect_render(data, data_js, name_doc, name_include);
-    data = data_var[0];
-    data_js = data_var[1];
-    var passing = data_var[2];
-
-    if(passing === 0) {
-        data = do_onmark_remark_render(data);
+    let xhr = new XMLHttpRequest();
+    xhr.open("GET", "/api/setting/inter_wiki");
+    xhr.send();
+
+    xhr.onreadystatechange = function() {
+        if(this.readyState === 4 && this.status === 200) {
+            data_wiki_set = JSON.parse(this.responseText);
+            let data_wiki_set_inter_wiki = { "inter_wiki" : {}};
+            for(let i = 0; i < data_wiki_set["inter_wiki"].length; i++) {
+                data_wiki_set_inter_wiki["inter_wiki"][
+                    data_wiki_set["inter_wiki"][i][0]
+                ] = {
+                    "link" : data_wiki_set["inter_wiki"][i][1],
+                    "logo" : data_wiki_set["inter_wiki"][i][2]
+                }
+            }
+            
+            let data_var = do_onmark_redirect_render(
+                data, 
+                data_js, 
+                name_doc, 
+                name_include
+            );
+            data = data_var[0];
+            data_js = data_var[1];
+            let passing = data_var[2];
+            
+            if(passing === 1) {
+                if(test_mode === 'normal') {
+                    document.getElementById(name_id).innerHTML = data + '<script>' + data_js + '</script>';
+                    eval(data_js);
+                } else if(test_mode === 'manual') {
+                    return [data, data_js];
+                } else {
+                	console.log([data, data_js]);
+                }
+                
+                return 0;
+            }
+            
+            data = do_onmark_remark_render(data);
+            
+            data_var = do_onmark_nowiki_before_render(
+                data, 
+                data_js, 
+                name_include, 
+                data_nowiki
+            );
+            data = data_var[0];
+            data_js = data_var[1];
+            data_nowiki = data_var[2];
+            
+            data_var = do_onmark_math_render(
+                data, 
+                data_js, 
+                name_include, 
+                data_nowiki
+            );
+            data = data_var[0];
+            data_js = data_var[1];
         
-        data_var = do_onmark_nowiki_before_render(data, data_js, name_include, data_nowiki);
-        data = data_var[0];
-        data_js = data_var[1];
-        data_nowiki = data_var[2];
+            data_var = do_onmark_include_render(
+                data, 
+                data_js, 
+                name_include, 
+                data_nowiki
+            );
+            data = data_var[0];
+            data_js = data_var[1];
         
-        data_var = do_onmark_math_render(data, data_js, name_include, data_nowiki);
-        data = data_var[0];
-        data_js = data_var[1];
-
-        data_var = do_onmark_include_render(data, data_js, name_include, data_nowiki);
-        data = data_var[0];
-        data_js = data_var[1];
-
-        data_var = do_onmark_middle_render(data, data_js, name_include, data_nowiki, name_doc);
-        data = data_var[0];
-        data_js = data_var[1];
-        data_nowiki = data_var[2];
-
-        data = do_onmark_text_render(data);
-        data = do_onmark_heading_render(data, data_js, name_doc, name_include);
-        data = do_onmark_table_render(data);
-
-        data_var = do_onmark_link_render(
-            data, 
-            data_js, 
-            name_doc, 
-            name_include,
-            data_nowiki,
-            data_wiki_set
-        );
-        data = data_var[0];
-        data_js = data_var[1];
-        var data_category = data_var[2];
-
-        data_var = do_onmark_macro_render(data, data_js);
-        data = data_var[0];
-        data_js = data_var[1];
+            data_var = do_onmark_middle_render(
+                data, 
+                data_js, 
+                name_include, 
+                data_nowiki, 
+                name_doc
+            );
+            data = data_var[0];
+            data_js = data_var[1];
+            data_nowiki = data_var[2];
         
-        data = do_onmark_list_render(data);
-        data = do_onmark_hr_render(data);
-        data = do_onmark_footnote_render(data, name_include);
-        data = do_onmark_last_render(data, name_include, data_category);
-    }
-    
-    data_js += '' + 
-        'get_link_state("' + name_include + '");\n' + 
-        'get_file_state("' + name_include + '");\n' + 
-		'get_heading_name();' +
-        'render_html("' + name_include + 'nowiki_html");\n' +
-    ''
-    
-    if(test_mode === 'normal') {
-        document.getElementById(name_id).innerHTML = data + '<script>' + data_js + '</script>';
-        eval(data_js);
-    } else if(test_mode === 'manual') {
-        return [data, data_js];
-    } else {
-    	console.log([data, data_js]);
+            data = do_onmark_text_render(data);
+            
+            data_var = do_onmark_heading_render(
+                data, 
+                data_js, 
+                name_doc, 
+                name_include
+            );
+            data = data_var[0];
+            data_js = data_var[1];
+            
+            data = do_onmark_table_render(data);
+        
+            data_var = do_onmark_link_render(
+                data, 
+                data_js, 
+                name_doc, 
+                name_include,
+                data_nowiki,
+                data_wiki_set_inter_wiki
+            );
+            data = data_var[0];
+            data_js = data_var[1];
+            var data_category = data_var[2];
+        
+            data_var = do_onmark_macro_render(data, data_js);
+            data = data_var[0];
+            data_js = data_var[1];
+            
+            data = do_onmark_list_render(data);
+            data = do_onmark_hr_render(data);
+            data = do_onmark_footnote_render(data, name_include);
+            data = do_onmark_last_render(
+                data, 
+                name_include, 
+                data_category
+            );
+            
+            data_js += '' + 
+                'get_link_state("' + name_include + '");\n' + 
+                'get_file_state("' + name_include + '");\n' + 
+        		'get_heading_name();\n' +
+                'render_html("' + name_include + 'nowiki_html");\n' +
+            ''
+            
+            if(test_mode === 'normal') {
+                document.getElementById(name_id).innerHTML = data + '<script>' + data_js + '</script>';
+                eval(data_js);
+            } else if(test_mode === 'manual') {
+                return [data, data_js];
+            } else {
+            	console.log([data, data_js]);
+            }
+        }
     }
-}
+}

+ 4 - 4
views/main_css/js/render_wiki.js

@@ -53,10 +53,10 @@ function get_link_state(data) {
 }
 
 function get_heading_name() {
-	let heading_name = document.getElementsByClassName('render_heading_text');
-	for(let i = 0; i < heading_name.length; i++) {
-		heading_name[i].id = heading_name[i].innerText.replace(/^([0-9]+\.)+ /, '').replace(/✎ ⊖$/, '');
-	}
+    let heading_name = document.getElementsByClassName('render_heading_text');
+    for(let i = 0; i < heading_name.length; i++) {
+        heading_name[i].id = heading_name[i].innerText.replace(/^([0-9]+\.)+ /, '').replace(/✎ ⊖$/, '');
+    }
 }
 
 function load_image_link(data) {