메뉴 관리: 탭 분리·드래그 정렬·상단 트리·공개 접기 (v0.0.94)

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-05-12 11:16:43 +09:00
parent 4de5589bcb
commit 77e1a050b9
18 changed files with 1145 additions and 181 deletions

View File

@@ -2,6 +2,7 @@ import { createError, readBody } from 'h3'
import { requireAdminSession } from '../../../utils/admin-auth'
import { parseAdminNavigationInput } from '../../../utils/admin-navigation-input'
import { updateNavigationItems } from '../../../repositories/content-repository'
import { renumberSortOrderByTree, validateNavigationItems } from '../../../utils/navigation-tree'
/**
* 관리자 네비게이션 일괄 저장 API
@@ -20,5 +21,27 @@ export default defineEventHandler(async (event) => {
})
}
return updateNavigationItems(parsedBody.data.items)
const items = parsedBody.data.items.map((row) => ({
id: row.id,
label: row.label.trim(),
url: row.url.trim(),
location: row.location,
sortOrder: row.sortOrder,
isVisible: row.isVisible,
parentId: row.parentId ?? null,
isFolder: Boolean(row.isFolder)
}))
const checked = validateNavigationItems(items)
if (!checked.ok) {
throw createError({
statusCode: 400,
message: checked.message
})
}
renumberSortOrderByTree(items, 'primary')
renumberSortOrderByTree(items, 'footer')
return updateNavigationItems(items)
})