Parcourir la source

이미지 복붙 설정, 각주 설정 추가

Surplus_Up (2DU) il y a 6 ans
Parent
commit
81cfb584cc

+ 1 - 0
route/edit.py

@@ -183,6 +183,7 @@ def edit_2(conn, name):
             imp = [name, wiki_set(), custom(), other2([' (' + sub + ')', 0])],
             data =  get_name + '''
                 <form method="post">
+                    <script>do_paste_image();</script>
                     ''' + edit_button() + '''
                     <textarea id="content" class="content" placeholder="''' + p_text + '''" name="content">''' + html.escape(data) + '''</textarea>
                     <textarea id="origin" name="o_content">''' + html.escape(data_old) + '''</textarea>

+ 1 - 1
route/func_upload.py

@@ -65,7 +65,7 @@ def func_upload_2(conn):
                 data.save(os.path.join(app_var['path_data_image'], e_data))
 
             ip = ip_check()
-            g_lice = g_lice
+            g_lice = flask.request.form.get('f_lice', '')
 
             curs.execute(db_change("select data from other where name = 'markup'"))
             db_data = curs.fetchall()

+ 5 - 5
route/tool/func.py

@@ -206,9 +206,6 @@ def update(ver_num, set_data):
         
         with open('data/mysql.json', 'w') as f:
             f.write('{ "user" : "' + get_data_mysql['user'] + '", "password" : "' + get_data_mysql['password'] + '", "host" : "localhost" }')
-            
-    if ver_num < 3182000:
-        curs.execute(db_change('delete from cache_data'))
 
     if ver_num < 3183603:
         curs.execute(db_change("select block from ban where band = 'O'"))
@@ -226,6 +223,9 @@ def update(ver_num, set_data):
                 '^' + i[0].replace('.', '\\.'),
                 i[0]
             ])
+            
+    if ver_num < 3183800:
+        curs.execute(db_change('delete from cache_data'))
 
     conn.commit()
 
@@ -498,7 +498,7 @@ def other2(data):
         data += ['']
 
     req_list = ''
-    main_css_ver = 38
+    main_css_ver = 39
 
     if not 'main_css_load' in flask.session or not 'main_css_ver' in flask.session or flask.session['main_css_ver'] != main_css_ver:
         for i_data in os.listdir(os.path.join("views", "main_css", "css")):
@@ -1236,7 +1236,7 @@ def re_error(data):
                     '<div id="main_skin_set">' + \
                         '<h2>' + load_lang('error') + '</h2>' + \
                         '<ul>' + \
-                            '<li>' + data + '</li>' + \
+                            '<li>' + data + ' <a href="/main_skin_set">(' + load_lang('main_skin_set') + ')</a></li>' + \
                         '</ul>' + \
                     '</div>' + \
                     ('<script>window.addEventListener(\'DOMContentLoaded\', function() { main_css_skin_set(); });</script>' if get_url == '/main_skin_set' else ''),

+ 11 - 15
route/tool/set_mark/namumark.py

@@ -592,7 +592,7 @@ def namumark(conn, data, title, include_num):
             backlink += [[title, include_link, 'include']]
 
             data = include_re.sub('' + \
-                '<a id="include_link" class="include_' + str(i) + '" href="/w/' + tool.url_pas(include_link) + '">[' + include_link + ']</a>' + \
+                '<a id="include_link" class="include_' + str(i) + '" href="/w/' + tool.url_pas(include_link) + '">(' + include_link + ')</a>' + \
                 '<div id="include_' + str(i) + '"></div>' + \
             '', data, 1)
 
@@ -1181,9 +1181,8 @@ def namumark(conn, data, title, include_num):
 
                     footdata_all += '' + \
                         '<li>' + \
-                            '<a href="#' + include_num + 'rfn-' + str(footdata[0]) + '" ' + \
-                                'id="' + include_num + 'cfn-' + str(footdata[0]) + '" ' + \
-                                'onclick="do_open_foot(\'' + include_num + 'fn-' + str(footdata[0]) + '\', 1);">' + \
+                            '<a href="javascript:do_open_foot(\'' + include_num + 'fn-' + str(footdata[0]) + '\', 1);" ' + \
+                                'id="' + include_num + 'cfn-' + str(footdata[0]) + '">' + \
                                 '(' + footdata[1] + ')' + \
                             '</a> <span id="' + include_num + 'fn-' + str(footdata[0]) + '">' + footdata_in + '</span>' + \
                         '</li>' + \
@@ -1207,12 +1206,11 @@ def namumark(conn, data, title, include_num):
 
                         data = re_footnote.sub('' + \
                             '<sup>' + \
-                                '<a href="#' + include_num + 'fn-' + footshort + '" ' + \
-                                    'id="' + include_num + 'rfn-' + footshort + '" ' + \
-                                    'onclick="do_open_foot(\'' + include_num + 'fn-' + footshort + '\');">' + \
+                                '<a href="javascript:do_open_foot(\'' + include_num + 'fn-' + footshort + '\', 0);" ' + \
+                                    'id="' + include_num + 'rfn-' + footshort + '">' + \
                                     '(' + footnote_name + ')' + \
                                 '</a>' + \
-                            '</sup>' + \
+                            '</sup><span id="' + include_num + 'dfn-' + footshort + '"></span>' + \
                         '', data, 1)
                     else:
                         data = re_footnote.sub('<sup><a href="javascript:void(0);">(' + footnote_name + ')</a></sup>', data, 1)
@@ -1233,12 +1231,11 @@ def namumark(conn, data, title, include_num):
 
                     data = re_footnote.sub('' + \
                         '<sup>' + \
-                            '<a href="#' + include_num + 'fn-' + str(footnote_number) + '" ' + \
-                                'id="' + include_num + 'rfn-' + str(footnote_number) + '" ' + \
-                                'onclick="do_open_foot(\'' + include_num + 'fn-' + str(footnote_number) + '\');">' + \
+                            '<a href="javascript:do_open_foot(\'' + include_num + 'fn-' + str(footnote_number) + '\', 0);" ' + \
+                                'id="' + include_num + 'rfn-' + str(footnote_number) + '">' + \
                                 '(' + footnote_name + ')' + \
                             '</a>' + \
-                        '</sup>' + \
+                        '</sup><span id="' + include_num + 'dfn-' + str(footnote_number) + '"></span>' + \
                     '', data, 1)
         else:
             break
@@ -1255,9 +1252,8 @@ def namumark(conn, data, title, include_num):
 
         footdata_all += '' + \
             '<li>' + \
-                '<a href="#' + include_num + 'rfn-' + str(footdata[0]) + '" ' + \
-                    'id="' + include_num + 'cfn-' + str(footdata[0]) + '" ' + \
-                    'onclick="do_open_foot(\'' + include_num + 'fn-' + str(footdata[0]) + '\', 1);">' + \
+                '<a href="javascript:do_open_foot(\'' + include_num + 'fn-' + str(footdata[0]) + '\', 1);" ' + \
+                    'id="' + include_num + 'cfn-' + str(footdata[0]) + '">' + \
                     '(' + str(footdata[1]) + ')' + \
                 '</a> <span id="' + include_num + 'fn-' + str(footdata[0]) + '">' + footdata_in + '</span>' + \
             '</li>' + \

+ 2 - 2
version.json

@@ -1,7 +1,7 @@
 {
     "master" : {
-        "r_ver" : "v3.1.8-master-37",
-        "c_ver" : "3183603",
+        "r_ver" : "v3.1.8-master-38",
+        "c_ver" : "3183800",
         "s_ver" : "8"
     }, "stable" : {
         "r_ver" : "v3.1.7-stable-04",

+ 2 - 1
views/main_css/css/main.css

@@ -47,4 +47,5 @@ blockquote { background-image: url(/views/main_css/file/quote.png); background-p
 .hidden_link { filter: blur(3px); }
 .hidden_link:hover { filter: none; }
 .content { height: 500px; }
-.topic_content { height: 200px; }
+.topic_content { height: 200px; }
+.spead_footnote { background-color: #efefef; color: #555; border: 1px solid #cecece; }

+ 24 - 2
views/main_css/js/do_open_foot.js

@@ -8,6 +8,28 @@ function do_open_foot(name, num = 0) {
         var front_data = '';
     }
 
-    document.getElementById(front_data + 'r' + include_name).style.color = 'red';
-    document.getElementById(front_data + 'c' + include_name).style.color = (num === 1 ? 'inherit' : 'red');
+    if(
+        document.cookie.match(main_css_regex_data('main_css_footnote_set')) &&
+        document.cookie.match(main_css_regex_data('main_css_footnote_set'))[1] === '1'
+    ) {
+        if(num === 1) {
+            document.getElementById(front_data + 'r' + include_name).focus();
+        } else {
+            var get_data = document.getElementById(front_data + include_name).innerHTML;
+            var org_data = document.getElementById(front_data + 'd' + include_name).innerHTML;
+            if(org_data === '') {
+                document.getElementById(front_data + 'd' + include_name).innerHTML = '' +
+                    '<a href="#' + front_data + 'c' + include_name + '">(Go)</a> ' + get_data +
+                '';
+                document.getElementById(front_data + 'd' + include_name).className = 'spead_footnote';
+            } else {
+                document.getElementById(front_data + 'd' + include_name).innerHTML = '';
+                document.getElementById(front_data + 'd' + include_name).className = '';
+            }
+        }
+    } else {
+        document.getElementById(front_data + 'r' + include_name).style.color = 'red';
+        document.getElementById(front_data + 'c' + include_name).style.color = (num === 1 ? 'inherit' : 'red');
+        document.getElementById(front_data + (num === 1 ? 'r' : 'c') + include_name).focus();
+    }
 }

+ 13 - 8
views/main_css/js/do_upload_paste.js

@@ -1,11 +1,16 @@
-window.addEventListener('DOMContentLoaded', function() {
-    if(window.location.pathname.match(/^\/edit\//i)) {
-        const textarea = document.querySelector("textarea");
-        if (textarea) {
-            textarea.addEventListener("paste", pasteListener);
+function do_paste_image() {
+    window.addEventListener('DOMContentLoaded', function() {
+        if(
+            document.cookie.match(main_css_regex_data('main_css_image_paste')) &&
+            document.cookie.match(main_css_regex_data('main_css_image_paste'))[1] === '1'
+        ) {
+            const textarea = document.querySelector("textarea");
+            if (textarea) {
+                textarea.addEventListener("paste", pasteListener);
+            }
         }
-    }
-});
+    });
+}
 
 function pasteListener(e) {
     // find file
@@ -42,7 +47,7 @@ function pasteListener(e) {
             if (res.status === 200 || res.status === 201) {
                 const url = res.url;
                 alert(
-                    '클립보드의 이미지를 성공적으로 업로드했습니다. 아래 텍스트로 본문에 삽입할 수 있습니다.' +
+                    '클립보드의 이미지를 성공적으로 업로드했습니다. 아래 텍스트로 본문에 삽입할 수 있습니다. ' +
                     '[[' + decodeURIComponent(url.replace(/.*\/w\/file/, "file")) + ']]'
                 );
             } else {

+ 88 - 50
views/main_css/js/load_skin_set.js

@@ -22,7 +22,7 @@ function main_css_get_post() {
     }
 
     check = document.getElementById('include');
-    if(check.checked === true) {
+    if(check.checked) {
         document.cookie = 'main_css_include_link=1;';
     } else {
         document.cookie = 'main_css_include_link=0;';
@@ -35,6 +35,20 @@ function main_css_get_post() {
         document.cookie = 'main_css_category_set=1;';
     }
 
+    check = document.getElementById('footnote');
+    if(check.value === 'spread') {
+        document.cookie = 'main_css_footnote_set=1;';
+    } else {
+        document.cookie = 'main_css_footnote_set=0;';
+    }
+
+    check = document.getElementById('image_paste');
+    if(check.checked) {
+        document.cookie = 'main_css_image_paste=1;';
+    } else {
+        document.cookie = 'main_css_image_paste=0;';
+    }
+
     history.go(0);
 }
 
@@ -93,7 +107,8 @@ function main_css_skin_set() {
             "other" : "Other",
             "where_category" : "Set category location",
             "bottom" : "Bottom",
-            "top" : "Top"
+            "top" : "Top",
+            "set_footnote" : "Set footnote"
         }, "ko-KR" : {
             "default" : "기본값",
             "change_to_normal" : "일반 텍스트로 변경",
@@ -105,7 +120,8 @@ function main_css_skin_set() {
             "other" : "기타",
             "where_category" : "분류 위치 설정",
             "bottom" : "아래",
-            "top" : "위"
+            "top" : "위",
+            "set_footnote" : "각주 설정"
         }
     }
 
@@ -127,21 +143,17 @@ function main_css_skin_set() {
     ];
     set_data["strike"] = '';
     var i = 0;
-    while(1) {
-        if(strike_list[i]) {
-            if(
-                document.cookie.match(main_css_regex_data('main_css_del_strike')) && 
-                document.cookie.match(main_css_regex_data('main_css_del_strike'))[1] === strike_list[i][0]
-            ) {
-                set_data["strike"] = '<option value="' + strike_list[i][1] + '">' + strike_list[i][2] + '</option>' + set_data["strike"];
-            } else {
-                set_data["strike"] += '<option value="' + strike_list[i][1] + '">' + strike_list[i][2] + '</option>';
-            }
-
-            i += 1;
+    while(strike_list[i]) {
+        if(
+            document.cookie.match(main_css_regex_data('main_css_del_strike')) && 
+            document.cookie.match(main_css_regex_data('main_css_del_strike'))[1] === strike_list[i][0]
+        ) {
+            set_data["strike"] = '<option value="' + strike_list[i][1] + '">' + strike_list[i][2] + '</option>' + set_data["strike"];
         } else {
-            break;
+            set_data["strike"] += '<option value="' + strike_list[i][1] + '">' + strike_list[i][2] + '</option>';
         }
+
+        i += 1;
     }
 
     var bold_list = [
@@ -150,22 +162,18 @@ function main_css_skin_set() {
         ['2', 'delete', set_language[language]['delete']]
     ];
     set_data["bold"] = '';
-    var i = 0;
-    while(1) {
-        if(bold_list[i]) {
-            if(
-                document.cookie.match(main_css_regex_data('main_css_del_bold')) && 
-                document.cookie.match(main_css_regex_data('main_css_del_bold'))[1] === bold_list[i][0]
-            ) {
-                set_data["bold"] = '<option value="' + bold_list[i][1] + '">' + bold_list[i][2] + '</option>' + set_data["bold"];
-            } else {
-                set_data["bold"] += '<option value="' + bold_list[i][1] + '">' + bold_list[i][2] + '</option>';
-            }
-
-            i += 1;
+    i = 0;
+    while(bold_list[i]) {
+        if(
+            document.cookie.match(main_css_regex_data('main_css_del_bold')) && 
+            document.cookie.match(main_css_regex_data('main_css_del_bold'))[1] === bold_list[i][0]
+        ) {
+            set_data["bold"] = '<option value="' + bold_list[i][1] + '">' + bold_list[i][2] + '</option>' + set_data["bold"];
         } else {
-            break;
+            set_data["bold"] += '<option value="' + bold_list[i][1] + '">' + bold_list[i][2] + '</option>';
         }
+
+        i += 1;
     }
 
     if(
@@ -173,6 +181,17 @@ function main_css_skin_set() {
         document.cookie.match(main_css_regex_data('main_css_include_link'))[1] === '1'
     ) {
         set_data["include"] = "checked";
+    } else {
+        set_data["include"] = "";
+    }
+
+    if(
+        document.cookie.match(main_css_regex_data('main_css_image_paste')) &&
+        document.cookie.match(main_css_regex_data('main_css_image_paste'))[1] === '1'
+    ) {
+        set_data["image_paste"] = "checked";
+    } else {
+        set_data["image_paste"] = "";
     }
 
     var category_list = [
@@ -180,43 +199,62 @@ function main_css_skin_set() {
         ['1', 'top', set_language[language]['top']],
     ];
     set_data["category"] = '';
-    var i = 0;
-    while(1) {
-        if(category_list[i]) {
-            if(
-                document.cookie.match(main_css_regex_data('main_css_category_set')) && 
-                document.cookie.match(main_css_regex_data('main_css_category_set'))[1] === category_list[i][0]
-            ) {
-                set_data["category"] = '<option value="' + category_list[i][1] + '">' + category_list[i][2] + '</option>' + set_data["category"];
-            } else {
-                set_data["category"] += '<option value="' + category_list[i][1] + '">' + category_list[i][2] + '</option>';
-            }
-
-            i += 1;
+    i = 0;
+    while(category_list[i]) {
+        if(
+            document.cookie.match(main_css_regex_data('main_css_category_set')) && 
+            document.cookie.match(main_css_regex_data('main_css_category_set'))[1] === category_list[i][0]
+        ) {
+            set_data["category"] = '<option value="' + category_list[i][1] + '">' + category_list[i][2] + '</option>' + set_data["category"];
         } else {
-            break;
+            set_data["category"] += '<option value="' + category_list[i][1] + '">' + category_list[i][2] + '</option>';
         }
+
+        i += 1;
     }
 
+    var footnote_list = [
+        ['0', 'normal', set_language[language]['default']],
+        ['1', 'spread', 'spread (beta)']
+    ];
+    set_data["footnote"] = '';
+    i = 0;
+    while(footnote_list[i]) {
+        if(
+            document.cookie.match(main_css_regex_data('main_css_footnote_set')) && 
+            document.cookie.match(main_css_regex_data('main_css_footnote_set'))[1] === footnote_list[i][0]
+        ) {
+            set_data["footnote"] = '<option value="' + footnote_list[i][1] + '">' + footnote_list[i][2] + '</option>' + set_data["footnote"];
+        } else {
+            set_data["footnote"] += '<option value="' + footnote_list[i][1] + '">' + footnote_list[i][2] + '</option>';
+        }
+
+        i += 1;
+    }
 
     document.getElementById("main_skin_set").innerHTML = ' \
-        <h2>' + set_language[language]['strike'] + '</h2> \
-        <hr class="main_hr"> \
+        <h2>1. renderer</h2> \
+        <h3>1.1. ' + set_language[language]['strike'] + '</h3> \
         <select id="strike" name="strike"> \
             ' + set_data["strike"] + ' \
         </select> \
-        <h2>' + set_language[language]['bold'] + '</h2> \
+        <h3>1.2. ' + set_language[language]['bold'] + '</h3> \
         <select id="bold" name="bold"> \
             ' + set_data["bold"] + ' \
         </select> \
-        <h2>' + set_language[language]['where_category'] + '</h2> \
+        <h3>1.3. ' + set_language[language]['where_category'] + '</h3> \
         <select id="category" name="category"> \
             ' + set_data["category"] + ' \
         </select> \
-        <hr class="main_hr"> \
-        <h2>' + set_language[language]['other'] + '</h2> \
+        <h3>1.4. ' + set_language[language]['set_footnote'] + '</h3> \
+        <select id="footnote" name="footnote"> \
+            ' + set_data["footnote"] + ' \
+        </select> \
+        <h3>1.4. ' + set_language[language]['other'] + '</h3> \
         <input ' + set_data["include"] + ' type="checkbox" id="include" name="include" value="include"> ' + set_language[language]['include_link'] + ' \
         <hr class="main_hr"> \
+        <input ' + set_data["image_paste"] + ' type="checkbox" id="image_paste" name="image_paste" value="image_paste"> image_paste (beta) \
+        <hr class="main_hr"> \
         <button onclick="main_css_get_post();">' + set_language[language]['save'] + '</button> \
     ';
 }