[추가] 신규 커뮤니티 댓글 관리 추가 ( 기존에 있던 댓글 관리에서 쿼리 수정하여 구현 )

dev_bert
isol2011 3 years ago
parent a84d5be4d2
commit 2807901bce

@ -8,47 +8,47 @@
WHERE 1 =1
AND x.bd_no = #b_no#
</select>
<select id="select_board_comment_list_root_by_b_no" resultClass="dataMap" parameterClass="dataMap">
SELECT x.*
FROM
(
SELECT
SELECT
x.comment
,x.bd_no
,x.ct_no
,x.p_ct_no
,x.p_ct_no
,x.reg_dt
,x.member_id
,0 AS level
FROM tbl_bf_board_comment x
WHERE 1 =1
WHERE 1 =1
AND x.bd_no = #bd_no#
AND p_ct_no IS NULL
AND p_ct_no IS NULL
ORDER BY ct_no DESC
<isNotEmpty property="page.startRowNum" prepend="">
LIMIT #page.startRowNum#,#page.rowCount#
</isNotEmpty>
) x
</select>
<select id="select_board_comment_list_child_by_b_no" resultClass="dataMap" parameterClass="dataMap">
select
select
x.*
, (case when substr(x.seq, 1,instr(x.seq,'>') -1) ='' then ct_no else substr(x.seq, 1,instr(x.seq,'>') -1) end) as r_ct_no
, (case when substr(x.seq, 1,instr(x.seq,'>') -1) ='' then ct_no else substr(x.seq, 1,instr(x.seq,'>') -1) end) as r_ct_no
from (SELECT a.bd_no
, a.ct_no
, a.p_ct_no
, a.member_id
, a.comment
, a.comment
, CONCAT_WS('>',k.ct_no,j.ct_no,i.ct_no, g.ct_no,f.ct_no,e.ct_no, d.ct_no, c.ct_no, b.ct_no, a.ct_no) seq
,(LENGTH( CONCAT_WS('>',k.ct_no,j.ct_no,i.ct_no, g.ct_no,f.ct_no,e.ct_no, d.ct_no, c.ct_no, b.ct_no, a.ct_no))
,(LENGTH( CONCAT_WS('>',k.ct_no,j.ct_no,i.ct_no, g.ct_no,f.ct_no,e.ct_no, d.ct_no, c.ct_no, b.ct_no, a.ct_no))
- LENGTH(REPLACE( CONCAT_WS('>', k.ct_no,j.ct_no,i.ct_no, g.ct_no,f.ct_no,e.ct_no, d.ct_no, c.ct_no, b.ct_no, a.ct_no), '>', ''))) / LENGTH('>') as lv
,t.name
,t.nickname
,t.profile_path
,t.name
,t.nickname
,t.profile_path
,a.v_nt
,DATE_FORMAT(a.reg_dt,'%Y.%m.%d %H:%i') reg_dt
,DATE_FORMAT(a.reg_dt,'%Y.%m.%d %H:%i') reg_dt
FROM tbl_bf_board_comment a
LEFT OUTER JOIN tbl_bf_board_comment b ON a.p_ct_no = b.ct_no
LEFT OUTER JOIN tbl_bf_board_comment c ON b.p_ct_no = c.ct_no
@ -60,36 +60,36 @@
LEFT OUTER JOIN tbl_bf_board_comment i ON h.p_ct_no = i.ct_no
LEFT OUTER JOIN tbl_bf_board_comment j ON i.p_ct_no = j.ct_no
LEFT OUTER JOIN tbl_bf_board_comment k ON j.p_ct_no = k.ct_no
left join tbl_member t
on a.member_id = t.member_id
WHERE a.bd_no = #bd_no# ) x
order by r_ct_no desc , seq
left join tbl_member t
on a.member_id = t.member_id
WHERE a.bd_no = #bd_no# ) x
order by r_ct_no desc , seq
</select>
<select id="select_board_comment_list" resultClass="dataMap" parameterClass="dataMap">
SELECT x.*
FROM
(
SELECT
x.bc_id
,x.p_bc_id
,x.b_no
,x.title
SELECT
x.ct_no
,x.p_ct_no
,x.bd_no
,x.comment
,x.reg_dt
,x.member_id
,LEFT(board.b_content, 20) AS b_content
,LEFT(board.title, 20) AS b_content
FROM tbl_bf_board_comment x
LEFT JOIN tbl_board board ON board.b_no = x.b_no
LEFT JOIN tbl_bf_board board ON board.bd_no = x.bd_no
WHERE 1 =1
<isEqual property="is_search" compareValue="Y">
<isNotEmpty property="search_col">
<isNotEmpty property="search_text">
<isEqual property="search_col" compareValue="bc_id">AND x.bc_id = #search_text#</isEqual>
<isEqual property="search_col" compareValue="p_bc_id">AND x.p_bc_id like N'%$search_text$%'</isEqual>
<isEqual property="search_col" compareValue="b_no">AND x.b_no like N'%$search_text$%'</isEqual>
<isEqual property="search_col" compareValue="title">AND x.title like N'%$search_text$%'</isEqual>
<isEqual property="search_col" compareValue="bc_id">AND x.ct_no = #search_text#</isEqual>
<isEqual property="search_col" compareValue="p_bc_id">AND x.p_ct_no like N'%$search_text$%'</isEqual>
<isEqual property="search_col" compareValue="b_no">AND x.bd_no like N'%$search_text$%'</isEqual>
<isEqual property="search_col" compareValue="title">AND x.comment like N'%$search_text$%'</isEqual>
<isEqual property="search_col" compareValue="reg_dt">AND x.reg_dt <![CDATA[=]]> #search_text#</isEqual>
<isEqual property="search_col" compareValue="member_id">AND x.member_id like N'%$search_text$%'</isEqual>
</isNotEmpty>
@ -104,7 +104,7 @@
</isNotEmpty>
</isEqual>
ORDER BY bc_id DESC
ORDER BY ct_no DESC
<isNotEmpty property="page.startRowNum" prepend="">
LIMIT #page.startRowNum#,#page.rowCount#
@ -119,9 +119,9 @@
<isEqual property="is_search" compareValue="Y">
<isNotEmpty property="search_col">
<isNotEmpty property="search_text">
<isNotEmpty property="search_text">
<isEqual property="search_col" compareValue="bd_no">AND x.bd_no like N'%$search_text$%'</isEqual>
<isEqual property="search_col" compareValue="title">AND x.title like N'%$search_text$%'</isEqual>
<isEqual property="search_col" compareValue="title">AND x.comment like N'%$search_text$%'</isEqual>
<isEqual property="search_col" compareValue="reg_dt">AND x.reg_dt <![CDATA[=]]> #search_text#</isEqual>
<isEqual property="search_col" compareValue="member_id">AND x.member_id like N'%$search_text$%'</isEqual>
</isNotEmpty>
@ -141,35 +141,35 @@
SELECT x.*
FROM
(
SELECT
x.bc_id
,x.p_bc_id
,x.b_no
,x.title
SELECT
x.ct_no
,x.p_ct_no
,x.bd_no
,x.comment
,x.reg_dt
,x.member_id
FROM tbl_bf_board_comment x
WHERE 1 = 1
AND x.bc_id = #bc_id#
) x
AND x.ct_no = #bc_id#
) x
</select>
<insert id="insert_board_comment" parameterClass="dataMap">
<insert id="insert_board_comment" parameterClass="dataMap">
INSERT tbl_bf_board_comment
(
(
reg_dt
<isNotEmpty property="bc_id">,bc_id</isNotEmpty>
<isNotEmpty property="p_bc_id">,p_bc_id</isNotEmpty>
<isNotEmpty property="b_no">,b_no</isNotEmpty>
<isNotEmpty property="title">,title</isNotEmpty>
<isNotEmpty property="bc_id">,ct_no</isNotEmpty>
<isNotEmpty property="p_bc_id">,p_ct_no</isNotEmpty>
<isNotEmpty property="b_no">,bd_no</isNotEmpty>
<isNotEmpty property="title">,comment</isNotEmpty>
<isNotEmpty property="member_id">,member_id</isNotEmpty>
) VALUES (
NOW()
<isNotEmpty property="bc_id">,#bc_id#</isNotEmpty>
<isNotEmpty property="p_bc_id">,#p_bc_id#</isNotEmpty>
<isNotEmpty property="b_no">,#b_no#</isNotEmpty>
<isNotEmpty property="title">,#title#</isNotEmpty>
<isNotEmpty property="bc_id">,#ct_no#</isNotEmpty>
<isNotEmpty property="p_bc_id">,#p_bc_id#</isNotEmpty>
<isNotEmpty property="b_no">,#b_no#</isNotEmpty>
<isNotEmpty property="title">,#title#</isNotEmpty>
<isNotEmpty property="member_id">,#member_id#</isNotEmpty>
)
@ -179,26 +179,26 @@
</insert>
<update id="update_board_comment" parameterClass="dataMap">
<update id="update_board_comment" parameterClass="dataMap">
UPDATE tbl_bf_board_comment
SET
bc_id = #bc_id#
<isNotEmpty property="p_bc_id">,p_bc_id = #p_bc_id#</isNotEmpty>
<isNotEmpty property="b_no">,b_no = #b_no#</isNotEmpty>
<isNotEmpty property="title">,title = #title#</isNotEmpty>
SET
ct_no = #bc_id#
<isNotEmpty property="p_bc_id">,p_ct_no = #p_bc_id#</isNotEmpty>
<isNotEmpty property="b_no">,bd_no = #b_no#</isNotEmpty>
<isNotEmpty property="title">,comment = #title#</isNotEmpty>
<isNotEmpty property="reg_dt">,reg_dt = #reg_dt#</isNotEmpty>
<isNotEmpty property="member_id">,member_id = #member_id#</isNotEmpty>
WHERE bc_id = #bc_id#
WHERE ct_no = #bc_id#
</update>
<delete id="delete_board_comment_single" parameterClass="dataMap">
<delete id="delete_board_comment_single" parameterClass="dataMap">
DELETE FROM tbl_bf_board_comment
WHERE bc_id = #bc_id#
WHERE ct_no = #bc_id#
</delete>
<delete id="delete_board_comment_multi" parameterClass="dataMap">
<delete id="delete_board_comment_multi" parameterClass="dataMap">
DELETE FROM tbl_bf_board_comment
WHERE bc_id IN
WHERE ct_no IN
<iterate property="list_checked" conjunction="," open="(" close=")">
#list_checked[]#
</iterate>

@ -0,0 +1,325 @@
<#include "/admin/include/index_top.ftl">
<!-- begin #content -->
<div id="content" class="content">
<#include "/admin/include/index_top_navi.ftl">
<div class="panel panel-inverse">
<div class="panel-heading">
<h4 class="panel-title">&nbsp;</h4>
</div>
<div class="panel-toolbar form-inline">
<div class="form-group">
<label>선택 : </label>
<select id="search_col_dt" name="search_col_dt" class="form-control m-r-3">
<option value="reg_dt" <#if model['search_col_dt']! == 'reg_dt'>selected</#if>>등록일시</option>
</select>
<label>시작일 : </label>
<div style="width:150px" class="input-group date datetimepicker m-r-3">
<input type="text" id="search_s_dt" name="search_s_dt" value="<#if model['search_s_dt']?exists>${model['search_s_dt']}</#if>" class="form-control datetimepicker">
<span class="input-group-addon"><span class="glyphicon glyphicon-calendar"></span></span>
</div>
<label>종료일 : </label>
<div style="width:150px" class="input-group date datetimepicker m-r-3">
<input type="text" id="search_e_dt" name="search_e_dt" value="<#if model['search_e_dt']?exists>${model['search_e_dt']}</#if>" class="form-control datetimepicker">
<span class="input-group-addon"><span class="glyphicon glyphicon-calendar"></span></span>
</div>
</div>
<label>조건별</label>
<select id="search_col" name="search_col" class="form-control m-r-3">
<option value="title" <#if model['search_col']! == 'title'>selected</#if>>댓글</option>
<option value="member_id" <#if model['search_col']! == 'member_id'>selected</#if>>회원아이디</option>
</select>
<div style="width:150px" class="input-group">
<input type="text" id="search_text" name="search_text" value="${model['search_text']!}" class="form-control" placeholder="검색어 입력">
<span onclick="javascript:search_form();" class="input-group-addon"><span class="fa fa-search"></span></span>
</div>
</div>
<div class="panel-toolbar text-right">
<div class="pull-left">
<div class="btn-group btn-list-set">
<#if model['map_auth']?exists>
<#if model['map_auth']['auth_d']?exists && model['map_auth']['auth_d'] != 'N'>
<button type="button" class="btn btn-danger btn-sm" onclick="javascript:delFrm();">DEL</button>
</#if>
</#if>
</div>
전체 :
${model['page']['rowMax']?c}
</div>
&nbsp;
</div>
<div class="panel-body">
<div class="table-responsive">
<table class="table table-bordered table-condensed table-hover">
<colgroup>
<col class="col-xs-0">
<col class="col-xs-0">
<col class="col-xs-0">
<col class="col-xs-0">
<col class="col-xs-3">
<col class="col-xs-3">
<col>
</colgroup>
<thead>
<tr>
<th class="no-sort sorting_disabled" rowspan="1" colspan="1" aria-label="" style="width: 29px;"><label class="no-margin"><input type="checkbox" id="seqAll" name="seqAll" onchange="javascript:toggleCheckbox();"><span class="text"></span></label></th>
<th>순서</th>
<th>ct_no</th>
<th>상위ct_no</th>
<th>글번호</th>
<th>댓글</th>
<th>등록일시</th>
<th>회원아이디</th>
</tr>
</thead>
<tbody>
<#if model[ 'lm']? has_content>
<#list model[ 'lm'] as item>
<tr>
<td><label><input type="checkbox" id="seq" name="seq" value="${item['ct_no']}" /><span class='text'></span></label></td>
<td>${item_index}</td>
<td>${item['ct_no']!}</td>
<td>${item['p_ct_no']!}</td>
<td>${item['bd_no']!} : ${item['b_content']!}</td>
<td>${item['comment']!}</td>
<td><#if item['reg_dt']?exists>${item['reg_dt']?string('yyyy.MM.dd HH:mm:ss')}</#if></td>
<td>${item['member_id']!}</td>
</tr>
</#list>
</#if>
</tbody>
</table>
</div>
<!-- START bottom_t -->
<div class=" form-inline">
<div class="form-group">
<ul class="pagination pagination m-t-0 m-b-10">
<@b.Paging url="${URL_PATH}/list_board_comment.do"
pageCount="${model['page']['pageCount']?c}"
rowCount="${model['page']['rowCount']?c}"
rowMax="${model['page']['rowMax']?c}"
nowPage="${model['page']['nowPage']?c}"
params="is_search=${model['is_search']!}&search_col=${model['search_col']!}&search_text=${model['search_text']!}&search_col_dt=${model['search_col_dt']!}&search_s_dt=${model['search_s_dt']!}&search_e_dt=${model['search_e_dt']!}&"
prev_first="<i class=\"fa fa-angle-double-left\"></i>"
prev="<i class=\"fa fa-angle-left\"></i>"
next="<i class=\"fa fa-angle-right\"></i>"
next_end="<i class=\"fa fa-angle-double-right\"></i>"
class_prev_first="paginate_button first"
class_prev="paginate_button previous"
class_next="paginate_button next"
class_next_end="paginate_button last"
class_page="paginate_button"
class_page_active=" active"
is_prev_first="Y"
is_next_end="Y"
/>
</ul>
</div>
<#if model['page']['rowMax']?exists && model['page']['rowMax'] != 0>
<div id="DataTables_Table_0_length" class="form-group pull-right">
<label>총 개수 : ${model['page']['rowMax']?c} 개</label>&nbsp;&nbsp;&nbsp;
<label><b>${model['page']['nowPage']?c} / ${model['page']['maxPage']?c}</b></label> -
<label>행 표시 :
<#assign row_count = [10, 20, 50, 100]>
<select id="sel_row_count" name="DataTables_Table_0_length" class="form-control input-sm">
<#list row_count as item>
<option value="${item}" <#if model['page']['rowCount']?exists == false || model['page']['rowCount']?number == item>selected</#if>>${item}</option>
</#list>
</select>
</label>
</div>
</#if>
</div><!-- END bottom_t -->
</div><!-- END panel-body -->
</div><!-- END panel -->
</div><!-- end #content -->
<hr>
<#include "/admin/include/index_bottom.ftl">
<form id="frmSearch" name="frmSearch" method="post" action="list_board_comment.do">
<input type="hidden" id="is_search" name="is_search" value="Y" />
<input type="hidden" id="search_col" name="search_col" value="<#if model['search_col']?exists>${model['search_col']}</#if>" />
<input type="hidden" id="search_text" name="search_text" value="<#if model['search_text']?exists>${model['search_text']}</#if>" />
<input type="hidden" id="search_col_dt" name="search_col_dt" value="<#if model['search_col_dt']?exists>${model['search_col_dt']}</#if>" />
<input type="hidden" id="search_s_dt" name="search_s_dt" value="<#if model['search_s_dt']?exists>${model['search_s_dt']}</#if>" />
<input type="hidden" id="search_e_dt" name="search_e_dt" value="<#if model['search_e_dt']?exists>${model['search_e_dt']}</#if>" />
<input type="hidden" id="rowCount" name="rowCount" value="<#if model['page']?exists && model['page']['rowCount']?exists>${model['page']['rowCount']?c}</#if>" />
</form>
<form id="frmDel" name="frmDel" method="post" action="delete_board_comment_multi.do">
<input type="hidden" id="list_checked" name="list_checked" />
</form>
<form id="frmView" name="frmView" method="post" action="view_board_comment.do">
<input type="hidden" id="ct_no" name="ct_no" />
</form>
<form id="frmDownloadExcel" name="frmDownloadExcel" method="post" action="download_excel_board_comment.do">
<input type="hidden" id="scope" name="scope" />
<input type="hidden" id="is_search" name="is_search" value="Y" />
<input type="hidden" id="search_col" name="search_col" value="<#if model['search_col']?exists>${model['search_col']}</#if>" />
<input type="hidden" id="search_text" name="search_text" value="<#if model['search_text']?exists>${model['search_text']}</#if>" />
<input type="hidden" id="search_col_dt" name="search_col_dt" value="<#if model['search_col_dt']?exists>${model['search_col_dt']}</#if>" />
<input type="hidden" id="search_s_dt" name="search_s_dt" value="<#if model['search_s_dt']?exists>${model['search_s_dt']}</#if>" />
<input type="hidden" id="search_e_dt" name="search_e_dt" value="<#if model['search_e_dt']?exists>${model['search_e_dt']}</#if>" />
<input type="hidden" id="nowPage" name="nowPage" value="<#if model['page']?exists && model['page']['nowPage']?exists>${model['page']['nowPage']?c}</#if>" />
</form>
<script>
function search_form() {
var search_col_dt = $("#search_col_dt option:selected").val();
var search_s_dt = $('#search_s_dt').val();
var search_e_dt = $('#search_e_dt').val();
var search_col = $("#search_col option:selected").val();
var search_text = $('#search_text').val();
var rowCount = $("#sel_row_count option:selected").val();
$('#frmSearch').children('#search_col_dt').val(search_col_dt);
$('#frmSearch').children('#search_s_dt').val(search_s_dt);
$('#frmSearch').children('#search_e_dt').val(search_e_dt);
$('#frmSearch').children('#search_col').val(search_col);
$('#frmSearch').children('#search_text').val(search_text);
$('#frmSearch').children('#rowCount').val(rowCount);
$('#frmSearch').submit();
}
function viewFrm(pk) {
if (pk != '') {
$('#frmView').children('#ct_no').val(pk);
} else {
$('#frmView').children('#ct_no').remove();
}
$('#frmView').submit();
}
function delFrm() {
arrCheck = document.getElementsByName("seq");
params = '';
for (i = 0; i < arrCheck.length; i++) {
if (arrCheck[i].checked == true) {
params += arrCheck[i].value + ',';
}
}
if (params == '') {
alert('삭제할 대상을 체크해주세요');
} else {
$('#frmDel').children('#list_checked').val(params);
$('#frmDel').submit();
}
}
function toggleCheckbox() {
var ischecked = $('#seqAll').is(':checked');
arrCheck = document.getElementsByName("seq");
for (i = 0; i < arrCheck.length; i++) {
arrCheck[i].checked = ischecked;
}
}
</script>
<script>
function download_excel(scope) {
$('#frmDownloadExcel').children('#scope').val(scope);
$('#frmDownloadExcel').submit();
}
</script>
<script>
$(document).ready(function() {
$(".text-overflow-ellipsis").tooltip({
placement: "top"
});
$('.datetimepicker').datetimepicker({
format: 'YYYYMMDD',
pickTime: false,
language: 'kr'
});
$('.popover-image > .trigger').popover({
trigger: 'manual',
animation: false,
html: true,
title: function() {
return $(this).parent().find('.thumnail-image-title').html();
},
content: function() {
return $(this).parent().find('.thumnail-image').html();
},
container: 'body',
placement: 'bottom'
}).on("mouseenter", function() {
var _this = this; // thumbcontainer
// Close all other Popovers
$('.popover-image > .trigger').not(_this).popover('hide');
if ($(_this).is(':hover')) {
$(_this).popover("show");
}
$(".popover").on("mouseleave", function() {
$('.popover-image > .trigger').popover('hide');
});
}).on("mouseleave", function() {
var _this = this;
});
$('#sel_row_count').change(function() {
search_form();
});
});
</script>
<script>
$(document).ready(function(){
<#if model['ERROR_MSG']?exists>
Notify('${model['ERROR_MSG']!}', 'top-right', '5000', 'danger', 'fa-bullhorn', true);
</#if>
<#if model['script_msg']?exists>
alert('${model['script_msg']!}');
</#if>
});
</script>
Loading…
Cancel
Save