/*! 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 });
});
})();
/******/ })()
;