썸네일 미참조 삭제 허용·원본명 업로드·미디어 검색 정리(v0.0.91)

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-05-12 10:52:57 +09:00
parent 21024602b0
commit 16bb9370fa
10 changed files with 150 additions and 55 deletions

View File

@@ -133,15 +133,9 @@ const filteredMediaItems = computed(() => {
? true
: (!folder || item.category === folder || item.category?.startsWith(`${folder}/`))
const usageTitles = item.usage?.map((usage) => usage.title) || []
const ownerFields = item.avatarOwner
? [item.avatarOwner.username, item.avatarOwner.email, item.avatarOwner.lastSeenIp]
: []
const matchesQuery = !query || [
item.name,
item.url,
item.category,
...usageTitles,
...ownerFields
...usageTitles
].some((value) => String(value || '').toLowerCase().includes(query))
return matchesFolder && matchesQuery
@@ -467,7 +461,7 @@ const renameMedia = async () => {
const editingItem = mediaItems.value.find((item) => item.url === editingUrl.value)
if (editingItem && isMediaItemLocked(editingItem)) {
errorMessage.value = '사용 중이거나 회원 썸네일인 미디어는 파일명을 변경할 수 없습니다.'
errorMessage.value = '게시물·페이지에서 쓰이거나, 회원 프로필에 연결된 썸네일은 파일명을 바꿀 수 없습니다.'
return
}
@@ -496,7 +490,7 @@ const renameMedia = async () => {
*/
const deleteMedia = async (item) => {
if (isMediaItemLocked(item)) {
errorMessage.value = '사용 중이거나 회원 썸네일인 미디어는 삭제할 수 없습니다.'
errorMessage.value = '게시물·페이지에서 쓰이거나, 회원 프로필에 연결된 썸네일은 삭제할 수 없습니다.'
return
}
@@ -558,7 +552,7 @@ const deleteMedia = async (item) => {
v-model="searchText"
class="admin-media__search w-full rounded border border-line bg-white px-3 py-2 text-sm md:w-72"
type="search"
:placeholder="activeTab === 'thumbnails' ? '닉네임, 이메일, IP, 파일명 검색' : '파일명, 경로, 폴더, 사용처 검색'"
:placeholder="activeTab === 'thumbnails' ? '파일명, 게시물 제목(사용처) 검색' : '파일명, 게시물 제목(사용처) 검색'"
>
</div>
</div>
@@ -641,7 +635,7 @@ const deleteMedia = async (item) => {
<span>{{ thumbnailMediaItems.length }}</span>
</button>
<p class="admin-media__thumb-hint mt-4 text-xs leading-relaxed text-muted">
회원 프로필에서 저장된 이미지 표시됩니다. 파일 삭제·이름 변경 화면에서 으며, 회원이 프로필에서 바꾸면 갱신됩니다.
회원 프로필에서 쓰는 이미지 연결 회원이 있을 때만 삭제·이름 변경 막힙니다. 프로필에서 바꾸거나 해제된 파일은 목록에 으며, 관리자가 직접 정리할 있습니다.
</p>
</aside>
@@ -804,10 +798,6 @@ const deleteMedia = async (item) => {
<dt class="admin-media__info-label text-xs font-semibold text-muted">용량</dt>
<dd class="admin-media__info-value mt-1">{{ formatFileSize(selectedMedia.size) }}</dd>
</div>
<div class="admin-media__info-row">
<dt class="admin-media__info-label text-xs font-semibold text-muted">폴더</dt>
<dd class="admin-media__info-value mt-1 break-all">{{ selectedMedia.category }}</dd>
</div>
</dl>
<div class="admin-media__category grid gap-2">
@@ -903,7 +893,7 @@ const deleteMedia = async (item) => {
@keydown.enter.prevent="renameMedia"
>
<p v-if="isMediaItemLocked(selectedMedia)" class="admin-media__locked text-xs text-muted">
사용 중이거나 회원 썸네일인 미디어는 파일명 변경과 삭제가 있습니다.
게시물·페이지에서 사용 중이거나, 회원 프로필에 연결된 썸네일은 파일명 변경과 삭제가 니다.
</p>
</div>