forked from UKSOURCE/cms.hailearning.edu.vn
Merge pull request 'fix/huy-04022026-fix-headermenu' (#19) from fix/huy-04022026-fix-headermenu into main
Reviewed-on: UKSOURCE/cms.hailearning.edu.vn#19
This commit is contained in:
@@ -42,8 +42,8 @@ const deleteRecursive = async (parentId) => {
|
||||
}
|
||||
};
|
||||
|
||||
// 1. Render Menu Tab logic (called from Header index or directly if route allows)
|
||||
exports.renderMenuTab = async (req, res) => {
|
||||
// 1. Render Menu Tab logic
|
||||
exports.index = async (req, res) => {
|
||||
try {
|
||||
const items = await HeaderMenu.find().sort({ order: 1 });
|
||||
const menuTree = buildMenuTree(items);
|
||||
@@ -55,9 +55,9 @@ exports.renderMenuTab = async (req, res) => {
|
||||
};
|
||||
|
||||
// 2. Create Menu Item
|
||||
exports.createMenu = async (req, res) => {
|
||||
exports.store = async (req, res) => {
|
||||
try {
|
||||
console.log('=== BACKEND: createMenu hit ===');
|
||||
console.log('=== BACKEND: store hit ===');
|
||||
console.log('Body:', req.body);
|
||||
const { title, url, parentId, order, status, type } = req.body;
|
||||
const slug = slugify(title, { lower: true, strict: true });
|
||||
@@ -84,10 +84,10 @@ exports.createMenu = async (req, res) => {
|
||||
};
|
||||
|
||||
// 3. Update Menu Item
|
||||
exports.updateMenu = async (req, res) => {
|
||||
exports.update = async (req, res) => {
|
||||
try {
|
||||
const { id } = req.params;
|
||||
console.log('=== BACKEND: updateMenu hit ===', { id });
|
||||
console.log('=== BACKEND: update hit ===', { id });
|
||||
console.log('Body:', req.body);
|
||||
const { title, url, parentId, order, status, type } = req.body;
|
||||
|
||||
@@ -122,11 +122,11 @@ exports.updateMenu = async (req, res) => {
|
||||
};
|
||||
|
||||
// 4. Delete Menu Item (Cascade delete children)
|
||||
exports.deleteMenu = async (req, res) => {
|
||||
exports.destroy = async (req, res) => {
|
||||
try {
|
||||
const { id } = req.body;
|
||||
const menuId = id || req.params.id;
|
||||
console.log('=== BACKEND: deleteMenu hit ===', { menuId, body: req.body });
|
||||
console.log('=== BACKEND: destroy hit ===', { menuId, body: req.body });
|
||||
|
||||
await deleteRecursive(menuId);
|
||||
await HeaderMenu.findByIdAndDelete(menuId);
|
||||
@@ -142,7 +142,7 @@ exports.deleteMenu = async (req, res) => {
|
||||
};
|
||||
|
||||
// 5. Reorder Menu
|
||||
exports.reorderMenu = async (req, res) => {
|
||||
exports.reorder = async (req, res) => {
|
||||
try {
|
||||
const { items } = req.body; // Array of { id, order, parentId }
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
const Header = require("../models/header");
|
||||
|
||||
// Get all social links
|
||||
exports.getAll = async (req, res) => {
|
||||
exports.index = async (req, res) => {
|
||||
try {
|
||||
const header = await Header.findOne({ status: "active" }).sort({ order: 1 });
|
||||
|
||||
@@ -262,7 +262,7 @@ exports.destroy = async (req, res) => {
|
||||
};
|
||||
|
||||
// Bulk update social links (used for reordering and batch updates)
|
||||
exports.bulkUpdate = async (req, res) => {
|
||||
exports.reorder = async (req, res) => {
|
||||
try {
|
||||
const { socialLinks } = req.body;
|
||||
|
||||
|
||||
@@ -30,6 +30,7 @@ const headerMenuController = require("../controllers/headerMenuController");
|
||||
const blogController = require("../controllers/blogController");
|
||||
const blogCategoryController = require("../controllers/blogCategoryController");
|
||||
const blogTagController = require("../controllers/blogTagController");
|
||||
const socialLinkController = require("../controllers/socialLinkController");
|
||||
|
||||
// Dashboard
|
||||
router.get("/dashboard", ensureAuthenticated, dashboardController.getDashboard);
|
||||
@@ -76,23 +77,25 @@ router.post("/upload/video", ensureAuthenticated, uploadVideo.single("video"), u
|
||||
router.post("/upload/update-path", ensureAuthenticated, uploadController.updateImagePath);
|
||||
router.post("/upload/delete", ensureAuthenticated, uploadController.deleteImage);
|
||||
|
||||
// Header routes
|
||||
// Header routes
|
||||
router.get("/header", ensureAuthenticated, headerController.index);
|
||||
router.post("/header/update", ensureAuthenticated, headerController.update);
|
||||
router.post("/header/update-menu", ensureAuthenticated, headerController.updateMenu);
|
||||
router.get("/header/menu-tree", ensureAuthenticated, headerController.getMenuTree);
|
||||
router.get("/header/programmes/:menuId", ensureAuthenticated, headerController.getProgrammesByMenuId);
|
||||
router.get("/header/menu-item/:menuId", ensureAuthenticated, headerController.getMenuItem);
|
||||
router.get("/header/data", ensureAuthenticated, headerController.getHeaderData);
|
||||
router.get("/header/data", ensureAuthenticated, headerController.api); // Normalized from getHeaderData
|
||||
router.patch("/header/:id/status", ensureAuthenticated, headerController.updateStatus);
|
||||
router.delete("/header/:id", ensureAuthenticated, headerController.destroy);
|
||||
|
||||
// Header Menu INTEGRATED routes
|
||||
router.post("/header/menu/create", ensureAuthenticated, headerMenuController.createMenu);
|
||||
router.post("/header/menu/update/:id", ensureAuthenticated, headerMenuController.updateMenu);
|
||||
router.post("/header/menu/delete", ensureAuthenticated, headerMenuController.deleteMenu);
|
||||
router.post("/header/menu/reorder", ensureAuthenticated, headerMenuController.reorderMenu);
|
||||
router.post("/header/menu/create", ensureAuthenticated, headerMenuController.store);
|
||||
router.post("/header/menu/update/:id", ensureAuthenticated, headerMenuController.update);
|
||||
router.post("/header/menu/delete", ensureAuthenticated, headerMenuController.destroy);
|
||||
router.post("/header/menu/reorder", ensureAuthenticated, headerMenuController.reorder);
|
||||
|
||||
// Social Links routes
|
||||
router.get("/social-links", ensureAuthenticated, socialLinkController.index);
|
||||
router.post("/social-links", ensureAuthenticated, socialLinkController.store);
|
||||
router.put("/social-links/:platform", ensureAuthenticated, socialLinkController.update);
|
||||
router.delete("/social-links/:platform", ensureAuthenticated, socialLinkController.destroy);
|
||||
router.post("/social-links/reorder", ensureAuthenticated, socialLinkController.reorder);
|
||||
|
||||
// Footer routes
|
||||
router.get("/footer", ensureAuthenticated, footerController.index);
|
||||
|
||||
@@ -56,12 +56,8 @@ router.get("/api/menu-tree", headerController.getMenuTreeAPI);
|
||||
router.get("/api/header-menu", headerMenuController.api);
|
||||
|
||||
// Social Links API routes
|
||||
router.get("/api/social-links", socialLinkController.getAll);
|
||||
router.get("/api/social-links", socialLinkController.index);
|
||||
router.get("/api/social-links/:platform", socialLinkController.show);
|
||||
router.post("/api/social-links", socialLinkController.store);
|
||||
router.put("/api/social-links/:platform", socialLinkController.update);
|
||||
router.delete("/api/social-links/:platform", socialLinkController.destroy);
|
||||
router.post("/api/social-links/bulk-update", socialLinkController.bulkUpdate);
|
||||
|
||||
// Footer API route
|
||||
router.get("/api/footer", footerController.api);
|
||||
|
||||
Reference in New Issue
Block a user