Browse Source

스킨 버전 가져오는 API

Surplus_Up (2DU) 7 years ago
parent
commit
8933b42782
7 changed files with 44 additions and 28 deletions
  1. 4 0
      app.py
  2. 15 0
      route/api_skin_info.py
  3. 2 4
      route/edit.py
  4. 4 24
      route/tool/func.py
  5. 1 0
      route/topic.py
  6. 17 0
      views/main_css/js/insert_data.js
  7. 1 0
      views/neo_yousoro/info.json

+ 4 - 0
app.py

@@ -584,6 +584,10 @@ def api_raw(name = ''):
 def api_version():
     return api_version_2(conn, r_ver, c_ver)
 
+@app.route('/api/skin_info')
+def api_skin_info():
+    return api_skin_info_2(conn)
+
 @app.route('/api/topic/<everything:name>/sub/<sub>')
 def api_topic_sub(name = '', sub = '', time = ''):
     return api_topic_sub_2(conn, name, sub, time)

+ 15 - 0
route/api_skin_info.py

@@ -0,0 +1,15 @@
+from .tool.func import *
+
+def api_skin_info_2(conn):
+    curs = conn.cursor()
+
+    json_address = re.sub("(((?!\.|\/).)+)\.html$", "info.json", skin_check())
+    try:
+        json_data = json.loads(open(json_address).read())
+    except:
+        json_data = None
+
+    if json_data:    
+        return flask.jsonify(json_data)
+    else:
+        return flask.jsonify({})

+ 2 - 4
route/edit.py

@@ -92,13 +92,11 @@ def edit_2(conn, name):
                 data = get_data[0][0]
                 get_name = ''
 
-        js_data = edit_help_button()
-
         return easy_minify(flask.render_template(skin_check(), 
             imp = [name, wiki_set(), custom(), other2([' (' + load_lang('edit') + ')', 0])],
-            data =  get_name + js_data[0] + '''
+            data =  get_name + '''
                 <form method="post">
-                    ''' + js_data[1] + '''
+                    ''' + edit_button() + '''
                     <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\">

+ 4 - 24
route/tool/func.py

@@ -96,7 +96,7 @@ def send_email(who, title, data):
         print('Error : Email login error')
 
 def last_change(data):
-    json_address = re.sub("\.html$", ".json", skin_check())
+    json_address = re.sub("(((?!\.|\/).)+)\.html$", "set.json", skin_check())
     try:
         json_data = json.loads(open(json_address).read())
     except:
@@ -357,35 +357,14 @@ def ip_or_user(data):
     else:
         return 0
 
-def edit_help_button():
-    # https://stackoverflow.com/questions/11076975/insert-text-into-textarea-at-cursor-position-javascript
-    js_data = '''
-        <script>
-            function insert_data(name, data) {
-                if(document.selection) { 
-                    document.getElementById(name).focus();
-
-                    sel = document.selection.createRange();
-                    sel.text = data; 
-                } else if(document.getElementById(name).selectionStart || document.getElementById(name).selectionStart == '0') {
-                    var startPos = document.getElementById(name).selectionStart;
-                    var endPos = document.getElementById(name).selectionEnd;
-
-                    document.getElementById(name).value = document.getElementById(name).value.substring(0, startPos) + data + document.getElementById(name).value.substring(endPos, document.getElementById(name).value.length); 
-                } else {
-                    document.getElementById(name).value += data;
-                }
-            }
-        </script>
-    '''
-
+def edit_button():
     insert_list = [['[[|]]', '[[|]]'], ['[*()]', '[*()]'], ['{{{#!}}}', '{{{#!}}}'], ['||<>||', '||<>||'], ["\\'\\'\\'", "\'\'\'"]]
 
     data = ''
     for insert_data in insert_list:
         data += '<a href="javascript:void(0);" onclick="insert_data(\'content\', \'' + insert_data[0] + '\');">(' + insert_data[1] + ')</a> '
 
-    return [js_data, data + '<hr class=\"main_hr\">']
+    return data + '<hr class=\"main_hr\">'
 
 def ip_warring():
     if custom()[2] == 0:    
@@ -444,6 +423,7 @@ def other2(data):
         <script src="/views/main_css/js/topic_load.js"></script>
         <script src="/views/main_css/js/do_preview.js"></script>
         <script src="/views/main_css/js/load_ver.js"></script>
+        <script src="/views/main_css/js/insert_data.js"></script>
         <script src="https://cdn.jsdelivr.net/npm/katex@0.10.1/dist/katex.min.js"
                 integrity="sha384-2BKqo+exmr9su6dir+qCw08N2ZKRucY4PrGQPPWU1A7FtlCGjmEGFqXCv5nyM5Ij"
                 crossorigin="anonymous"></script>

+ 1 - 0
route/topic.py

@@ -36,6 +36,7 @@ def topic_2(conn, name, sub):
         
         cate_re = re.compile('\[\[((?:분류|category):(?:(?:(?!\]\]).)*))\]\]', re.I)
         data = cate_re.sub('[br]', flask.request.form.get('content', 'Test'))
+        
         for rd_data in re.findall("(?:#([0-9]+))", data):
             curs.execute("select ip from topic where title = ? and sub = ? and id = ?", [name, sub, rd_data])
             ip_data = curs.fetchall()

+ 17 - 0
views/main_css/js/insert_data.js

@@ -0,0 +1,17 @@
+// https://stackoverflow.com/questions/11076975/insert-text-into-textarea-at-cursor-position-javascript
+
+function insert_data(name, data) {
+    if(document.selection) { 
+        document.getElementById(name).focus();
+
+        sel = document.selection.createRange();
+        sel.text = data; 
+    } else if(document.getElementById(name).selectionStart || document.getElementById(name).selectionStart == '0') {
+        var startPos = document.getElementById(name).selectionStart;
+        var endPos = document.getElementById(name).selectionEnd;
+
+        document.getElementById(name).value = document.getElementById(name).value.substring(0, startPos) + data + document.getElementById(name).value.substring(endPos, document.getElementById(name).value.length); 
+    } else {
+        document.getElementById(name).value += data;
+    }
+}

+ 1 - 0
views/neo_yousoro/version.json → views/neo_yousoro/info.json

@@ -1,4 +1,5 @@
 {
+    "name" : "Neo_Yousoro",
     "skin_ver" : "v1.0.0",
     "require_ver" : "1"
 }