관리자 미디어 대표 이미지 탭 정리
This commit is contained in:
@@ -332,11 +332,15 @@ const getMediaBadgeLabel = (item) => {
|
||||
return memberRoleBadgeLabels[roleCode] || memberRoleBadgeLabels.member
|
||||
}
|
||||
|
||||
if (activeTab.value === 'postThumbnails' && item?.thumbnailStatus?.role === 'card') {
|
||||
if (isPostCardThumbnailDiskItem(item) && item?.thumbnailStatus?.role === 'card') {
|
||||
return ''
|
||||
}
|
||||
|
||||
if (activeTab.value === 'postBodyThumbnails' && item?.bodyThumbnailStatus?.role === 'body') {
|
||||
if (isPageCoverThumbnailDiskItem(item) && item?.thumbnailStatus?.role === 'pageCover') {
|
||||
return ''
|
||||
}
|
||||
|
||||
if (isPostBodyThumbnailDiskItem(item) && item?.bodyThumbnailStatus?.role === 'body') {
|
||||
return ''
|
||||
}
|
||||
|
||||
@@ -459,7 +463,7 @@ const activeSystemMediaCount = computed(() => {
|
||||
|
||||
const activeSystemMediaTitle = computed(() => {
|
||||
if (activeTab.value === 'postThumbnails') {
|
||||
return '카드 썸네일'
|
||||
return '대표 이미지'
|
||||
}
|
||||
|
||||
if (activeTab.value === 'postBodyThumbnails') {
|
||||
@@ -471,7 +475,7 @@ const activeSystemMediaTitle = computed(() => {
|
||||
|
||||
const activeSystemMediaHint = computed(() => {
|
||||
if (activeTab.value === 'postThumbnails') {
|
||||
return '게시물 목록 카드와 홈 Pages 진열장에서 쓰는 자동 생성 이미지입니다. 원본 이미지가 사용 중이고 이 썸네일 파일이 있으면 공개 목록에서는 원본 대신 이 파일을 불러옵니다. 원본에 연결된 썸네일은 사용 중으로 표시되며, 썸네일이 없는 원본은 일반 미디어 상세에서 다시 생성 필요 상태로 구분합니다.'
|
||||
return '게시물 목록 카드와 홈 Pages 진열장에서 쓰는 대표 이미지용 자동 생성 파일입니다. 원본 이미지가 사용 중이고 이 파일이 있으면 공개 목록에서는 원본 대신 이 파일을 불러옵니다. 원본에 연결된 파일은 사용 중으로 표시되며, 파일이 없는 원본은 일반 미디어 상세에서 다시 생성 필요 상태로 구분합니다.'
|
||||
}
|
||||
|
||||
if (activeTab.value === 'postBodyThumbnails') {
|
||||
@@ -1145,7 +1149,7 @@ const renameMedia = async () => {
|
||||
const editingItem = mediaItems.value.find((item) => item.url === editingUrl.value)
|
||||
|
||||
if (editingItem && !canRenameMediaItem(editingItem)) {
|
||||
showToast('error', '사용 중인 미디어 또는 카드 썸네일은 파일명을 바꿀 수 없습니다.')
|
||||
showToast('error', '사용 중인 미디어 또는 대표 이미지 파일은 파일명을 바꿀 수 없습니다.')
|
||||
return
|
||||
}
|
||||
|
||||
@@ -1199,7 +1203,7 @@ const deleteMedia = async (item) => {
|
||||
}
|
||||
|
||||
/**
|
||||
* 선택한 원본 이미지의 카드 썸네일을 다시 생성한다.
|
||||
* 선택한 원본 이미지의 대표 이미지 파일을 다시 생성한다.
|
||||
* @param {Object} item - 미디어 항목
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
@@ -1219,9 +1223,9 @@ const regeneratePostThumbnail = async (item) => {
|
||||
})
|
||||
await refresh()
|
||||
selectedMediaUrl.value = item.url
|
||||
showToast('success', '카드 썸네일을 생성했습니다.')
|
||||
showToast('success', '대표 이미지 파일을 생성했습니다.')
|
||||
} catch (error) {
|
||||
showToast('error', error?.data?.message || '카드 썸네일을 생성하지 못했습니다.')
|
||||
showToast('error', error?.data?.message || '대표 이미지 파일을 생성하지 못했습니다.')
|
||||
} finally {
|
||||
regeneratingThumbnailUrl.value = ''
|
||||
}
|
||||
@@ -1392,7 +1396,7 @@ watch(() => mediaPagination.value.page, (page) => {
|
||||
type="button"
|
||||
@click="setActiveTab('postThumbnails')"
|
||||
>
|
||||
카드 썸네일
|
||||
대표 이미지
|
||||
</button>
|
||||
<button
|
||||
class="admin-media__tab rounded-md px-3 py-1.5 text-xs font-semibold transition"
|
||||
@@ -1865,7 +1869,7 @@ watch(() => mediaPagination.value.page, (page) => {
|
||||
</div>
|
||||
<div v-if="selectedMedia.thumbnailStatus" class="admin-media__info-row">
|
||||
<dt class="admin-media__info-label text-xs font-semibold text-muted">
|
||||
{{ selectedMedia.thumbnailStatus.variant === 'pageCover' || selectedMedia.thumbnailStatus.role === 'pageCover' ? '페이지 커버 썸네일' : '카드 썸네일' }}
|
||||
{{ selectedMedia.thumbnailStatus.variant === 'pageCover' || selectedMedia.thumbnailStatus.role === 'pageCover' ? '페이지 커버 이미지' : '대표 이미지' }}
|
||||
</dt>
|
||||
<dd class="admin-media__info-value mt-1 grid gap-1 break-all">
|
||||
<span v-if="selectedMedia.thumbnailStatus.role === 'card'">
|
||||
@@ -1901,7 +1905,7 @@ watch(() => mediaPagination.value.page, (page) => {
|
||||
:disabled="regeneratingThumbnailUrl === selectedMedia.url"
|
||||
@click="regeneratePostThumbnail(selectedMedia)"
|
||||
>
|
||||
{{ regeneratingThumbnailUrl === selectedMedia.url ? '생성 중' : (selectedMedia.thumbnailStatus.hasThumbnail ? '카드 썸네일 다시 생성' : '카드 썸네일 생성') }}
|
||||
{{ regeneratingThumbnailUrl === selectedMedia.url ? '생성 중' : (selectedMedia.thumbnailStatus.hasThumbnail ? '대표 이미지 다시 생성' : '대표 이미지 생성') }}
|
||||
</button>
|
||||
<button
|
||||
v-if="canRegeneratePageCoverThumbnail(selectedMedia)"
|
||||
@@ -1975,7 +1979,7 @@ watch(() => mediaPagination.value.page, (page) => {
|
||||
프로필 썸네일의 논리 폴더는 「{{ MEDIA_THUMBNAIL_ROOT }}」로 고정됩니다.
|
||||
</p>
|
||||
<p v-else-if="isPostCardThumbnailDiskItem(selectedMedia)" class="admin-media__category-hint text-xs text-muted">
|
||||
카드 썸네일은 원본 이미지에 연결된 자동 생성 파일이라 폴더를 직접 바꾸지 않습니다.
|
||||
대표 이미지 파일은 원본 이미지에 연결된 자동 생성 파일이라 폴더를 직접 바꾸지 않습니다.
|
||||
</p>
|
||||
<datalist id="media-folder-options">
|
||||
<option v-for="folder in normalizedFolders" :key="folder" :value="folder" />
|
||||
|
||||
Reference in New Issue
Block a user