Bläddra i källkod

파일 문법 추가

Surplus_Up (2DU) 6 år sedan
förälder
incheckning
d81b03d543

+ 4 - 0
app.py

@@ -663,6 +663,10 @@ def api_search(name = ''):
 def api_recent_change():
     return api_recent_change_2(conn)
 
+@app.route('/api/sha224/<everything:name>')
+def api_sha224(name = 'test'):
+    return api_sha224_2(conn, name)
+
 # File
 @app.route('/views/<everything:name>')
 def main_views(name = None):

+ 6 - 0
route/api_sha224.py

@@ -0,0 +1,6 @@
+from .tool.func import *
+
+def api_sha224_2(conn, data):
+    curs = conn.cursor()
+
+    return flask.jsonify({ "data" : sha224_replace(data) })

+ 1 - 1
route/edit_delete.py

@@ -45,7 +45,7 @@ def edit_delete_2(conn, name, app_var):
             file_check = file_check.groups()
             os.remove(os.path.join(
                 app_var['path_data_image'],
-                hashlib.sha224(bytes(file_check[0], 'utf-8')).hexdigest() + '.' + file_check[1]
+                sha224_replace(file_check[0], 'utf-8') + '.' + file_check[1]
             ))
 
         curs.execute(db_change('select data from other where name = "count_all_title"'))

+ 1 - 1
route/edit_many_delete.py

@@ -39,7 +39,7 @@ def edit_many_delete_2(conn, app_var):
                 file_check = file_check.groups()
                 os.remove(os.path.join(
                     app_var['path_data_image'],
-                    hashlib.sha224(bytes(file_check[0], 'utf-8')).hexdigest() + '.' + file_check[1]
+                    sha224_replace(file_check[0]) + '.' + file_check[1]
                 ))
 
             curs.execute(db_change('select data from other where name = "count_all_title"'))

+ 1 - 1
route/func_upload.py

@@ -32,7 +32,7 @@ def func_upload_2(conn):
         if re.search('[^ㄱ-힣0-9a-zA-Z_\- ]', piece[0]):
             return re_error('/error/22')
 
-        e_data = sha224(piece[0]) + piece[1]
+        e_data = sha224_replace(piece[0]) + piece[1]
 
         curs.execute(db_change("select title from data where title = ?"), ['file:' + name])
         if curs.fetchall():

+ 1 - 1
route/tool/set_mark/namumark.py

@@ -952,7 +952,7 @@ def namumark(conn, data, title, main_num, include_num):
                         file_name = 'TEST'
                         file_end = 'jpg'
 
-                    file_src = '/image/' + tool.sha224(file_name) + '.' + file_end
+                    file_src = '/image/' + tool.sha224_replace(file_name) + '.' + file_end
                     file_alt = 'file:' + file_name + '.' + file_end
 
                     curs.execute(tool.db_change("select title from data where title = ?"), [file_alt])

+ 1 - 1
route/tool/set_mark/tool.py

@@ -69,7 +69,7 @@ def savemark(data):
 def url_pas(data):
     return urllib.parse.quote(data).replace('/','%2F')
 
-def sha224(data):
+def sha224_replace(data):
     return hashlib.sha224(bytes(data, 'utf-8')).hexdigest()
 
 def md5_replace(data):

+ 66 - 5
views/main_css/js/render_namumark.js

@@ -30,8 +30,52 @@ function render_namumark(target) {
         }
     }
 
+    function get_file_state(file_data) {            
+        var file_part = file_data[0].match(/^([^.]+)\.(.+)$/);
+        if(file_part) {
+            var file_name = file_part[1];
+            var file_type = '.' + file_part[2];
+        } else {
+            var file_name = file_data;
+            var file_type = '';
+        }
+
+        var xhr = new XMLHttpRequest();
+        xhr.open("GET", "/api/sha224/" + encodeURIComponent(file_name), true);
+        xhr.send(null);
+        
+        xhr.onreadystatechange = function() {
+            if(this.readyState === 4 && this.status === 200) {
+                var xhr = new XMLHttpRequest();
+                xhr.open("GET", "/api/w/file:" + encodeURIComponent(file_data[0]) + "?exist=1", true);
+                xhr.send(null);
+
+                var img_src = JSON.parse(this.responseText)['data'];
+                
+                xhr.onreadystatechange = function() {
+                    if(this.readyState === 4 && this.status === 200) {
+                        if(JSON.parse(this.responseText)['exist'] !== '1') {
+                            document.getElementById(file_data[1]).innerHTML = '' +
+                                '<a href="/upload?name=' + encodeURIComponent(file_data[0]) + '" id="not_thing">' + file_data[0] + '</a>' +
+                            '';
+                        } else {
+                            document.getElementById(file_data[1]).innerHTML = '' +
+                                '<img src="/image/' + img_src + file_type + '">' +
+                            '';
+                        }
+                    } else {
+                        console.log(file_data[1]);
+                        document.getElementById(file_data[1]).innerHTML = '' +
+                            '<a href="/upload?name=' + encodeURIComponent(file_data[0]) + '" id="not_thing">' + file_data[0] + '</a>' +
+                        '';
+                    }
+                }
+            }
+        }
+    }
+
     function divi_link(link_data) {
-        link_part = link_data.match(/^([^|]+)\|(.+)$/);
+        var link_part = link_data.match(/^([^|]+)\|(.+)$/);
         if(link_part) {
             return [link_part[2], link_part[1]]
         } else {
@@ -203,7 +247,9 @@ function render_namumark(target) {
     });
 
     var link_list = [];
+    var file_list = [];
     var link_num = 0;
+    var file_num = 0;
     var category = '<div id="cate_all"><hr><div id="cate">Category : '
     data = data.replace(/\[\[((?:(?!]]).)+)]]/g, function(all, in_data) {
         if(in_data.match(/^(?:category|분류):/i)) {
@@ -211,7 +257,10 @@ function render_namumark(target) {
 
             return '';
         } else if(in_data.match(/^(?:file|파일):/i)) {
-
+            file_list.push([in_data.replace(/^(?:file|파일):/i, ''), 'file_' + String(file_num)]);
+            file_num += 1;
+            
+            return '<span id="file_' + String(file_num - 1) + '"></span>';
         } else if(in_data.match(/^http(?:s)?:\/\//i)) {
             var link_part = divi_link(in_data);
             
@@ -420,7 +469,7 @@ function render_namumark(target) {
         data += ref_data + '</ul>';
     }
 
-    i = 1;
+    var i = 1;
     while(1) {
         if(nowiki_list['nowiki_' + String(i)]) {
             data = data.replace('<span id="nowiki_' + String(i) + '"></span>', '<code>' + nowiki_list['nowiki_' + String(i)] + '</code>');
@@ -439,7 +488,7 @@ function render_namumark(target) {
 
     document.getElementById(target).innerHTML = data;
 
-    var i = 0;
+    i = 0;
     while(1) {
         if(math_list[i]) {
             try {
@@ -456,7 +505,7 @@ function render_namumark(target) {
         }
     }
 
-    var i = 0;
+    i = 0;
     while(1) {
         if(link_list[i]) {
             get_link_state(link_list[i]);
@@ -466,5 +515,17 @@ function render_namumark(target) {
             break;
         }
     }
+
+    i = 0;
+    while(1) {
+        if(file_list[i]) {
+            get_file_state(file_list[i]);
+
+            i += 1;
+        } else {
+            break;
+        }
+    }
+
     render_html("html_render_contect");    
 }