فهرست منبع

send 문제 해결

https://github.com/openNAMU/openNAMU/issues/2134
잉여개발기 (SPDV) 2 سال پیش
والد
کامیت
fce6fa71c4

+ 1 - 1
route/tool/func.py

@@ -1043,7 +1043,7 @@ def skin_check(conn, set_n = 0):
         return skin
     
 def cache_v():
-    return '.cache_v228'
+    return '.cache_v229'
 
 def wiki_css(data):
     global global_wiki_set

+ 1 - 1
version.json

@@ -1,6 +1,6 @@
 {
     "beta" : {
-        "r_ver" : "v3.5.0-dev73",
+        "r_ver" : "v3.5.0-dev74",
         "c_ver" : "3500376",
         "s_ver" : "3500113"
     }

+ 54 - 19
views/main_css/js/func/func.js

@@ -1,5 +1,39 @@
 "use strict";
 
+function opennamu_xss_filter(str) {
+    return str.replace(/[&<>"']/g, function(match) {
+        switch(match) {
+            case '&':
+                return '&amp;';
+            case '<':
+                return '&lt;';
+            case '>':
+                return '&gt;';
+            case "'":
+                return '&#x27;';
+            case '"':
+                return '&quot;';
+        }
+    });
+}
+
+function opennamu_xss_filter_decode(str) {
+    return str.replace(/&amp;|&lt;|&gt;|&#x27;|&quot;/g, function(match) {
+        switch(match) {
+            case '&amp;':
+                return '&';
+            case '&lt;':
+                return '<';
+            case '&gt;':
+                return '>';
+            case '&#x27;':
+                return "'";
+            case '&quot;':
+                return '"';
+        }
+    });
+}
+
 function opennamu_do_id_check(data) {
     if(data.match(/\.|\:/)) {
         return 0;
@@ -51,6 +85,26 @@ function opennamu_get_main_skin_set(set_name) {
     });
 }
 
+function opennamu_send_render(data) {
+    if(data == '&lt;br&gt;' || data == '' || data.match(/^ +$/)) {
+        data = '<br>';
+    } else {
+        data = data.replace(/( |^)(https?:\/\/(?:[^ ]+))/g, function(m0, m1, m2) {
+            let link_main = m2;
+            link_main = link_main.replace('"', '&quot;');
+
+            return m1 + '<a href="' + link_main + '">' + link_main + '</a>';
+        });
+        data = data.replace(/&lt;a(?:(?:(?!&gt;).)*)&gt;((?:(?!&lt;\/a&gt;).)+)&lt;\/a&gt;/g, function(m0, m1) {
+            let data_unescape = opennamu_xss_filter_decode(m1)
+
+            return '<a href="/w/' + opennamu_do_url_encode(data_unescape) + '">' + m1 + '</a>'
+        })
+    }
+
+    return data;
+}
+
 function opennamu_insert_v(name, data) {
     document.getElementById(name).value = data;
 }
@@ -111,23 +165,4 @@ function opennamu_page_control(url, page, data_length, data_length_max = 50) {
     };
 
     return (next() + ' ' + back()).replace(/^ /, '');
-}
-
-function opennamu_xss_filter(str) {
-    return str.replace(/[&<>"'\/]/g, function(match) {
-        switch(match) {
-            case '&':
-                return '&amp;';
-            case '<':
-                return '&lt;';
-            case '>':
-                return '&gt;';
-            case "'":
-                return '&#x27;';
-            case '"':
-                return '&quot;';
-            case '/':
-                return '&#x2F;';
-        }
-    });
 }

+ 1 - 3
views/main_css/js/route/list_recent_change.js

@@ -82,7 +82,7 @@ function opennamu_list_recent_change() {
 
                 if(data[for_a][4] !== "") {
                     data_html += '<hr>'
-                    data_html += opennamu_xss_filter(data[for_a][4]);
+                    data_html += opennamu_send_render(opennamu_xss_filter(data[for_a][4]));
                 }
 
                 data_html += '</div>';
@@ -93,8 +93,6 @@ function opennamu_list_recent_change() {
 
             for(let for_a = 0; for_a < data.length; for_a++) {
                 if(data[for_a][6] !== "" && data[for_a][1] === "") {
-                    data_html += '<li>----</li>';
-
                     continue;
                 }
 

+ 5 - 1
views/main_css/js/route/list_recent_discuss.js

@@ -2,7 +2,7 @@
 
 function opennamu_list_recent_discuss(tool = 'normal') {
     let lang_data = new FormData();
-    lang_data.append('data', 'tool normal close_discussion open_discussion_list')
+    lang_data.append('data', 'tool normal close_discussion open_discussion_list closed')
 
     fetch('/api/lang', {
         method : 'post',
@@ -37,6 +37,10 @@ function opennamu_list_recent_discuss(tool = 'normal') {
 
                 data_html += '<div style="float: right;">';
 
+                if(data[for_a][4] === 'O') {
+                    data_html += lang[4] + ' | ';
+                }
+
                 data_html += '<a href="/thread/' + data[for_a][3] + '#' + data[for_a][7] + '">#' + data[for_a][7] + '</a> | ';
                 data_html += data[for_a][6] + ' | ';
                 data_html += data[for_a][2];