본문으로 건너뛰기

디자인 스킨 업로드 기능 개선

PHP 8 · GODO26
변경 파일 수: 3개
변경 파일 목록
총 3개
변경 파일 코드
추가삭제
Admin/design/design_skin_list/owned_skin_list_section.php+2-4
변경 전owned_skin_list_section.php
<header class="ncua-card__header">
<h4 class="ncua-card__title">보유 스킨 리스트</h4>
</header>
<!-- 탭 영역 -->
<?php if ($skinTabData['responsiveSkinCount'] > 0 && $skinTabData['adaptiveSkinCount'] > 0): ?>
<div class="swiper ncua-horizontal-tab ncua-horizontal-tab--sm ncua-horizontal-tab--underline-fill">
<div class="swiper-wrapper ncua-gap-8">
<div class="swiper-slide ncua-horizontal-tab__item">
</div>
</div>
</div>
<?php endif; ?>
</div>
<section class="ncua-card__body">
 
<p class="ncua-search-result__summary-count">
전체 <strong class="js-total-count">0</strong>개
</p>
<!-- TODO: 반응형 스킨이 있는 경우 is-visible-hidden 클래스 추가 -->
<div class="ncua-file-input ncua-file-input--xs">
<button type="button" class="ncua-btn ncua-btn--xs ncua-btn--secondary-gray js-skin-upload <?= $skinTabData['defaultTab'] === 'responsive' ? 'is-visible-hidden' : '' ?>">
<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="none" class="ncua-btn__icon">
 
변경 후owned_skin_list_section.php
<header class="ncua-card__header">
<h4 class="ncua-card__title">보유 스킨 리스트</h4>
</header>
<!-- 탭 영역 (스킨 보유 여부와 무관하게 항상 노출) -->
 
<div class="swiper ncua-horizontal-tab ncua-horizontal-tab--sm ncua-horizontal-tab--underline-fill">
<div class="swiper-wrapper ncua-gap-8">
<div class="swiper-slide ncua-horizontal-tab__item">
</div>
</div>
</div>
 
</div>
<section class="ncua-card__body">
 
<p class="ncua-search-result__summary-count">
전체 <strong class="js-total-count">0</strong>개
</p>
<!-- 스킨 업로드: 반응형 탭 미노출, PC/모바일 탭 노출 (탭 전환 시 JS에서 토글) -->
<div class="ncua-file-input ncua-file-input--xs">
<button type="button" class="ncua-btn ncua-btn--xs ncua-btn--secondary-gray js-skin-upload <?= $skinTabData['defaultTab'] === 'responsive' ? 'is-visible-hidden' : '' ?>">
<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="none" class="ncua-btn__icon">
 
Admin/design/design_skin_list.php+12-5
변경 전design_skin_list.php
<script type="text/javascript" src="<?=gd_set_browser_cache(PATH_ADMIN_GD_SHARE . 'ncds/script/common/ncua-dropdown-wrapper.v0.1.js')?>"></script>
<script defer src="<?= gd_set_browser_cache(PATH_ADMIN_GD_SHARE . 'ncds/script/common/spinner-modal.js') ?>"></script>
 
<article class="ncua-content design-skin-list">
<header class="page-header ncua-page-header js-affix">
<h3 class="ncua-help-manual"><?= end($naviMenu->location); ?>
</h3>
<?php include $activeDesignSkinSection; ?>
<?php } ?>
 
<!-- 보유 스킨 리스트 -->
<?php if ($skinTabData['responsiveSkinCount'] > 0 || $skinTabData['adaptiveSkinCount'] > 0) { ?>
<?php include $ownedSkinListSection; ?>
<?php } ?>
 
<!-- 해외몰 홈아이콘 설정 -->
<?php if ($mallCnt > 1) { ?>
// 모두 보기 버튼 표시 여부 업데이트
ownedSkinList.updateViewAllButton(filteredList.length);
 
 
 
 
 
 
 
 
 
 
filteredList.forEach((skin, idx) => {
try {
if(maxLen && maxLen <= idx) return;
 
변경 후design_skin_list.php
<script type="text/javascript" src="<?=gd_set_browser_cache(PATH_ADMIN_GD_SHARE . 'ncds/script/common/ncua-dropdown-wrapper.v0.1.js')?>"></script>
<script defer src="<?= gd_set_browser_cache(PATH_ADMIN_GD_SHARE . 'ncds/script/common/spinner-modal.js') ?>"></script>
 
<article class="ncua-content design-skin-list content-wrap-initial">
<header class="page-header ncua-page-header js-affix">
<h3 class="ncua-help-manual"><?= end($naviMenu->location); ?>
</h3>
<?php include $activeDesignSkinSection; ?>
<?php } ?>
 
<!-- 보유 스킨 리스트 (스킨 보유 여부와 무관하게 항상 노출) -->
<?php include $ownedSkinListSection; ?>
 
 
 
<!-- 해외몰 홈아이콘 설정 -->
<?php if ($mallCnt > 1) { ?>
// 모두 보기 버튼 표시 여부 업데이트
ownedSkinList.updateViewAllButton(filteredList.length);
 
// 보유 스킨이 없는 경우 안내 문구 노출
if (filteredList.length === 0) {
const emptyMessage = document.createElement('div');
emptyMessage.className = 'owned-skin-list--empty';
emptyMessage.textContent = '보유한 스킨이 없습니다.';
skinList.appendChild(emptyMessage);
return;
}
 
filteredList.forEach((skin, idx) => {
try {
if(maxLen && maxLen <= idx) return;
 
Controller/Admin/Design/DesignSkinListController.php+10-14
변경 전DesignSkinListController.php
use Origin\Service\Aggregator\GodomallAggregatorService;
use Origin\Service\MyApp\MyappSettingService;
use Origin\Enum\ManagerTutorialType;
 
use Origin\Service\Admin\Member\ManagerTutorial\HelperPopupExposureAvailabilityService;
// 스킨 설정 정보, (사용 중 아닌) 스킨 목록 설정
$designSkinConfig = gd_policy('design.skin', $mallSno);
$usingSkinType = $designSkinConfig['skinType'] ?? 'adaptive';
// 모바일샵 설정 정보
$mobileConfig = gd_policy('mobile.config');
$unusedSkinList = [];
foreach ($skinList as $skin) {
$skinType = $skin['skin_type'] ?? 'adaptive';
$skinDevice = $skin['skin_device'];
$skinCode = $skin['skin_code'];
// 적응형 스킨에만 default_design_page_id 추가
if ($skinType === 'adaptive') {
$skin['default_design_page_id'] = $this->getDefaultDesignPageId($skinCode, $skinDevice);
}
$adaptiveSkinCount = 0;
foreach ($skinList as $skin) {
if (($skin['skin_type'] ?? 'adaptive') === 'responsive') {
$responsiveSkinCount++;
} else {
$adaptiveSkinCount++;
}
}
// 기본 탭 결정: 둘 다 있으면 사용 중인 타입, 아니면 보유한 타입
if ($responsiveSkinCount > 0 && $adaptiveSkinCount > 0) {
$defaultTab = $usingSkinType;
} elseif ($responsiveSkinCount > 0) {
$defaultTab = 'responsive';
} else {
$defaultTab = 'adaptive';
}
return [
'responsiveSkinCount' => $responsiveSkinCount,
'adaptiveSkinCount' => $adaptiveSkinCount,
'isResponsiveActive' => $usingSkinType === 'responsive',
'isAdaptiveActive' => $usingSkinType !== 'responsive',
'defaultTab' => $defaultTab,
];
}
 
변경 후DesignSkinListController.php
use Origin\Service\Aggregator\GodomallAggregatorService;
use Origin\Service\MyApp\MyappSettingService;
use Origin\Enum\ManagerTutorialType;
use Origin\Enum\Design\DesignEditorSkinType;
use Origin\Service\Admin\Member\ManagerTutorial\HelperPopupExposureAvailabilityService;
// 스킨 설정 정보, (사용 중 아닌) 스킨 목록 설정
$designSkinConfig = gd_policy('design.skin', $mallSno);
$usingSkinType = $designSkinConfig['skinType'] ?? DesignEditorSkinType::ADAPTIVE->value;
// 모바일샵 설정 정보
$mobileConfig = gd_policy('mobile.config');
$unusedSkinList = [];
foreach ($skinList as $skin) {
$skinType = $skin['skin_type'] ?? DesignEditorSkinType::ADAPTIVE->value;
$skinDevice = $skin['skin_device'];
$skinCode = $skin['skin_code'];
// 적응형 스킨에만 default_design_page_id 추가
if ($skinType === DesignEditorSkinType::ADAPTIVE->value) {
$skin['default_design_page_id'] = $this->getDefaultDesignPageId($skinCode, $skinDevice);
}
$adaptiveSkinCount = 0;
foreach ($skinList as $skin) {
if (($skin['skin_type'] ?? DesignEditorSkinType::ADAPTIVE->value) === DesignEditorSkinType::RESPONSIVE->value) {
$responsiveSkinCount++;
} else {
$adaptiveSkinCount++;
}
}
// 탭은 스킨 보유 여부와 무관하게 항상 노출되므로, 기본 탭은 현재 사용 중인 스킨 유형을 따른다.
$isResponsiveActive = $usingSkinType === DesignEditorSkinType::RESPONSIVE->value;
$defaultTab = $isResponsiveActive ? DesignEditorSkinType::RESPONSIVE->value : DesignEditorSkinType::ADAPTIVE->value;
 
 
 
 
 
return [
'responsiveSkinCount' => $responsiveSkinCount,
'adaptiveSkinCount' => $adaptiveSkinCount,
'isResponsiveActive' => $isResponsiveActive,
'isAdaptiveActive' => !$isResponsiveActive,
'defaultTab' => $defaultTab,
];
}