Browse Source

댓글 기능 추가

잉여개발기 4 months ago
parent
commit
a95a8b2763

+ 8 - 0
route/view_w.py

@@ -359,6 +359,14 @@ async def view_w(name = 'Test', do_type = '', doc_rev = ''):
         view_count_data = await python_to_golang("get_json", path = "v2/page_view/" + url_pas(name))
         view_count = view_count_data['data']
 
+        other_set = {}
+        other_set['doc_name'] = name
+
+        comment_api = await python_to_golang("api_w_comment", other_set = other_set)
+        comment = comment_api['data']
+
+        div += comment
+
         return await render_template(
             name_view,
             div,

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

@@ -240,52 +240,6 @@ function opennamu_do_trace_spread() {
     }
 }
 
-function opennamu_do_render(to_obj, data, name = '', do_type = '', option = '', callback = undefined) {
-    let url;
-    if (do_type === '') {
-        url = "/api/render";
-    } else {
-        url = "/api/render/" + do_type;
-    }
-
-    fetch(url, {
-        method: 'POST',
-        headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
-        body: new URLSearchParams({
-            'name': name,
-            'data': data,
-            'option': option
-        })
-    })
-        .then(response => {
-            if (!response.ok) {
-                throw new Error(`API 호출 실패: ${response.status}`);
-            }
-            return response.json();
-        })
-        .then(text => {
-            if (document.getElementById(to_obj)) {
-                if (text["data"]) {
-                    document.getElementById(to_obj).innerHTML = text["data"];
-                    eval(text["js_data"]);
-                } else {
-                    document.getElementById(to_obj).innerHTML = '';
-                }
-
-                if (callback) {
-                    callback();
-                }
-            }
-        })
-        .catch(err => {
-            console.error('렌더링 호출 중 오류 발생:', err);
-            if (document.getElementById(to_obj)) {
-                document.getElementById(to_obj).innerHTML = '렌더링에 실패했습니다. 잠시 후 다시 시도해 주세요.';
-            }
-        });
-}
-
-
 function opennamu_page_control(url, page, data_length, data_length_max = 50) {
     let next = function() {
         if(data_length_max === data_length) {

+ 86 - 0
views/main_css/js/func/render.js

@@ -316,3 +316,89 @@ function opennamu_do_toc() {
         return '<div class="opennamu_TOC" id="toc"><div class="opennamu_TOC_title">TOC</div><br>' + toc_html + '</div>';
     });
 }
+
+function opennamu_do_render(to_obj, data, name = '', do_type = '', option = '', callback = undefined) {
+    let url;
+    if (do_type === '') {
+        url = "/api/render";
+    } else {
+        url = "/api/render/" + do_type;
+    }
+
+    fetch(url, {
+        method: 'POST',
+        headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
+        body: new URLSearchParams({
+            'name': name,
+            'data': data,
+            'option': option
+        })
+    }).then(response => {
+        if(!response.ok) {
+            throw new Error(`API 호출 실패: ${response.status}`);
+        }
+
+        return response.json();
+    }).then(text => {
+        if(document.getElementById(to_obj)) {
+            if(text["data"]) {
+                document.getElementById(to_obj).innerHTML = text["data"];
+                eval(text["js_data"]);
+            } else {
+                document.getElementById(to_obj).innerHTML = '';
+            }
+
+            if(callback) {
+                callback();
+            }
+        }
+    }).catch(err => {
+        console.error('렌더링 호출 중 오류 발생:', err);
+        if(document.getElementById(to_obj)) {
+            document.getElementById(to_obj).innerHTML = '렌더링에 실패했습니다. 잠시 후 다시 시도해 주세요.';
+        }
+    });
+}
+
+function opennamu_do_render_with_dom(to_obj, from_obj, name = '', do_type = '', option = '', callback = undefined) {
+    let url;
+    if (do_type === '') {
+        url = "/api/render";
+    } else {
+        url = "/api/render/" + do_type;
+    }
+
+    fetch(url, {
+        method: 'POST',
+        headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
+        body: new URLSearchParams({
+            'name': name,
+            'data': opennamu_xss_filter_decode(document.getElementById(from_obj).innerHTML),
+            'option': option
+        })
+    }).then(response => {
+        if(!response.ok) {
+            throw new Error(`API 호출 실패: ${response.status}`);
+        }
+
+        return response.json();
+    }).then(text => {
+        if(document.getElementById(to_obj)) {
+            if(text["data"]) {
+                document.getElementById(to_obj).innerHTML = text["data"];
+                eval(text["js_data"]);
+            } else {
+                document.getElementById(to_obj).innerHTML = '';
+            }
+
+            if(callback) {
+                callback();
+            }
+        }
+    }).catch(err => {
+        console.error('렌더링 호출 중 오류 발생:', err);
+        if(document.getElementById(to_obj)) {
+            document.getElementById(to_obj).innerHTML = '렌더링에 실패했습니다. 잠시 후 다시 시도해 주세요.';
+        }
+    });
+}

+ 0 - 118
views/main_css/js/route/bbs_w_post.js

@@ -35,122 +35,4 @@ function opennamu_load_tabom_count(bbs_id, bbs_code) {
             }
         }
     });
-}
-
-function opennamu_load_comment() {
-    const url = window.location.pathname;
-    const url_split = url.split('/');
-
-    let bbs_id = url_split[3];
-    let bbs_code = url_split[4];
-
-    let lang_data = new FormData();
-    lang_data.append('data', 'normal comment tool return upvote');
-
-    fetch('/api/v2/lang', {
-        method : 'POST',
-        body : lang_data,
-    }).then(function(res) {
-        return res.json();
-    }).then(function(lang) {
-        lang = lang["data"];
-
-        fetch('/api/v2/bbs/w/comment/' + bbs_id + '-' + bbs_code + '/around').then(function(res) {
-            return res.json();
-        }).then(function(data) {
-            let data_html = '';
-
-            if(data) {
-                data = data["data"];
-
-                let end_render = [];
-                let select = '<select id="opennamu_comment_select" name="comment_select">';
-                select += '<option value="0">' + lang["normal"] + '</option>';
-
-                for(let for_a in data) {
-                    let data_in = data[for_a];
-
-                    let code_id = data_in["id"] + '-' + data_in["code"];
-                    code_id = code_id.replace(/^[0-9]+-[0-9]+-/, '');
-
-                    let count = 0;
-                    for(let for_a = 0; for_a < code_id.length; for_a++) {
-                        if(code_id[for_a] === '-') {
-                            count += 1;
-                        }
-                    }
-                    
-                    select += '<option value="' + code_id + '">' + code_id + '</option>';
-
-                    let color = 'default';
-                    let date = '';
-
-                    date += '<a href="javascript:opennamu_change_comment(\'' + code_id + '\');">(' + lang["comment"] + ')</a> ';
-                    date += '<a href="/bbs/tool/' + bbs_id + '/' + bbs_code + '/' + code_id + '">(' + lang["tool"] + ')</a> ';
-                    date += data_in["comment_date"];
-
-                    data_html += '<span style="padding-left: ' + String(20 * count) + 'px;"></span>';
-                    data_html += opennamu_get_thread_ui(
-                        data_in["comment_user_id_render"], 
-                        date, 
-                        '<div class="opennamu_comment_scroll" id="opennamu_thread_render_' + code_id + '">' + opennamu_xss_filter(data_in["comment"]) + '</div>',
-                        code_id,
-                        color,
-                        '',
-                        'width: calc(100% - ' + String(20 * count) + 'px);',
-                        ''
-                    );
-
-                    end_render.push([
-                        data_in["comment"],
-                        code_id
-                    ]);
-                }
-
-                select += '</select> <a href="javascript:opennamu_return_comment();">(' + lang["return"] + ')</a>';
-                select += '<hr class="main_hr">';
-
-                if(document.getElementById('opennamu_bbs_w_post_select')) {
-                    document.getElementById('opennamu_bbs_w_post_select').innerHTML = select;
-                }
-
-                if(document.getElementById('opennamu_bbs_w_post_tabom')) {
-                    document.getElementById('opennamu_bbs_w_post_tabom').innerHTML = '' +
-                        '<a href="javascript:void(0);" id="opennamu_tabom_button">' +
-                            '<span class="opennamu_bbs_w_post_tabom opennamu_svg opennamu_svg_tabom">&nbsp;</span>' +
-                        '</a>' +
-                        '<hr class="main_hr">' +
-                        '<span>' + lang["upvote"] + '</span> <span class="opennamu_tabom_count"></span>' +
-                    '';
-                }
-
-                document.getElementById('opennamu_bbs_w_post').innerHTML = data_html;
-                
-                opennamu_load_tabom_count(bbs_id, bbs_code);
-
-                document.getElementById('opennamu_tabom_button').addEventListener("click", function() {
-                    opennamu_post_tabom(bbs_id, bbs_code);
-                });
-
-                for(let for_a = 0; for_a < end_render.length; for_a++) {
-                    let observer = new IntersectionObserver(entries => {
-                        entries.forEach(entry => {
-                            if(entry.isIntersecting) {
-                                opennamu_do_render(
-                                    'opennamu_thread_render_' + end_render[for_a][1],
-                                    end_render[for_a][0], 
-                                    '',
-                                    'thread'
-                                );
-
-                                observer.unobserve(entry.target);
-                            }
-                        });
-                    });
-
-                    observer.observe(document.getElementById('opennamu_thread_render_' + end_render[for_a][1]));
-                }
-            }
-        });
-    });
 }