잉여개발기 2 년 전
부모
커밋
a1f9c516e3

+ 2 - 0
app.py

@@ -744,6 +744,8 @@ app.route('/api/v2/doc_star_doc/<int:num>/<everything:name>', defaults = { 'db_s
 app.route('/api/v2/doc_watch_list/<int:num>/<everything:name>', defaults = { 'db_set' : db_set_str })(api_w_watch_list)
 app.route('/api/v2/set_reset/<everything:name>', defaults = { 'db_set' : db_set_str })(api_w_set_reset)
 
+app.route('/api/v2/user/setting/editor', methods = ['GET', 'POST', 'DELETE'], defaults = { 'db_set' : db_set_str })(api_user_setting_editor)
+
 # Func-main
 # 여기도 전반적인 조정 시행 예정
 app.route('/other')(main_tool_other)

+ 2 - 0
route/__init__.py

@@ -196,6 +196,8 @@ from route.go_api_bbs_w_comment import api_bbs_w_comment_n
 from route.go_api_topic import api_topic
 from route.go_api_topic_list import api_topic_list
 
+from route.go_api_user_setting_editor import api_user_setting_editor
+
 from route.go_api_w_raw import api_w_raw
 from route.go_api_w_random import api_w_random
 from route.go_api_w_xref import api_w_xref

+ 2 - 1
route/edit.py

@@ -80,6 +80,7 @@ def edit_editor(conn, ip, data_main = '', do_type = 'edit', addon = '', name = '
             ''' + monaco_editor_top + '''
             <hr class="main_hr">
             ''' + edit_button(conn) + '''
+            <div id="opennamu_editor_user_button"></div>
         </div>
         
         ''' + div + '''
@@ -97,7 +98,7 @@ def edit_editor(conn, ip, data_main = '', do_type = 'edit', addon = '', name = '
                 do_stop_exit();
                 do_paste_image();
                 do_monaco_init("''' + monaco_thema + '''");
-                do_simplemde_init();
+                opennnamu_do_user_editor();
             });
         </script>
                         

+ 31 - 0
route/go_api_user_setting_editor.py

@@ -0,0 +1,31 @@
+from .tool.func import *
+
+def api_user_setting_editor(db_set):
+    with get_db_connect() as conn:
+        other_set = {}
+        other_set["ip"] = ip_check()
+        
+        func_name = sys._getframe().f_code.co_name
+        if flask.request.method == 'POST':
+            func_name += '_insert'
+            other_set['data'] = flask.request.form.get('data', 'Test')
+        elif flask.request.method == 'DELETE':
+            func_name += '_delete'
+            other_set['data'] = flask.request.form.get('data', 'Test')
+        
+        other_set = json.dumps(other_set)
+
+        if platform.system() == 'Linux':
+            if platform.machine() in ["AMD64", "x86_64"]:
+                data = subprocess.Popen([os.path.join(".", "route_go", "bin", "main.amd64.bin"), sys._getframe().f_code.co_name, db_set, other_set], stdout = subprocess.PIPE).communicate()[0]
+            else:
+                data = subprocess.Popen([os.path.join(".", "route_go", "bin", "main.arm64.bin"), sys._getframe().f_code.co_name, db_set, other_set], stdout = subprocess.PIPE).communicate()[0]
+        else:
+            if platform.machine() in ["AMD64", "x86_64"]:
+                data = subprocess.Popen([os.path.join(".", "route_go", "bin", "main.amd64.exe"), sys._getframe().f_code.co_name, db_set, other_set], stdout = subprocess.PIPE).communicate()[0]
+            else:
+                data = subprocess.Popen([os.path.join(".", "route_go", "bin", "main.arm64.exe"), sys._getframe().f_code.co_name, db_set, other_set], stdout = subprocess.PIPE).communicate()[0]
+
+        data = data.decode('utf8')
+
+        return flask.Response(response = data, status = 200, mimetype = 'application/json')

BIN
route_go/bin/main.amd64.exe


+ 3 - 1
route_go/main.go

@@ -69,8 +69,10 @@ func main() {
 		route_data = route.Api_user_setting_editor_insert(call_arg[1:])
 	} else if call_arg[0] == "api_user_setting_editor_delete" {
 		route_data = route.Api_user_setting_editor_delete(call_arg[1:])
+	} else if call_arg[0] == "api_user_setting_editor" {
+		route_data = route.Api_user_setting_editor(call_arg[1:])
 	} else {
-		log.Fatal("404")
+		log.Fatal(call_arg[0] + " is 404")
 	}
 
 	fmt.Print(route_data)

+ 67 - 0
route_go/route/api_user_setting_editor.go

@@ -0,0 +1,67 @@
+package route
+
+import (
+	"encoding/json"
+	"log"
+	"opennamu/route/tool"
+)
+
+func Api_user_setting_editor(call_arg []string) string {
+	db_set := map[string]string{}
+	json.Unmarshal([]byte(call_arg[0]), &db_set)
+
+	other_set := map[string]string{}
+	json.Unmarshal([]byte(call_arg[1]), &other_set)
+
+	db := tool.DB_connect(db_set)
+	defer db.Close()
+
+	ip := other_set["ip"]
+	if !tool.IP_or_user(ip) {
+		stmt, err := db.Prepare(tool.DB_change(db_set, "select data from user_set where id = ? and name = 'user_editor_top'"))
+		if err != nil {
+			log.Fatal(err)
+		}
+		defer stmt.Close()
+
+		rows, err := stmt.Query(ip)
+		if err != nil {
+			log.Fatal(err)
+		}
+		defer rows.Close()
+
+		var data_list []string
+
+		for rows.Next() {
+			var data string
+
+			err := rows.Scan(&data)
+			if err != nil {
+				log.Fatal(err)
+			}
+
+			data_list = append(data_list, data)
+		}
+
+		return_data := make(map[string]interface{})
+		return_data["response"] = "ok"
+		
+		if len(data_list) == 0 {
+			return_data["data"] = map[string]string{}
+		} else {
+			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"] = "require auth"
+		return_data["language"] = map[string]string{
+			"authority_error": tool.Get_language(db, db_set, "authority_error", false),
+		}
+
+		json_data, _ := json.Marshal(return_data)
+		return string(json_data)
+	}
+}

+ 4 - 0
route_go/route/api_user_setting_editor_insert.go

@@ -17,6 +17,10 @@ func Api_user_setting_editor_insert(call_arg []string) string {
 	defer db.Close()
 
 	ip := other_set["ip"]
+	
+	log.Fatal(tool.IP_or_user(ip))
+	log.Fatal(ip)
+
 	if !tool.IP_or_user(ip) {
 		stmt, err := db.Prepare(tool.DB_change(db_set, "insert into user_set (id, name, data) values (?, 'user_editor_top', ?)"))
 		if err != nil {

+ 38 - 0
views/main_css/js/func/editor.js

@@ -314,4 +314,42 @@ function opennamu_do_editor_temp_save_load() {
         
         do_sync_monaco_and_textarea('textarea_to');
     }
+}
+
+function opennamu_do_user_editor_insert() {
+    let data = prompt();
+    if(data !== null && data !== "") {
+        let form_data = new FormData();
+        form_data.append('data', data);
+
+        fetch('/api/v2/user/setting/editor', {
+            method : 'post',
+            body : form_data,
+        }).then(function(res) {
+            return res.json();
+        }).then(function(data) {
+            console.log(data);
+            
+            opennnamu_do_user_editor();
+        });
+    }
+}
+
+function opennnamu_do_user_editor() {
+    fetch('/api/v2/user/setting/editor').then(function(res) {
+        return res.json();
+    }).then(function(data) {
+        if(data["response"] === "ok") {
+            let data_html = '';
+
+            for(let for_a = 0; for_a < data["data"].length; for_a++) {
+                data_html += '<a href="javascript:do_insert_data(\'' + opennamu_xss_filter(data["data"][for_a]) + '\');">(' + opennamu_xss_filter(data["data"][for_a]) + ')</a> ';
+            }
+
+            data_html += '<a href="javascript:opennamu_do_user_editor_insert();">(+)</a>';
+            data_html += '<hr class="main_hr">';
+
+            document.getElementById("opennamu_editor_user_button").innerHTML = data_html;
+        }
+    });
 }