Explorar o código

add redirect to render

잉여개발기 (SPDV) %!s(int64=3) %!d(string=hai) anos
pai
achega
5b802f87ca
Modificáronse 4 ficheiros con 63 adicións e 25 borrados
  1. 8 20
      route/tool/func_render.py
  2. 52 3
      route/tool/func_render_namumark.py
  3. 2 1
      route/view_read.py
  4. 1 1
      version.json

+ 8 - 20
route/tool/func_render.py

@@ -106,7 +106,13 @@ class class_do_render:
         conn = self.conn
         curs = self.conn.cursor()
 
-        data_in = None if data_in == '' else data_in
+        doc_set = {}
+        if data_in == 'from':
+            data_in = ''
+            doc_set['doc_from'] = 'O'
+        
+        data_in = (data_in + '_') if data_in != '' else ''
+        doc_set['doc_include'] = data_in
 
         curs.execute(db_change('select data from other where name = "markup"'))
         rep_data = curs.fetchall()
@@ -114,7 +120,6 @@ class class_do_render:
 
         if data_type != 'backlink':
             if rep_data == 'namumark':
-                data_in = (data_in + '_') if data_in else ''
                 doc_data = html.escape(doc_data)
                 doc_name = html.escape(doc_name)
                 
@@ -132,30 +137,13 @@ class class_do_render:
                     {}
                 ]
             elif rep_data == 'namumark_beta':
-                doc_include = (data_in + '_') if data_in else ''
                 data_end = class_do_render_namumark(
                     curs,
                     doc_name,
                     doc_data,
-                    doc_include,
+                    doc_set,
                     self.lang_data
                 )()
-            elif rep_data == 'markdown':
-                data_in = (data_in + '_') if data_in else ''
-                doc_data = html.escape(doc_data)
-                doc_name = html.escape(doc_name)
-                
-                data_end = [
-                    '<pre class="render_content_load" id="' + data_in + 'render_content_load">' + html.escape(doc_data) + '</pre>' + \
-                    '<div class="render_content" id="' + data_in + 'render_content" style="display: none;"></div>', 
-                    'new opennamu_render_markdown(' + \
-                        'render_part_id = "render_content_load",' + \
-                        'render_part_id_after = "render_content",' + \
-                        'render_part_id_add = "' + data_in + '",' + \
-                        'doc_name = "' + doc_name + '"' + \
-                    ').do_main();',
-                    {}
-                ]
             else:
                 data_end = [
                     doc_data, 

+ 52 - 3
route/tool/func_render_namumark.py

@@ -1,12 +1,13 @@
 from .func_tool import *
 
 class class_do_render_namumark:
-    def __init__(self, curs, doc_name, doc_data, doc_include, lang_data):
+    def __init__(self, curs, doc_name, doc_data, doc_set, lang_data):
         self.curs = curs
         
         self.doc_data = doc_data
         self.doc_name = doc_name
-        self.doc_include = doc_include
+        self.doc_set = doc_set
+        self.doc_include = self.doc_set['doc_include'] if 'doc_include' in self.doc_set else ''
 
         self.lang_data = lang_data
 
@@ -696,12 +697,16 @@ class class_do_render_namumark:
                     else:
                         link_data_sharp = ''
 
-                    # under page
+                    # under page & fix url
                     if link_main == '../':
                         link_main = self.doc_name
                         link_main = re.sub(r'(\/[^/]+)$', '', link_main)
                     elif re.search(r'^\/', link_main):
                         link_main = re.sub(r'^\/', self.doc_name + '/', link_main)
+                    elif re.search(r'^분류:', link_main):
+                        link_main = re.sub(r'^분류:', 'category:', link_main)
+                    elif re.search(r'^사용자:', link_main):
+                        link_main = re.sub(r'^사용자:', 'user:', link_main)
 
                     # main link fix
                     link_main = self.get_tool_data_restore(link_main, do_type = 'slash')
@@ -929,6 +934,49 @@ class class_do_render_namumark:
         self.render_data += '<footnote_category>'
         self.render_data += self.get_tool_footnote_make()
 
+    def do_render_redirect(self):
+        match = re.search(r'^<back_br>\n#(?:redirect|넘겨주기) ([^\n]+)', self.render_data)
+        if match:
+            link_data_full = match.group(0)
+            link_main = match.group(1)
+
+            # sharp
+            link_data_sharp_regex = r'#([^#]+)$'
+            link_data_sharp = re.search(link_data_sharp_regex, link_main)
+            if link_data_sharp:
+                link_data_sharp = link_data_sharp.group(1)
+                link_data_sharp = html.unescape(link_data_sharp)
+                link_data_sharp = '#' + url_pas(link_data_sharp)
+
+                link_main = re.sub(link_data_sharp_regex, '', link_main)
+            else:
+                link_data_sharp = ''
+
+            # under page & fix url
+            if link_main == '../':
+                link_main = self.doc_name
+                link_main = re.sub(r'(\/[^/]+)$', '', link_main)
+            elif re.search(r'^\/', link_main):
+                link_main = re.sub(r'^\/', self.doc_name + '/', link_main)
+            elif re.search(r'^분류:', link_main):
+                link_main = re.sub(r'^분류:', 'category:', link_main)
+            elif re.search(r'^사용자:', link_main):
+                link_main = re.sub(r'^사용자:', 'user:', link_main)
+
+            link_main = self.get_tool_data_restore(link_main, do_type = 'slash')
+            link_main = html.unescape(link_main)
+            link_main = url_pas(link_main)
+
+            if link_main != '':
+                link_main = '/w_from/' + link_main
+
+            if 'doc_from' in self.doc_set:
+                data_name = self.get_tool_data_storage('<a href="' + link_main + link_data_sharp + '">(GO)</a>', link_data_full)
+            else:
+                data_name = self.get_tool_data_storage('<meta http-equiv="refresh" content="0; url=' + link_main + link_data_sharp + '">', link_data_full)
+                
+            self.render_data = '<' + data_name + '></' + data_name + '>'
+
     def do_render_last(self):
         # add category
         if self.doc_include == '':
@@ -963,6 +1011,7 @@ class class_do_render_namumark:
     def __call__(self):
         self.do_render_include_default()
         self.do_render_slash()
+        self.do_render_redirect()
         self.do_render_include()
         self.do_render_math()
         # self.do_render_middle()

+ 2 - 1
route/view_read.py

@@ -143,7 +143,8 @@ def view_read(name = 'Test', doc_rev = 0, doc_from = '', do_type = ''):
         data = curs.fetchall()
         end_data = render_set(
             doc_name = name,
-            doc_data = data[0][0] if data else None
+            doc_data = data[0][0] if data else None,
+            data_in = 'from' if do_type == 'from' else ''
         )
 
         if end_data == 'HTTP Request 401.3':

+ 1 - 1
version.json

@@ -1,6 +1,6 @@
 {
     "beta" : {
-        "r_ver" : "v3.4.5 (stable2) (beta3) (dev62)",
+        "r_ver" : "v3.4.5 (stable2) (beta4) (dev63)",
         "c_ver" : "3500354",
         "s_ver" : "3500110"
     }