Forráskód Böngészése

여러 문서 ACL 조정 기능

https://github.com/openNAMU/openNAMU/issues/2245
잉여개발기 (SPDV) 2 éve
szülő
commit
6c348b8ee2

+ 1 - 1
app.py

@@ -522,7 +522,7 @@ app.route('/diff/<int(signed = True):num_a>/<int(signed = True):num_b>/<everythi
 
 app.route('/down/<everything:name>')(view_down)
 
-app.route('/acl', methods = ['POST', 'GET'])(view_set)
+app.route('/acl_multiple', defaults = { 'multiple' : True }, methods = ['POST', 'GET'])(view_set)
 app.route('/acl/<everything:name>', methods = ['POST', 'GET'])(view_set)
 
 app.route('/w_from/<everything:name>', defaults = { 'do_type' : 'from' })(view_w)

+ 2 - 1
lang/en-US.json

@@ -191,7 +191,8 @@
         "edit_button_paragraph" : "Paragraph",
         "password_change" : "Change password",
         "email_change" : "Change email",
-        "acl_change" : "Change document ACL",
+        "document_setting" : "Document setting",
+        "mutiple_document_setting" : "Multiple document setting",
         "acl_thread_change" : "Change thread ACL",
         "user_tool" : "Users tools",
         "skin_info" : "Skin information",

+ 3 - 2
lang/ko-KR.json

@@ -227,7 +227,8 @@
     "email_filter_add": "이메일 필터 추가",
     "authority_error": "권한이 부족합니다.",
     "type": "유형",
-    "acl_change": "문서 ACL 변경",
+    "document_setting": "문서 설정",
+    "mutiple_document_setting" : "다중 문서 설정",
     "owner": "소유자",
     "password_search": "비밀번호 찾기",
     "file_name": "파일명",
@@ -295,7 +296,7 @@
     "skin_set": "스킨 설정",
     "edit_help": "편집 창 문구",
     "default_edit_help": "이곳에 내용을 입력해주세요.",
-    "many_delete": "문서 대량 삭제",
+    "many_delete": "다중 삭제",
     "many_delete_help": "한 줄에 문서명을 한 개씩 적어주세요.",
     "content": "내용",
     "upload_acl": "파일 올리기 ACL",

+ 2 - 1
route/main_tool_admin.py

@@ -7,7 +7,8 @@ def main_tool_admin():
             data = render_simple_set(conn, '''
                 <h2>''' + get_lang(conn, 'admin') + '''</h2>
                 <ul class="opennamu_ul">
-                    <li><a href="/manager/2">''' + get_lang(conn, 'acl_change') + '''</a></li>
+                    <li><a href="/manager/2">''' + get_lang(conn, 'document_setting') + '''</a></li>
+                    <li><a href="/acl_multiple">''' + get_lang(conn, 'mutiple_document_setting') + '''</a></li>
                     <li><a href="/manager/3">''' + get_lang(conn, 'check_user') + '''</a></li>
                     <li><a href="/auth/give/ban">''' + get_lang(conn, 'ban') + '''</a></li>
                     <li><a href="/auth/give/ban_multiple">''' + get_lang(conn, 'multiple_ban') + '''</a></li>

+ 1 - 1
route/main_tool_redirect.py

@@ -5,7 +5,7 @@ def main_tool_redirect(num = 1, add_2 = ''):
         curs = conn.cursor()
 
         title_list = {
-            0 : [get_lang(conn, 'document_name'), '/acl', get_lang(conn, 'acl')],
+            0 : [get_lang(conn, 'document_name'), '/acl', get_lang(conn, 'document_setting')],
             1 : [0, '/list/user/check', get_lang(conn, 'check')],
             2 : [get_lang(conn, 'file_name'), '/filter/file_filter/add', get_lang(conn, 'file_filter_add')],
             3 : [0, '/auth/give', get_lang(conn, 'authorize')],

+ 1 - 1
route/tool/func.py

@@ -1123,7 +1123,7 @@ def skin_check(conn, set_n = 0):
         return skin
     
 def cache_v():
-    return '.cache_v261'
+    return '.cache_v262'
 
 def wiki_css(data):
     with class_temp_db() as m_conn:

+ 44 - 25
route/view_set.py

@@ -25,7 +25,7 @@ def view_set_markup(conn, document_name = '', markup = '', addon = '', disable =
 
     return markup_html
 
-def view_set(name = 'Test'):
+def view_set(name = 'Test', multiple = False):
     with get_db_connect() as conn:
         curs = conn.cursor()
 
@@ -33,28 +33,35 @@ def view_set(name = 'Test'):
         ip = ip_check()
         time = get_time()
 
-        if flask.request.method == 'POST':
-            check_data = 'document_set (' + name + ')'
-        else:
-            check_data = None
-
-        user_data = re.search(r'^user:(.+)$', name)
-        if user_data:
-            if check_data and ip_or_user(ip) != 0:
-                return redirect(conn, '/login')
+        if multiple and flask.request.method == 'POST':
+            all_title = re.findall(r'([^\n]+)\n', flask.request.form.get('title_name', '').replace('\r', '') + '\n')
+            for name in all_title:
+                view_set(name, False)
 
-            if user_data.group(1) != ip:
+            return redirect(conn, '/list/document/acl')
+        else:
+            if flask.request.method == 'POST':
+                check_data = 'document_set (' + name + ')'
+            else:
+                check_data = None
+
+            user_data = re.search(r'^user:(.+)$', name)
+            if user_data:
+                if check_data and ip_or_user(ip) != 0:
+                    return redirect(conn, '/login')
+
+                if user_data.group(1) != ip:
+                    if admin_check(conn, 5) != 1:
+                        if check_data:
+                            return re_error(conn, '/error/3')
+                        else:
+                            check_ok = 'disabled'
+            else:
                 if admin_check(conn, 5) != 1:
                     if check_data:
                         return re_error(conn, '/error/3')
                     else:
                         check_ok = 'disabled'
-        else:
-            if admin_check(conn, 5) != 1:
-                if check_data:
-                    return re_error(conn, '/error/3')
-                else:
-                    check_ok = 'disabled'
 
         if flask.request.method == 'POST':
             acl_data = ['decu', 'document_edit_acl', 'document_edit_request_acl', 'document_move_acl', 'document_delete_acl', 'dis', 'view', 'why']
@@ -231,25 +238,37 @@ def view_set(name = 'Test'):
                 <h2>''' + get_lang(conn, 'document_editor_top') + ''' (HTML)</h2>
                 <textarea ''' + check_ok + ''' class="opennamu_textarea_100" name="document_editor_top">''' + html.escape(document_editor_top) + '''</textarea>
             '''
-            
             data += '<hr class="main_hr">'
 
-
-            save_button += ' <button type="button" onclick="w_set_reset();" ' + check_ok + '>' + get_lang(conn, 'reset') + '</button>'
+            text_area = ''
+            if multiple == True:
+                text_area = '<textarea class="opennamu_textarea_500" placeholder="' + get_lang(conn, 'many_delete_help') + '" name="title_name"></textarea><hr class="main_hr">'
+                menu = [
+                    ['manager', get_lang(conn, 'admin')]
+                ]
+                title = get_lang(conn, 'mutiple_document_setting')
+                sub = 0
+            else:
+                menu = [
+                    ['w/' + url_pas(name), get_lang(conn, 'return')], 
+                    ['acl_multiple', get_lang(conn, 'mutiple_document_setting')],
+                    ['manager', get_lang(conn, 'admin')]
+                ]
+                title = name
+                sub = '(' + get_lang(conn, 'document_setting') + ')'
+                save_button += ' <button type="button" onclick="w_set_reset();" ' + check_ok + '>' + get_lang(conn, 'reset') + '</button>'
 
             return easy_minify(conn, flask.render_template(skin_check(conn),
-                imp = [name, wiki_set(conn), wiki_custom(conn), wiki_css(['(' + get_lang(conn, 'setting') + ')', 0])],
+                imp = [title, wiki_set(conn), wiki_custom(conn), wiki_css([sub, 0])],
                 data = '''
                     <form method="post">
                         <script defer src="/views/main_css/js/route/w_set.js''' + cache_v() + '''"></script>
                         <a href="/setting/acl">(''' + get_lang(conn, 'main_acl_setting') + ''')</a>
                         <hr class="main_hr">
+                        ''' + text_area + '''
                         ''' + render_simple_set(conn, data) + '''
                         ''' + save_button + '''
                     </form>
                 ''',
-                menu = [
-                    ['w/' + url_pas(name), get_lang(conn, 'return')], 
-                    ['manager', get_lang(conn, 'admin')]
-                ]
+                menu = menu
             ))

+ 2 - 2
views/main_css/js/route/w_set.js

@@ -2,7 +2,7 @@
 
 function w_set_reset() {
     let lang_data = new FormData();
-    lang_data.append('data', 'reset');
+    lang_data.append('data', 'reset end');
 
     fetch('/api/lang', {
         method : 'post',
@@ -26,7 +26,7 @@ function w_set_reset() {
                     if(data["response"] === "require auth") {
                         alert(data["language"]["authority_error"]);
                     } else {
-                        alert(lang[0]);
+                        alert(lang[1]);
                     }
 
                     history.go(0);