forked from UKSOURCE/cms.hailearning.edu.vn
feat: Refactor header menu and social link controllers to use RESTful method names, remove social link API routes, and add comprehensive social link management to admin routes.
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