From 0fd761e894315bc1c6dd23e12e84c9b37c5d599b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=B5=9C=EB=A7=8C=EC=96=B5=20=28Jo=29?= Date: Mon, 3 Nov 2025 04:49:47 +0000 Subject: [PATCH 1/4] =?UTF-8?q?feat:=20=EA=B3=A0=EC=A0=95=ED=98=95-?= =?UTF-8?q?=EB=8B=A4=EC=9A=B4=EB=A1=9C=EB=93=9C=ED=8E=98=EC=9D=B4=EC=A7=80?= =?UTF-8?q?=20=EC=B6=94=EA=B0=80=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- layers/composables/useTemplateRegistry.ts | 2 -- layers/templates/FxDownload01/index.vue | 8 ++++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/layers/composables/useTemplateRegistry.ts b/layers/composables/useTemplateRegistry.ts index caf4068..61e93bd 100644 --- a/layers/composables/useTemplateRegistry.ts +++ b/layers/composables/useTemplateRegistry.ts @@ -9,7 +9,6 @@ import GrDetail02 from '#layers/templates/GrDetail02/index.vue' import GrDetail03 from '#layers/templates/GrDetail03/index.vue' import GrBoard01 from '#layers/templates/GrBoard01/index.vue' import GrContents01 from '#layers/templates/GrContents01/index.vue' -import FxVideo01 from '#layers/templates/FxVideo01/index.vue' import FxDownload01 from '#layers/templates/FxDownload01/index.vue' const templateRegistry = { @@ -24,7 +23,6 @@ const templateRegistry = { GR_DETAIL_02: { component: GrDetail02 }, GR_DETAIL_03: { component: GrDetail03 }, GR_CONTENTS_01: { component: GrContents01 }, - FX_VIDEO_01: { component: FxVideo01 }, FX_DOWNLOAD_01: { component: FxDownload01 }, } as const diff --git a/layers/templates/FxDownload01/index.vue b/layers/templates/FxDownload01/index.vue index 7754804..238fd13 100644 --- a/layers/templates/FxDownload01/index.vue +++ b/layers/templates/FxDownload01/index.vue @@ -13,7 +13,7 @@ const props = defineProps() // Configuration const runtimeConfig = useRuntimeConfig() -const dataResourcesUrl = runtimeConfig.public.dataResourcesUrl +const dataResourcesUrl = runtimeConfig.public.dataResourcesUrl as string const multilingualFileName = 'test_homepage_brand_download.json' // Multilingual @@ -164,7 +164,11 @@ const handleMoveFocus = (target: 'pc' | 'mobile') => {
- +

+ {{ tm(`Download_Box_${platform}_Title`) }} +

{ :resources-data="backgroundData" /> -
+
@@ -154,7 +154,7 @@ const handleMoveFocus = (target: 'pc' | 'mobile') => { padding: { left: 0, right: 0 }, }, }" - class="overflow-hidden min-w-[320px] w-[100vw] px-[20px] ml-[-20px] sm:px-[40px] sm:ml-[-40px] md:w-full md:px-0 md:ml-0" + class="min-w-[320px] w-[100vw] px-[20px] ml-[-20px] sm:px-[calc((100vw-100%-80px)/2)] sm:ml-[calc((100vw-100%-80px)/-2)] md:w-full md:px-0 md:ml-0" > Date: Mon, 3 Nov 2025 15:49:19 +0900 Subject: [PATCH 3/4] =?UTF-8?q?fix.=20=EC=98=A4=ED=83=88=EC=9E=90=20?= =?UTF-8?q?=EC=88=98=EC=A0=95,=20=EB=B6=88=ED=95=84=EC=9A=94=ED=95=9C=20?= =?UTF-8?q?=ED=95=A8=EC=88=98=20=EC=A0=9C=EA=B1=B0,=20=EB=94=94=EC=9E=90?= =?UTF-8?q?=EC=9D=B8=20=EA=B0=80=EC=9D=B4=EB=93=9C=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.dev | 2 +- .env.live | 2 +- .env.qa | 2 +- .env.sandbox | 2 +- app/pages/[d1]/[d2]/[d3].vue | 2 +- app/pages/[d1]/[d2]/index.vue | 2 +- app/pages/[d1]/index.vue | 1 + layers/assets/css/components/_layout.css | 2 +- layers/components/widgets/FixMainTitle.vue | 2 +- layers/templates/FxDownload01/index.vue | 4 +- layers/utils/dataUtil.ts | 48 +--------------------- 11 files changed, 12 insertions(+), 57 deletions(-) diff --git a/.env.dev b/.env.dev index 611dd74..38a471d 100644 --- a/.env.dev +++ b/.env.dev @@ -3,7 +3,7 @@ BASE_DOMAIN='.onstove.com' # URLS ############################################################################## STATIC_URL='https://static-pubcomm.gate8.com' -ASSETS_URL='https://static-pubcomm.gate8.com/dev/templates/brand' +ASSETS_URL='https://static-pubcomm.gate8.com/dev/template/brand' DATA_RESOURCE_URL='https://static-pubcomm.gate8.com/dev/test' # STOVE ############################################################################# diff --git a/.env.live b/.env.live index a3fdb0e..8878f5c 100644 --- a/.env.live +++ b/.env.live @@ -3,7 +3,7 @@ BASE_DOMAIN='.onstove.com' # URLS ############################################################################## STATIC_URL='https://static-pubcomm.onstove.com' -ASSETS_URL='https://static-pubcomm.onstove.com/live/templates/brand' +ASSETS_URL='https://static-pubcomm.onstove.com/live/template/brand' DATA_RESOURCE_URL='https://static-pubcomm.onstove.com/live/test' # STOVE ############################################################################# diff --git a/.env.qa b/.env.qa index fb23f95..8725ff4 100644 --- a/.env.qa +++ b/.env.qa @@ -3,7 +3,7 @@ BASE_DOMAIN='.onstove.com' # URLS ############################################################################## STATIC_URL='https://static-pubcomm.gate8.com' -ASSETS_URL='https://static-pubcomm.gate8.com/qa/templates/brand' +ASSETS_URL='https://static-pubcomm.gate8.com/qa/template/brand' DATA_RESOURCE_URL='https://static-pubcomm.gate8.com/qa/test' # STOVE ############################################################################# diff --git a/.env.sandbox b/.env.sandbox index fa3249e..27dd31d 100644 --- a/.env.sandbox +++ b/.env.sandbox @@ -3,7 +3,7 @@ BASE_DOMAIN='.gate8.com' # URLS ############################################################################## STATIC_URL='https://static-pubcomm.gate8.com' -ASSETS_URL='https://static-pubcomm.gate8.com/sandbox/templates/brand' +ASSETS_URL='https://static-pubcomm.gate8.com/sandbox/template/brand' DATA_RESOURCE_URL='https://static-pubcomm.gate8.com/sandbox/test' # STOVE ############################################################################# diff --git a/app/pages/[d1]/[d2]/[d3].vue b/app/pages/[d1]/[d2]/[d3].vue index 6d1ae69..d2c2341 100644 --- a/app/pages/[d1]/[d2]/[d3].vue +++ b/app/pages/[d1]/[d2]/[d3].vue @@ -9,7 +9,7 @@ const currentLayout = computed(() => getLayoutType(pageData.value)) definePageMeta({ layout: false, // 동적 레이아웃을 위해 기본 레이아웃 비활성화 - middleware: ['inspection'] + middleware: ['inspection'], }) diff --git a/app/pages/[d1]/[d2]/index.vue b/app/pages/[d1]/[d2]/index.vue index 6d1ae69..d2c2341 100644 --- a/app/pages/[d1]/[d2]/index.vue +++ b/app/pages/[d1]/[d2]/index.vue @@ -9,7 +9,7 @@ const currentLayout = computed(() => getLayoutType(pageData.value)) definePageMeta({ layout: false, // 동적 레이아웃을 위해 기본 레이아웃 비활성화 - middleware: ['inspection'] + middleware: ['inspection'], }) diff --git a/app/pages/[d1]/index.vue b/app/pages/[d1]/index.vue index dceae28..d2c2341 100644 --- a/app/pages/[d1]/index.vue +++ b/app/pages/[d1]/index.vue @@ -9,6 +9,7 @@ const currentLayout = computed(() => getLayoutType(pageData.value)) definePageMeta({ layout: false, // 동적 레이아웃을 위해 기본 레이아웃 비활성화 + middleware: ['inspection'], }) diff --git a/layers/assets/css/components/_layout.css b/layers/assets/css/components/_layout.css index 69848cb..e6f0c90 100644 --- a/layers/assets/css/components/_layout.css +++ b/layers/assets/css/components/_layout.css @@ -13,7 +13,7 @@ @apply overflow-hidden relative pt-[32px] pb-[80px] px-[20px] sm:px-[40px] md:pt-[64px] md:pb-[200px] bg-[#F0F0F0]; } .section-static { - @apply mx-auto max-w-[684px] md:max-w-[944px] lg:max-w-[1300px]; + @apply mx-auto lg:max-w-[1300px]; } .section-static + .section-static { @apply mt-[80px] md:mt-[100px]; diff --git a/layers/components/widgets/FixMainTitle.vue b/layers/components/widgets/FixMainTitle.vue index b31ccd6..7e0df58 100644 --- a/layers/components/widgets/FixMainTitle.vue +++ b/layers/components/widgets/FixMainTitle.vue @@ -20,7 +20,7 @@ const imageSrc = computed(() => { :style="{ backgroundImage: `url(${imageSrc})` }" >

{ :resources-data="backgroundData" /> -
+
@@ -154,7 +154,7 @@ const handleMoveFocus = (target: 'pc' | 'mobile') => { padding: { left: 0, right: 0 }, }, }" - class="min-w-[320px] w-[100vw] px-[20px] ml-[-20px] sm:px-[calc((100vw-100%-80px)/2)] sm:ml-[calc((100vw-100%-80px)/-2)] md:w-full md:px-0 md:ml-0" + class="min-w-[320px] w-[100vw] px-[20px] ml-[-20px] sm:px-[40px] sm:ml-[-40px] md:w-full md:px-0 md:ml-0" > { } } - -export const formatDateOffset = ({ - ts, - lang, - useSeconds, - useTimezone -}: { - ts: number - lang: string - useSeconds?: boolean - useTimezone?: boolean -}) => { - const offset = { ko: 9, ja: 9, 'zh-tw': 8, en: 0 }[lang] || 0 - const date = new Date(ts + offset * 3600000) - const pad = (n: number) => String(n).padStart(2, '0') - - const year = date.getUTCFullYear() - const month = date.getUTCMonth() + 1 - const day = date.getUTCDate() - const hours = date.getUTCHours() - const minutes = date.getUTCMinutes() - const seconds = date.getUTCSeconds() - - if (lang === 'ko') { - let format = `${year}-${pad(month)}-${pad(day)} ${pad(hours)}:${pad(minutes)}` - format += useSeconds ? `:${pad(seconds)}` : '' - format += useTimezone ? ' (KST)' : '' - return `${format}` - } else if (lang === 'zh-tw') { - let format = `${year}-${pad(month)}-${pad(day)} ${pad(hours)}:${pad(minutes)}` - format += useSeconds ? `:${pad(seconds)}` : '' - format += useTimezone ? ` (UTC${offset > 0 ? '+' + offset : ''})` : '' - return `${format}` - } else if (lang === 'ja') { - let format = `${year}-${pad(month)}-${pad(day)} ${pad(hours)}:${pad(minutes)}` - format += useSeconds ? `:${pad(seconds)}` : '' - format += useTimezone ? ' (日本時間)' : '' - return `${format}` - } else { - //= en - let format = `${pad(month)}/${pad(day)}/${year} ${pad(hours)}:${pad(minutes)}` - format += useSeconds ? `:${pad(seconds)}` : '' - format += useTimezone ? ' (UTC)' : '' - return `${format}` - } -} /** * 컴포넌트 그룹의 첫 번째 데이터를 반환합니다. * @param components props.components 또는 group 객체 @@ -204,4 +158,4 @@ export const getComponentGroup = ( if (!components) return null return components[componentName]?.groups?.[0] || null -} \ No newline at end of file +} From 9f1fbbeec1ccc82baea21ea26f2ab1ffa164052f Mon Sep 17 00:00:00 2001 From: clkim Date: Mon, 3 Nov 2025 16:19:00 +0900 Subject: [PATCH 4/4] =?UTF-8?q?fix.=20=EB=B6=88=ED=95=84=EC=9A=94=ED=95=9C?= =?UTF-8?q?=20=ED=8C=8C=EC=9D=BC=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- layers/components/blocks/StoveGnb.vue | 10 +- layers/components/blocks/StoveGnbNew.vue | 90 +++++++++--------- layers/stores/useCommonStore.ts | 115 ----------------------- 3 files changed, 50 insertions(+), 165 deletions(-) delete mode 100644 layers/stores/useCommonStore.ts diff --git a/layers/components/blocks/StoveGnb.vue b/layers/components/blocks/StoveGnb.vue index 0351197..f55f29d 100644 --- a/layers/components/blocks/StoveGnb.vue +++ b/layers/components/blocks/StoveGnb.vue @@ -9,7 +9,7 @@ const { gameData } = useGameDataStore() const stoveInflowPath = runtimeConfig.public.stoveInflowPath const stoveGameNo = runtimeConfig.public.stoveGameNo -const gnbData = gameData?.stove_gnb_json +const stoveGnbData = gameData?.stove_gnb_json const languageCodes = computed(() => { if (Array.isArray(availableLocales)) { @@ -24,9 +24,9 @@ const loadGnb = (locale: string) => { locale = locale.toLowerCase() const gnbOption = { - wrapper: '#stove-wrapper', + wrapper: '#stove-wrap', isResponsive: true, - skin: gnbData?.skin_type || 'gnb-dark-mini', + skin: stoveGnbData?.skin_type || 'gnb-dark-mini', widget: { gameListAndService: false, languageSelect: false, @@ -42,7 +42,7 @@ const loadGnb = (locale: string) => { params: { inflow_path: stoveInflowPath, game_no: stoveGameNo, - show_play_button: gnbData?.stove_install_button_visible || 'Y', + show_play_button: stoveGnbData?.stove_install_button_visible || 'Y', }, redirectCurrentPage: true, windowTitle: undefined, @@ -66,5 +66,5 @@ onBeforeUnmount(() => { diff --git a/layers/components/blocks/StoveGnbNew.vue b/layers/components/blocks/StoveGnbNew.vue index 996902d..60b31e6 100644 --- a/layers/components/blocks/StoveGnbNew.vue +++ b/layers/components/blocks/StoveGnbNew.vue @@ -1,55 +1,52 @@ - \ No newline at end of file + + diff --git a/layers/stores/useCommonStore.ts b/layers/stores/useCommonStore.ts deleted file mode 100644 index d19df92..0000000 --- a/layers/stores/useCommonStore.ts +++ /dev/null @@ -1,115 +0,0 @@ -import { defineStore } from 'pinia' -import { useWindowSize, useWindowScroll } from '@vueuse/core' - -interface DeviceMode { - mode: 'desktop' | 'mobile' - browser: 'chrome' | 'crawler' | 'edge' | 'firefox' | 'safari' | null - isDesktop: boolean - isMobile: boolean - isTablet: boolean - isIos: boolean - isAndroid: boolean - isDeviceReady: boolean -} - -export const useCommonStore = defineStore('commonStore', () => { - const stoveGnbHeight = 48 - - const useDeviceData = useDevice() - const { width: windowWidth, height: windowHeight } = useWindowSize() - const { x: windowX, y: windowY } = useWindowScroll({ behavior: 'smooth' }) - - const device = ref({ - mode: useDeviceData.isMobile || useDeviceData.isTablet ? 'mobile' : 'desktop', - browser: useDeviceData.isChrome - ? 'chrome' - : useDeviceData.isCrawler - ? 'crawler' - : useDeviceData.isEdge - ? 'edge' - : useDeviceData.isFirefox - ? 'firefox' - : useDeviceData.isSafari - ? 'safari' - : null, - isDesktop: useDeviceData.isDesktop, - isMobile: useDeviceData.isMobile, - isTablet: useDeviceData.isTablet, - isIos: useDeviceData.isIos, - isAndroid: useDeviceData.isAndroid, - isDeviceReady: false - }) - - const isPassedStoveGnb = ref(false) - const scrollFixedXValue = ref('0px') - const footerRef = ref(null) - const isLoading = ref(true) - const isScrollLock = ref(false) - - const updateDeviceMode = () => { - device.value.mode = useDeviceData.isMobile || useDeviceData.isTablet ? 'mobile' : 'desktop' - device.value.browser = useDeviceData.isChrome - ? 'chrome' - : useDeviceData.isCrawler - ? 'crawler' - : useDeviceData.isEdge - ? 'edge' - : useDeviceData.isFirefox - ? 'firefox' - : useDeviceData.isSafari - ? 'safari' - : null - device.value.isDesktop = useDeviceData.isDesktop - device.value.isMobile = useDeviceData.isMobile - device.value.isTablet = useDeviceData.isTablet - device.value.isIos = useDeviceData.isIos - device.value.isAndroid = useDeviceData.isAndroid - device.value.isDeviceReady = true - } - - const updateIsPassedStoveGnb = () => { - isPassedStoveGnb.value = windowY.value >= stoveGnbHeight - - if (isPassedStoveGnb.value) { - scrollFixedXValue.value = `-${windowX.value}px` - } else { - scrollFixedXValue.value = '0px' - } - } - - const isLoadingComplete = () => { - isLoading.value = false - } - - const scrollLock = () => { - isScrollLock.value = !isScrollLock.value - } - - const addScrollLock = () => { - isScrollLock.value = true - } - - const removeScrollLock = () => { - isScrollLock.value = false - } - - return { - device, - windowWidth, - windowHeight, - windowX, - windowY, - isPassedStoveGnb, - scrollFixedXValue, - footerRef, - isLoading, - isScrollLock, - - updateDeviceMode, - updateIsPassedStoveGnb, - isLoadingComplete, - scrollLock, - addScrollLock, - removeScrollLock - } -})