Преглед изворни кода

게시판 ACL을 Auth로 통합 및 나머지는 Golang으로 이전

잉여개발기 (SPDV) пре 1 година
родитељ
комит
0ce87cd145

+ 2 - 2
app.py

@@ -691,7 +691,6 @@ app.route('/vote/add', methods = ['POST', 'GET'])(vote_add)
 # Func-bbs
 app.route('/bbs/main')(bbs_main)
 app.route('/bbs/make', methods = ['POST', 'GET'])(bbs_make)
-app.route('/bbs/set')(bbs_set)
 app.route('/bbs/in/<int:bbs_num>')(bbs_in)
 app.route('/bbs/in/<int:bbs_num>/<int:page>')(bbs_in)
 # app.route('/bbs/blind/<int:bbs_num>', methods = ['POST', 'GET'])(bbs_hide)
@@ -732,7 +731,6 @@ app.route('/api/version', defaults = { 'version_list' : version_list })(api_vers
 app.route('/api/skin_info')(api_skin_info)
 app.route('/api/skin_info/<name>')(api_skin_info)
 app.route('/api/user_info/<user_name>')(api_user_info)
-app.route('/api/setting/<name>')(api_setting)
 
 app.route('/api/thread/<int:topic_num>/<int:s_num>/<int:e_num>')(api_topic)
 app.route('/api/thread/<int:topic_num>/<tool>')(api_topic)
@@ -772,6 +770,7 @@ app.route('/api/v2/list/document/old/<int:num>', defaults = { 'set_type' : 'old'
 app.route('/api/v2/list/document/new/<int:num>', defaults = { 'set_type' : 'new' })(api_list_old_page)
 app.route('/api/v2/list/document/<int:num>')(api_list_title_index)
 app.route('/api/v2/list/auth')(api_list_auth)
+app.route('/api/v2/list/markup')(api_list_markup)
 app.route('/api/v2/list/acl/<data_type>')(api_list_acl)
 app.route('/api/v2/history/<int:num>/<set_type>/<everything:doc_name>')(api_list_history)
 
@@ -779,6 +778,7 @@ app.route('/api/v2/topic/<int:num>/<set_type>/<everything:name>')(api_topic_list
 
 app.route('/api/v2/bbs')(api_bbs_list)
 app.route('/api/v2/bbs/main')(api_bbs)
+app.route('/api/v2/bbs/set/<int:bbs_num>/<name>', methods = ['GET', 'PUT'])(api_bbs_w_set)
 app.route('/api/v2/bbs/in/<int:bbs_num>/<int:page>')(api_bbs)
 app.route('/api/v2/bbs/w/comment/<sub_code>/<tool>', defaults = { 'legacy' : '' })(api_bbs_w_comment)
 app.route('/api/v2/bbs/w/comment_one/<sub_code>/<tool>', defaults = { 'legacy' : '' })(api_bbs_w_comment_one)

+ 5 - 1
lang/en-US.json

@@ -45,6 +45,10 @@
     "resolution" : "Resolution",
     "file_delete_with_document" : "Delete document and file at the same time",
     "method" : "Method",
+    "edit_filter_pass_authority" : "Contents filter pass authority",
+    "edit_filter_view_authority" : "Contents filter view authority",
+    "post_view_acl" : "Post view ACL",
+    "post_comment_acl" : "Post comment ACL",
 
     "_comment_" : "Common",
     "data" : "Data",
@@ -722,7 +726,7 @@
     "file_capacity_error" : "Maximum file capacity (MB): ",
     "move_error" : "An error occurred while moving. All or part of it has not been moved.",
     "password_diffrent_error" : "Reconfirm password and input password are different.",
-    "edit_filter_error" : "Censored by edit filter.",
+    "edit_filter_error" : "Censored by contents filter.",
     "file_name_error" : "You cannot use dots in the file name.",
     "topic_long_error" : "The discussions topic must not exceed 256 characters.",
     "email_error" : "No one has this email.",

+ 6 - 2
lang/ko-KR.json

@@ -675,7 +675,7 @@
     "doc_watch_list_view_authority" : "문서를 주시 목록에 추가한 사람 목록 보기",
     "bbs_view_authority" : "BBS 보기 권한",
     "bbs_comment_authority" : "BBS 댓글 권한",
-    "bbs_edit_authority" : "BBS 수정 권한",
+    "bbs_edit_authority" : "BBS 편집 권한",
     "user_analyze_authority" : "사용자 분석 권한",
     "still_use_auth_error" : "이 권한을 보유한 사람이 아직 존재합니다.",
     "xss_data_include_error" : "XSS에 이용될 수 있는 문자는 입력할 수 없습니다.",
@@ -691,5 +691,9 @@
     "file_delete_with_document" : "문서와 파일 동시 삭제",
     "url" : "URL",
     "resolution" : "해상도",
-    "method" : "방법"
+    "method" : "방법",
+    "edit_filter_pass_authority" : "편집 필터 통과 권한",
+    "edit_filter_view_authority" : "편집 필터 보기 권한",
+    "post_view_acl" : "게시글 보기 ACL",
+    "post_comment_acl" : "게시글 댓글 ACL"
 }

+ 4 - 5
route/__init__.py

@@ -1,5 +1,4 @@
 from route.api_image_view import api_image_view
-from route.api_setting import api_setting
 from route.api_skin_info import api_skin_info
 from route.api_user_info import api_user_info
 from route.api_version import api_version
@@ -14,7 +13,6 @@ from route.bbs_w import bbs_w
 from route.bbs_delete import bbs_delete
 # from route.bbs_hide import bbs_hide
 from route.bbs_w_post import bbs_w_post
-from route.bbs_w_set import bbs_w_set
 from route.bbs_w_comment_tool import bbs_w_comment_tool
 from route.bbs_w_tool import bbs_w_tool
 
@@ -164,9 +162,6 @@ from route.n_list_old_page import list_old_page
 from route.n_list_user_check_submit import list_user_check_submit
 from route.n_list_history import list_history
 
-from route.n_bbs_in import bbs_in
-from route.n_bbs_set import bbs_set
-
 from route.n_w_watch_list import w_watch_list
 
 from route.n_user_rankup import user_rankup
@@ -178,6 +173,8 @@ from route.n_give_auth import give_auth
 from route.n_setting_404_page import setting_404_page
 
 from route.n_bbs_main import bbs_main
+from route.n_bbs_in import bbs_in
+from route.n_bbs_w_set import bbs_w_set
 
 from route.n_edit_move_all import edit_move_all
 
@@ -200,10 +197,12 @@ from route.go_api_list_old_page import api_list_old_page
 from route.go_api_list_title_index import api_list_title_index
 from route.go_api_list_acl import api_list_acl
 from route.go_api_list_auth import api_list_auth
+from route.go_api_list_markup import api_list_markup
 from route.go_api_list_history import api_list_history
 
 from route.go_api_bbs import api_bbs
 from route.go_api_bbs_list import api_bbs_list
+from route.go_api_bbs_w_set import api_bbs_w_set
 from route.go_api_bbs_w_comment import api_bbs_w_comment
 from route.go_api_bbs_w_comment_one import api_bbs_w_comment_one
 

+ 0 - 27
route/api_setting.py

@@ -1,27 +0,0 @@
-from .tool.func import *
-
-from .user_setting_skin_set_main import user_setting_skin_set_main_set_list
-
-def api_setting(name = 'markup'):
-    with get_db_connect() as conn:
-        curs = conn.cursor()
-        
-        # from other
-        ok_list_1 = ['markup']
-        ok_list_1 += [for_a for for_a in user_setting_skin_set_main_set_list(conn)]
-
-        # from html_filter
-        ok_list_2 = ['inter_wiki']
-        
-        if name in ok_list_1:
-            curs.execute(db_change('select data from other where name = ?'), [name])
-            rep_data = curs.fetchall()
-            if rep_data:
-                return flask.jsonify({ name : rep_data })
-        elif name in ok_list_2:
-            curs.execute(db_change("select html, plus, plus_t from html_filter where kind = ?"), [name])
-            rep_data = curs.fetchall()
-            if rep_data:
-                return flask.jsonify({ name : rep_data })
-
-        return flask.jsonify({})

+ 0 - 91
route/bbs_w_set.py

@@ -1,91 +0,0 @@
-from .tool.func import *
-
-def bbs_w_set(bbs_num = ''):
-    with get_db_connect() as conn:
-        curs = conn.cursor()
-
-        curs.execute(db_change('select set_data from bbs_set where set_id = ? and set_name = "bbs_name"'), [bbs_num])
-        db_data = curs.fetchall()
-        if not db_data:
-            return redirect(conn, '/bbs/main')
-        else:
-            bbs_name = db_data[0][0]
-        
-        bbs_num_str = str(bbs_num)
-
-        i_list = ['bbs_acl', 'bbs_edit_acl', 'bbs_comment_acl', 'bbs_view_acl', 'bbs_markup']
-
-        if flask.request.method == 'POST':
-            if acl_check('', 'owner_auth', '', '', 'bbs_set (acl)') == 1:
-                return re_error(conn, 0)
-            else:
-                for for_a in range(len(i_list)):
-                    curs.execute(db_change("update bbs_set set set_data = ? where set_name = ? and set_id = ?"), [
-                        flask.request.form.get(i_list[for_a], 'normal'),
-                        i_list[for_a],
-                        bbs_num
-                    ])
-
-                return redirect(conn, '/bbs/set/' + bbs_num_str)
-        else:
-            d_list = ['' for _ in range(0, len(i_list))]
-
-            other_menu = []
-            if acl_check('', 'bbs_auth', '', '') == 1:
-                disable = 'disabled'
-            else:
-                disable = ''
-                other_menu += [['bbs/delete/' + bbs_num_str, get_lang(conn, 'delete')]]
-
-            for for_a in range(len(i_list)):
-                curs.execute(db_change('select set_data from bbs_set where set_name = ? and set_id = ?'), [i_list[for_a], bbs_num])
-                sql_d = curs.fetchall()
-                if sql_d:
-                    d_list[for_a] = sql_d[0][0]
-                else:
-                    curs.execute(db_change('insert into bbs_set (set_name, set_code, set_id, set_data) values (?, "", ?, ?)'), [i_list[for_a], bbs_num, 'normal'])
-                    d_list[for_a] = 'normal'
-
-            acl_div = ['' for _ in range(0, len(i_list))]
-            acl_list = get_acl_list()
-            for for_a in range(0, len(i_list)):
-                if for_a == 4:
-                    acl_list = ['normal'] + get_init_set_list('markup')['list']
-
-                for data_list in acl_list:
-                    if data_list == d_list[for_a]:
-                        check = 'selected="selected"'
-                    else:
-                        check = ''
-
-                    acl_div[for_a] += '<option value="' + data_list + '" ' + check + '>' + (data_list if data_list != '' else 'normal') + '</option>'
-
-            return easy_minify(conn, flask.render_template(skin_check(conn),
-                imp = [get_lang(conn, 'bbs_set'), wiki_set(conn), wiki_custom(conn), wiki_css(['(' + bbs_name + ')', 0])],
-                data = render_simple_set(conn, '''
-                    <form method="post">
-                        <hr class="main_hr">
-                        <a href="/acl/TEST#exp">(''' + get_lang(conn, 'reference') + ''')</a>
-                        
-                        <h2>''' + get_lang(conn, 'acl') + '''</h2>
-                        <h3>''' + get_lang(conn, 'bbs_view_acl') + '''</h3>
-                        <select ''' + disable + ''' name="bbs_view_acl">''' + acl_div[3] + '''</select>
-
-                        <h4>''' + get_lang(conn, 'bbs_acl') + '''</h4>
-                        <select ''' + disable + ''' name="bbs_acl">''' + acl_div[0] + '''</select>
-
-                        <h5>''' + get_lang(conn, 'bbs_edit_acl') + '''</h5>
-                        <select ''' + disable + ''' name="bbs_edit_acl">''' + acl_div[1] + '''</select>
-
-                        <h5>''' + get_lang(conn, 'bbs_comment_acl') + '''</h5>
-                        <select ''' + disable + ''' name="bbs_comment_acl">''' + acl_div[2] + '''</select>
-
-                        <h2>''' + get_lang(conn, 'markup') + '''</h2>
-                        <select ''' + disable + ''' name="bbs_markup">''' + acl_div[4] + '''</select>
-                        
-                        <hr class="main_hr">
-                        <button id="opennamu_save_button" type="submit">''' + get_lang(conn, 'save') + '''</button>
-                    </form>
-                '''),
-                menu = [['bbs/in/' + bbs_num_str, get_lang(conn, 'return')]] + other_menu
-            ))

+ 1 - 1
route/give_admin_groups.py

@@ -34,7 +34,7 @@ def give_admin_groups(name = 'test'):
                         [4, 'multiple_upload', get_lang(conn, 'multiple_upload_authority')],
                         [4, 'slow_edit_pass', get_lang(conn, 'slow_edit_pass_authority')],
                         [4, 'edit_bottom_compulsion_pass', get_lang(conn, 'edit_bottom_compulsion_pass_authority')],
-                        [3, 'edit_filter_pass', get_lang(conn, 'edit_filter_pass_authority')],
+                        [4, 'edit_filter_pass', get_lang(conn, 'edit_filter_pass_authority')],
                         [4, '', get_lang(conn, 'user_authority')],
             [1, 'user', get_lang(conn, 'user_authority')],
                 [2, 'captcha_pass', get_lang(conn, 'captcha_pass_authority')],

+ 14 - 0
route/go_api_bbs_w_set.py

@@ -0,0 +1,14 @@
+from .tool.func import *
+
+async def api_bbs_w_set(name = 'Test', set_id = '1'):
+    other_set = {}
+    other_set["set_name"] = name
+    other_set["set_id"] = set_id
+    other_set["ip"] = ip_check()
+
+    func_name = sys._getframe().f_code.co_name
+    if flask.request.method == 'PUT':
+        func_name += '_put'
+        other_set['data'] = flask.request.form.get('data', 'Test')
+    
+    return flask.Response(response = (await python_to_golang(func_name, other_set)), status = 200, mimetype = 'application/json')

+ 6 - 0
route/go_api_list_markup.py

@@ -0,0 +1,6 @@
+from .tool.func import *
+
+async def api_list_markup():
+    other_set = {}
+
+    return flask.Response(response = (await python_to_golang(sys._getframe().f_code.co_name, other_set)), status = 200, mimetype = 'application/json')

+ 1 - 1
route/n_bbs_main.py

@@ -9,5 +9,5 @@ def bbs_main():
                 '<script defer src="/views/main_css/js/route/bbs_main.js' + cache_v() + '"></script>' + \
                 '<script>window.addEventListener("DOMContentLoaded", function() { opennamu_bbs_main(); });</script>' + \
             '',
-            menu = [['other', get_lang(conn, 'other_tool')]] + ([['bbs/make', get_lang(conn, 'add')], ['bbs/set', get_lang(conn, 'bbs_set')]] if acl_check('', 'owner_auth', '', '') != 1 else [])
+            menu = [['other', get_lang(conn, 'other_tool')], ['bbs/make', get_lang(conn, 'add')]]
         ))

+ 0 - 13
route/n_bbs_set.py

@@ -1,13 +0,0 @@
-from .tool.func import *
-
-def bbs_set():
-    with get_db_connect() as conn:
-        return easy_minify(conn, flask.render_template(skin_check(conn),
-            imp = [get_lang(conn, 'bbs_set'), wiki_set(conn), wiki_custom(conn), wiki_css([0, 0])],
-            data = '' + \
-                '<div id="opennamu_bbs_set"></div>' + \
-                '<script defer src="/views/main_css/js/route/bbs_set.js' + cache_v() + '"></script>' + \
-                '<script>window.addEventListener("DOMContentLoaded", function() { opennamu_bbs_set(); });</script>' + \
-            '',
-            menu = [['bbs/main', get_lang(conn, 'bbs_main')]]
-        ))

+ 24 - 0
route/n_bbs_w_set.py

@@ -0,0 +1,24 @@
+from .tool.func import *
+
+def bbs_w_set(bbs_num = ''):
+    with get_db_connect() as conn:
+        curs = conn.cursor()
+
+        curs.execute(db_change('select set_data from bbs_set where set_id = ? and set_name = "bbs_name"'), [bbs_num])
+        db_data = curs.fetchall()
+        if not db_data:
+            return redirect(conn, '/bbs/main')
+        else:
+            bbs_name = db_data[0][0]
+
+        bbs_num_str = str(bbs_num)
+
+        return easy_minify(conn, flask.render_template(skin_check(conn),
+            imp = [get_lang(conn, 'bbs_set'), wiki_set(conn), wiki_custom(conn), wiki_css(['(' + bbs_name + ')', 0])],
+            data = '' + \
+                '<div id="opennamu_bbs_w_set"></div>' + \
+                '<script defer src="/views/main_css/js/route/bbs_w_set.js' + cache_v() + '"></script>' + \
+                '<script>window.addEventListener("DOMContentLoaded", function() { opennamu_bbs_w_set(); });</script>' + \
+            '',
+            menu = [['bbs/in/' + bbs_num_str, get_lang(conn, 'return')]]
+        ))

BIN
route_go/bin/main.amd64.bin


BIN
route_go/bin/main.amd64.exe


BIN
route_go/bin/main.arm64.bin


BIN
route_go/bin/main.arm64.exe


+ 6 - 0
route_go/main.go

@@ -99,6 +99,12 @@ func main() {
 		route_data = route.Api_bbs_w_comment(call_arg[1:])
 	} else if call_arg[0] == "api_list_history" {
 		route_data = route.Api_list_history(call_arg[1:])
+	} else if call_arg[0] == "api_list_markup" {
+		route_data = route.Api_list_markup(call_arg[1:])
+	} else if call_arg[0] == "api_bbs_w_set" {
+		route_data = route.Api_bbs_w_set(call_arg[1:])
+	} else if call_arg[0] == "api_bbs_w_set_put" {
+		route_data = route.Api_bbs_w_set_put(call_arg[1:])
 	} else {
 		log.Fatal(call_arg[0] + " is 404")
 	}

+ 86 - 0
route_go/route/api_bbs_w_set.go

@@ -0,0 +1,86 @@
+package route
+
+import (
+	"log"
+	"opennamu/route/tool"
+
+	jsoniter "github.com/json-iterator/go"
+)
+
+func BBS_w_set_list() map[string]string {
+	setting_acl := map[string]string{}
+
+	setting_acl["bbs_view_acl"] = ""
+	setting_acl["bbs_acl"] = ""
+	setting_acl["bbs_edit_acl"] = ""
+	setting_acl["bbs_comment_acl"] = ""
+
+	setting_acl["bbs_markup"] = ""
+	setting_acl["bbs_name"] = ""
+
+	return setting_acl
+}
+
+func Api_bbs_w_set(call_arg []string) string {
+	var json = jsoniter.ConfigCompatibleWithStandardLibrary
+
+	other_set := map[string]string{}
+	json.Unmarshal([]byte(call_arg[0]), &other_set)
+
+	db := tool.DB_connect()
+	defer db.Close()
+
+	setting_acl := BBS_w_set_list()
+
+	if val, ok := setting_acl[other_set["set_name"]]; ok {
+		if val != "" {
+			if tool.Check_acl(db, "", "", "owner_auth", other_set["ip"]) {
+				return_data := make(map[string]interface{})
+				return_data["response"] = "require auth"
+
+				json_data, _ := json.Marshal(return_data)
+				return string(json_data)
+			}
+		}
+
+		stmt, err := db.Prepare(tool.DB_change("select set_data, set_code from other where set_name = ? and set_id = ?"))
+		if err != nil {
+			log.Fatal(err)
+		}
+
+		defer stmt.Close()
+
+		rows, err := stmt.Query(other_set["set_name"], other_set["set_id"])
+		if err != nil {
+			log.Fatal(err)
+		}
+		defer rows.Close()
+
+		data_list := [][]string{}
+
+		for rows.Next() {
+			var set_data string
+			var set_coverage string
+
+			err := rows.Scan(&set_data, &set_coverage)
+			if err != nil {
+				log.Fatal(err)
+			}
+
+			data_list = append(data_list, []string{set_data, set_coverage})
+		}
+
+		return_data := make(map[string]interface{})
+		return_data["response"] = "ok"
+		return_data["data"] = data_list
+
+		json_data, _ := json.Marshal(return_data)
+		return string(json_data)
+	} else {
+		return_data := make(map[string]interface{})
+		return_data["response"] = "not exist"
+
+		json_data, _ := json.Marshal(return_data)
+		return string(json_data)
+	}
+}

+ 60 - 0
route_go/route/api_bbs_w_set_put.go

@@ -0,0 +1,60 @@
+package route
+
+import (
+	"log"
+	"opennamu/route/tool"
+
+	jsoniter "github.com/json-iterator/go"
+)
+
+func Api_bbs_w_set_put(call_arg []string) string {
+	var json = jsoniter.ConfigCompatibleWithStandardLibrary
+
+	other_set := map[string]string{}
+	json.Unmarshal([]byte(call_arg[0]), &other_set)
+
+	db := tool.DB_connect()
+	defer db.Close()
+
+	auth_info := tool.Check_acl(db, "", "", "owner_auth", other_set["ip"])
+
+	setting_acl := BBS_w_set_list()
+	return_data := make(map[string]interface{})
+
+	if _, ok := setting_acl[other_set["set_name"]]; ok {
+		if auth_info {
+			if _, ok := other_set["coverage"]; !ok {
+				stmt, err := db.Prepare(tool.DB_change("delete from bbs_set where set_name = ? and set_id = ?"))
+				if err != nil {
+					log.Fatal(err)
+				}
+				defer stmt.Close()
+
+				_, err = stmt.Exec(other_set["set_name"], other_set["set_id"])
+				if err != nil {
+					log.Fatal(err)
+				}
+			}
+
+			stmt, err := db.Prepare(tool.DB_change("insert into bbs_set (set_name, set_code, set_id, set_data) values (?, '', ?, ?)"))
+			if err != nil {
+				log.Fatal(err)
+			}
+			defer stmt.Close()
+
+			_, err = stmt.Exec(other_set["set_name"], other_set["data"], other_set["set_id"])
+			if err != nil {
+				log.Fatal(err)
+			}
+
+			return_data["response"] = "ok"
+		} else {
+			return_data["response"] = "require auth"
+		}
+	} else {
+		return_data["response"] = "not exist"
+	}
+
+	json_data, _ := json.Marshal(return_data)
+	return string(json_data)
+}

+ 23 - 0
route_go/route/api_list_markup.go

@@ -0,0 +1,23 @@
+package route
+
+import (
+	"opennamu/route/tool"
+
+	jsoniter "github.com/json-iterator/go"
+)
+
+func Api_list_markup(call_arg []string) string {
+	var json = jsoniter.ConfigCompatibleWithStandardLibrary
+
+	other_set := map[string]string{}
+	json.Unmarshal([]byte(call_arg[0]), &other_set)
+
+	data := tool.List_markup()
+
+	return_data := make(map[string]interface{})
+	return_data["response"] = "ok"
+	return_data["data"] = data
+
+	json_data, _ := json.Marshal(return_data)
+	return string(json_data)
+}

+ 29 - 7
route_go/route/api_setting.go

@@ -1,6 +1,7 @@
 package route
 
 import (
+	"database/sql"
 	"log"
 	"opennamu/route/tool"
 
@@ -45,16 +46,37 @@ func Api_setting(call_arg []string) string {
 			}
 		}
 
-		stmt, err := db.Prepare(tool.DB_change("select data, coverage from other where name = ? and coverage = ?"))
-		if err != nil {
-			log.Fatal(err)
+		data_coverage := ""
+		if val, ok := other_set["coverage"]; ok {
+			data_coverage = val
 		}
 
-		defer stmt.Close()
+		var rows *sql.Rows
 
-		rows, err := stmt.Query(other_set["set_name"], val)
-		if err != nil {
-			log.Fatal(err)
+		if data_coverage != "" {
+			stmt, err := db.Prepare(tool.DB_change("select data, coverage from other where name = ? and coverage = ?"))
+			if err != nil {
+				log.Fatal(err)
+			}
+
+			defer stmt.Close()
+
+			rows, err = stmt.Query(other_set["set_name"], data_coverage)
+			if err != nil {
+				log.Fatal(err)
+			}
+		} else {
+			stmt, err := db.Prepare(tool.DB_change("select data, coverage from other where name = ?"))
+			if err != nil {
+				log.Fatal(err)
+			}
+
+			defer stmt.Close()
+
+			rows, err = stmt.Query(other_set["set_name"])
+			if err != nil {
+				log.Fatal(err)
+			}
 		}
 		defer rows.Close()
 

+ 10 - 0
route_go/route/tool/render.go

@@ -7,6 +7,16 @@ import (
 	"time"
 )
 
+func List_markup() []string {
+	return []string{
+		"namumark",
+		"namumark_beta",
+		"markdown",
+		"custom",
+		"raw",
+	}
+}
+
 func Get_render(db *sql.DB, doc_name string, data string, render_type string) map[string]string {
 	var markup string
 

+ 0 - 6
views/main_css/js/func/func.js

@@ -186,12 +186,6 @@ function opennamu_cookie_split_regex(data) {
     return new RegExp('(?:^|; )' + data + '=([^;]*)');
 }
 
-function opennamu_get_main_skin_set(set_name) {
-    return fetch("/api/setting/" + opennamu_do_url_encode(set_name)).then(function(res) {
-        return res.json();
-    });
-}
-
 function opennamu_send_render(data) {
     if(data === '&lt;br&gt;' || data === '' || data.match(/^ +$/)) {
         data = '<br>';

+ 0 - 87
views/main_css/js/route/bbs_set.js

@@ -1,87 +0,0 @@
-"use strict";
-
-function opennamu_bbs_set_post() {
-    let acl_set_list = [
-        "bbs_view_acl_all",
-        "bbs_acl_all",
-        "bbs_edit_acl_all",
-        "bbs_comment_acl_all"
-    ];
-
-    for(let for_a = 0; for_a < acl_set_list.length; for_a++) {
-        let post_data = new FormData();
-        post_data.append('data', document.getElementById('opennamu_' + acl_set_list[for_a]).value);
-        
-        fetch('/api/v2/setting/' + acl_set_list[for_a], {
-            method : 'PUT',
-            body : post_data,
-        }).then(function(res) {
-            return res.json();
-        }).then(function(data) {
-            history.go(0);
-        });
-    }
-}
-
-function opennamu_bbs_set() {
-    let acl_set_list = ["bbs_view_acl_all", "bbs_acl_all", "bbs_edit_acl_all", "bbs_comment_acl_all"];
-    let acl_set_list_h = [2, 3, 4, 4];
-    
-    let lang_str = 'save reference';
-    for(let for_a = 0; for_a < acl_set_list.length; for_a++) {
-        lang_str += ' ' + acl_set_list[for_a];
-    }
-
-    let lang_data = new FormData();
-    lang_data.append('data', lang_str);
-
-    fetch('/api/v2/lang', {
-        method : 'POST',
-        body : lang_data,
-    }).then(function(res) {
-        return res.json();
-    }).then(function(lang) {
-        lang = lang["data"];
-
-        fetch('/api/v2/list/acl/normal').then(function(res) {
-            return res.json();
-        }).then(function(acl_list) {
-            acl_list = acl_list["data"];
-
-            let acl_set_html = '<a href="/acl/TEST#exp">(' + lang['reference'] + ')</a>';
-
-            for(let for_b = 0; for_b < acl_set_list.length; for_b++) {
-                acl_set_html += '<h' + acl_set_list_h[for_b] + '>' + lang[acl_set_list[for_b]] + '</h' + acl_set_list_h[for_b] + '>';
-                acl_set_html += '<select id="opennamu_' + acl_set_list[for_b] + '">';
-                
-                let select = '';
-                for(let for_a = 0; for_a < acl_list.length; for_a++) {
-                    let acl_list_view = acl_list[for_a];
-                    acl_list_view = acl_list_view === "" ? "normal" : acl_list_view;
-
-                    select += '<option value="' + acl_list[for_a] + '">' + acl_list_view + '</option>';
-                }
-
-                acl_set_html += select;
-                acl_set_html += '</select>';
-            }
-
-            document.getElementById('opennamu_bbs_set').innerHTML = renderSimpleSet('' +
-                acl_set_html +
-                '<hr class="main_hr">' + 
-                '<button onclick="opennamu_bbs_set_post();">' + lang['save'] + '</button>' +
-            '');
-
-            for(let for_a = 0; for_a < acl_set_list.length; for_a++) {
-                fetch('/api/v2/setting/' + acl_set_list[for_a]).then(function(res) {
-                    return res.json();
-                }).then(function(data) {
-                    data = data["data"][0];
-
-                    let select_element = document.getElementById('opennamu_' + acl_set_list[for_a]);
-                    select_element.querySelector('option[value="' + data + '"]').selected = true;
-                });
-            }
-        });
-    });
-}

+ 129 - 0
views/main_css/js/route/bbs_w_set.js

@@ -0,0 +1,129 @@
+"use strict";
+
+function opennamu_bbs_w_set_post() {
+    let acl_set_list = [
+        "bbs_view_acl",
+        "bbs_acl",
+        "bbs_edit_acl",
+        "bbs_comment_acl",
+        "bbs_markup"
+    ];
+
+    for(let for_a = 0; for_a < acl_set_list.length; for_a++) {
+        let post_data = new FormData();
+        post_data.append('data', document.getElementById('opennamu_' + acl_set_list[for_a]).value);
+        
+        fetch('/api/v2/setting/' + acl_set_list[for_a], {
+            method : 'PUT',
+            body : post_data,
+        }).then(function(res) {
+            return res.json();
+        }).then(function(data) {
+            history.go(0);
+        });
+    }
+}
+
+function opennamu_bbs_w_set_lang(lang, set_name) {
+    if(set_name === "bbs_markup") {
+        return lang["markup"];
+    } else {
+        return lang[set_name];
+    }
+}
+
+function opennamu_bbs_w_set_select(acl_set_list, acl_set_list_h, acl_list, lang) {
+    let acl_set_html = '';
+
+    for(let for_b = 0; for_b < acl_set_list.length; for_b++) {
+        acl_set_html += '<h' + acl_set_list_h[for_b] + '>' + opennamu_bbs_w_set_lang(lang, acl_set_list[for_b]) + '</h' + acl_set_list_h[for_b] + '>';
+        acl_set_html += '<select id="opennamu_' + acl_set_list[for_b] + '">';
+        
+        let select = '';
+        for(let for_a = 0; for_a < acl_list.length; for_a++) {
+            let acl_list_view = acl_list[for_a];
+            acl_list_view = acl_list_view === "" ? "normal" : acl_list_view;
+
+            select += '<option value="' + acl_list[for_a] + '">' + acl_list_view + '</option>';
+        }
+
+        acl_set_html += select;
+        acl_set_html += '</select>';
+    }
+
+    return acl_set_html;
+}
+
+function opennamu_bbs_w_set() {
+    const url = window.location.pathname;
+    const url_split = url.split('/');
+
+    let set_id = url_split[3];
+
+    let acl_set_list = ["bbs_view_acl", "bbs_acl", "bbs_edit_acl", "bbs_comment_acl"];
+    let acl_set_list_h = [2, 3, 4, 4];
+
+    let markup_set_list = ["bbs_markup"];
+    let markup_set_list_h = [2];
+    
+    let lang_str = 'save reference markup';
+    for(let for_a = 0; for_a < acl_set_list.length; for_a++) {
+        lang_str += ' ' + acl_set_list[for_a];
+    }
+
+    let lang_data = new FormData();
+    lang_data.append('data', lang_str);
+
+    let make_html = '';
+
+    fetch('/api/v2/lang', {
+        method : 'POST',
+        body : lang_data,
+    }).then(function(res) {
+        return res.json();
+    }).then(function(lang) {
+        lang = lang["data"];
+
+        fetch('/api/v2/list/acl/normal').then(function(res) {
+            return res.json();
+        }).then(function(acl_list) {
+            acl_list = acl_list["data"];
+
+            let acl_set_html = '<a href="/acl/TEST#exp">(' + lang['reference'] + ')</a>';
+            acl_set_html += opennamu_bbs_w_set_select(acl_set_list, acl_set_list_h, acl_list, lang);
+
+            make_html += acl_set_html;
+
+            return fetch('/api/v2/list/markup');
+        }).then(function(res) {
+            return res.json();
+        }).then(function(markup_list) {
+            markup_list = markup_list["data"];
+
+            make_html += opennamu_bbs_w_set_select(markup_set_list, markup_set_list_h, markup_list, lang);
+
+            return;
+        }).then(function() {
+            document.getElementById('opennamu_bbs_w_set').innerHTML = renderSimpleSet('' +
+                make_html +
+                '<hr class="main_hr">' + 
+                '<button onclick="opennamu_bbs_w_set_post();">' + lang['save'] + '</button>' +
+            '');
+
+            let total_set_list = [];
+            total_set_list.concat(acl_set_list);
+            total_set_list.concat(markup_set_list);
+
+            for(let for_a = 0; for_a < total_set_list.length; for_a++) {
+                fetch('/api/v2/bbs/set/' + set_id + '/' + total_set_list[for_a]).then(function(res) {
+                    return res.json();
+                }).then(function(data) {
+                    data = data["data"][0];
+
+                    let select_element = document.getElementById('opennamu_' + total_set_list[for_a]);
+                    select_element.querySelector('option[value="' + data + '"]').selected = true;
+                });
+            }
+        });
+    });
+}