HANYANG_REACT/www/kadm/board/contents_list.php

259 lines
10 KiB
PHP

<?php
$cate_id = "mnu_board_contents"; //현재 메뉴 ID 필수!!!
include_once "{$_SERVER['DOCUMENT_ROOT']}/common.inc.php";
include_once _ADM_INC_PATH_ ."/auth_check.php";
//전체게시판
$brdObj = new Board("");
$where = new DB_where("and");
$blist = $brdObj->getBoardList("board_id, board_name", $where, "board_name asc");
$board_list = array();
foreach( (array)$blist as $row ){
$board_list[$row['board_id']] = $row['board_name'];
}
//검색필드
$sfields = array(
"board_name" => "게시판명",
"brd_id" => "게시판코드",
"title" => "제목",
"uname" => "작성자",
"contents" => "내용",
);
include _ADM_INC_PATH_ ."/header.html";
?>
<form method="get" name="sform" id="sform" class="sform form-inline" action="<?=$_SERVER['PHP_SELF']?>">
<label> <span>게시판 :</span>
<select name="board_id" id="board_id" class="form-select-sm form-control-sm" data-defval="<?=$_REQUEST['board_id']?>">
<?=getSelectOptions($board_list,"- 전체게시판 -")?>
</select>
</label>
<label> <span>검색필드 :</span>
<select name="sfld" id="member_auth" class="form-select-sm form-control-sm" data-defval="<?=$_REQUEST['sfld']?>">
<?=getSelectOptions($sfields,"- 전체 -")?>
</select>
</label>
<label> <span>검색 내용 :</span> <input type="text" name="stxt" class="form-control form-control-sm" value="<?=$_REQUEST['stxt']?>"></label>
<button type="submit" class="btn btn-primary btn-sm">검색</button>
<label> <span>라인수 :</span>
<select name="viewnum" id="viewnum" class="form-select-sm form-control-sm" data-defval="<?=$_REQUEST['viewnum']?:20?>" onchange="this.form.submit()">
<option value="">라인수</option>
<option value="10">10개</option>
<option value="20">20개</option>
<option value="30">30개</option>
<option value="50">50개</option>
<option value="100">100개</option>
</select>
</label>
</form>
<div id="cmd_bar" class="mb-2">
<div class="h4"><i class="bi bi-files-alt"></i> 게시물 리스트</div>
<div class="text-right">
<button class="btn btn-danger btnDelCont" data-defval="multiple"> <i class="bi bi-trash-fill"></i> 게시물 삭제</button>
</div>
</div>
<div class="container-fluid mt-3">
<div class="row">
<div class="col">
<h5 class="d-flex justify-content-between">
<span><i class="bi bi-subtract"></i> 게시물 관리</span>
</h5>
<div class="cont_hfix">
<form name="frm_content_list" method="post" action="###">
<table class="table table-bordered mt-3">
<colgroup>
<col width="5%">
<col width="*">
<col width="*">
<col width="*">
<col width="*">
<col width="5%">
<col width="5%">
<col width="5%">
</colgroup>
<thead class="sticky-top">
<tr class="text-center bg-dark text-light">
<th><label><input type="checkbox" class="allsel" data-tgt="delchk"> No</label></th>
<th><a href="javascript:sort_page_move(form2qry(document.sform),'board_name');" class="text-decoration-none text-white">게시판 명</a></th>
<th><a href="javascript:sort_page_move(form2qry(document.sform),'title' );" class="text-decoration-none text-white">제목</a></th>
<th><a href="javascript:sort_page_move(form2qry(document.sform),'uname' );" class="text-decoration-none text-white">작성자</a></th>
<th><a href="javascript:sort_page_move(form2qry(document.sform),'reg_date' );" class="text-decoration-none text-white">날짜</a></th>
<th><a href="javascript:sort_page_move(form2qry(document.sform),'view' );" class="text-decoration-none text-white">조회수</a></th>
<th>바로가기</th>
<th>삭제</th>
</tr>
</thead>
<tbody class="table-sm">
<?php
$_REQUEST['no_echo'] = true;
$_REQUEST['mode'] = "getContentsList";
include "./board.ajax.php";
$cont_list = $retval['data'];
foreach( $cont_list->rows as $cont ){
?>
<tr class="cursor text-center">
<td><input type="checkbox" name="delchk[]" value="<?=$cont['board_id']?>|<?=$cont['cid']?>"> <?=$cont_list->line_cnt--?></td>
<td @click="contents.show = !contents.show"><?=$cont['board_name']?></td>
<td class="text-left" @click="contents.show = !contents.show"><?=$cont['title']?> <?=$cont['onum']>0 ? "({$cont['onum']})" : ""?></td>
<td @click="contents.show = !contents.show"><?=$cont['uname']?></td>
<td @click="contents.show = !contents.show"><?=getDT_datetime($cont['reg_date'])?></td>
<td @click="contents.show = !contents.show"><?=$cont['views']?></td>
<td><a href="//<?=_HOME_URL_?>/kbrd/kbrd_view.php?board_id=<?=$cont['board_id']?>&cid=<?=$cont['cid']?>" type="button" class="btn-sm btn-success" target="_blank">바로가기</a></td>
<td><button type="button" class="btn btn-sm btn-danger btnDelCont" data-defval="<?=$cont['board_id']?>|<?=$cont['cid']?>">삭제</button></td>
</tr>
<tr class="d-none">
<td colspan="1"></td>
<td colspan="5">
<div class="card">
<div class="card-body px-5 bg-secondary"><?=$cont['contents_txt']?></div>
</div>
</td>
<td colspan="2"></td>
</tr>
<?php
}
if( count($cont_list->rows) < 1 ){
?>
<tr>
<td colspan="20" class="text-center text-danger">※ <?=cUtil\Mlang::getText("결과가 존재하지 않습니다.");?></td>
</tr>
<?php }?>
</tbody>
</table>
</form>
<nav aria-label="Page navigation example">
<ul class="pagination justify-content-center align-items-center">
<?php foreach( (array)$cont_list->pages as $page ){?>
<li><?=$page?></li>
<?php }?>
</ul>
</nav>
</div>
</div>
</div>
</div>
</div>
<script>
/*
var vue_data = {
contents_list: [],
query: {
page: "<?=$_REQUEST['page']?:"1"?>",
brd_id: "<?=$_REQUEST['brd_id']?:""?>",
bid: "<?=$_REQUEST['bid']?:""?>",
gubun: "<?=$_REQUEST['gubun']?:""?>",
viewnum: "<?=$_REQUEST['viewnum']?:"30"?>",
sfld: "<?=$_REQUEST['sfld']?:""?>",
stxt: "<?=$_REQUEST['stxt']?:""?>",
ofld: "<?=$_REQUEST['ofld']?:""?>",
oasc: "<?=$_REQUEST['oasc']?:""?>",
}
}
*/
</script>
<script>
/*
if( jQuery("#contents_list").length ){
var V_contents_list = new Vue({
data : vue_data,
mounted: function(){
var that = this;
that.getContentsList();
},
computed:{},
methods:{
getContentsList: function( page, viewNum, search ){
var that = this;
var post_data = new FormData();
post_data.append("mode","getContentsList");
Object.keys(that.query).map( function(key){
post_data.append(key,that.query[key]);
});
exec_ajax_common("./board.ajax.php",post_data,"json",function(resp){
if( resp.code ){
for( var a in resp.data.contents_list.rows ){
resp.data.contents_list.rows[a].show = false;
resp.data.contents_list.rows[a].hover = false;
}
that.contents_list = resp.data.contents_list;
}else{
palert(resp.mesg);
}
});
},
delContents: function(nid){
if( confirm("정말 삭제하시겠습니까?") ){
var that = this;
var post_data = new FormData();
post_data.append("mode","delContents");
if(nid == 'all'){
var del_chk = Array.from(document.querySelectorAll("[name^=del_chk]")).filter( function(e){ return e.checked } ).map( function(e){ return e.value } );
for( var a=0 ; a<del_chk.length ; a++ ){
post_data.append("del_chk[]", del_chk[a]);
}
}else{
post_data.append("del_chk[]", nid);
}
exec_ajax_common("./board.ajax.php",post_data,"json",function(resp){
if( resp.code ){
// location.reload();
}else{
palert(resp.mesg);
}
});
}
}
},
}).$mount("#contents_list");
}
*/
</script>
<?php
include _ADM_INC_PATH_ ."/footer.html";
?>
<script>
const delContents = function(){
let bcid = jQuery(this).data("defval");
let formdata;
if( bcid == "multiple" ){
formdata = new FormData(document.forms['frm_content_list']);
}else{
formdata = new FormData();
formdata.append("delchk[]",bcid);
}
kuls_confirm("게시물 삭제","정말 삭제하시겠습니까?",function(){
formdata.append("mode","delContents");
ajax_form({
url: "./board.ajax.php",
type: "POST",
data: formdata,
success: function (data) {
if (!data.code) {
kuls_alert(data.mesg);
return;
}
kuls_alert('<?=cUtil\Mlang::getText("삭제 되었습니다.")?>',function(){
location.href = "<?=_ADM_URL_."/board/contents_list.php"?>";
});
},
error: function (request, status, error) {
kuls_alert(error.message);
}
});
},function(){return false;});
};
jQuery(".body").on("click",".btnDelCont",delContents);
</script>