/* * Name : board.js * Version : 1.0.3 * Author : 1px studio * Product : Prime01 * Date : 2025-01-06 * Desc : 폼메일 작성 양식 업데이트 --------------------------------------------------- */ $(function() { // 초기화 search_selectric_init(); category_init(); button_replace(); gallery_init(); faq_init(); event_init(); formmail_init(); // 검색창 셀렉트릭 function search_selectric_init() { $('#ext_search select').selectric(); } // 카테고리 버튼 치환 function category_init() { let categoryMarkup = ''; let categoryName = []; let categoryCode = []; const queryString = window.location.search; const urlParams = new URLSearchParams(queryString); if ( $('select[name=com_board_category_code]').length ) { const currentCategory = urlParams.get('com_board_category_code'); let baseURL = $('select[name=com_board_category_code]').attr('onchange').split("'")[1] + 'com_board_category_code='; let activeClass = ''; $('select[name=com_board_category_code] option').each(function() { let $this = $(this); categoryName.push($this.text()); categoryCode.push($this.val()); }); for (let i = 0; i < categoryName.length; i++) { if ( !currentCategory ) { if ( i == 0 ) { activeClass = 'active'; } else { activeClass = ''; } } else { if ( currentCategory == categoryCode[i] ) { activeClass = 'active'; } else { activeClass = ''; } } categoryMarkup += `${categoryName[i]}`; } $('.category-button-wrapper').empty().append(categoryMarkup); } } // 이미지 버튼 텍스트로 치환 function button_replace() { let imgButtonSubmit = $('input[type=image]'); let imgButtonLink = $('img'); const btn_names = ["검색", "확인", "댓글작성", "삭제", "이동", "복사", "이전", "목록", "다음", "스팸신고", "수정", "삭제", "답변", "글쓰기", "작성완료", "취소", "다운로드", "우편번호검색", "삭제"]; imgButtonSubmit.each(function () { let src = $(this).attr('src'); if ( src.indexOf('search.gif') > -1 ) { $(this).before(``); $(document).on('click', '#btn-search', function () { $(this).next('input[type=image]').trigger('click'); }); $(this).hide(); } if ( src.indexOf('confirm.gif') > -1 ) { $(this).before(``); $(this).hide(); } if ( src.indexOf('comment_write.gif') > -1 ) { $(this).before(``); $(document).on('click', '#btn-comment-write', function () { $(this).next('input[type=image]').trigger('click'); }); $(this).hide(); } }); imgButtonLink.each(function () { let src = $(this).attr("src"); let event = $(this).attr("onclick"); src.indexOf("btn_sdel.gif") > -1 && ($(this).before(``), $(this).remove()), src.indexOf("move.gif") > -1 && ($(this).before(``), $(this).remove()), src.indexOf("copy.gif") > -1 && ($(this).before(``), $(this).remove()), src.indexOf("/prev.gif") > -1 && $(this).parent().addClass("button-b button--default move-page").text(btn_names[6]), src.indexOf("list.gif") > -1 && $(this).parent().addClass("button-b button--dark").text(btn_names[7]), src.indexOf("/next.gif") > -1 && $(this).parent().addClass("button-b button--default move-page").text(btn_names[8]), src.indexOf("spam.gif") > -1 && ($(this).before(``), $(this).remove()), src.indexOf("modify.gif") > -1 && $(this).parent().addClass("button-b button--default").text(btn_names[10]), src.indexOf("delete.gif") > -1 && $(this).parent().addClass("button-b button--default").text(btn_names[11]), src.indexOf("reply.gif") > -1 && $(this).parent().addClass("button-b button--default").text(btn_names[12]), src.indexOf("write.gif") > -1 && $(this).parent().addClass("button-b button--dark size--3").text(btn_names[13]), src.indexOf("btn_confirm.gif") > -1 && $(this).parent().addClass("button-b button--primary").text(btn_names[14]), src.indexOf("cancel.gif") > -1 && $(this).parent().addClass("button-b button--default button--lg").text(btn_names[15]), src.indexOf("download.gif") > -1 && $(this).parent().addClass("button-download").text(btn_names[16]); src.indexOf("search_zipcode.gif") > -1 && $(this).parent().addClass("button-zipcode").text(btn_names[17]); // 게시판 우편번호 버튼 src.indexOf("btn_zip.gif") > -1 && $(this).parent().addClass("button-zipcode").text(btn_names[17]); // 폼메일 우편번호 버튼 src.indexOf("btn_del.gif") > -1 && $(this).replaceWith(''+btn_names[18]+''); // 파일삭제 버튼 src.indexOf("icon_sct.gif") > -1 && $(this).replaceWith(''); // 질문과답변 자물쇠 아이콘 }); } // 갤러리 스타일링 function gallery_init() { if ( !$('.board-gallery').length ) return false; let articleThumb = []; let articleLink = []; let articleTitle = []; let articleCategory = []; let articleMarkup = ''; let columnCount = $('.board-gallery .gallery-list').data('column') ? $('.board-gallery .gallery-list').data('column') : 3; let columnClass = ''; switch (columnCount) { case 1: columnClass = 'col-xl-12'; break; case 2: columnClass = 'col-xl-6'; break; case 3: columnClass = 'col-xl-4'; break; case 4: columnClass = 'col-xl-3'; break; case 5: columnClass = 'col-xl-2-5'; break; case 6: columnClass = 'col-xl-2'; break; default: columnClass = 'col-xl-4'; break; } if ( $('.board-gallery').hasClass('type-a') ) { // A타입 갤러리 $('.board-gallery .article-wrapper > .photo-article-list > tbody > tr').each(function() { let $this = $(this); let article = $this.find('.bbsnewf5'); articleThumb.push(article.find('img').attr('src')); articleLink.push(article.find('.gallery_subject>a').attr('href')); articleTitle.push(article.find('.gallery_title').text()); let etc = article.find('.gallery_etc').text().trim(); if (etc.indexOf(":") > -1) { articleCategory.push(etc.split(':')[1].replace(']', '')); } else { articleCategory.push(""); } }); articleMarkup = `
`; for (let i = 0; i < articleThumb.length; i++) { articleMarkup += `
${articleTitle[i]}
${articleCategory[i]}
${articleTitle[i]}
`; } articleMarkup += `
`; $('.board-gallery .article-wrapper').empty().append(articleMarkup); } else if ( $('.board-gallery').hasClass('type-b') ) { // B타입 갤러리 $('.board-gallery .article-wrapper > .photo-article-list > tbody > tr').each(function() { let $this = $(this); let article = $this.find('.bbsnewf5'); articleThumb.push(article.find('img').attr('src')); articleLink.push(article.find('.gallery_subject>a').attr('href')); articleTitle.push(article.find('.gallery_title').text()); let etc = article.find('.gallery_etc').text().trim(); if (etc.indexOf(":") > -1) { articleCategory.push(etc.split(':')[1].replace(']', '')); } else { articleCategory.push(""); } }); articleMarkup = `
`; for (let i = 0; i < articleThumb.length; i++) { articleMarkup += `
${articleTitle[i]}
${articleCategory[i]}
${articleTitle[i]}
`; } articleMarkup += `
`; $('.board-gallery .article-wrapper').empty().append(articleMarkup); } } // FAQ 스타일링 function faq_init() { if ( !$('.faq-list .table-article-list .titdesign').length ) return false; const loader = `
`; $('.faq-list .table-article-list .bbsnewf5 > a').on('click', (e) => { // 관리자가 아닐 때만 아코디언 수행 if ( !$('input[name="delete_check_notice[]"]').length ) { e.preventDefault(); let $this = $(e.currentTarget); let articleLink = $this.attr('href'); let replyContent = ''; $.ajax({ url: articleLink, method: 'GET', contentType: 'application/x-www-form-urlencoded;charset=euc-kr', dataType: 'html', async: false, success: function ( data ) { let content = $(data).find('#post_area').html(); replyContent = ` ${content} `; if ( !$this.closest('.titdesign').hasClass('article--open') ) { $('.titdesign').removeClass('article--open'); $('.reply-content').remove(); $this.parent().after(replyContent); $this.closest('.titdesign').addClass('article--open'); } else { $this.parent().siblings('.reply-content').remove(); $this.closest('.titdesign').removeClass('article--open'); } }, error: function ( xhr ) { alert('오류가 발생하였습니다.'); }, beforeSend: function ( jqXHR ) { jqXHR.overrideMimeType('application/x-www-form-urlencoded;charset=euc-kr'); $('body').prepend(loader); }, complete: function () { $('#ajax-loader').remove(); } }) } }); } // 이벤트 스타일링 function event_init() { if ( !$('.board-event').length ) return false; let articleThumb = []; let articleLink = []; let articleTitle = []; let articleSDate = []; let articleEDate = []; let articleMarkup = ''; let dateCode = ''; $('.board-event .article-wrapper > .event-article-list > tbody > tr').each(function() { let $this = $(this); let article = $this.find('.bbsnewf5'); articleThumb.push(article.find('img').attr('src')); articleLink.push(article.find('.gallery_subject>a').attr('href')); articleTitle.push(article.find('.gallery_title').text()); dateCode = ''; let etc = article.find('.gallery_etc').text().trim(); if (etc.indexOf(":") > -1) { let a = etc.split(':')[1].replace(',', '').replace('이벤트 종료일', ''); let b = etc.split(':')[2].replace(']', ''); dateCode = `${a} ~ ${b}`; } }); articleMarkup = `
`; for (let i = 0; i < articleThumb.length; i++) { articleMarkup += `
${articleTitle[i]}
${dateCode}

${articleTitle[i]}

`; } articleMarkup += `
`; $('.board-event .article-wrapper').empty().append(articleMarkup); } // 문의하기 폼메일 스타일링 function formmail_init() { let writeForm = $(".contact-form"); if (!writeForm.length) return !1; let items = $(".contact-form .table-form > tbody > tr .formmail_cell_bgcolor"); write_form_replace(items, writeForm); } // 글쓰기 양식 스타일링 function write_form_replace(descList, writeForm) { let idIdx = 1; let isFormmail = writeForm[0].className == 'contact-form'; if ($('#privacy_terms_context').length) { const termsContext = $('.formmail_cell_bgcolor textarea[readonly]').val(); const modalTermsContext = $('#privacy_terms_context'); modalTermsContext.val(termsContext); } descList.each(function(idx, desc) { // 날짜, 전화번호 td let flexChild = $(desc).find("input[type=text], select"); if (flexChild.length >= 3) { $(desc).addClass("flex-line"); } // 주소 우편번호 td let zipcodeChild = $(desc).find(".button-zipcode"); if (zipcodeChild.length) { $(desc).addClass("zipcode-line"); } // 체크박스, 라디오 있는 td let checkRadioChild = $(desc).find("input[type=checkbox], input[type=radio]"); if (checkRadioChild.length) { let brTags = $(desc).find("br"); let group = {count: brTags.eq(0).index()}; if (isFormmail) { group.count = $(desc).find("tr").eq(0).find("input").length; } // 태그 교체 checkRadioChild.each(function(idx){ let inputId = 'labelfor'+idIdx; this.id = inputId; // select + checkbox (음력 사용시 해당) if (this.name.match("_lunar")) { let replaceTag = $(desc).find("select"); let newHtml = '
'; replaceTag.each(function(i){ if (i==0) { newHtml += this.outerHTML+""; } else if (i==1) { newHtml += this.outerHTML+""} else if (i==2) { newHtml += this.outerHTML+""} }); newHtml += this.outerHTML + ``; newHtml += '
'; $(desc).html(newHtml); } // 그 외 체크박스, 라디오 버튼 else { let labelClass = "label-group"; labelClass += idx > 0 && idx % group.count == 0 ? " end" : ""; let text = this.value; if (this.name == "com_board_notice") { text = "이 글을 공지글로 설정합니다."; } $(this).replaceWith('
'+this.outerHTML + `
`); } idIdx++; }); $(desc).addClass("flex-line"); // 일반 텍스트 삭제 (위에서 label로 대체됨) let childTags = $(desc).find(".label-group, .select-group, input[type=hidden]"); $(desc).html(childTags); // 세부항목 가로 표시개수 설정 (br -> div로 묶기) if (group.count > -1) { let labelGroup = $(desc).find(".label-group"); labelGroup.each(function(i){ if (i % group.count == 0) { let start = $(this); let end = start.nextUntil(".label-group.end"); $.merge(start,end).wrapAll('
'); } }) $(desc).addClass("change-direction"); } } // 첨부파일 td let fileChild = $(desc).find("input[type=file]"); if (fileChild.length) { let innerText = $(desc).text(); let allFileName = innerText.split(/[\n\t]+/g).filter((word) => word.length > 0 && word != "삭제"); $(desc).addClass("file-desc"); let fileIdx = 0; // 태그 교체 fileChild.each(function(){ let inputId = 'labelfor'+idIdx; this.id = inputId; this.className = "upload-hidden"; let $this = $(this); $this.wrap('
'); let parent = $this.closest(".file-upload"); let prependHtml = ``; parent.prepend(prependHtml); idIdx++; fileIdx++; }); // 업로드된 파일명 셋팅 let delList = $(desc).find(".file_attach_del"); if (delList.length) { delList.each(function(i){ $(this).closest("a").prev(".file-upload").find(".upload-name").addClass("exist").val(allFileName[i]); }); } // 일반 텍스트 삭제 let childTags = $(desc).children(); $(desc).html(childTags); // 파일선택 시 파일명 셋팅 이벤트 let fileTarget = writeForm.find('.file-upload .upload-hidden'); fileTarget.on('change', function(){ let filename = $(this)[0].files[0].name; $(this).siblings('.upload-name').val(filename); }); } }); } });