릴리스: v1.3.74 관리자 선택 제약과 카피라이트 추가

This commit is contained in:
2026-04-02 15:55:10 +09:00
parent 494f04d9a7
commit 66c3b1e7b7
4 changed files with 41 additions and 1 deletions

View File

@@ -620,6 +620,7 @@ const imageDiagnosticsCards = computed(() => {
const visibleLinkedGames = computed(() =>
(modalTargetCustomItem.value?.linkedGames || []).filter((game) => game?.id && game.id !== 'freeform')
)
const linkedCustomItemGameIds = computed(() => new Set(visibleLinkedGames.value.map((game) => game.id).filter(Boolean)))
const imageStatsPeriodLabel = computed(() => (imageStatsMonth.value ? `${imageStatsMonth.value} 기준` : '전체 기간'))
const imageStatsYearOptions = computed(() => {
@@ -1309,6 +1310,7 @@ async function chooseGameFromPicker(gameId) {
return
}
if (gamePickerMode.value === 'custom-item-target') {
if (linkedCustomItemGameIds.value.has(gameId)) return
customItemModalTargetGameId.value = gameId
closeGamePickerModal()
return
@@ -2035,12 +2037,21 @@ function userAvatarFallback(user) {
v-for="game in filteredGamePickerGames"
:key="game.id"
class="adminGamePicker__item"
:class="{ 'adminGamePicker__item--active': gamePickerMode === 'tierlists-filter' ? adminTierListGameId === game.id : selectedGameId === game.id }"
:class="{
'adminGamePicker__item--active': gamePickerMode === 'tierlists-filter'
? adminTierListGameId === game.id
: gamePickerMode === 'custom-item-target'
? customItemModalTargetGameId === game.id
: selectedGameId === game.id,
'adminGamePicker__item--disabled': gamePickerMode === 'custom-item-target' && linkedCustomItemGameIds.has(game.id),
}"
type="button"
:disabled="gamePickerMode === 'custom-item-target' && linkedCustomItemGameIds.has(game.id)"
@click="chooseGameFromPicker(game.id)"
>
<span class="adminGamePicker__name">{{ game.name }}</span>
<span class="adminGamePicker__meta">{{ game.id }}</span>
<span v-if="gamePickerMode === 'custom-item-target' && linkedCustomItemGameIds.has(game.id)" class="adminGamePicker__state">이미 추가됨</span>
</button>
<div v-if="!filteredGamePickerGames.length" class="hint hint--tight">검색 결과가 없어요.</div>
</div>
@@ -2378,6 +2389,7 @@ function userAvatarFallback(user) {
</div>
</section>
</aside>
<div v-show="globalRightRailOpen" class="adminSidebarFooter adminUiScope">Copyright © 2026 zenn. All rights reserved.</div>
</Teleport>
</template>
@@ -2456,6 +2468,15 @@ function userAvatarFallback(user) {
display: grid;
gap: 12px;
}
.adminUiScope.adminSidebarFooter {
margin-top: 6px;
padding: 0 4px 2px;
font-size: 9px;
line-height: 1.4;
text-align: center;
color: var(--theme-text-faint);
opacity: 0.72;
}
.adminUiScope .adminSidebar__panel {
display: grid;
gap: 12px;
@@ -2572,6 +2593,11 @@ function userAvatarFallback(user) {
border-color: rgba(77, 127, 233, 0.58);
background: rgba(77, 127, 233, 0.12);
}
.adminUiScope .adminGamePicker__item--disabled {
cursor: not-allowed;
opacity: 0.58;
border-style: dashed;
}
.adminUiScope .adminGamePicker__name {
font-size: 13px;
font-weight: 800;
@@ -2583,6 +2609,11 @@ function userAvatarFallback(user) {
overflow: hidden;
text-overflow: ellipsis;
}
.adminUiScope .adminGamePicker__state {
margin-top: 4px;
font-size: 11px;
color: var(--theme-text-faint);
}
.adminUiScope .gamePickerModalList {
margin-top: 14px;
display: grid;