Bläddra i källkod

fix render & fix bug

잉여개발기 (SPDV) 3 år sedan
förälder
incheckning
072794b145

+ 4 - 4
route/tool/func.py

@@ -1011,10 +1011,10 @@ def wiki_css(data):
     data += ['' for _ in range(0, 3 - len(data))]
     
     data_css = ''
-    data_css_ver = '152'
+    data_css_ver = '154'
     
     # Func JS + Defer
-    data_css += '<script defer src="/views/main_css/js/func/func.js?ver=' + data_css_ver + '"></script>'
+    data_css += '<script src="/views/main_css/js/func/func.js?ver=' + data_css_ver + '"></script>'
     
     data_css += '<script defer src="/views/main_css/js/func/insert_version.js?ver=' + data_css_ver + '"></script>'
     data_css += '<script defer src="/views/main_css/js/func/insert_user_info.js?ver=' + data_css_ver + '"></script>'
@@ -1026,7 +1026,6 @@ def wiki_css(data):
     
     data_css += '<script defer src="/views/main_css/js/func/render_user_name.js?ver=' + data_css_ver + '"></script>'
     data_css += '<script defer src="/views/main_css/js/func/render_simple.js?ver=' + data_css_ver + '"></script>'
-    data_css += '<script defer src="/views/main_css/js/func/render_send.js?ver=' + data_css_ver + '"></script>'
     
     # Render JS
     data_css += '<script src="/views/main_css/js/render/markdown.js?ver=' + data_css_ver + '"></script>'
@@ -1236,7 +1235,8 @@ def render_set(doc_name = '', doc_data = '', data_type = 'view', data_in = '', d
         else:
             if doc_data != 0:
                 render_lang_data = {
-                    'toc' : load_lang('toc')
+                    'toc' : load_lang('toc'),
+                    'category' : load_lang('category')
                 }
                 get_class_render = class_do_render(conn, render_lang_data)
                 return get_class_render.do_render(doc_name, doc_data, data_type, data_in)

+ 121 - 2
route/tool/func_render_namumark.py

@@ -18,7 +18,7 @@ class class_do_render_namumark:
         self.data_math_count = 0
         
         self.data_toc = ''
-        self.data_footnote = ''
+        self.data_footnote = {}
         self.data_category = ''
 
         self.render_data = self.doc_data
@@ -95,6 +95,33 @@ class class_do_render_namumark:
 
         return data
 
+    def get_tool_footnote_make(self):
+        data = ''
+        for for_a in self.data_footnote:
+            if data == '':
+                data += '<div class="opennamu_footnote">'
+            else:
+                data += '<br>'
+
+            
+
+            if len(self.data_footnote[for_a]['list']) > 1:
+                data += '(' + for_a + ') '
+
+                for for_b in self.data_footnote[for_a]['list']:
+                    data += '<sup><a href="#rfn-' + for_b + '">(' + for_b + ')</a></sup> '
+            else:
+                data += '<a href="#rfn-' + self.data_footnote[for_a]['list'][0] + '">(' + for_a + ') </a> '
+
+            data += self.data_footnote[for_a]['data']
+
+        if data != '':
+            data += '</div>'
+
+        self.data_footnote = {}
+
+        return data
+
     def do_render_text(self):
         # <b> function
         def do_render_text_bold(match):
@@ -574,6 +601,33 @@ class class_do_render_namumark:
                     data_name = self.get_tool_data_storage(file_end, '', link_data_full)
 
                     self.render_data = re.sub(link_regex, '<' + data_name + '></' + data_name + '>', self.render_data, 1)
+                # category
+                elif re.search(r'^(분류|category):', link_main):
+                    link_main = re.sub(r'^(분류|category):', '', link_main)
+
+                    if self.data_category == '':
+                        self.data_category = '<div class="opennamu_category">' + self.get_tool_lang('category') + ' : '
+                    else:
+                        self.data_category += ' | '
+
+                    if link_data[1]:
+                        link_main += link_data[1]
+
+                    category_blur = ''
+                    if re.search(r'#blur$', link_main):
+                        link_main = re.sub(r'#blur$', '', link_main)
+
+                        category_blur = 'class="opennamu_category_blur"'
+                    
+                    link_sub = 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)
+
+                    self.data_category += '<a ' + category_blur + ' href="/w/' + link_main + '">' + link_sub + '</a>'
+
+                    self.render_data = re.sub(link_regex, '', self.render_data, 1)
                 # out link
                 elif re.search(r'^https?:\/\/', link_main):
                     link_main = self.get_tool_data_restore(link_main, do_type = 'slash')
@@ -634,6 +688,19 @@ class class_do_render_namumark:
 
             link_count_all -= 1
 
+        if self.data_category != '':
+            data_name = self.get_tool_data_storage(self.data_category, '</div>', '')
+
+            print(flask.request.cookies.get('main_css_category_set', ''))
+            if flask.request.cookies.get('main_css_category_set', '') == '':
+                if re.search(r'<footnote_category>', self.render_data):
+                    self.render_data = re.sub(r'<footnote_category>', '<' + data_name + '></' + data_name + '>', self.render_data, 1)
+                else:
+                    self.render_data += '<' + data_name + '></' + data_name + '>'
+            else:
+                self.render_data = re.sub(r'<footnote_category>', '', self.render_data, 1)
+                self.render_data = '<' + data_name + '></' + data_name + '>' + self.render_data
+
     def do_render_slash(self):
         # slash text -> <slash_n>
         
@@ -656,6 +723,57 @@ class class_do_render_namumark:
     def do_render_table(self):
         pass
 
+    def do_redner_footnote(self):
+        footnote_num = 0
+        footnote_regex = r'(?:\[\*((?:(?!\[\*|\]| ).)+)?(?: ((?:(?!\[\*|\]).)+))?\]|\[(각주|footnote)\])'
+        footnote_count_all = len(re.findall(footnote_regex, self.render_data)) * 4
+        while 1:
+            footnote_num += 1
+
+            footnote_data = re.search(footnote_regex, self.render_data)
+            if footnote_count_all < 0:
+                break
+            elif not footnote_data:
+                break
+            else:
+                footnote_data_org = footnote_data.group(0)
+                footnote_data = footnote_data.groups()
+                if footnote_data[2]:
+                    self.render_data = re.sub(footnote_regex, self.get_tool_footnote_make(), self.render_data, 1)
+                else:
+                    if not footnote_data[0]:
+                        footnote_name = str(footnote_num)
+                        footnote_name_add = ''
+                    else:
+                        footnote_name = footnote_data[0]
+                        footnote_name_add = ' (' + str(footnote_num) + ')'
+
+                    if not footnote_data[1]:
+                        footnote_text_data = ''
+                    else:
+                        footnote_text_data = footnote_data[1]
+
+                    if footnote_name in self.data_footnote:
+                        self.data_footnote[footnote_name]['list'] += [str(footnote_num)]
+                        footnote_first = self.data_footnote[footnote_name]['list'][0]
+                    
+                        data_name = self.get_tool_data_storage('<sup><a id="rfn-' + str(footnote_num) + '" href="#fn-' + footnote_first + '">(' + footnote_name + ' (' + str(footnote_num) + ')' + ')</a></sup>', '', footnote_data_org)
+
+                        self.render_data = re.sub(footnote_regex, '<' + data_name + '></' + data_name + '>', self.render_data, 1)
+                    else:
+                        self.data_footnote[footnote_name] = {}
+                        self.data_footnote[footnote_name]['list'] = [str(footnote_num)]
+                        self.data_footnote[footnote_name]['data'] = footnote_text_data
+
+                        data_name = self.get_tool_data_storage('<sup><a id="rfn-' + str(footnote_num) + '" href="#fn-' + str(footnote_num) + '">(' + footnote_name + footnote_name_add + ')</a></sup>', '', footnote_data_org)
+
+                        self.render_data = re.sub(footnote_regex, '<' + data_name + '></' + data_name + '>', self.render_data, 1)
+
+            footnote_count_all -= 1
+
+        self.render_data += '<footnote_category>'
+        self.render_data += self.get_tool_footnote_make()
+
     def do_render_last(self):
         # remove front_br and back_br
         self.render_data = re.sub(r'\n?<front_br>', '', self.render_data)
@@ -675,8 +793,9 @@ class class_do_render_namumark:
         # self.do_render_middle()
         # self.do_render_list()
         # self.do_render_table()
-        self.do_render_macro()
         self.do_render_link()
+        self.do_redner_footnote()
+        self.do_render_macro()
         self.do_render_text()
         self.do_render_heading()
         self.do_render_last()

+ 34 - 12
views/main_css/css/main.css

@@ -122,7 +122,8 @@ a {
     height: 200px;
 }
 
-/* 위키 내용 관련 */
+/* render */
+/* - toc */
 #toc, .opennamu_TOC {
     border: 1px solid gainsboro;
     padding: 20px;
@@ -135,22 +136,49 @@ a {
     margin-top: 10px;
 }
 
-#cate, pre, #redirect {
+#toc_title, .opennamu_TOC_title {
+    font-size: 1.2rem;
+}
+
+/* - category */
+.opennamu_category {
     border: 1px solid gainsboro;
     
     padding: 10px;
 }
 
+.opennamu_category_blur {
+    filter: blur(5px);
+}
+
+.opennamu_category_blur:hover {
+    filter: none;
+}
+
 #cate {
     margin-top: 20px;
 }
+/* - footnote */
+.opennamu_footnote {
+    border-top: 1px solid gainsboro;
 
-pre {    
-    white-space: pre-wrap;
+    padding-top: 10px;
 }
 
-#toc_title, .opennamu_TOC_title {
-    font-size: 1.2rem;
+#footnote_data {
+    border-top: 1px solid gainsboro;
+    
+    padding-top: 10px;
+}
+
+#cate, pre, #redirect {
+    border: 1px solid gainsboro;
+    
+    padding: 10px;
+}
+
+pre {    
+    white-space: pre-wrap;
 }
 
 @media (max-width: 768px) {
@@ -174,12 +202,6 @@ pre {
     border: 1px solid #cecece;
 }
 
-#footnote_data {
-    border-top: 1px solid gainsboro;
-    
-    padding-top: 10px;
-}
-
 hr {
     border: 0;
     border-top: 1px solid gainsboro;

+ 2 - 1
views/main_css/js/func/render_simple.js

@@ -73,7 +73,8 @@ let opennamu_do_render_simple_url = [
     '/other',
     '/setting/phrase',
     '/setting/main',
-    '/setting/external'
+    '/setting/external',
+    '/change/skin_set/main'
 ];
 if(opennamu_do_render_simple_url.includes(window.location.pathname)) {
     opennamu_do_render_simple('opennamu_simple_render');

+ 51 - 51
views/main_css/js/load_skin_set.js

@@ -418,58 +418,58 @@ function main_css_skin_set() {
     }
 
     document.getElementById("main_skin_set").innerHTML = ' \
-        <h2>1. ' + main_css_load_lang('renderer') + '</h2> \
-        <h3>1.1. ' + main_css_load_lang('strike') + '</h3> \
-        <select id="main_css_strike"> \
-            ' + set_data["strike"] + ' \
-        </select> \
-        <h3>1.2. ' + main_css_load_lang('bold') + '</h3> \
-        <select id="main_css_bold"> \
-            ' + set_data["bold"] + ' \
-        </select> \
-        <h3>1.3. ' + main_css_load_lang('where_category') + '</h3> \
-        <select id="main_css_category"> \
-            ' + set_data["category"] + ' \
-        </select> \
-        <h3>1.4. ' + main_css_load_lang('set_footnote') + '</h3> \
-        <select id="main_css_footnote"> \
-            ' + set_data["footnote"] + ' \
-        </select> \
-        <h3>1.5. ' + main_css_load_lang('set_image') + '</h3> \
-        <select id="main_css_image"> \
-            ' + set_data["image"] + ' \
-        </select> \
-        <h3>1.6. ' + main_css_load_lang('other') + '</h3> \
-        <input ' + set_data["include"] + ' type="checkbox" id="main_css_include" value="include"> ' + main_css_load_lang('include_link') + ' \
-        <hr class="main_hr"> \
-        <input ' + set_data["link_delimiter"] + ' type="checkbox" id="main_css_link_delimiter" value="link_delimiter"> ' + main_css_load_lang('link_delimiter') + '<sup>(1)</sup> \
-        <h3>1.7. ' + main_css_load_lang('set_toc') + '</h3> \
-        <select id="main_css_toc"> \
-            ' + set_data["toc"] + ' \
-        </select> \
-        <h3>1.8. ' + main_css_load_lang('set_font_size') + '</h3> \
-        <input id="main_css_font_size" placeholder="' + main_css_load_lang('font_size') + ' (EX : 11)" value="' + set_data["font_size"] + '"> \
-        <h3>1.9. ' + main_css_load_lang('exter_link_open_method') + '</h3> \
-        <select id="main_css_exter_link"> \
-            ' + set_data["exter_link"] + ' \
-        </select> \
-        <h2>2. ' + main_css_load_lang('editor') + '</h2> \
-        <h3>2.1. ' + main_css_load_lang('main') + '</h3> \
-        <input ' + set_data["monaco"] + ' type="checkbox" id="main_css_monaco" value="monaco"> ' + main_css_load_lang('use_monaco') + '<sup>(1)</sup> \
-        <hr class="main_hr"> \
-        <input ' + set_data["image_paste"] + ' type="checkbox" id="main_css_image_paste" value="image_paste"> ' + 
-            main_css_load_lang('clipboard_upload') + '<sup>(ko-KR)</sup><sup>(1)</sup> \
-        <hr class="main_hr"> \
-        <button onclick="main_css_get_post();">' + main_css_load_lang('save') + '</button> \
-        <hr class="main_hr"> \
-        <ul id="footnote_data"> \
-            <li><a id="note_1_end" href="#note_1">(1)</a> ' + main_css_load_lang('except_ie') + '</li> \
-            <li><a href="#note_1_1">(1.1)</a></li> \
-            <li><a id="note_2_end" href="#note_2">(ko-KR)</a> ' + main_css_load_lang('only_korean') + '</li> \
-        </ul> \
+        <div id="opennamu_simple_render"> \
+            <h2>1. ' + main_css_load_lang('renderer') + '</h2> \
+            <h3>1.1. ' + main_css_load_lang('strike') + '</h3> \
+            <select id="main_css_strike"> \
+                ' + set_data["strike"] + ' \
+            </select> \
+            <h3>1.2. ' + main_css_load_lang('bold') + '</h3> \
+            <select id="main_css_bold"> \
+                ' + set_data["bold"] + ' \
+            </select> \
+            <h3>1.3. ' + main_css_load_lang('where_category') + '</h3> \
+            <select id="main_css_category"> \
+                ' + set_data["category"] + ' \
+            </select> \
+            <h3>1.4. ' + main_css_load_lang('set_footnote') + '</h3> \
+            <select id="main_css_footnote"> \
+                ' + set_data["footnote"] + ' \
+            </select> \
+            <h3>1.5. ' + main_css_load_lang('set_image') + '</h3> \
+            <select id="main_css_image"> \
+                ' + set_data["image"] + ' \
+            </select> \
+            <h3>1.6. ' + main_css_load_lang('other') + '</h3> \
+            <input ' + set_data["include"] + ' type="checkbox" id="main_css_include" value="include"> ' + main_css_load_lang('include_link') + ' \
+            <hr class="main_hr"> \
+            <input ' + set_data["link_delimiter"] + ' type="checkbox" id="main_css_link_delimiter" value="link_delimiter"> ' + main_css_load_lang('link_delimiter') + '<sup>(1)</sup> \
+            <h3>1.7. ' + main_css_load_lang('set_toc') + '</h3> \
+            <select id="main_css_toc"> \
+                ' + set_data["toc"] + ' \
+            </select> \
+            <h3>1.8. ' + main_css_load_lang('set_font_size') + '</h3> \
+            <input id="main_css_font_size" placeholder="' + main_css_load_lang('font_size') + ' (EX : 11)" value="' + set_data["font_size"] + '"> \
+            <h3>1.9. ' + main_css_load_lang('exter_link_open_method') + '</h3> \
+            <select id="main_css_exter_link"> \
+                ' + set_data["exter_link"] + ' \
+            </select> \
+            <h2>2. ' + main_css_load_lang('editor') + '</h2> \
+            <h3>2.1. ' + main_css_load_lang('main') + '</h3> \
+            <input ' + set_data["monaco"] + ' type="checkbox" id="main_css_monaco" value="monaco"> ' + main_css_load_lang('use_monaco') + '<sup>(1)</sup> \
+            <hr class="main_hr"> \
+            <input ' + set_data["image_paste"] + ' type="checkbox" id="main_css_image_paste" value="image_paste"> ' + 
+                main_css_load_lang('clipboard_upload') + '<sup>(ko-KR)</sup><sup>(1)</sup> \
+            <hr class="main_hr"> \
+            <button onclick="main_css_get_post();">' + main_css_load_lang('save') + '</button> \
+            <hr class="main_hr"> \
+            <ul id="footnote_data"> \
+                <li><a id="note_1_end" href="#note_1">(1)</a> ' + main_css_load_lang('except_ie') + '</li> \
+                <li><a href="#note_1_1">(1.1)</a></li> \
+                <li><a id="note_2_end" href="#note_2">(ko-KR)</a> ' + main_css_load_lang('only_korean') + '</li> \
+            </ul> \
+        </div> \
     ';
- 
-    opennamu_do_render_simple('main_skin_set');
 }
 
 document.addEventListener("DOMContentLoaded", main_css_skin_load);