릴리스: v1.4.27 내부 레거시 이름층 정리
This commit is contained in:
@@ -36,7 +36,7 @@ const selectedTemplateId = ref('')
|
||||
const selectedTemplate = ref(null)
|
||||
const featuredTemplateIds = ref([])
|
||||
const templatePickerModalOpen = ref(false)
|
||||
const templatePickerMode = ref('game-admin')
|
||||
const templatePickerMode = ref('template-admin')
|
||||
const templatePickerQuery = ref('')
|
||||
const templatePickerSort = ref('recent')
|
||||
|
||||
@@ -215,7 +215,7 @@ const customItemTargetTemplate = computed(() => templates.value.find((template)
|
||||
const importModalItemCount = computed(() => importModalItems.value.length)
|
||||
const activeTabTitle = computed(() => {
|
||||
if (activeTab.value === 'featured') return '목록 관리'
|
||||
if (activeTab.value === 'game-admin') return '템플릿 관리'
|
||||
if (activeTab.value === 'template-admin') return '템플릿 관리'
|
||||
if (activeTab.value === 'items') return '아이템 관리'
|
||||
if (activeTab.value === 'tierlists') {
|
||||
return tierlistsMode.value === 'requests' ? '템플릿 요청 관리' : '전체 티어표 관리'
|
||||
@@ -226,7 +226,7 @@ const activeTabDescription = computed(() => {
|
||||
if (activeTab.value === 'featured') {
|
||||
return '홈 화면 상단에 고정 노출되는 템플릿 순서를 따로 관리합니다.'
|
||||
}
|
||||
if (activeTab.value === 'game-admin') {
|
||||
if (activeTab.value === 'template-admin') {
|
||||
return '템플릿 생성, 선택, 썸네일, 기본 아이템 관리를 전용 작업 화면으로 분리했습니다.'
|
||||
}
|
||||
if (activeTab.value === 'items') {
|
||||
@@ -251,7 +251,7 @@ const adminOverviewStats = computed(() => {
|
||||
{ label: '추가 가능', value: `${Math.max(0, 50 - featuredTemplateIds.value.length)}` },
|
||||
]
|
||||
}
|
||||
if (activeTab.value === 'game-admin') {
|
||||
if (activeTab.value === 'template-admin') {
|
||||
return [
|
||||
{ label: '전체 템플릿', value: `${templates.value.length}` },
|
||||
{ label: '티어표 전체', value: `${selectedTemplateTierListStats.value.total || 0}` },
|
||||
@@ -305,14 +305,14 @@ const isAnyModalOpen = computed(
|
||||
)
|
||||
const adminRouteNameByTab = {
|
||||
featured: 'adminFeatured',
|
||||
'game-admin': 'adminGames',
|
||||
'template-admin': 'adminTemplates',
|
||||
items: 'adminItems',
|
||||
tierlists: 'adminTierlists',
|
||||
users: 'adminUsers',
|
||||
}
|
||||
|
||||
function tabFromAdminRoute(name) {
|
||||
if (name === 'adminGames') return 'game-admin'
|
||||
if (name === 'adminTemplates') return 'template-admin'
|
||||
if (name === 'adminItems') return 'items'
|
||||
if (name === 'adminTierlists') return 'tierlists'
|
||||
if (name === 'adminUsers') return 'users'
|
||||
@@ -423,7 +423,7 @@ watch(
|
||||
() => route.name,
|
||||
(name) => {
|
||||
activeTab.value = tabFromAdminRoute(name)
|
||||
if (name === 'adminGames') {
|
||||
if (name === 'adminTemplates') {
|
||||
const nextTopicId = typeof route.query.topicId === 'string' ? route.query.topicId : ''
|
||||
if (nextTopicId && nextTopicId !== selectedTemplateId.value) {
|
||||
selectedTemplateId.value = nextTopicId
|
||||
@@ -446,7 +446,7 @@ watch(
|
||||
watch(
|
||||
() => selectedTemplateId.value,
|
||||
(templateId) => {
|
||||
if (route.name !== 'adminGames') return
|
||||
if (route.name !== 'adminTemplates') return
|
||||
syncAdminRouteQuery({ topicId: templateId || undefined })
|
||||
}
|
||||
)
|
||||
@@ -481,7 +481,7 @@ watch(
|
||||
watch(
|
||||
() => activeTab.value,
|
||||
async (tab) => {
|
||||
if (tab === 'game-admin' && selectedTemplateId.value && !selectedTemplate.value?.game?.id) {
|
||||
if (tab === 'template-admin' && selectedTemplateId.value && !selectedTemplate.value?.game?.id) {
|
||||
await loadTemplate()
|
||||
return
|
||||
}
|
||||
@@ -732,7 +732,7 @@ function setTab(tab) {
|
||||
const nextRouteName = adminRouteNameByTab[tab]
|
||||
if (nextRouteName && route.name !== nextRouteName) {
|
||||
const nextQuery =
|
||||
tab === 'game-admin'
|
||||
tab === 'template-admin'
|
||||
? { topicId: selectedTemplateId.value || undefined }
|
||||
: tab === 'tierlists' && tierlistsMode.value === 'all'
|
||||
? { mode: 'all' }
|
||||
@@ -1312,7 +1312,7 @@ function setAdminTierListGameId(topicId) {
|
||||
refreshAdminTierLists()
|
||||
}
|
||||
|
||||
function openTemplatePickerModal(mode = 'game-admin') {
|
||||
function openTemplatePickerModal(mode = 'template-admin') {
|
||||
templatePickerMode.value = mode
|
||||
templatePickerQuery.value = ''
|
||||
templatePickerSort.value = 'recent'
|
||||
@@ -1701,7 +1701,7 @@ function userAvatarFallback(user) {
|
||||
/>
|
||||
|
||||
<AdminGamesSection
|
||||
v-else-if="activeTab === 'game-admin'"
|
||||
v-else-if="activeTab === 'template-admin'"
|
||||
:active-template-request="activeTemplateRequest"
|
||||
:template-request-source-url="templateRequestSourceUrl"
|
||||
:staged-request-draft-count="stagedRequestDraftCount"
|
||||
@@ -1981,7 +1981,7 @@ function userAvatarFallback(user) {
|
||||
</div>
|
||||
<div class="customItemModal__pickerActions">
|
||||
<button class="btn btn--ghost" type="button" @click="openTemplatePickerModal('custom-item-target')">템플릿 선택</button>
|
||||
<button class="btn btn--ghost btn--small customItemModal__createGameButton" type="button" @click="openTemplateCreateModal">새 템플릿 만들기</button>
|
||||
<button class="btn btn--ghost btn--small customItemModal__createTemplateButton" type="button" @click="openTemplateCreateModal">새 템플릿 만들기</button>
|
||||
</div>
|
||||
</aside>
|
||||
<div class="customItemModal__body">
|
||||
@@ -2223,18 +2223,18 @@ function userAvatarFallback(user) {
|
||||
<div class="adminSidebar__label">Mode</div>
|
||||
<div class="adminSidebar__tabs">
|
||||
<button class="tab" :class="{ 'tab--active': activeTab === 'featured' }" @click="setTab('featured')">목록 관리</button>
|
||||
<button class="tab" :class="{ 'tab--active': activeTab === 'game-admin' }" @click="setTab('game-admin')">템플릿 관리</button>
|
||||
<button class="tab" :class="{ 'tab--active': activeTab === 'template-admin' }" @click="setTab('template-admin')">템플릿 관리</button>
|
||||
<button class="tab" :class="{ 'tab--active': activeTab === 'items' }" @click="setTab('items')">아이템 관리</button>
|
||||
<button class="tab" :class="{ 'tab--active': activeTab === 'tierlists' }" @click="setTab('tierlists')">티어표 관리</button>
|
||||
<button class="tab" :class="{ 'tab--active': activeTab === 'users' }" @click="setTab('users')">회원 관리</button>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section v-if="activeTab === 'game-admin'" class="adminSidebar__panel">
|
||||
<section v-if="activeTab === 'template-admin'" class="adminSidebar__panel">
|
||||
<div class="adminSidebar__label">Template</div>
|
||||
<div class="adminSidebar__group">
|
||||
<button class="btn btn--primary" @click="openTemplateCreateModal">새 템플릿 생성</button>
|
||||
<button class="btn btn--ghost" @click="openTemplatePickerModal('game-admin')">템플릿 선택</button>
|
||||
<button class="btn btn--ghost" @click="openTemplatePickerModal('template-admin')">템플릿 선택</button>
|
||||
<div v-if="selectedTemplate?.game" class="adminSelectionCard">
|
||||
<div class="adminSelectionCard__label">선택한 템플릿</div>
|
||||
<div class="adminSelectionCard__title">{{ selectedTemplate.game.name }}</div>
|
||||
@@ -3493,7 +3493,7 @@ function userAvatarFallback(user) {
|
||||
display: grid;
|
||||
gap: 10px;
|
||||
}
|
||||
.adminUiScope .customItemModal__createGameButton {
|
||||
.adminUiScope .customItemModal__createTemplateButton {
|
||||
justify-self: start;
|
||||
}
|
||||
.adminUiScope .customItemModal__body {
|
||||
|
||||
Reference in New Issue
Block a user