/*! 6/21/2024, 11:42:51 AM */ /******/ (() => { // webpackBootstrap var __webpack_exports__ = {}; (() => { const { EventManager } = ShopbySkin; const { deleteArticle, checkIsArticleEditable } = ShopbySkin.pageHelper.articleViewHelper(); const url = new URL(window.location.href); const searchParams = new URLSearchParams(url.search); const boardId = searchParams.get('boardId'); const boardNo = searchParams.get('boardNo'); const articleNo = Number(searchParams.get('articleNo')); let shopbyCommonData = {}; EventManager.on('PAGE_LOAD_COMPLETED', (commonData) => { shopbyCommonData = commonData; //게시글 상세 상단 메뉴 활성화 const boardNoToMenuMap = { '278286': '뉴스룸', '278285': 'IR', '278287': '해외박람회' }; const boardNoToHrefMap = { '278286': '/news/newsroom.html', '278285': '/news/ir.html', '278287': '/news/international_fair.html' }; const menuItems = document.querySelectorAll('.top_menu_list li'); menuItems.forEach(function(item) { const linkText = item.querySelector('a').textContent.trim(); if (boardNoToMenuMap[boardNo] === linkText) { menuItems.forEach(i => i.classList.remove('active')); item.classList.add('active'); document.querySelector('.top_tit h3').textContent = linkText; } }); const boardhref = boardNoToHrefMap[boardNo]; if (boardhref) { document.querySelector('.btn_list').setAttribute('href', boardhref); } }); const moveToList = () => { let queryString = ''; if (boardId) { queryString += `boardId=${boardId}`; } else if (boardNo) { queryString += `boardNo=${boardNo}`; } location.href = `/pages/board/post-list.html${queryString && `?${queryString}`}`; }; const openPasswordFormModal = (nextAction) => { EventManager.fire('OPEN_LAYER_MODAL', { name: 'check-post-password-form', title: '비밀번호 인증', isFull: false, onClose: ({ reason, state = {} }) => { if (reason === 'DID_SUBMIT' && nextAction) { nextAction(state); } }, }); }; const openPostFormModal = ({ boardName, password = '' }) => { const { boardConfigs = [] } = shopbyCommonData.allBoardConfig; EventManager.fire('OPEN_LAYER_MODAL', { title: boardName, name: 'article-write-form', isFull: false, data: { boardId, boardNo, articleNo, password, boardConfigs, isModify: true, }, onClose: ({ reason }) => { if (reason === 'DID_SUBMIT') { location.reload(); } }, }); }; const postFormModal = ({ registerType, boardName }) => { if (registerType === 'GUEST') { openPasswordFormModal((state) => { const { password } = state; if (password) { openPostFormModal({ boardName, password }); } }); } else { openPostFormModal({ boardName }); } }; const deleteAction = async (state) => { const { password = '' } = state ?? {}; const param = { boardNo: boardId || boardNo, articleNo, }; if (password) { param.password = password; } await deleteArticle(param); EventManager.fire('MODAL_ALERT_OPEN', { noticeType: 'SUCCESS', message: '삭제가 완료되었습니다.', onClose: () => { moveToList(); }, }); }; const moduleActionHandler = { LIST: moveToList, MODIFY: async ({ target }) => { const boardName = document.querySelector('[shopby-board-name]')?.getAttribute('shopby-board-name'); const registerType = target.closest('[shopby-register-type]')?.getAttribute('shopby-register-type'); if (registerType !== 'GUEST') { const isArticleEditable = await checkIsArticleEditable({ boardNo: boardId || boardNo, articleNo, }); if (!isArticleEditable) { EventManager.fire('MODAL_ALERT_OPEN', { message: '권한이 없습니다.', }); return; } } postFormModal({ registerType, boardName }); }, DELETE: ({ target }) => { const registerType = target.closest('[shopby-register-type]')?.getAttribute('shopby-register-type'); EventManager.fire('MODAL_CONFIRM_OPEN', { noticeType: 'WARNING', message: '게시글을 삭제하시겠습니까?', onConfirm: () => { if (registerType === 'GUEST') { openPasswordFormModal((state) => { deleteAction(state); }); } else { deleteAction(); } }, }); }, MOVE_TO_PARENT_POST: ({ target }) => { const parentArticleNo = target.closest('[shopby-parent-article-no]')?.getAttribute('shopby-parent-article-no'); searchParams.set('articleNo', parentArticleNo); location.href = `/pages/board/post-detail.html?${searchParams.toString()}`; }, DOWNLOAD_FILE: async ({ target }) => { const fileName = target.getAttribute('shopby-file-name'); const originFileName = target.getAttribute('shopby-origin-file-name'); const blob = await ShopbySkin.utils.downloadFile(fileName); const a = document.createElement('a'); a.href = URL.createObjectURL(blob); a.download = originFileName; document.body.appendChild(a); a.click(); document.body.removeChild(a); }, }; // 비밀번호 인증이 필요한 경우 EventManager.on('NEED_PASSWORD_FORM', () => { EventManager.fire('OPEN_LAYER_MODAL', { name: 'check-post-password-form', title: '비밀번호 인증', isFull: false, onClose: ({ reason }) => { if (reason === 'DID_CLOSE') { if (!document.referrer || location.href === document.referrer) { history.back(); return; } location.href = document.referrer; } }, }); }); // 해당 게시글에 접근할 권한이 없는 경우 EventManager.on('FORBIDDEN_ARTICLE', () => { EventManager.fire('MODAL_ALERT_OPEN', { noticeType: 'WARNING', message: '비밀글 조회 권한이 없습니다.', onClose: () => { if (!document.referrer || location.href === document.referrer) { history.back(); return; } location.href = document.referrer; }, }); }); document.querySelector('article-view')?.addEventListener('click', ({ target }) => { const action = target.getAttribute('shopby-action'); moduleActionHandler[action]?.({ target }); }); })(); /******/ })() ;