메뉴 관리: 탭 분리·드래그 정렬·상단 트리·공개 접기 (v0.0.94)
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -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)
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user