(() => { const { EventManager, utils, constants, actions } = ShopbySkin; const slideMenuEL = document.querySelector("slide-menu"); const getCookie = (name) => { const value = `; ${document.cookie}`; const parts = value.split(`; ${name}=`); if (parts.length === 2) return parts.pop().split(";").shift(); return null; }; const slideMenuClickActionMap = { CLOSE_SLIDE_MENU: () => { EventManager.fire("TOGGLE_HEADER_SLIDE_MENU", { type: "close" }); }, TOGGLE_SLIDE_MENU_CHILD_CATEGORY: (e) => { const categoryWrapEl = e?.target?.closest("[shopby-category-no]"); EventManager.fire("TOGGLE_SLIDE_MENU_CHILD_CATEGORY", { wrapEl: categoryWrapEl, }); }, SIGN_OUT: () => { slideMenuClickActionMap.CLOSE_SLIDE_MENU(); localStorage.removeItem("memberNo"); // memberNo 로컬 스토리지 삭제 document.cookie = `memberNo=; expires=${new Date(0)}; path=/; domain=.dsdo.co.kr;`; // memberNo 쿠키 삭제 EventManager.fire("SIGN_OUT"); }, GO_MY_MENU: (e) => { if (!utils.isSignedIn()) { e.preventDefault(); slideMenuClickActionMap.CLOSE_SLIDE_MENU(); const from = e.target.href; const nextUrl = `${location.origin}${constants.PAGE.SIGN_IN}`; utils.moveTo({ url: `${nextUrl}?from=${encodeURIComponent(from)}` }); } else { if (!e.target.href) { return; } slideMenuClickActionMap.CLOSE_SLIDE_MENU(); utils.moveTo({ url: e.target.href }); } }, GO_NEXT: (event) => { event.preventDefault(); const { target } = event; const href = target?.href ?? target.closest('[shopby-action="GO_NEXT"]')?.href; if (!href) { return; } slideMenuClickActionMap.CLOSE_SLIDE_MENU(); utils.moveTo({ url: href }); }, GO_VOCA_DSDO: (event) => { slideMenuClickActionMap.CLOSE_SLIDE_MENU(); utils.moveTo({ url: DSDOENV.ApiConfig.VOCA_SYSTEM }); } }; const clickEventListener = (e) => { const action = e?.target ?.closest("[shopby-action]") ?.getAttribute("shopby-action"); slideMenuClickActionMap[action]?.(e); }; const updateEventLinks = () => { const eventConfig = window.DSDOENV.EventConfig; const premiumLink = document.getElementById('THE_PREMIUM'); if (premiumLink && eventConfig.EVENT_NO_THE_PREMIUM) { premiumLink.href = `/pages/mock-test/premium/premium-detail.html?event=${eventConfig.EVENT_NO_THE_PREMIUM}`; } const dMockPackageLink = document.getElementById('D_MOCK_PACKAGE'); if (dMockPackageLink && eventConfig.EVENT_NO_DMOCK_PACKAGE) { dMockPackageLink.href = `/pages/mock-test/D_mock_package/D_mock_package-detail.html?event=${eventConfig.EVENT_NO_DMOCK_PACKAGE}`; } const constantLink = document.getElementById('CONSTANT'); if (constantLink && eventConfig.EVENT_NO_CONSTANT) { constantLink.href = `/pages/mock-test/constant/constant-detail.html?event=${eventConfig.EVENT_NO_CONSTANT}`; } const darchiveLink = document.getElementById('D_ARCHIVE'); if (darchiveLink && eventConfig.EVENT_NO_DARCHIVE) { darchiveLink.href = `/pages/mock-test/D_archive/D_archive-detail.html?event=${eventConfig.EVENT_NO_DARCHIVE}`; } const dLabLink = document.getElementById('D_LINK'); if (dLabLink && eventConfig.EVENT_NO_DLINK) { dLabLink.href = `/pages/mock-test/D_archive/D_archive-detail.html?event=${eventConfig.EVENT_NO_DLINK}`; } const dfineLink = document.getElementById('D_FINE'); if (dfineLink && eventConfig.EVENT_NO_DFINE) { dfineLink.href = `/pages/mock-test/D_fine/D_fine-detail.html?event=${eventConfig.EVENT_NO_DFINE}`; } const dfineFinalLink = document.getElementById('D_FINE_FINAL'); if (dfineFinalLink && eventConfig.EVENT_NO_DFINE_FINAL) { dfineFinalLink.href = `/pages/mock-test/D_fine_final/D_fine_final-detail.html?event=${eventConfig.EVENT_NO_DFINE_FINAL}`; } const thepoomLink = document.getElementById('THE_POOM'); if (thepoomLink && eventConfig.EVENT_NO_THEP) { thepoomLink.href = `/pages/textbook/thepoom/thepoom-detail.html?event=${eventConfig.EVENT_NO_THEP}`; } const mathLink = document.getElementById('PRINCIPLE_OF_MATH'); if (mathLink && eventConfig.EVENT_NO_MATH) { mathLink.href = `/pages/textbook/principleOfMath/principleOfMath-detail.html?event=${eventConfig.EVENT_NO_MATH}`; } const dcodeLink = document.getElementById('D_CODE'); if (dcodeLink && eventConfig.EVENT_NO_DCODE) { dcodeLink.href = `/pages/mock-test/D_code/D_code-detail.html?event=${eventConfig.EVENT_NO_DCODE}`; } const dvocaLink = document.getElementById('D_VOCA'); if (dvocaLink && eventConfig.EVENT_NO_DVOCA) { dvocaLink.href = `/pages/textbook/D_voca/D_voca-detail.html?event=${eventConfig.EVENT_NO_DVOCA}`; } }; const handleMockExamMenu = () => { const categoryList = document.querySelector(".slide-menu__nav-content .category-list"); if (!categoryList) { return; } const categoryItem = document.createElement("div"); categoryItem.classList.add("category-item"); const mobileBox = document.createElement("div"); mobileBox.classList.add("mobile-category-item-box"); const link = document.createElement("a"); link.classList.add("toggle-btn"); link.textContent = "응시 / 성적 조회"; link.addEventListener("click", (e) => { e.preventDefault(); const memberNo = getCookie("memberNo"); if (!memberNo) { EventManager.fire("MODAL_ALERT_OPEN", { noticeType: "CAUTION", message : "로그인 후 이용할 수 있습니다.", onClose : actions.postSignOut, }); } const url = DSDOENV.ApiConfig.EXAM_SYSTEM; if (!utils.isSignedIn()) { slideMenuClickActionMap.CLOSE_SLIDE_MENU(); const nextUrl = `${location.origin}${constants.PAGE.SIGN_IN}`; utils.moveTo({url: `${nextUrl}`}); } else { window.location.href = url; } }); mobileBox.appendChild(link); categoryItem.appendChild(mobileBox); categoryList.appendChild(categoryItem); }; EventManager.on("PAGE_LOAD_COMPLETED", ({ profile }) => { handleMockExamMenu(); updateEventLinks(); }); document.addEventListener("click", (event) => { // 클릭한 요소가 .toggle-btn 또는 .mobile-category-item-box 내부인지 확인 const categoryBox = event.target.closest(".mobile-category-item-box"); if (!categoryBox) return; // 클릭된 카테고리의 하위 .subcategory-list 찾기 const subcategoryList = categoryBox.nextElementSibling; // 하위 카테고리가 존재하면 active 클래스를 토글 if ( subcategoryList && subcategoryList.classList.contains("subcategory-list") ) { subcategoryList.classList.toggle("active"); // 화살표 이미지 회전 효과 (active 상태에 따라) const arrowImg = categoryBox.querySelector("img"); if (arrowImg) { arrowImg.style.transform = subcategoryList.classList.contains("active") ? "rotate(180deg)" : "rotate(0deg)"; } } }); slideMenuEL?.addEventListener("click", clickEventListener); EventManager.fire("INIT_MYAPP"); })();