Files
sake/src/main/webapp/WEB-INF/views/mngr/bbs/bbsmngr/BbsRegistC.jsp

2095 lines
120 KiB
Plaintext

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="ui" uri="http://www.winbit.kr/ctl/ui"%>
<%@ taglib prefix="f" uri="/WEB-INF/tlds/f.tld"%>
<%--
Class Name : BbsRegistC.jsp
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2023-12-06 최범식 최초 생성
2024-04-25 추지훈 수정
--%>
<!DOCTYPE html>
<html lang="ko">
<head>
<%@ include file="/WEB-INF/views/comm/mngr/Include.jsp"%>
</head>
<script>
isChkd_Dup = false;
tempData = {};
$(document).ready(function(){
fn_init_display();
fn_change_style('01');
});
/* ********************************************************
* 시작 화면 조작 함수
******************************************************** */
const fn_init_display = function() {
$('#listTuAccordion').hide();
$('#listUaccordion').hide();
$('#forKakao').hide();
$("input[name='bbscttSndngMthCd']").eq(2).click();
fn_add_codeList('#udpList', 'select', 'updList-select', '게시판', JSON.parse('${resultMap.updBbsList}'), '게시판' );
$('#updList-select').change(function() {
let bbsid = $(this).val();
$('#backUpData').find('[name=bbsId]').val(bbsid);
$('#backUpData').attr('action', '<c:url value="/mngr/bbs/bbsmngr/selectBbsDtlUpdtForm"/>');
$('#backUpData').submit();
});
fn_re_click('#readChkBox', 'bbscttRedngAuthorDvCd', '<c:out value="${ resultMap.bbsVo.bbscttRedngAuthorDvCd }"/>', '#redngAuthorDiv');
fn_re_click('#registChkBox', 'bbscttRegistAuthorDvCd', '<c:out value="${ resultMap.bbsVo.bbscttRegistAuthorDvCd }"/>', '#registAuthorDiv');
fn_re_click('#cmRegistChkBox', 'cmRegistAuthorDvCd', '<c:out value="${ resultMap.bbsVo.cmRegistAuthorDvCd }"/>', '#cmRegistAuthorDiv');
fn_evl_at_ctrl('bbscttRegistUseAt', 'bbscttEvlUseAt', '.bbscttEvlTyDiv');
fn_evl_at_ctrl('cmRegistUseAt', 'cmEvlUseAt', '.cmEvlTyDiv');
$('input').keydown(function(event) {
if (event.keyCode === 13) {
event.preventDefault();
};
});
//댓글 쓰기 여부에 따른 게시글 작성 기본 설정 > 댓글 설정 사용여부 노출
fn_change_cmEvlRecomend();
let bbsTy = '<c:out value="${ resultMap.bbsVO.bbsTyCd }"/>'
//기본, 모바일 문구 체크에 따른 disable처리
$("input[name='dftCnUseAt']").on("click", function () {
let at = $(this).val();
if (at === 'Y') {
$("#dftCn").prop("disabled", false);
} else {
$("#dftCn").prop("disabled", true);
}
});
$("input[name='mblDftCnUseAt']").on("click", function () {
let at = $(this).val();
if (at === 'Y') {
$("#mblDftCn").prop("disabled", false);
} else {
$("#mblDftCn").prop("disabled", true);
}
});
$("[name='smsCnArr']").each(function () {
$(this).val($(this).val().trim());
});
fn_count_byte('#sms01', '#smsByte01');
fn_count_byte('#sms02', '#smsByte02');
//파일 여부에따른 show hide;
fn_show_hide_file();
}
/* ********************************************************
* 시작 화면 조작 함수
******************************************************** */
const fn_set_display = function() {
let redngCnt = $('[name=bbscttRedngAuthorDvCd_c]').length - 1;
let redChkCnt = $('[name=bbscttRedngAuthorDvCd_c]:checked').length;
let registCnt = $('[name=bbscttRegistAuthorDvCd_c]').length - 1;
let regChktCnt = $('[name=bbscttRegistAuthorDvCd_c]:checked').length;
let answCnt = $('[name=answRegistAuthorDvCd_c]').length - 1;
let answChkCnt = $('[name=answRegistAuthorDvCd_c]:checked').length;
let cmCnt = $('[name=cmRegistAuthorDvCd_c]').length - 1;
let cmChkCnt = $('[name=cmRegistAuthorDvCd_c]:checked').length;
if (redngCnt === redChkCnt) $('#bbscttRedngAuthorDvCd-c-all').prop('checked', true);
if (registCnt === regChktCnt) $('#bbscttRegistAuthorDvCd-c-all').prop('checked', true);
if (answCnt === answChkCnt) $('#answRegistAuthorDvCd-c-all').prop('checked', true);
if (cmCnt === cmChkCnt) $('#cmRegistAuthorDvCd-c-all').prop('checked', true);
}
/* ********************************************************
* 평가 여부 라디오 제어
******************************************************** */
const fn_evl_at_ctrl = function(inputName, target, ctrlArea, authDv) {
const radioValue = $('input[name="' + inputName + '"]:checked').val();
if (radioValue === 'Y') {
// $('input[name="' + target + '"][value="Y"]').prop('checked', true);
$('[name=' + target + ']').attr('onclick', 'return(true);');
fn_evl_ty_ctrl(target, ctrlArea);
$(authDv).show();
} else {
$('input[name="' + target + '"][value="N"]').prop('checked', true);
$('[name=' + target + ']').attr('onclick', 'return(false);');
fn_evl_ty_ctrl(target, ctrlArea);
$(authDv).hide();
}
}
/* ********************************************************
* 평가 설정 라디오 제어
******************************************************** */
const fn_evl_ty_ctrl = function(inputName, target) {
const radioValue = $('input[name="' + inputName + '"]:checked').val();
if (radioValue == 'Y') {
fn_ctrl_disable([], [target]);
$(target).show();
} else if (radioValue == 'N') {
fn_ctrl_disable([target], []);
$(target).hide();
}
}
/* ********************************************************
* 게시글 기능/권한 > 라디오/체크박스 기능
******************************************************** */
function fn_change_event(_target) {
let boardRead = $('[name=' + _target + ']:checked').attr('id');
if (boardRead === 'read01' || boardRead === 'write01' || boardRead === 'answ01' || boardRead === 'comt01') {
$('[name=' + _target + '_c]').prop('checked', false);
$('[name=' + _target + '_c]').prop('disabled', true);
} else if (boardRead === 'read02' || boardRead === 'write02' || boardRead === 'answ02' || boardRead === 'comt02') {
$('[name=' + _target + '_c]').prop('checked', true);
$('[name=' + _target + '_c]').prop('disabled', false);
} else if (boardRead === 'read03' || boardRead === 'write03' || boardRead === 'answ03' || boardRead === 'comt03') {
$('[name=' + _target + '_c]').prop('checked', false);
$('[name=' + _target + '_c]').prop('disabled', true);
} else if (boardRead === 'write000' || boardRead === 'answ000' || boardRead === 'comt000') {
$('[name=' + _target + '_c]').prop('checked', false);
$('[name=' + _target + '_c]').prop('disabled', true);
}
}
const fn_click_check = function(_target, _arg) {
if (_arg === 'all') {
if ($('#' + _target + '-c-all').is(':checked')){
$('[name=' + _target + '_c]').prop('checked', true);
} else {
$('[name=' + _target + '_c]').prop('checked', false);
}
} else {
let chkCnt = $('[name=' + _target + '_c]:checked').length;
let allCnt = $('[name=' + _target + '_c]').length;
if (chkCnt !== allCnt && $('#' + _target + '-c-all').is(':checked')) {
$('#' + _target + '-c-all').prop('checked', false);
} else if (chkCnt !== allCnt && !$('#' + _target + '-c-all').is(':checked') && allCnt - chkCnt === 1 ) {
$('#' + _target + '-c-all').prop('checked', true);
} else if (chkCnt === allCnt ) {
$('#' + _target + '-c-all').prop('checked', true);
}
}
}
/* ********************************************************
* 보기 > 게시판 리스트 설정 > 게시판 스킨 설정 시 페이지 입력 노출 기능
******************************************************** */
const fn_change_style = function(_type) {
$('#gallery').hide();
$('#listUaccordion').hide();
if (_type === '01' || _type === '03') {
$('#listUaccordion').show();
$('#listUaccordion').find('[name=pgeWthCnt]').prop('disabled', false);
$('#listUaccordion').find('[name=pgeVtcCnt]').prop('disabled', false);
$('#gallery').find('[name=pgeWthCnt]').prop('disabled', true).niceSelect('update');
$('#gallery').find('[name=pgeVtcCnt]').prop('disabled', true);
} else if (_type === '02') {
$('#gallery').show();
$('#listUaccordion').find('[name=pgeWthCnt]').prop('disabled', true);
$('#listUaccordion').find('[name=pgeVtcCnt]').prop('disabled', true);
$('#gallery').find('[name=pgeWthCnt]').prop('disabled', false).niceSelect('update');
$('#gallery').find('[name=pgeVtcCnt]').prop('disabled', false);
}
}
/* ********************************************************
* 게시글 작성 상세 설정 > 답글 쓰기 클릭 시 자주쓰는 답변 show hide, disable처리
******************************************************** */
const fn_toggle_rpuseDv = (_target) => {
const chkAt = $(_target).is(":checked");
if (chkAt) {
$("#rpuseDv").show();
fn_ctrl_disable('', ["#rpusAnsw"]);
} else {
$("#rpuseDv").hide();
fn_ctrl_disable(["#rpusAnsw"], '');
}
}
/* ********************************************************
* 게시글 작성 상세 설정 > 분류관리 || 자주쓰는 답변
******************************************************** */
const fn_add_box = function (_target) {
let trClone = '';
let target = '#' + _target;
if (_target === 'classification') {
$('#rpusAnswNodata').hide();
trClone = `<tr>
<td>
<div class="draggable-icon-container">
<i class="icon icon_draggable"></i>
<span class="visually-hidden">순서 바꾸기</span>
</div>
</td>
<td>
<input type="text" class="input-text full" name="qesitmNm_d" title="해당 인풋에 대한 설명" value="" placeholder="분류명을 입력하세요.">
</td>
<td>
<button class="circle-btn delete" onclick="fn_remove_box(this);">
<span class="visually-hidden">삭제</span>
</button>
</td>
</tr>`;
} else if (_target === 'rpusAnsw') {
$('#rpusAnswNodata').hide();
trClone = `<tr>
<td>
<div class="draggable-icon-container" style="text-align: center;">
<i class="icon icon_draggable"></i>
<span class="visually-hidden">순서 바꾸기</span>
</div>
</td>
<td>
<div class="td-inner">
<textarea class="textarea" name="cnArr" title="답변" rows="10"></textarea>
</div>
</td>
<td style="text-align: center;">
<button class="circle-btn delete" onclick="fn_remove_box(this);">
<span class="visually-hidden">삭제</span>
</button>
</td>
</tr>`;
}
$(target).append(trClone);
//행 추가 후, tableDnd 업데이트
$(target + '-row-add').tableDnDUpdate();
$(target + 'NoData').hide();
}
/* ********************************************************
* 게시글 작성 상세 설정 > ROW삭제
******************************************************** */
const fn_remove_box = function(_tr, _arg) {
let id = '#' + $(_tr).parents('tbody').attr('id');
let cnt = $(id).children('tr').length;
if (cnt === 2) $(id + 'NoData').show();
$(_tr).closest('tr').remove();
}
/* ********************************************************
* 메세지 발송 여부 > 메세지 발송 > 메시지 사용 여부 > 문자 클릭 > SMS 발송 관리 disabled 기능
******************************************************** */
const fn_show_text = function(_target) {
if ('01' === _target) {
$('#forSms').show();
$('#forSms').find('textarea').prop('disabled', false);
$('#forSms').find('input').prop('disabled', false);
$('#forKakao').hide();
$('#forKakao').find('textarea').prop('disabled', true);
$('#forKakao').find('input').prop('disabled', true);
} else if ('02' === _target) {
$('#forKakao').show();
$('#forKakao').find('textarea').prop('disabled', false);
$('#forKakao').find('input').prop('disabled', false);
$('#forSms').hide();
$('#forSms').find('textarea').prop('disabled', true);
$('#forSms').find('input').prop('disabled', true);
} else if ('03' === _target) {
$('#forSms').hide();
$('#forSms').find('textarea').prop('disabled', true);
$('#forSms').find('input').prop('disabled', true);
$('#forKakao').hide();
$('#forKakao').find('textarea').prop('disabled', true);
$('#forKakao').find('input').prop('disabled', true);
} else {
$('#forSms').show();
$('#forSms').find('textarea').prop('disabled', false);
$('#forSms').find('input').prop('disabled', false);
$('#forKakao').hide();
$('#forKakao').find('textarea').prop('disabled', true);
$('#forKakao').find('input').prop('disabled', true);
}
}
/* ********************************************************
* 댓글쓰기 선택에 따른 댓글 사용 여부
******************************************************** */
const fn_change_cmEvlRecomend = function () {
if ($("#cmRegistChkBox").is(":checked")) {
$(".cmSetupUseAt").show();
} else {
$(".cmSetupUseAt").hide();
}
}
/* ********************************************************
* 체크박스 변경 시 value 값 변경
******************************************************** */
const fn_change_value_checkBox = function(_target) {
if ($(_target).is(':checked')) {
$(_target).val('Y');
$(_target).prev().prop('disabled', true);
$(_target).closest('td').prev().find('[name=qesitmEssntlAt_i]').prop('disabled', false);
} else {
$(_target).val('N');
$(_target).prev().val('N');
$(_target).prev().prop('disabled', false);
$(_target).closest('td').prev().find('[name=qesitmEssntlAt_i]').prop('disabled', true);
$(_target).closest('td').prev().find('[name=qesitmEssntlAt_i]').prop('checked', false);
}
}
/* ********************************************************
* 본화면 -> 모달화면 전송 > 데이터 정리(수정 시)
******************************************************** */
const fn_add_item_updPop = function(_trId) {
let trId = '#' + _trId;
let qesitmNm = $(trId).find('[name=qesitmNm_i]').val();
let qesitmDc = $(trId).find('[name=qesitmDc_i]').val();
let itmTy = $(trId).find('[name=itmTy_i]').val();
let itmTyNm = $(trId).find('[name=itmTyNm_i]').val();
let itmCnArr = $(trId).find('[name=itmCn_i]').val().split('$');
let itmInnbArr = $(trId).find('[name=itmInnb_i]').val().split('$');
let data = {
'trId' : trId,
'qesitmNm' : qesitmNm,
'qesitmDc' : qesitmDc,
'itmTy' : itmTy,
'itmTyNm' : itmTyNm,
'itmCnArr' : itmCnArr,
'itmInnbArr': itmInnbArr
}
tempData = data;
$('#itmPopOpen').trigger('click');
fn_set_madal();
}
/* ********************************************************
* 본화면 -> 모달화면 전송 > 데이터 바인딩(수정 시)
******************************************************** */
const fn_set_madal = function() {
if (Object.keys(tempData).length > 0 ){
$('#qesitmPopDc').attr('data-idx', tempData.trId);
$('#qesitmPopDc').val(tempData.qesitmDc);
$('#qesitmPopNm').val(tempData.qesitmNm);
// nice-select 설정
$('#event-type-select').val(tempData.itmTy).niceSelect('update');
$('#event-content').attr('data-eventtype', tempData.itmTy);
$('#event-fn').attr('onclick', 'fn_add_itmbox(\'' + tempData.itmTy + '\')');
let addTag = '';
let nodata = `<tr id="add-optionNoData" style="display: none;">
<td >입력 항목이 없습니다.</td>
</tr>`;
if (tempData.itmCnArr.length != 0) {
for (let j = 0; j < tempData.itmCnArr.length; j++) {
addTag += fn_make_addTag(tempData.itmTy, tempData.itmCnArr[j], tempData.itmInnbArr[j]);
}
addTag += nodata;
} else {
addTag = nodata;
}
$('#add-option').html(addTag);
if (tempData.itmCnArr.length != 0) {
$('#add-optionNoData').hide();
} else {
$('#add-optionNoData').show()
}
}
}
/* ********************************************************
* 모달화면 -> 본화면으로 데이터 전송 > 데이타 정리
******************************************************** */
const fn_collect_params = function() {
let trId = $('#qesitmPopDc').attr('data-idx');
let qesitmPopNm = $('[name=qesitmPopNm]').val();
if (qesitmPopNm === '') {
alert('항목명을 입력해 주세요.');
return;
}
let qesitmPopDc = $('[name=qesitmPopDc]').val();
if (qesitmPopDc === '') {
alert('항목셜명을 입력해 주세요.');
return;
}
let itmPopTy = $('#event-type-select option:selected').val();
let itmPopTyNm = $('#event-type-select').next().find('.current').text();
let itmCnt = $('[name=itmCnPopArr]').length;
let itmCnPopArr = '';
for(let i = 0; i < itmCnt; i++){
if ($('[name=itmCnPopArr]').eq(i).val() != '') {
if($('[name=itmCnPopArr]').eq(i).val() != '') {
itmCnPopArr += $('[name=itmCnPopArr]').eq(i).val() + '$';
}
}
}
itmCnPopArr = itmCnPopArr.slice(0, -1);
if(itmCnPopArr === '') {
alert('항목값을 입력해 주세요.');
return;
}
let itmInnbCnt = $('[name=itmInnbPopArr]').length;
let itmInnbPopArr = '';
let data = {
'trId' : trId,
'qesitmPopNm' : qesitmPopNm,
'qesitmPopDc' : qesitmPopDc,
'itmPopTy' : itmPopTy,
'itmPopTyNm' : itmPopTyNm,
'itmCnPopArr' : itmCnPopArr,
'itmInnbPopArr' : itmInnbPopArr
}
if (qesitmPopNm === '' || qesitmPopDc === '' || itmCnt === 0) return;
fn_add_item_pop_after(data);
}
idx = 1;
/* ********************************************************
* 모달화면 -> 본화면으로 데이터 전송 > 데이타 바인딩
******************************************************** */
const fn_add_item_pop_after = function(_data) {
let trId = _data.trId;
let qesitmNm = _data.qesitmPopNm;
let qesitmDc = _data.qesitmPopDc;
let itmTy = _data.itmPopTy;
let itmTyNm = _data.itmPopTyNm;
let itmCnArr = _data.itmCnPopArr;
let itmInnbArr = _data.itmInnbPopArr;
let trClone = '';
if (trId === undefined) {
let cnt = itmInnbArr.split('$').length;
let oldItmInnbs = '0';
for (let i = 1; i < cnt; i++) {
oldItmInnbs += '$0';
}
trClone = ''
+ '<tr id="tr' + idx + '">'
+ ' <input type="hidden" name="oldItmInnbs" value="' + oldItmInnbs + '"/>'
+ ' <input type="hidden" name="qesitmNm_i" value="' + qesitmNm + '"/>'
+ ' <input type="hidden" name="qesitmDc_i" value="' + qesitmDc + '"/>'
+ ' <input type="hidden" name="itmTy_i" value="' + itmTy + '"/>'
+ ' <input type="hidden" name="itmTyNm_i" value="' + itmTyNm + '"/>'
+ ' <input type="hidden" name="itmCn_i" value="' + itmCnArr + '"/>'
+ ' <input type="hidden" name="itmInnb_i" value="' + itmInnbArr + '"/>'
+ ' <input type="hidden" name="qesitmInnb_i" value="0"/>'
+ ' <td>'
+ ' <div class="draggable-icon-container">'
+ ' <i class="icon icon_draggable"></i>'
+ ' <span class="visually-hidden">순서 바꾸기</span>'
+ ' </div>'
+ ' </td>'
+ ' <td class="text-left" data-id="qesitmNm">' + qesitmNm + '</td>'
+ ' <td class="text-left" data-id="qesitmDc">[' + itmTyNm + ']' + qesitmDc + '</td>'
+ ' <td>'
+ ' <label class="b-checkbox checkbox is-medium">'
+ ' <input type="hidden" name="qesitmEssntlAt_i" value="N"/>'
+ ' <input type="checkbox" name="qesitmEssntlAt_i" value="N" onchange="fn_change_value_checkBox(this);" disabled>'
+ ' <span class="check"></span>'
+ ' </label>'
+ ' </td>'
+ ' <td>'
+ ' <label class="b-checkbox checkbox is-medium">'
+ ' <input type="hidden" name="qesitmUseAt_i" value="N"/>'
+ ' <input type="checkbox" name="qesitmUseAt_i" value="N" onchange="fn_change_value_checkBox(this);">'
+ ' <span class="check"></span>'
+ ' </label>'
+ ' </td>'
+ ' <td>'
+ ' <div class="manage-btn-container">'
+ ' <button type="button" class="btn xsm primary outline" data-set="fnaddItem" onclick="fn_add_item_updPop(\'tr' + idx + '\');">수정</button>'
+ ' </div>'
+ ' </td>'
+ ' <td>'
+ ' <button type="button" class="circle-btn delete" onclick="fn_remove_box(this)">'
+ ' <span class="visually-hidden">삭제</span>'
+ ' </button>'
+ ' </td>'
+ '</tr>';
$('#addItemPop').append(trClone);
//행 추가 후, tableDnd 업데이트
$('#addItemPop-row-add').tableDnDUpdate();
} else {
$(trId).find('[name=qesitmNm_i]').val(qesitmNm);
$(trId).find('[name=qesitmDc_i]').val(qesitmDc);
$(trId).find('[name=itmTy_i]').val(itmTy);
$(trId).find('[name=itmTyNm_i]').val(itmTyNm);
$(trId).find('[name=itmCn_i]').val(itmCnArr);
$(trId).find('[name=itmInnb_i]').val(itmInnbArr);
$(trId).find('[data-id=qesitmNm]').text(qesitmNm);
$(trId).find('[data-id=qesitmDc]').text('[' + itmTy + ']' + qesitmDc);
}
fn_reset_modal();
$('#addItemPopNoData').hide();
tempData = {};
idx += 1;
}
/* ********************************************************
* 모달 창 초기화
******************************************************** */
const fn_reset_modal = function() {
$('#event-content').show();
$('#event-type-select').next().find('li').removeClass('selected');
$('#event-type-select').val('03').niceSelect('update');
$('[name=itmCnPopArr]').val('');
$('#qesitmPopNm').val('');
$('#qesitmPopDc').val('');
$('#qesitmPopDc').removeAttr('data-idx');
$('#event-fn').attr('onclick', 'fn_add_itmbox(\'03\')');
let addTag =`<tr>
<td class="left">
<div class="b-checkbox-container flex-nowrap" id="checkbox">
<label class="b-checkbox checkbox">
<input type="checkbox" disabled>
<span class="check"></span>
<span class="control-label"></span>
</label>
<input type="text" class="input-text xl" name="itmCnPopArr" title="항목값" placeholder="항목값을 입력하세요.">
</div>
</td>
<td>
<button type="button" class="circle-btn delete" onclick="fn_remove_box(this)">
<span class="visually-hidden">삭제</span>
</button>
</td>
</tr>
<tr id="add-optionNoData" style="display: none;">
<td >입력 항목이 없습니다.</td>
</tr>`;
$('#add-option').html(addTag);
$('#itm-add-close').trigger('click');
}
/* ********************************************************
* 게시글 작성 상세 설정 > 입력 항목 이벤트 > 선택에 따른 입력창 생성
******************************************************** */
const fn_show_itemType = function(_taget) {
$('#event-content').show();
$('#add-option').html('');
fn_add_itmbox(_taget);
$('#event-content').attr('data-eventtype', _taget);
$('#event-fn').attr('onclick', 'fn_add_itmbox(\'' + _taget + '\')');
}
/* ********************************************************
* 게시글 작성 상세 설정 > 입력 항목 이벤트 > 추가
******************************************************** */
const fn_add_itmbox = function(_target) {
let trClone = fn_make_addTag(_target);
let nodata = `<tr id="add-optionNoData" style="display: none;">
<td>입력 항목이 없습니다.</td>
</tr>`;
if ($('#add-optionNoData').length ===0) {
trClone += nodata;
}
$('#add-option').append(trClone);
$('#add-optionNoData').hide();
};
/* ********************************************************
* 게시글 작성 상세 설정 > 입력 항목 이벤트 > 해당 입력창 태그
******************************************************** */
const fn_make_addTag = function(_target, _data) {
let data = _data === undefined ? '' : _data;
let trClone = ''
+ '<tr>'
+ ' <td class="left">'
if (_target === '04' || _target === '02') {
trClone += ' <div class="input-container w-full" id="' + _target + '">'
+ ' <input type="text" class="input-text xl ml-10" name="itmCnPopArr" value="' + data + '" title="항목값" placeholder="항목값을 입력하세요.">'
+ ' </div>';
} else if (_target === '01') {
trClone += ' <div class="input-container w-full" id="' + _target + '">'
+ ' <div class="custom-radio-container">'
+ ' <div class="custom-radio inner-input">'
+ ' <input type="radio" disabled><label></label>'
+ ' </div>'
+ ' </div>'
+ ' <input type="text" class="input-text xl ml-5" value="' + data + '" name="itmCnPopArr" title="항목값" placeholder="항목값을 입력하세요.">'
+ ' </div>';
} else if (_target === '03') {
trClone += ' <div class="b-checkbox-container flex-nowrap" id="' + _target + '">'
+ ' <label class="b-checkbox checkbox">'
+ ' <input type="checkbox" disabled>'
+ ' <span class="check"></span>'
+ ' <span class="control-label"></span>'
+ ' </label>'
+ ' <input type="text" class="input-text xl" name="itmCnPopArr" value="' + data + '" title="항목값" placeholder="항목값을 입력하세요.">'
+ ' </div>';
}
trClone += ' </td>'
+ ' <td>'
+ ' <button type="button" class="circle-btn delete" onclick="fn_remove_box(this)">'
+ ' <span class="visually-hidden">삭제</span>'
+ ' </button>'
+ ' </td>';
+ '</tr>';
return trClone;
}
/*******************************************************
* 체크박스 변경시 선택 값 재클릭
* *****************************************************/
const fn_re_click = function(thisId, radioName, authorCd, targetDiv) {
if($(thisId).is(":checked")) {
if (fn_is_empty(authorCd)) {
$(targetDiv + " input[name=" + radioName + "]:first").click();
} else if ( authorCd === '02' ) {
$("input[name=" + radioName + "]:checked").prop('checked', true);
} else {
$("input[name=" + radioName + "]:checked").click();
}
} else {
fn_reset_form(targetDiv.replace("#",""));
fn_ctrl_disable([targetDiv], []);
}
}
/*치환코드 show hide 처리*/
const fn_show_hide_subst = (target, sndngDv) => {
if (sndngDv === 'sms') {
if (target === '01') {
$(".smsSubListReg").show();
$(".smsSubListAnsw").hide();
} else {
$(".smsSubListReg").hide();
$(".smsSubListAnsw").show();
}
}
}
/*파일 첨부 사용 여부에 따른 show hide*/
const fn_show_hide_file = (target) => {
let targetVal;
if(target === undefined || target === ''){
targetVal = $("input[name='filAtchUseAt']:checked").val();
}else{
targetVal = $(target).val();
}
if(targetVal === 'Y'){
$("#filPermFilExtsn").show();
fn_ctrl_disable('',['#filPermFilExtsn']);
}else{
$("#filPermFilExtsn").hide();
$("input[name='filPermFilExtsn']").val("");
fn_ctrl_disable(['#filPermFilExtsn'],'');
}
}
</script>
<body>
<%@ include file="/WEB-INF/views/comm/mngr/Header.jsp" %>
<body>
<main class="main">
<%@ include file="/WEB-INF/views/comm/mngr/Left.jsp" %>
<div class="content">
<div class="content__inner">
<button class="side-nav__fold"><span class="visually-hidden">좌측메뉴 펼치기/닫기</span></button>
<div class="page-title">
<h2 class="page-title__title">게시판 <spring:message code="button.insert"/></h2>
<div class="page-title__btn-container">
<button type="button" class="btn outline" onclick="fn_backTo_list();"><spring:message
code="button.list"/></button>
<div class="select-box" id="udpList"></div>
<button type="button" class="btn primary" onclick="fn_insert_noticeBoard();"><spring:message
code="button.insert"/></button>
</div>
</div>
<section class="content-section content-fold">
<div class="content-fold__header">
<h3 class="content-section__title">기본</h3>
<button class="content-fold__btn"><span class="visually-hidden">접기</span></button>
</div>
<div class="content-fold__content">
<form name="regForm">
<input type="hidden" name="bbsTyCd" value="01"/>
<input type="hidden" name="writngChrCnt" value="0"/>
<input type="hidden" name="mbrGradGroupInnb" value="1"/>
<input type="hidden" name="pageDv" value="I"/>
<h3 class="content-section__inner-title">기본정보</h3>
<div class="table-wrapper">
<table class="table">
<caption>기본정보</caption>
<colgroup>
<col style="width: 12%;">
<col>
</colgroup>
<tbody>
<tr>
<th>게시판명<span class="red-7">*</span></th>
<td>
<div class="td-inner">
<div class="word-limit-input">
<input type="text" class="input-text word-limit" name="bbsNm"
maxlength="30" size="60" title="게시판 명"
placeholder="쌍따옴표(&ldquo;&rdquo;)를 제외한 모든문자 사용가능합니다.">
<div class="word-limit-input__data">
<span class="current-words"></span>
<span>/</span>
<span class="max-words"></span>
</div>
</div>
</div>
</td>
</tr>
<tr>
<th>게시판 아이디<span class="red-7">*</span></th>
<td>
<div class="td-inner">
<div class="word-limit-input">
<input type="text" class="input-text word-limit" name="bbsId"
maxlength="15" size="40" title="게시판 아이디"
oninput="isChkd_Dup = false;"
placeholder="영문, 숫자, 언더스코어(_), 하이픈(-) 가능">
<div class="word-limit-input__data">
<span class="current-words"></span><span>/</span><span
class="max-words"></span>
</div>
<button type="button" class="btn sm gray ml-5"
onclick="fn_check_bbsId();"><spring:message
code="button.doubleCheck"/></button>
</div>
</div>
</td>
</tr>
<tr>
<th>게시판 유형</th>
<td>
<div class="td-inner">
일반 게시판
</div>
</td>
</tr>
<tr>
<th>게시판 스킨</th>
<td>
<div class="td-inner">
<div class="custom-radio-container">
<c:forEach var="cgo022" items="${resultMap.codeContent[0].cgo022 }"
varStatus="status">
<c:set var="attrChecked"
value="${status.index == 0 ? 'checked' : '' }"/>
<div class="custom-radio">
<input type="radio" id="sknTy${cgo022.cd }" name="sknTyCd"
value="${cgo022.cd }" ${attrChecked }
onchange="fn_change_style('${cgo022.cd }');">
<label for="sknTy${cgo022.cd }"><c:out
value="${cgo022.cdNm }"/></label>
</div>
</c:forEach>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<h3 class="content-section__inner-title">게시글 기능/권한</h3>
<div class="table-wrapper">
<table class="table">
<caption>게시글 기능/권한</caption>
<colgroup>
<col style="width: 12%;">
<col style="width: 38%;">
<col style="width: 12%;">
<col style="width: 38%;">
</colgroup>
<tbody>
<tr>
<th>게시판 읽기
<label class="b-checkbox checkbox ">
<input type="checkbox" id="readChkBox" name="bbscttRedngUseAt" value="Y" checked
onchange="fn_ctrl_disable(['#redngAuthorDiv'], ['#redngAuthorDiv'], $(this));
fn_re_click('#readChkBox', 'bbscttRedngAuthorDvCd');"/>
<span class="check"></span>
</label>
</th>
<td colspan="3">
<div class="td-inner" id="redngAuthorDiv">
<div class="custom-radio-container">
<c:forEach var="cgn024" items="${resultMap.codeContent[0].cgn024 }"
varStatus="status">
<c:set var="attrCheck"
value="${status.index == 0 ? 'checked' : '' }"/>
<div class="custom-radio">
<input type="radio" id="read${cgn024.cd }"
name="bbscttRedngAuthorDvCd"
value="${cgn024.cd }" ${attrCheck}
onclick="fn_change_event('bbscttRedngAuthorDvCd');">
<label for="read${cgn024.cd }"><c:out
value="${cgn024.cdNm }"/></label>
</div>
<c:if test="${ cgn024.cd eq '02'}">
<span class="parentheses">(</span>
<div class="b-checkbox-container inner">
<label class="b-checkbox checkbox ">
<input type="checkbox"
id="bbscttRedngAuthorDvCd-c-all"
name="bbscttRedngAuthorDvCd_c" value="Y"
disabled
onclick="fn_click_check('bbscttRedngAuthorDvCd', 'all');"/>
<span class="check"></span>
<span class="control-label">전체</span>
</label>
<c:forEach var="mbrGrad"
items="${resultMap.mbrGradList }"
varStatus="status">
<label class="b-checkbox checkbox">
<input type="checkbox"
name="bbscttRedngAuthorDvCd_c"
value="${mbrGrad.mbrGradInnb }" disabled
onclick="fn_click_check('bbscttRedngAuthorDvCd', 'other');"/>
<span class="check"></span>
<span class="control-label"><c:out
value="${mbrGrad.mbrGradNm }"/></span>
</label>
</c:forEach>
</div>
<span class="parentheses">)</span>
</c:if>
</c:forEach>
</div>
</div>
</td>
</tr>
<tr>
<th>게시판 쓰기
<label class="b-checkbox checkbox ">
<input type="checkbox" id="registChkBox" name="bbscttRegistUseAt"
checked="checked" value="Y"
onchange="fn_ctrl_disable(['#registAuthorDiv'], ['#registAuthorDiv'], $(this));
fn_re_click('#registChkBox', 'bbscttRegistAuthorDvCd', 'Y', '#registAuthorDiv');
fn_evl_at_ctrl('bbscttRegistUseAt', 'bbscttEvlUseAt', '.bbscttEvlTyDiv','#bbscttEvlAt');"/>
<span class="check"></span>
</label>
</th>
<td colspan="3">
<div class="td-inner" id="registAuthorDiv">
<div class="custom-radio-container">
<c:forEach var="cgn024" items="${resultMap.codeContent[0].cgn024 }"
varStatus="status">
<c:set var="attrCheck"
value="${status.index == 0 ? 'checked' : '' }"/>
<div class="custom-radio">
<input type="radio" id="write${cgn024.cd }"
name="bbscttRegistAuthorDvCd"
value="${cgn024.cd }" ${attrCheck }
onclick="fn_change_event('bbscttRegistAuthorDvCd');
fn_click_check('bbscttRegistAuthorDvCd', 'all');">
<label for="write${cgn024.cd }"><c:out
value="${cgn024.cdNm }"/></label>
</div>
<c:if test="${ cgn024.cd eq '02' }">
<span class="parentheses">(</span>
<div class="b-checkbox-container inner">
<label class="b-checkbox checkbox ">
<input type="checkbox"
id="bbscttRegistAuthorDvCd-c-all"
name="bbscttRegistAuthorDvCd_c" value="Y"
disabled
onclick="fn_click_check('bbscttRegistAuthorDvCd', 'all');">
<span class="check"></span>
<span class="control-label">전체</span>
</label>
<c:forEach var="mbrGrad"
items="${resultMap.mbrGradList }"
varStatus="status">
<label class="b-checkbox checkbox">
<input type="checkbox"
name="bbscttRegistAuthorDvCd_c"
value="${mbrGrad.mbrGradInnb }" disabled
onclick="fn_click_check('bbscttRegistAuthorDvCd', 'other');"/>
<span class="check"></span>
<span class="control-label"><c:out
value="${mbrGrad.mbrGradNm }"/></span>
</label>
</c:forEach>
</div>
<span class="parentheses">)</span>
</c:if>
</c:forEach>
<%--
<div class="custom-radio">
<input type="radio" id="write000" name="bbscttRegistAuthorDvCd" value="N" ${resultMap.bbsVo.bbscttRegistAuthorDvCd eq null ? 'checked' : '' } onclick="fn_change_event('bbscttRegistAuthorDvCd');">
<label for="write000">미사용</label>
</div>
--%>
</div>
</div>
</td>
</tr>
<tr id="bbscttEvlAt">
<th>게시글 평가</th>
<td>
<div class="td-inner">
<div class="custom-radio-container"
onchange="fn_evl_ty_ctrl('bbscttEvlUseAt', '.bbscttEvlTyDiv');">
<div class="custom-radio">
<input type="radio" id="bbsEvlUseAt-y" name="bbscttEvlUseAt" value="Y" checked/>
<label for="bbsEvlUseAt-y">사용</label>
</div>
<div class="custom-radio">
<input type="radio" id="bbsEvlUseAt-n" name="bbscttEvlUseAt" value="N"/>
<label for="bbsEvlUseAt-n">미사용</label>
</div>
</div>
</div>
</td>
<th class="bbscttEvlTyDiv">게시글 평가 설정</th>
<td class="bbscttEvlTyDiv">
<div class="td-inner">
<div class="custom-radio-container">
<c:forEach var="cgo029" items="${resultMap.codeContent[0].cgo029 }"
varStatus="status">
<c:if test="${cgo029.cd != '3'}">
<div class="custom-radio">
<input type="radio" id="evlRecomendStep-${cgo029.cd }"
name="bbscttEvlRecomendStep"
value="${cgo029.cd }" ${f:setChecked(cgo029.cd, '01')}/>
<label for="evlRecomendStep-${cgo029.cd }"><c:out
value="${cgo029.cdNm }"/></label>
</div>
</c:if>
</c:forEach>
</div>
</div>
</td>
</tr>
<tr>
<th>댓글 쓰기
<label class="b-checkbox checkbox ">
<input type="checkbox" id="cmRegistChkBox" name="cmRegistUseAt"
value="Y" checked
onchange="fn_ctrl_disable(['#cmRegistAuthorDiv'], ['#cmRegistAuthorDiv'], $(this));
fn_re_click('#cmRegistChkBox', 'cmRegistAuthorDvCd', 'Y', '#cmRegistAuthorDiv');
fn_evl_at_ctrl('cmRegistUseAt', 'cmEvlUseAt', '.cmEvlTyDiv', '#cmEvlAt');
fn_change_cmEvlRecomend();"/>
<span class="check"></span>
</label>
</th>
<td colspan="3">
<div class="td-inner" id="cmRegistAuthorDiv">
<div class="custom-radio-container">
<c:forEach var="cgn024" items="${resultMap.codeContent[0].cgn024 }"
varStatus="status">
<div class="custom-radio">
<input type="radio" id="comt${cgn024.cd }"
name="cmRegistAuthorDvCd"
value="${cgn024.cd }" checked
onclick="fn_change_event('cmRegistAuthorDvCd');">
<label for="comt${cgn024.cd }"><c:out
value="${cgn024.cdNm }"/></label>
</div>
<c:if test="${ cgn024.cd eq '02'}">
<span class="parentheses">(</span>
<div class="b-checkbox-container inner">
<label class="b-checkbox checkbox check-all">
<input type="checkbox" id="cmRegistAuthorDvCd-c-all"
value="Y" name="cmRegistAuthorDvCd_c"
onclick="fn_click_check('cmRegistAuthorDvCd', 'all'); "/>
<span class="check"></span>
<span class="control-label">전체</span>
</label>
<c:set var="cmRegistDisabled" value=""/>
<c:forEach var="mbrGrad"
items="${resultMap.mbrGradList }"
varStatus="status">
<label class="b-checkbox checkbox">
<c:set var="checked" value=""/>
<c:set var="pattern" value="[0-9]+"/>
<c:if test="${not empty resultMap.bbsVo.cmRegistAuthorDvCdNm}">
<c:forEach var="mbrInnb"
items="${fn:split(resultMap.bbsVo.cmRegistAuthorDvCdNm,'][')}">
</c:forEach>
</c:if>
<input type="checkbox"
name="cmRegistAuthorDvCd_c"
value="${mbrGrad.mbrGradInnb }" ${checked } ${cmRegistDisabled }
onclick="fn_click_check('cmRegistAuthorDvCd', 'other');"/>
<span class="check"></span>
<span class="control-label"><c:out
value="${mbrGrad.mbrGradNm }"/></span>
</label>
</c:forEach>
</div>
<span class="parentheses">)</span>
</c:if>
</c:forEach>
</div>
</div>
</td>
</tr>
<tr id="cmEvlAt">
<th>댓글 평가</th>
<td>
<div class="td-inner">
<div class="custom-radio-container"
onchange="fn_evl_ty_ctrl('cmEvlUseAt', '.cmEvlTyDiv');">
<div class="custom-radio">
<input type="radio" id="cmEvlUseAt-y" name="cmEvlUseAt"
value="Y" checked/>
<label for="cmEvlUseAt-y">사용</label>
</div>
<div class="custom-radio">
<input type="radio" id="cmEvlUseAt-n" name="cmEvlUseAt"
value="N"/>
<label for="cmEvlUseAt-n">미사용</label>
</div>
</div>
</div>
</td>
<th class="cmEvlTyDiv">댓글 평가 설정</th>
<td class="cmEvlTyDiv">
<div class="td-inner">
<div class="custom-radio-container">
<c:forEach var="cgo030" items="${resultMap.codeContent[0].cgo030 }"
varStatus="status">
<div class="custom-radio">
<input type="radio" id="cmEvlRecomendStep-${cgo030.cd }"
name="cmEvlRecomendStep" value="${cgo030.cd }" ${f:setChecked(cgo030.cd, '01') }/>
<label for="cmEvlRecomendStep-${cgo030.cd }"><c:out
value="${cgo030.cdNm }"/></label>
</div>
</c:forEach>
</div>
</div>
</td>
</tr>
<tr>
<th>답글 쓰기&nbsp;&nbsp;&nbsp;
<label class="b-checkbox checkbox ">
<input type="checkbox" id="answRegistChkBox" name="answRegistUseAt" value="Y" onclick="fn_toggle_rpuseDv(this);" checked/>
<span class="check"></span>
</label>
</th>
<td colspan="3">
</td>
</tr>
</tbody>
</table>
</div>
</form>
</div>
</section>
<section class="content-section content-fold">
<div class="content-fold__header">
<h3 class="content-section__title">작성</h3>
<button class="content-fold__btn"><span class="visually-hidden">접기</span></button>
</div>
<div class="content-fold__content">
<form name="regForm">
<h3 class="content-section__inner-title">게시글 작성 기본 설정</h3>
<div class="table-wrapper">
<table class="table">
<caption>게시글 작성 기본 설정</caption>
<colgroup>
<col style="width: 12%;">
<col style="width: 38%;">
<col style="width: 12%;">
<col style="width: 38%;">
</colgroup>
<tbody>
<tr>
<th rowspan="2">게시글 기본 문구</th>
<td>
<div class="td-inner">
<div class="custom-radio-container">
<div class="custom-radio">
<input type="radio" id="dftUseAt-y" name="dftCnUseAt" value="Y"/>
<label for="dftUseAt-y">사용</label>
</div>
<div class="custom-radio">
<input type="radio" id="dftUseAt-n" name="dftCnUseAt" value="N" checked/>
<label for="dftUseAt-n">미사용</label>
</div>
</div>
</div>
</td>
<th rowspan="2">모바일 기본 문구</th>
<td>
<div class="td-inner">
<div class="custom-radio-container">
<div class="custom-radio">
<input type="radio" id="mblUseAt-y" name="mblDftCnUseAt"
value="Y"/>
<label for="mblUseAt-y">사용</label>
</div>
<div class="custom-radio">
<input type="radio" id="mblUseAt-n" name="mblDftCnUseAt"
value="N" checked/>
<label for="mblUseAt-n">미사용</label>
</div>
</div>
</div>
</td>
</tr>
<tr>
<td>
<div class="td-inner">
<textarea class="textarea" id="dftCn" name="dftCn" title="기본내용" onfocus="$(this).val($(this).val().trim());"cols="30" rows="10" disabled>
</textarea>
</div>
</td>
<td>
<div class="td-inner">
<textarea class="textarea" id="mblDftCn" name="mblDftCn" onfocus="$(this).val($(this).val().trim());" title="모바일기본내용" cols="30" rows="10" disabled>
</textarea>
</div>
</td>
</tr>
<tr>
<th>파일 첨부</th>
<td>
<div class="td-inner">
<div class="custom-radio-container">
<div class="custom-radio">
<input type="radio" id="filAtchUseAt-y" name="filAtchUseAt" value="Y" onclick="fn_show_hide_file(this);" checked/>
<label for="filAtchUseAt-y">사용</label>
</div>
<div class="custom-radio">
<input type="radio" id="filAtchUseAt-n" name="filAtchUseAt" value="N" onclick="fn_show_hide_file(this);">
<label for="filAtchUseAt-n">미사용</label>
</div>
</div>
</div>
</td>
<th>비속어 필터</th>
<td colspan="3">
<div class="td-inner">
<div class="custom-radio-container">
<div class="custom-radio">
<input type="radio" id="slangUseAt-y" name="slangFlterUseAt" value="Y" checked/>
<label for="slangUseAt-y">사용</label>
</div>
<div class="custom-radio">
<input type="radio" id="slangUseAt-n" name="slangFlterUseAt" value="N"/>
<label for="slangUseAt-n">미사용</label>
</div>
</div>
</div>
</td>
</tr>
<tr id="filPermFilExtsn">
<th>파일 첨부 허용 파일 확장자</th>
<td colspan="3">
<div class="td-inner">
<input class="input-text xl" type="text" title="해당 인풋에 대한 설명" name="filPermFilExtsn" placeholder="','구분자 띄어쓰기 없이 나열">
<p class="gray-7 ml-4">ex) .gif,.jpg,.jpeg,.png</p>
</div>
</td>
</tr>
<tr>
<th>비밀글 여부</th>
<td>
<div class="td-inner">
<div class="custom-radio-container">
<div class="custom-radio">
<input type="radio" id="secretUseAt-y" name="secretBbscttUseAt" value="Y" checked/>
<label for="secretUseAt-y">사용</label>
</div>
<div class="custom-radio">
<input type="radio" id="secretUseAt-n" name="secretBbscttUseAt" value="N"/>
<label for="secretUseAt-n">미사용</label>
</div>
</div>
</div>
</td>
<%--게시글 타입이 일반게시판,이벤트,당첨자발표 -- 댓글 사용 여부--%>
<th class="cmSetupUseAt">댓글 사용 여부</th>
<td class="cmSetupUseAt">
<div class="td-inner">
<div class="custom-radio-container">
<div class="custom-radio">
<input type="radio" id="cmSetupUseAt-y" name="cmSetupUseAt" value="Y" checked/>
<label for="cmSetupUseAt-y">사용</label>
</div>
<div class="custom-radio">
<input type="radio" id="cmSetupUseAt-n" name="cmSetupUseAt" value="N"/>
<label for="cmSetupUseAt-n">미사용</label>
</div>
</div>
</div>
</td>
</tbody>
</table>
</div>
<h3 class="content-section__inner-title">게시글 작성 상세 설정</h3>
<div class="table-wrapper">
<table class="table">
<caption>게시글 작성 상세 설정</caption>
<colgroup>
<col style="width: 12%;">
<col>
</colgroup>
<tbody>
<tr>
<th>분류 관리</th>
<td>
<div class="td-inner">
<div class="table-wrapper" style="width: 600px;">
<table class="table vertical draggable" id="classification-row-add">
<caption>분류 관리</caption>
<colgroup>
<col style="width: 100px;">
<col>
<col style="width:20%;">
</colgroup>
<thead>
<tr>
<th>순서</th>
<th>분류명</th>
<th>
<button type="button" class="circle-btn add"
onclick="fn_add_box('classification');">
<span class="visually-hidden">추가</span>
</button>
</th>
</tr>
</thead>
<tbody id="classification">
<tr id="classificationNoData">
<td colspan="7">분류 항목이 없습니다.</td>
</tr>
</tbody>
</table>
</div>
</div>
</td>
</tr>
<tr>
<th>입력 항목</th>
<td>
<div class="td-inner">
<div class="table-wrapper" style="width: 1000px;">
<div class="form-control-container mb-8">
<div class="left">
<a href="#item-add" rel="modal:open" class="btn xsm primary"
id="itmPopOpen" onclick="fn_reset_modal();">입력 항목 추가</a>
</div>
<div class="center"></div>
<div class="right"></div>
</div>
<table class="table vertical draggable" id="addItemPop-row-add">
<caption>입력 항목</caption>
<colgroup>
<col style="width: 100px;">
<col style="width: 240px;">
<col>
<col style="width:7%;">
<col style="width:7%;">
<col style="width:10%;">
<col style="width:7%;">
</colgroup>
<thead>
<tr>
<th>순서</th>
<th>항목명</th>
<th>항목 설명</th>
<th>필수</th>
<th>사용</th>
<th>관리</th>
<th>삭제</th>
</tr>
</thead>
<tbody id="addItemPop">
<tr id="addItemPopNoData">
<td colspan="7">입력 항목이 없습니다.</td>
</tr>
</tbody>
</table>
</div>
</div>
</td>
</tr>
<tr id="rpuseDv">
<th>자주쓰는 답변</th>
<td>
<div class="td-inner">
<div class="table-wrapper" style="width: 1000px;">
<table class="table draggable" id="rpusAnsw-row-add">
<caption>자주쓰는 답변</caption>
<colgroup>
<col style="width: 100px;">
<col>
<col style="width:20%;">
</colgroup>
<thead>
<tr>
<th style="text-align: center;">순서</th>
<th style="text-align: center;">답변</th>
<th style="text-align: center;">
<button type="button" class="circle-btn add"
name="cnArr"
onclick="fn_add_box('rpusAnsw');">
<span class="visually-hidden">추가</span>
</button>
</th>
</tr>
</thead>
<tbody id="rpusAnsw">
<tr id="rpusAnswNoData">
<td colspan="3" style="text-align: center;">자주쓰는 답변이 없습니다.</td>
</tr>
</tbody>
</table>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</form>
</div>
</section>
<section class="content-section content-fold">
<div class="content-fold__header">
<h3 class="content-section__title">보기</h3>
<button class="content-fold__btn"><span class="visually-hidden">접기</span></button>
</div>
<div class="content-fold__content">
<form name="regForm">
<h3 class="content-section__inner-title">게시판 리스트 설정</h3>
<div class="table-wrapper">
<table class="table">
<caption>게시판 리스트 설정</caption>
<colgroup>
<col style="width: 12%;">
<col>
</colgroup>
<tbody>
<tr id="gallery">
<th>페이지당 노출수</th>
<td>
<div class="td-inner">
<div class="select-box">
<select class="short coupon-discount-select" name="pgeWthCnt"
title="페이지가로건수">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select>
</div>
<span class="mx-3">X</span>
<div class="input-container">
<input type="text" class="input-text xsm right number" name="pgeVtcCnt"
title="페이지세로건수" value="1"/>
<span class="input-unit-text">개</span>
</div>
</div>
</td>
</tr>
<tr id="listUaccordion">
<th>페이지당 노출수</th>
<td>
<div class="td-inner">
<div class="input-container">
<input type="hidden" name="pgeWthCnt" title="페이지가로건수" value="1"/>
<input type="text" class="input-text xsm right number" name="pgeVtcCnt"
title="페이지세로건수" value="1"/>
<span class="input-unit-text">개</span>
</div>
</div>
</td>
</tr>
<tr>
<th>운영 사이트 표시항목</th>
<td>
<div class="td-inner">
<div class="b-checkbox-container">
<label class="b-checkbox checkbox">
<input type="checkbox" name="innbYn" value="Y" checked>
<span class="check"></span>
<span class="control-label">번호</span>
</label>
<label class="b-checkbox checkbox">
<input type="checkbox" name="sjYn" value="Y" checked>
<span class="check"></span>
<span class="control-label">제목</span>
</label>
<label class="b-checkbox checkbox">
<input type="checkbox" name="cnYn" value="Y">
<span class="check"></span>
<span class="control-label">내용</span>
</label>
<label class="b-checkbox checkbox">
<input type="checkbox" name="regusrNmUn" value="Y" checked>
<span class="check"></span>
<span class="control-label">작성자</span>
</label>
<label class="b-checkbox checkbox">
<input type="checkbox" name="registDtYn" value="Y" checked>
<span class="check"></span>
<span class="control-label">등록일</span>
</label>
<label class="b-checkbox checkbox">
<input type="checkbox" name="ntcDeYn" value="Y">
<span class="check"></span>
<span class="control-label">공지 기간</span>
</label>
<label class="b-checkbox checkbox">
<input type="checkbox" name="inqireCntYn" value="Y" checked>
<span class="check"></span><span class="control-label">조회수</span>
</label>
</div>
</div>
</td>
</tr>
<tr>
<th>신규게시물 기준 일수</th>
<td>
<div class="td-inner">
<div class="input-container">
<span class="input-unit-text">글 등록 후 </span>
<input type="text" class="input-text xsm right number"
name="newNttStdrDeCnt" title="신규게시물기준일수" value="1"
style="margin-left: 7px; margin-right: 7px;"/>
<span class="input-unit-text"> 일 내</span>
</div>
</div>
</td>
<th>인기게시물 기준 조회 일수</th>
<td>
<div class="td-inner">
<div class="input-container">
<span class="input-unit-text">조회 수 </span>
<input type="text" class="input-text xsm right number"
name="popularNttStdrInqireCnt" title="인기게시물기준조회일수" value="1"
style="margin-left: 7px; margin-right: 7px;"/>
<span class="input-unit-text"> 회 이상</span>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<h3 class="content-section__inner-title">작성자 표시</h3>
<div class="table-wrapper">
<table class="table">
<caption>작성자 표시</caption>
<colgroup>
<col style="width: 12%;">
<col>
</colgroup>
<tbody>
<tr>
<th>사용자</th>
<td>
<div class="td-inner">
<div class="select-box">
<select name="wrterIndictTyCd" title="사용자">
<c:forEach var="cgo024" items="${resultMap.codeContent[0].cgo024 }"
varStatus="status">
<option value="${cgo024.cd }"><c:out
value="${cgo024.cdNm }"/></option>
</c:forEach>
</select>
</div>
</div>
</td>
</tr>
<tr>
<th>관리자</th>
<td>
<div class="td-inner">
<div class="word-limit-input">
<input type="text" class="input-text word-limit" name="mngrNm"
maxlength="15" size="40" title="관리자">
<div class="word-limit-input__data">
<span class="current-words">0</span><span>/</span><span
class="max-words">15</span>
</div>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</form>
</div>
</section>
<section class="content-section content-fold">
<div class="content-fold__header">
<h3 class="content-section__title">메시지 발송</h3>
<button class="content-fold__btn"><span class="visually-hidden">접기</span></button>
</div>
<div class="content-fold__content">
<form name="regForm">
<h3 class="content-section__inner-title">메시지 발송</h3>
<div class="table-wrapper">
<table class="table">
<caption>메시지 발송</caption>
<colgroup>
<col style="width: 12%;">
<col>
</colgroup>
<tbody>
<tr>
<th>메시지 사용 여부</th>
<td>
<div class="td-inner">
<div class="custom-radio-container">
<c:forEach var="cgn035" items="${resultMap.codeContent[0].cgn035 }" varStatus="status">
<div class="custom-radio">
<input type="radio" id="bbsSndng${cgn035.cd }"
name="bbscttSndngMthCd" value="${cgn035.cd }"
onclick="fn_show_text('${cgn035.cd}');"/>
<label for="bbsSndng${cgn035.cd }"><c:out value="${cgn035.cdNm }"/></label>
</div>
</c:forEach>
</div>
</div>
</td>
</tr>
<tr id="forSms" style = "display: none">
<th>SMS 발송 관리</th>
<td>
<div class="td-inner">
<div class="table-wrapper" style="width: 600px;">
<table class="table vertical">
<caption>SMS 발송 관리</caption>
<colgroup>
<col style="width: 50%;">
<col style="width: 50%;">
</colgroup>
<thead>
<tr>
<th>사용자가 글 등록 시</th>
<th>관리자가 글 답글 시</th>
</tr>
</thead>
<tbody>
<tr>
<c:forEach var="sndngDv" items="${resultMap.codeContent[0].cgn034 }" varStatus="status"><%--발송 구분 등록 or 답변--%>
<input type = "hidden" name = "sndngDvCdArr" value = "<c:out value = "${sndngDv.cd}"/>"/>
<c:choose>
<c:when test = "${not empty resultMap.sms.smsList}"> <%-- 자동 발송 관리가 존재 할 시 (등록)--%>
<td>
<div class="sms-manage">
<c:forEach var="sms" items="${resultMap.sms.smsList}" varStatus="status">
<c:if test="${sms.formDtlDvCd eq sndngDv.cd}">
<textarea class="textarea" name="smsCnArr" title="sms 내용" maxlength="950" id="sms${sms.formDtlDvCd}">
<c:out value="${sms.smsCn}"/>
</textarea>
<div class="sms-manage__byte">
<span class="number" id = "smsByte${sms.formDtlDvCd}">0</span>
<span class="text">byte</span>
</div>
</c:if>
</c:forEach>
</div>
</td>
</c:when>
<c:otherwise> <%--자동 발송, 게시판 보드 설정이 없을 시 (등록)--%>
<td>
<div class="sms-manage">
<textarea class="textarea" name="smsCnArr" title="sms 내용" maxlength="950" id="sms${sndngDv.cd}">
</textarea>
<div class="sms-manage__byte">
<span class="number" id = "smsByte${sndngDv.cd}">0</span>
<span class="text">byte</span>
</div>
</div>
<td>
</c:otherwise>
</c:choose>
</c:forEach>
</tr>
<tr>
<c:forEach var="sndngDv" items="${resultMap.codeContent[0].cgn034 }" varStatus="status">
<td>
<div class="text-right">
<a href="#sms-alternative-code-modal"
rel="modal:open" class="btn sm outline"
onclick="fn_show_hide_subst('<c:out value="${sndngDv.cd}"/>','sms');">
<i class="icon icon_info"></i>
치환 코드
</a>
</div>
</td>
</c:forEach>
</tr>
</tbody>
</table>
</div>
</div>
</td>
</tr>
<tr id="forKakao" style="display: none;">
<th>SMS 발송 관리</th>
<td>
<div class="td-inner">
<div class="table-wrapper" style="width: 600px;">
<table class="table vertical">
<caption>SMS 발송 관리</caption>
<colgroup>
<col style="width: 50%;">
<col style="width: 50%;">
</colgroup>
<thead>
<tr>
<th>사용자가 글 등록 시</th>
<th>관리자가 글 답글 시</th>
</tr>
</thead>
<tbody>
<tr>
<c:forEach var="kakaoSndngDv" items="${resultMap.codeContent[0].cgn034}" varStatus="status"><%--발송 구분 등록 or 답변--%>
<input type = "hidden" name = "sndngDvCdArr" value = "<c:out value = "${kakaoSndngDv.cd}"/>"/>
<c:choose>
<c:when test = "${not empty resultMap.kakao.kakaoList}"> <%--게시판 kakso 발송 관리가 존재 할 시(수정)--%>
<td>
<div class="sms-manage">
<c:forEach var = "kakao" items = "${resultMap.kakao.kakaoList}" varStatus="status" >
<c:if test = "${kakao.formDtlDvCd eq kakaoSndngDv.cd}">
<textarea class="textarea" name="smsCnArr" title="sms 내용" maxlength="950" id="kakao${kakao.formDtlDvCd}">
<c:out value="${kakao.msg}"/>
</textarea>
<div class="sms-manage__byte">
<span class="number" id="kakaoByte${kakao.formDtlDvCd}"></span>
<span class="text">byte</span>
</div>
<input type = "hidden" name = "ntcntalkSndngFormInnbArr" value = "<c:out value = "${kakao.ntcntalkSndngFormInnb}"/>" />
</c:if>
</c:forEach>
</div>
</td>
</c:when>
<c:otherwise>
<td>
<div class="sms-manage">
<textarea class="textarea" name="smsCnArr" title="sms 내용" maxlength="950" readonly>
제공되는 폼 양식이 없습니다.
</textarea>
<div class="sms-manage__byte">
<span class="number">0</span>
<span class="text">byte</span>
</div>
</div>
</td>
</c:otherwise>
</c:choose>
</c:forEach>
</tr>
<tr>
<c:forEach var="kakaoSndngDv" items="${resultMap.codeContent[0].cgn034}" varStatus="status"><%--발송 구분 등록 or 답변--%>
<td>
<div class="text-right">
<a href="#kakao-alternative-code-modal"
rel="modal:open" class="btn sm outline"
onclick="fn_show_hide_subst('<c:out value="${kakaoSndngDv.cd}"/>','kakao');">
<i class="icon icon_info"></i>
치환 코드
</a>
</div>
</td>
</c:forEach>
</tr>
</tbody>
</table>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</form>
</div>
</section>
<button class="scroll-to-top"><span class="visually-hidden">위로가기</span></button>
</div>
</div>
<!-- 정보 추가 모달 -->
<div id="item-add" class="modal" style="max-width: 600px;">
<div class="modal-header">
<h4>정보 추가</h4>
</div>
<div class="modal-content" style="height: 400px;">
<div class="table-wrapper">
<table class="table">
<caption>정보 추가</caption>
<colgroup>
<col style="width: 26%;">
<col>
</colgroup>
<tbody>
<tr>
<th>항목유형</th>
<td>
<div class="td-inner">
<div class="select-box">
<select title="항목유형" id="event-type-select" name="itmPopTy" onchange="fn_show_itemType(this.value);">
<c:forEach var="cgn019" items="${resultMap.codeContent[0].cgn019 }" varStatus="status">
<option value="${cgn019.cd }"><c:out value="${cgn019.cdNm }" /></option>
</c:forEach>
</select>
</div>
</div>
</td>
</tr>
<tr>
<th>항목명</th>
<td>
<div class="td-inner">
<input class="input-text full" type="text" id="qesitmPopNm" name="qesitmPopNm" title="항목명" >
</div>
</td>
</tr>
<tr>
<th>항목설명</th>
<td>
<div class="td-inner">
<input class="input-text full" type="text" id="qesitmPopDc" name="qesitmPopDc" title="항목설명" >
</div>
</td>
</tr>
<tr class="event-type-select__content" data-eventtype="checkbox" id="event-content">
<th>항목값</th>
<td>
<div class="td-inner vertical">
<div class="table-wrapper">
<table class="table vertical tight">
<caption>항목값</caption>
<colgroup>
<col>
<col style="width:14%;">
</colgroup>
<thead>
<tr>
<th>항목값</th>
<th>
<button type="button" class="circle-btn add" id="event-fn" onclick="fn_add_itmbox('checkbox');">
<span class="visually-hidden">추가</span>
</button>
</th>
</tr>
</thead>
<tbody id="add-option">
<tr>
<td class="left">
<!-- 초기값 세팅 -->
<div class="b-checkbox-container flex-nowrap" id="checkbox">
<label class="b-checkbox checkbox">
<input type="checkbox" disabled>
<span class="check"></span>
<span class="control-label"></span>
</label>
<input type="text" class="input-text xl" name="itmCnPopArr" title="항목값" placeholder="항목값을 입력하세요.">
</div>
</td>
<td>
<button type="button" class="circle-btn delete" onclick="fn_remove_box(this)">
<span class="visually-hidden">삭제</span>
</button>
</td>
</tr>
<tr id="add-optionNoData" style="display: none;">
<td >입력 항목이 없습니다.</td>
</tr>
</tbody>
</table>
</div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="modal-footer">
<a href="#" rel="modal:close" class="btn outline" id="itm-add-close" ><spring:message code="button.cancel"/></a>
<button type="button" class="btn primary" onclick="fn_collect_params();">확인</button>
</div>
</div>
<!-- sms 치환코드 팝업 -->
<div id="sms-alternative-code-modal" class="modal" style="max-width: 450px;">
<div class="modal-header">
<h4>사용 가능한 치환코드</h4>
</div>
<div class="modal-content" style="height: 340px;">
<div class="table-wrapper">
<h3>사용가능한 치환코드입니다.</h3>
<table class="table vertical">
<caption>사용 가능한 치환코드</caption>
<colgroup>
<col>
<col>
</colgroup>
<thead>
<tr>
<th>치환 코드</th>
<th>설명</th>
</tr>
</thead>
<tbody>
<c:if test="${not empty resultMap.sms.smsSubstList}">
<c:forEach var="smsSubstList" items="${resultMap.sms.smsSubstList}" varStatus="status">
<c:choose>
<c:when test="${smsSubstList.formDtlDvCd eq '01'}">
<tr class="smsSubListReg">
<td>${smsSubstList.substCd}</td>
<td>${smsSubstList.dc}</td>
</tr>
</c:when>
<c:otherwise>
<tr class="smsSubListAnsw">
<td>${smsSubstList.substCd}</td>
<td>${smsSubstList.dc}</td>
</tr>
</c:otherwise>
</c:choose>
</c:forEach>
</c:if>
<c:if test="${empty resultMap.sms.smsSubstList}">
<tr>
<td colspan="100%">사용할 수 있는 치환코드가 없습니다</td>
</tr>
</c:if>
</tbody>
</table>
</div>
</div>
<div class="modal-footer">
<a href="#" rel="modal:close" class="btn outline" id="itm-add-close">확인</a>
</div>
</div>
<!-- kakao 치환코드 팝업 -->
<div id="kakao-alternative-code-modal" class="modal" style="max-width: 450px;">
<div class="modal-header">
<h4>사용 가능한 치환코드</h4>
</div>
<div class="modal-content" style="height: 340px;">
<div class="table-wrapper">
<h3>사용가능한 치환코드입니다.</h3>
<table class="table vertical">
<caption>사용 가능한 치환코드</caption>
<colgroup>
<col>
<col>
</colgroup>
<thead>
<tr>
<th>치환 코드</th>
<th>설명</th>
</tr>
</thead>
<tbody>
<c:choose>
<c:when test = "${not empty resultMap.kakao.kakaoSubstList}">
<c:forEach var="kakaoSubstList" items="${resultMap.kakao.kakaoSubstList}" varStatus="status">
<c:choose>
<c:when test="${kakaoSubstList.formDtlDvCd eq '01'}">
<tr class="kakaoSubListReg">
<td>${kakaoSubstList.substCd}</td>
<td>${kakaoSubstList.dc }</td>
</tr>
</c:when>
<c:otherwise>
<tr class="kakaoSubListAnsw">
<td>${kakaoSubstList.substCd}</td>
<td>${kakaoSubstList.dc }</td>
</tr>
</c:otherwise>
</c:choose>
</c:forEach>
</c:when>
<c:otherwise>
<tr>
<td colspan="100%">사용할 수 있는 치환코드가 없습니다</td>
</tr>
</c:otherwise>
</c:choose>
</tbody>
</table>
</div>
</div>
<div class="modal-footer">
<a href="#" rel="modal:close" class="btn outline" id="itm-add-close">확인</a>
</div>
</div>
<form id="backUpData" method="post" >
<input type="hidden" id="moveInnb" name="moveInnb" title="bssId"/>
<input type="hidden" name="srchBbsTyCd" value="${resultMap.srchList[0].srchBbsTyCd }" />
<input type="hidden" name="srchSknTyCd" value="${resultMap.srchList[0].srchSknTyCd }" />
<input type="text" name="srchWord" value="${resultMap.srchList[0].srchWord }" />
<input type="hidden" name="pageUnit" value="${resultMap.srchList[0].pageUnit }" />
<input type="hidden" name="pageIndex" value="${resultMap.srchList[0].pageIndex }" />
<input type="hidden" name="bbsId" value="" />
<input type="hidden" name="pageDv" value="" />
</form>
</main>
</body>
<script type="text/javascript">
const fn_show_alternativeCode = function(){}
/* ********************************************************
* 리스트 이동
******************************************************** */
const fn_backTo_list = function() {
$('#backUpData').attr('action', '<c:url value="/mngr/bbs/bbsmngr/selectBbsListInqireForm"/>') ;
$('#backUpData').submit();
}
/* ********************************************************
* 게시판 생성
******************************************************** */
const fn_insert_noticeBoard = function() {
if (isChkd_Dup === false) {
alert('아이디 중복 체크해 주세요.');
$('[name=bbsId]').focus();
return;
}
const url = '<c:url value="/mngr/bbs/bbsmngr/insertBbsRegist" />';
let params = $('[name=regForm]').serializeArray();
//자주쓰는 답변 ,로 인한 배열 나눔 방지
$.each(params, function (i, field) {
if (field.name === 'cnArr') {
field.value = encodeURIComponent(field.value); // 인코딩 처리
}
});
if (confirm('게시판을 <spring:message code="confirm.common.insert"/>')) {
let paramsArray = $.param(params);
$.ajax({
type : 'post',
url : url,
data : paramsArray,
success : function(data) {
const result = JSON.parse(data.resBody.result);
const bbsId = result.bbsid;
if (result.message !== 'success' || !bbsId) {
alert('게시판 등록에 실패했습니다. 다시 시도해 주세요.');
return;
}
alert('<spring:message code="success.common.insert"/>');
<%-- fn_move_dtlupdt(bbsId); --%>
$('#backUpData').find('[name=bbsId]').val(bbsId);
$('#backUpData').find('[name=pageDv]').val('I');
$('#backUpData').attr('action', '<c:url value="/mngr/bbs/bbsmngr/selectBbsDtlUpdtForm"/>');
$('#backUpData').submit();
},
error : function(data) {
const message = data.responseJSON
&& data.responseJSON.resBody
&& data.responseJSON.resBody.result;
alert(message || '게시판 등록 중 오류가 발생했습니다.');
}
});
}
}
/* ********************************************************
* 게시판 아이디 중복 확인
*********************************************************/
const fn_check_bbsId = function () {
let bbsId = $('[name=regForm]').find('[name=bbsId]').val();
const url = '<c:url value="/mngr/bbs/bbsmngr/selectBbsIdDplctCnfirm?bbsId="/>' + bbsId;
$.ajax({
type: 'get',
url: url,
success: function (data) {
if (JSON.parse(data.resBody.result).message === 'impossible') {
alert('\"' + bbsId + '\" 은 중복된 아이디 입니다.');
}
if (JSON.parse(data.resBody.result).message === 'possible') {
isChkd_Dup = true;
alert('\"' + bbsId + '\" 은 사용 가능합니다.');
}
}
});
}
</script>
</html>