mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-09-23 21:13:35 +08:00
Getting the Main Menu management (IndexPOST) wired up. Manage/create still needs validation.
--HG-- branch : dev
This commit is contained in:
@@ -1,8 +1,11 @@
|
||||
using System.Linq;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Web.Mvc;
|
||||
using Orchard.ContentManagement;
|
||||
using Orchard.Core.Navigation.Drivers;
|
||||
using Orchard.Core.Navigation.Models;
|
||||
using Orchard.Core.Navigation.Services;
|
||||
using Orchard.Core.Navigation.ViewModels;
|
||||
using Orchard.Localization;
|
||||
using Orchard.UI.Navigation;
|
||||
@@ -12,10 +15,12 @@ using MenuItem=Orchard.Core.Navigation.Models.MenuItem;
|
||||
namespace Orchard.Core.Navigation.Controllers {
|
||||
[ValidateInput(false)]
|
||||
public class AdminController : Controller, IUpdateModel {
|
||||
private readonly IMenuService _menuService;
|
||||
private readonly IOrchardServices _services;
|
||||
private readonly INavigationManager _navigationManager;
|
||||
|
||||
public AdminController(IOrchardServices services, INavigationManager navigationManager) {
|
||||
public AdminController(IMenuService menuService, IOrchardServices services, INavigationManager navigationManager) {
|
||||
_menuService = menuService;
|
||||
_services = services;
|
||||
_navigationManager = navigationManager;
|
||||
T = NullLocalizer.Instance;
|
||||
@@ -30,17 +35,43 @@ namespace Orchard.Core.Navigation.Controllers {
|
||||
if (model == null)
|
||||
model = new NavigationManagementViewModel();
|
||||
|
||||
if (model.Menu == null || model.Menu.Count() < 1)
|
||||
model.Menu = _navigationManager.BuildMenu("main");
|
||||
if (model.MenuItemEntries == null || model.MenuItemEntries.Count() < 1)
|
||||
model.MenuItemEntries = _menuService.Get().Select(menuPart => CreateMenuItemEntries(menuPart)).OrderBy(menuPartEntry => menuPartEntry.MenuItem.Position, new PositionComparer()).ToList();
|
||||
|
||||
return View("Index", model);
|
||||
}
|
||||
|
||||
[HttpPost, ActionName("Index")]
|
||||
public ActionResult IndexPOST() {
|
||||
public ActionResult IndexPOST(IList<MenuItemEntry> menuItemEntries) {
|
||||
if (!_services.Authorizer.Authorize(Permissions.ManageMainMenu, T("Couldn't manage the main menu")))
|
||||
return new HttpUnauthorizedResult();
|
||||
|
||||
foreach (var menuItemEntry in menuItemEntries) {
|
||||
MenuPart menuPart = _menuService.Get(menuItemEntry.MenuItemId);
|
||||
|
||||
menuPart.MenuText = menuItemEntry.MenuItem.Text;
|
||||
menuPart.MenuPosition = menuItemEntry.MenuItem.Position;
|
||||
if (menuPart.Is<MenuItem>())
|
||||
menuPart.As<MenuItem>().Url = menuItemEntry.MenuItem.Url;
|
||||
|
||||
_services.ContentManager.UpdateEditorModel(menuPart, this);
|
||||
}
|
||||
|
||||
return RedirectToAction("Index");
|
||||
}
|
||||
|
||||
private static MenuItemEntry CreateMenuItemEntries(MenuPart menuPart) {
|
||||
return new MenuItemEntry {
|
||||
MenuItem = new UI.Navigation.MenuItem {
|
||||
Text = menuPart.MenuText,
|
||||
Position = menuPart.MenuPosition,
|
||||
Url = menuPart.As<MenuItem>().Url
|
||||
},
|
||||
MenuItemId = menuPart.Id
|
||||
};
|
||||
}
|
||||
|
||||
public ActionResult Create() {
|
||||
return RedirectToAction("Index");
|
||||
}
|
||||
|
||||
@@ -49,17 +80,17 @@ namespace Orchard.Core.Navigation.Controllers {
|
||||
if (!_services.Authorizer.Authorize(Permissions.ManageMainMenu, T("Couldn't manage the main menu")))
|
||||
return new HttpUnauthorizedResult();
|
||||
|
||||
var menuItem = _services.ContentManager.New<MenuItem>(MenuItemDriver.ContentType.Name);
|
||||
model.MenuItem = _services.ContentManager.UpdateEditorModel(menuItem, this);
|
||||
var menuPart = _services.ContentManager.New<MenuPart>(MenuItemDriver.ContentType.Name);
|
||||
model.MenuItem = _services.ContentManager.UpdateEditorModel(menuPart, this);
|
||||
|
||||
if (!ModelState.IsValid) {
|
||||
_services.TransactionManager.Cancel();
|
||||
return Index(new NavigationManagementViewModel {NewMenuItem = model});
|
||||
}
|
||||
|
||||
if (string.IsNullOrEmpty(menuItem.As<MenuPart>().MenuPosition))
|
||||
menuItem.As<MenuPart>().MenuPosition = Position.GetNext(_navigationManager.BuildMenu("main"));
|
||||
menuItem.As<MenuPart>().OnMainMenu = true;
|
||||
if (string.IsNullOrEmpty(menuPart.MenuPosition))
|
||||
menuPart.MenuPosition = Position.GetNext(_navigationManager.BuildMenu("main"));
|
||||
menuPart.OnMainMenu = true;
|
||||
|
||||
_services.ContentManager.Create(model.MenuItem.Item.ContentItem);
|
||||
|
||||
@@ -67,8 +98,8 @@ namespace Orchard.Core.Navigation.Controllers {
|
||||
}
|
||||
|
||||
//[ValidateAntiForgeryTokenOrchard, ActionName("Delete")]
|
||||
[HttpPost, ActionName("Delete")]
|
||||
public ActionResult DeletePOST(int menuItemId)
|
||||
[HttpPost]
|
||||
public ActionResult Delete(int menuItemId)
|
||||
{
|
||||
if (!_services.Authorizer.Authorize(Permissions.ManageMainMenu, T("Couldn't manage the main menu")))
|
||||
return new HttpUnauthorizedResult();
|
||||
|
Reference in New Issue
Block a user