ect (or 2du) 8 سال پیش
والد
کامیت
e174bb7944
3فایلهای تغییر یافته به همراه76 افزوده شده و 58 حذف شده
  1. 14 17
      app.py
  2. 58 40
      set_mark/start.py
  3. 4 1
      views/acme/css/style-responsive.css

+ 14 - 17
app.py

@@ -923,7 +923,7 @@ def please():
     data_list = curs.fetchall()
     for data in data_list:
         if var != data[0]:
-            div += '<li><a class="not_thing" href="/w/' + url_pas(data[0]) + '">' + data[0] + '</a></li>'        
+            div += '<li><a id="not_thing" href="/w/' + url_pas(data[0]) + '">' + data[0] + '</a></li>'        
             var = data[0]
         
     div += '</ul>' + next_fix('/please?num=', num, data_list)
@@ -1110,7 +1110,7 @@ def deep_search(name = None):
     if curs.fetchall():
         div = '<ul><li>문서로 <a href="/w/' + url_pas(name) + '">바로가기</a></li></ul><hr><ul>'
     else:
-        div = '<ul><li>문서가 없습니다. <a class="not_thing" href="/w/' + url_pas(name) + '">바로가기</a></li></ul><hr><ul>'
+        div = '<ul><li>문서가 없습니다. <a id="not_thing" href="/w/' + url_pas(name) + '">바로가기</a></li></ul><hr><ul>'
 
     curs.execute("select distinct title, case when title like ? then '제목' else '내용' end from data where title like ? or data like ? order by case when title like ? then 1 else 2 end limit ?, '50'", ['%' + name + '%', '%' + name + '%', '%' + name + '%', '%' + name + '%', str(sql_num)])
     all_list = curs.fetchall()
@@ -2186,7 +2186,7 @@ def close_topic_list(name = None, tool = None):
             curs.execute("select sub from rd where title = ? order by date desc", [name])
             sub = '토론 목록'
             menu = [['w/' + url_pas(name), '문서']]
-            plus =  '<a href="/topic/' + url_pas(name) + '/close">(닫힘)</a> <a href="/topic/' + url_pas(name) + '/agree">(합의)</a><hr><input placeholder="토론명" class="form-control" name="topic" type="text"><hr><button type="submit">만들기</button>'
+            plus =  '<a href="/topic/' + url_pas(name) + '/close">(닫힘)</a> <a href="/topic/' + url_pas(name) + '/agree">(합의)</a><hr><input placeholder="토론명" name="topic" type="text"><hr><button type="submit">만들기</button>'
 
         for data in curs.fetchall():
             curs.execute("select data, date, ip, block from topic where title = ? and sub = ? and id = '1'", [name, data[0]])
@@ -2573,7 +2573,7 @@ def user_ban(name = None):
             data += '<select name="day">' + day + '</select> 일 <hr>'
             data += '<select name="hour">' + hour + '</select> 시 '
             data += '<select name="minu">' + minu + '</select> 분 까지<hr>'
-            data += '<input placeholder="사유" class="form-control" name="why" type="text"><br>' + plus
+            data += '<input placeholder="사유" name="why" type="text"><br>' + plus
 
         return html_minify(template('index', 
             imp = [name, wiki_set(conn, 1), custom(conn), other2([' (' + now + ')', 0])],
@@ -2822,29 +2822,29 @@ def read_view(name = None):
         curs.execute("select link from back where title = ? and type='cat' order by link asc", [name])
         back = curs.fetchall()
         if back:
-            div = '[목차(없음)]\r\n== 분류 ==\r\n'
+            div = '<br><h2 id="cate_normal">분류</h2><ul>'
             u_div = ''
             i = 0
             
             for data in back:       
                 if re.search('^분류:', data[0]):
                     if u_div == '':
-                        u_div = '=== 하위 분류 ===\r\n'
+                        u_div = '</ul><br><h3 id="cate_under">하위 분류</h3><ul>'
 
-                    u_div += ' * [[:' + data[0] + ']]\r\n'
+                    u_div += '<li><a href="' + url_pas(data[0]) + '">' + data[0] + '</a></li>'
                 elif re.search('^틀:', data[0]):
                     curs.execute("select data from data where title = ?", [data[0]])
                     db_data = curs.fetchall()
                     if db_data:
                         # cat_data = re.sub("\[\[(분류:(?:(?:(?!\]\]|#include).)+))\]\]", "", mid_pas(db_data[0][0], 0, 1, 0, 0)[0])
-                        if re.search('\[\[' + name + '|include]]', cat_data):
-                            div += ' * [[' + data[0] + ']]\r\n * [[wiki:xref/' + url_pas(data[0]) + '|' + data[0] + ']] (역링크)\r\n'
-                        else:
-                            div += ' * [[' + data[0] + ']]\r\n'
+                        # if re.search('\[\[' + name + '|include]]', cat_data):
+                            # div += '<li><a href="' + url_pas(data[0]) + '">' + data[0] + '</a></li><li><a href="/xref/' + url_pas(data[0]) + '>' + data[0] + '</a> (역링크)</li>'
+                        # else:
+                        div += '<li><a href="' + url_pas(data[0]) + '">' + data[0] + '</a></li>'
                 else:
-                    div += ' * [[' + data[0] + ']]\r\n'
+                    div += '<li><a href="' + url_pas(data[0]) + '">' + data[0] + '</a></li>'
 
-            div += u_div
+            div += '</ul>' + u_div
 
     if num:
         curs.execute("select title from history where title = ? and id = ? and hide = 'O'", [name, str(num)])
@@ -2941,10 +2941,7 @@ def read_view(name = None):
         else:
             r_date = 0
 
-    if div != '' and end_data != '':
-        div = end_data + '<br>' + namumark(conn, name, div, 0, 0, 0)
-    else:
-        div = end_data + namumark(conn, name, div, 0, 0, 0)
+    div = end_data + div
 
     return html_minify(template('index', 
         imp = [name, wiki_set(conn, 1), custom(conn), other2([sub + acl, r_date])],

+ 58 - 40
set_mark/start.py

@@ -119,9 +119,19 @@ def start(conn, data, title):
     # XSS 이스케이프
     data = html.escape(data)
 
-    data = re.sub('&lt;(?P<in>(table|row)? ?(text|bg|border|width|height|class)?(color|align)?(=(((?!&gt;).)+))|\(|:|\)|(-|\|)[0-9]+|(#(?:[0-9a-f-A-F]{3}){1,2})|(\w+))&gt;', '<\g<in>>', data)
     data = re.sub('&lt;(?P<in>\/?math)&gt;', '<\g<in>>', data)
-    
+
+    while 1:
+        table_back = re.search('\|\|((?:&lt;(?:(?:(?!&gt;)))&gt;)+)', data)
+        if table_back:
+            table_back = table_back.groups()[0]
+
+            table_back = re.sub('&lt;', '<', table_back)
+            table_back = re.sub('&gt;', '>', table_back)
+
+            data = re.sub('\|\|((?:&lt;(?:(?:(?!&gt;)))&gt;)+)', '\|\|' + table_back, data, 1)
+        else:
+            break
 
     while 1:
         block_back = re.search('\r\n((?:&gt;)+)', data)
@@ -149,6 +159,7 @@ def start(conn, data, title):
             else:
                 include_data = 'Test'
 
+            include_link = include
             include = re.sub('^((?:(?!,).)+)', '', include)
 
             curs.execute("select data from data where title = ?", [include_data])
@@ -170,8 +181,9 @@ def start(conn, data, title):
 
                 data = re.sub('\[include\(((?:(?!\)\]).)+)\)\]', '\r\n' + include_parser + '\r\n', data, 1)
             else:
-                data = re.sub('\[include\(((?:(?!\)\]).)+)\)\]', '[[' + include + ']]', data, 1)
+                include_link = re.sub('(, ?(?:(?:(?!,).)+))+$', '', include_link)
 
+                data = re.sub('\[include\(((?:(?!\)\]).)+)\)\]', '[[' + include_link + ']]', data, 1)
         else:
             break
 
@@ -209,42 +221,6 @@ def start(conn, data, title):
     # 넘겨주기 변환
     data = re.sub('\r\n#(?:redirect|넘겨주기) (?P<in>(?:(?!\r\n).)+)\r\n', '<meta http-equiv="refresh" content="0; url=/w/\g<in>?froms=' + tool.url_pas(title) + '">', data)
 
-    # 각주 처리
-    footnote_number = 0
-    footnote_all = '\r\n<hr><ul id="footnote_data">'
-    while 1:
-        footnote = re.search('(?:\[\*((?:(?! ).)*) ((?:(?!\]).)+)\]|(\[각주\]))', data)
-        if footnote:
-            footnote_data = footnote.groups()
-
-            if footnote_data[2]:
-                footnote_all += '</ul>'
-
-                data = re.sub('(?:\[\*((?:(?! ).)*) ((?:(?!\]).)+)\]|(\[각주\]))', footnote_all, data, 1)
-
-                footnote_all = '\r\n<hr><ul id="footnote_data">'
-            else:
-                footnote = footnote_data[1]
-                footnote_name = footnote_data[0]
-
-                footnote_number += 1
-
-                if not footnote_name:
-                    footnote_name = str(footnote_number)
-
-                footnote_all += '<li><a href="#rfn-' + str(footnote_number) + '" id="fn-' + str(footnote_number) + '">(' + footnote_name + ')</a> ' + footnote + '</li>'
-
-                data = re.sub('(?:\[\*((?:(?! ).)*) ((?:(?!\]).)+)\]|(\[각주\]))', '<sup><a href="#fn-' + str(footnote_number) + '" id="rfn-' + str(footnote_number) + '">(' + footnote_name + ')</a></sup>', data, 1)
-        else:
-            break
-
-    footnote_all += '</ul>'
-
-    if footnote_all == '\r\n<hr><ul id="footnote_data"></ul>':
-        footnote_all = ''
-
-    data = re.sub('\r\n$', footnote_all, data)
-
     # [목차(없음)] 처리
     if not re.search('\[목차\(없음\)\]\r\n', data):
         if not re.search('\[목차\]', data):
@@ -285,6 +261,7 @@ def start(conn, data, title):
             all_stack = re.sub('0.', '', all_stack)
             
             data = re.sub('\r\n(={1,6}) ?((?:(?!=).)+) ?={1,6}\r\n', '\r\n<h' + toc_number + ' id="s-' + re.sub('\.$', '', all_stack) + '"><a href="#toc">' + all_stack + '</a> ' + toc[1] + ' <span style="font-size: 12px"><a href="/edit/' + tool.url_pas(title) + '?section=' + str(edit_number) + '">(편집)</a></span></h' + toc_number + '>\r\n', data, 1)
+
             toc_data += '<span style="margin-left: ' + str((toc_full - toc_top_stack) * 10) + 'px;"><a href="#s-' + re.sub('\.$', '', all_stack) + '">' + all_stack + '</a> ' + toc[1] + '</span>\r\n'
         else:
             break
@@ -310,6 +287,7 @@ def start(conn, data, title):
     data = re.sub("\[nicovideo\((?P<in>(?:(?!,|\)\]).)+)(?:(?:(?!\)\]).)*)\)\]", "[[http://embed.nicovideo.jp/watch/\g<in>|\g<in>]]", data)
     data = re.sub('\[ruby\((?P<in>(?:(?!,).)+)\, ?(?P<out>(?:(?!\)\]).)+)\)\]', '<ruby>\g<in><rp>(</rp><rt>\g<out></rt><rp>)</rp></ruby>', data)
 
+    # 원래 코드 재탕
     now_time = tool.get_time()
     data = re.sub('\[date\]', now_time, data)
     
@@ -570,6 +548,43 @@ def start(conn, data, title):
         else:
             break
 
+    # 각주 처리
+    footnote_number = 0
+    footnote_all = '\r\n<hr><ul id="footnote_data">'
+    while 1:
+        footnote = re.search('(?:\[\*((?:(?! ).)*) ((?:(?!\]).)+)\]|(\[각주\]))', data)
+        if footnote:
+            footnote_data = footnote.groups()
+
+            if footnote_data[2]:
+                footnote_all += '</ul>'
+
+                data = re.sub('(?:\[\*((?:(?! ).)*) ((?:(?!\]).)+)\]|(\[각주\]))', footnote_all, data, 1)
+
+                footnote_all = '\r\n<hr><ul id="footnote_data">'
+            else:
+                footnote = footnote_data[1]
+                footnote_name = footnote_data[0]
+
+                footnote_number += 1
+
+                if not footnote_name:
+                    footnote_name = str(footnote_number)
+
+                footnote_all += '<li><a href="#rfn-' + str(footnote_number) + '" id="fn-' + str(footnote_number) + '">(' + footnote_name + ')</a> ' + footnote + '</li>'
+
+                data = re.sub('(?:\[\*((?:(?! ).)*) ((?:(?!\]).)+)\]|(\[각주\]))', '<sup><a href="#fn-' + str(footnote_number) + '" id="rfn-' + str(footnote_number) + '">(' + footnote_name + ')</a></sup>', data, 1)
+        else:
+            break
+
+    footnote_all += '</ul>'
+
+    if footnote_all == '\r\n<hr><ul id="footnote_data"></ul>':
+        footnote_all = ''
+
+    data = re.sub('\r\n$', footnote_all, data)
+
+    # 분류 마지막 처리
     category += '</div>'
     category = re.sub(' / <\/div>$', '</div>', category)
 
@@ -582,9 +597,12 @@ def start(conn, data, title):
     data = re.sub('(?P<in><\/h[0-9]>)(\r\n)+', '\g<in>', data)
     data = re.sub('<\/ul>\r\n\r\n', '</ul>\r\n', data)
     data = re.sub('^(\r\n)+', '', data)
-    data = re.sub('(\r\n)+$', '', data)
+    data = re.sub('(\r\n)+<hr><ul id="footnote_data">', '<hr><ul id="footnote_data">', data)
     data = re.sub('(?P<in><td(((?!>).)*)>)\r\n', '\g<in>', data)
     data = re.sub('(\r\n)?<hr>(\r\n)?', '<hr>', data)
     data = re.sub('\r\n', '<br>', data)
 
+    if data == '':
+        data = '문서가 없습니다.'
+
     return [data, plus_data]

+ 4 - 1
views/acme/css/style-responsive.css

@@ -76,7 +76,7 @@ ul {
     text-decoration: none;
 }
 
-label, span, body, strong, b, div, h1, h2, h3, h4, h5, h6, h7, input { 
+label, span, body, strong, b, div, h1, h2, h3, h4, h5, h6, input { 
     font-family: "helvetica", "Noto Sans Japanese", "나눔고딕", "맑은 고딕", "Nanum Gothic", "sans-serif"; 
 }
 
@@ -210,6 +210,7 @@ input {
 
 .breadcrumbs h1 {
     word-break: break-all;
+    border: none;
 }
 
 #back_title {
@@ -507,6 +508,8 @@ textarea {
 h1, h2, h3, h4, h5, h6 {
     margin-bottom: 10px;
     margin-top: 10px;
+    border-bottom: 1px solid #CCC;
+    padding-bottom: 5px;
 }
 
 .navbar-brand {