2095 lines
120 KiB
Plaintext
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="쌍따옴표(“”)를 제외한 모든문자 사용가능합니다.">
|
|
<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>답글 쓰기
|
|
<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>
|