Kaynağa Gözat

프리뷰 JS로 대체

Surplus_Up (2DU) 7 yıl önce
ebeveyn
işleme
e603e2b1b1
5 değiştirilmiş dosya ile 58 ekleme ve 77 silme
  1. 1 1
      app.py
  2. 11 6
      route/api_w.py
  3. 23 23
      route/edit.py
  4. 0 41
      route/preview.py
  5. 23 6
      views/main_css/main.js

+ 1 - 1
app.py

@@ -558,7 +558,7 @@ def skin_set():
     return data
     
 # API
-@app.route('/api/w/<everything:name>')
+@app.route('/api/w/<everything:name>', methods=['POST', 'GET'])
 def api_w(name = ''):
     return api_w_2(conn, name)
     

+ 11 - 6
route/api_w.py

@@ -3,11 +3,16 @@ from .tool.func import *
 def api_w_2(conn, name):
     curs = conn.cursor()
 
-    curs.execute("select data from data where title = ?", [name])
-    data = curs.fetchall()
-    if data:
-        json_data = { "title" : name, "data" : render_set(title = name, data = data[0][0]) }
-    
+    if flask.request.method == 'POST':
+        json_data = { "title" : name, "data" : render_set(title = name, data = flask.request.form.get('data', '')) }
+        
         return flask.jsonify(json_data)
     else:
-        return flask.jsonify({})
+        curs.execute("select data from data where title = ?", [name])
+        data = curs.fetchall()
+        if data:
+            json_data = { "title" : name, "data" : render_set(title = name, data = data[0][0]) }
+        
+            return flask.jsonify(json_data)
+        else:
+            return flask.jsonify({})

+ 23 - 23
route/edit.py

@@ -13,22 +13,22 @@ def edit_2(conn, name):
         else:
             captcha_post('', 0)
 
-        if flask.request.form.get('otent', None) == flask.request.form.get('content', None):
+        if flask.request.form.get('otent', '') == flask.request.form.get('content', ''):
             return redirect('/w/' + url_pas(name))
             
         if edit_filter_do(flask.request.form.get('content', '')) == 1:
             return re_error('/error/21')
 
         today = get_time()
-        content = savemark(flask.request.form.get('content', None))
+        content = savemark(flask.request.form.get('content', ''))
         
         curs.execute("select data from data where title = ?", [name])
         old = curs.fetchall()
         if old:
-            leng = leng_check(len(flask.request.form.get('otent', None)), len(content))
+            leng = leng_check(len(flask.request.form.get('otent', '')), len(content))
             
             if flask.request.args.get('section', None):
-                content = old[0][0].replace(flask.request.form.get('otent', None), content)
+                content = old[0][0].replace(flask.request.form.get('otent', ''), content)
                 
             curs.execute("update data set data = ? where title = ?", [content, name])
         else:
@@ -69,7 +69,7 @@ def edit_2(conn, name):
                 test_data = '\n' + re.sub('\r\n', '\n', new[0][0]) + '\n'   
                 
                 section_data = re.findall('((?:={1,6}) ?(?:(?:(?!={1,6}\n).)+) ?={1,6}\n(?:(?:(?!(?:={1,6}) ?(?:(?:(?!={1,6}\n).)+) ?={1,6}\n).)*\n*)*)', test_data)
-                data = section_data[int(flask.request.args.get('section', None)) - 1]
+                data = section_data[int(flask.request.args.get('section', '1')) - 1]
             else:
                 data = new[0][0]
         else:
@@ -79,16 +79,14 @@ def edit_2(conn, name):
         
         if not flask.request.args.get('section', None):
             get_name =  '''
-                        <a href="/manager/15?plus=''' + url_pas(name) + '">(' + load_lang('load') + ')</a> <a href="/edit_filter">(' + load_lang('edit_filter_rule') + ''')</a>
-                        <hr class=\"main_hr\">
-                        '''
-            action = ''
+                <a href="/manager/15?plus=''' + url_pas(name) + '">(' + load_lang('load') + ')</a> <a href="/edit_filter">(' + load_lang('edit_filter_rule') + ''')</a>
+                <hr class=\"main_hr\">
+            '''
         else:
             get_name = ''
-            action = '?section=' + flask.request.args.get('section', None)
             
         if flask.request.args.get('plus', None):
-            curs.execute("select data from data where title = ?", [flask.request.args.get('plus', None)])
+            curs.execute("select data from data where title = ?", [flask.request.args.get('plus', 'test')])
             get_data = curs.fetchall()
             if get_data:
                 data = get_data[0][0]
@@ -99,17 +97,19 @@ def edit_2(conn, name):
         return easy_minify(flask.render_template(skin_check(), 
             imp = [name, wiki_set(), custom(), other2([' (' + load_lang('edit') + ')', 0])],
             data =  get_name + js_data[0] + '''
-                    <form method="post" action="/edit/''' + url_pas(name) + action + '''">
-                        ''' + js_data[1] + '''
-                        <textarea id="content" rows="25" name="content">''' + html.escape(re.sub('\n$', '', data)) + '''</textarea>
-                        <textarea style="display: none;" name="otent">''' + html.escape(re.sub('\n$', '', data_old)) + '''</textarea>
-                        <hr class=\"main_hr\">
-                        <input placeholder="''' + load_lang('why') + '''" name="send" type="text">
-                        <hr class=\"main_hr\">
-                        ''' + captcha_get() + ip_warring() + '''
-                        <button id="save" type="submit">''' + load_lang('save') + '''</button>
-                        <button id="preview" type="submit" formaction="/preview/''' + url_pas(name) + action + '">' + load_lang('preview') + '''</button>
-                    </form>
-                    ''',
+                <form method="post">
+                    ''' + js_data[1] + '''
+                    <textarea id="content" rows="25" id="content" name="content">''' + html.escape(re.sub('\n$', '', data)) + '''</textarea>
+                    <textarea style="display: none;" name="otent">''' + html.escape(re.sub('\n$', '', data_old)) + '''</textarea>
+                    <hr class=\"main_hr\">
+                    <input placeholder="''' + load_lang('why') + '''" name="send" type="text">
+                    <hr class=\"main_hr\">
+                    ''' + captcha_get() + ip_warring() + '''
+                    <button id="save" type="submit">''' + load_lang('save') + '''</button>
+                    <button id="preview" type="button" onclick="do_preview(\'''' + name + '\')">' + load_lang('preview') + '''</button>
+                </form>
+                <hr class=\"main_hr\">
+                <div id="see_preview"></div>
+            ''',
             menu = [['w/' + url_pas(name), load_lang('return')], ['delete/' + url_pas(name), load_lang('delete')], ['move/' + url_pas(name), load_lang('move')]]
         ))

+ 0 - 41
route/preview.py

@@ -1,41 +0,0 @@
-from .tool.func import *
-
-def preview_2(conn, name):
-    curs = conn.cursor()
-
-    if acl_check(name) == 1:
-        return re_error('/ban')
-         
-    new_data = re.sub('^\r\n', '', flask.request.form.get('content', None))
-    new_data = re.sub('\r\n$', '', new_data)
-    
-    end_data = render_set(
-        title = name,
-        data = new_data
-    )
-    
-    if flask.request.args.get('section', None):
-        action = '?section=' + flask.request.args.get('section', None)
-    else:
-        action = ''
-
-    js_data = edit_help_button()
-    
-    return easy_minify(flask.render_template(skin_check(), 
-        imp = [name, wiki_set(), custom(), other2([' (' + load_lang('preview') + ')', 0])],
-        data =  '<a href="/edit_filter">(' + load_lang('edit_filter_rule') + ')</a>' + js_data[0] + '''
-                <form method="post" action="/edit/''' + url_pas(name) + action + '''">
-                    ''' + js_data[1] + '''
-                    <textarea id="content" rows="25" name="content">''' + html.escape(flask.request.form.get('content', None)) + '''</textarea>
-                    <textarea style="display: none;" name="otent">''' + html.escape(flask.request.form.get('otent', None)) + '''</textarea>
-                    <hr class=\"main_hr\">
-                    <input placeholder="''' + load_lang('why') + '''" name="send" type="text">
-                    <hr class=\"main_hr\">
-                    ''' + captcha_get() + '''
-                    <button id="save" type="submit">''' + load_lang('save') + '''</button>
-                    <button id="preview" type="submit" formaction="/preview/''' + url_pas(name) + action + '">' + load_lang('preview') + '''</button>
-                </form>
-                <hr class=\"main_hr\">
-                ''' + end_data,
-        menu = [['w/' + url_pas(name), load_lang('return')]]
-    ))

+ 23 - 6
views/main_css/main.js

@@ -32,20 +32,17 @@ function topic_load(name, sub) {
             var xhr = new XMLHttpRequest();
             var doc_data = document.getElementById("plus");
 
-            xhr.open("GET", url);
+            xhr.open("GET", url, true);
             xhr.send(null);
 
             xhr.onreadystatechange = function() {
-                if(this.readyState === XMLHttpRequest.DONE && xhr.status === 200 && xhr.responseText !== "{}\n") {
-                    console.log(xhr.responseText);
-                    console.log(url);
-
+                if(this.readyState === 4 && this.status === 200 && this.responseText !== "{}\n") {
                     doc_data.innerText += '(New)\n\n';
 
                     clearInterval(test);
                 }
             }
-        }, 3000)
+        }, 1000)
     }, 4000);
 }
 
@@ -56,4 +53,24 @@ function folding(num) {
     } else {
         fol.style.display = 'block'; 
     } 
+}
+
+function do_preview(name) {
+    var o_data = document.getElementById('content');
+    var p_data = document.getElementById('see_preview');
+
+    var s_data = new FormData();
+    s_data.append('data', o_data.value);
+
+    var url = "/api/w/" + name;
+    
+    var xhr = new XMLHttpRequest();
+    xhr.open("POST", url, true);
+    xhr.send(s_data);
+
+    xhr.onreadystatechange = function() {
+        if(this.readyState === 4 && this.status === 200) {
+            p_data.innerHTML = JSON.parse(this.responseText)['data'];
+        }
+    }
 }