mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2026-02-09 09:16:41 +08:00
Starting to deprecate the AdminViewModel
All references are changed to BaseViewModel AdminViewModel class still present, but only temporarily as a stepping stone to smooth transition BaseViewModel.Menu now represents either the "admin" or "main" navigation depending on location MenuFilter now uses the AdminFilter.IsApplied flag to determine which primary nav to use IsApplied property moved to AdminFilter which is a better location for a universal flag than the theme selector --HG-- branch : dev
This commit is contained in:
@@ -158,6 +158,7 @@
|
||||
<Compile Include="Tasks\SweepGeneratorTests.cs" />
|
||||
<Compile Include="UI\Admin\AdminAuthorizationFilterTests.cs" />
|
||||
<Compile Include="UI\Admin\AdminThemeSelectorTests.cs" />
|
||||
<Compile Include="UI\Navigation\MenuFilterTests.cs" />
|
||||
<Compile Include="UI\Notify\NotifierTests.cs" />
|
||||
<Compile Include="UI\Notify\NotifyFilterTests.cs" />
|
||||
<Compile Include="Services\ClockTests.cs" />
|
||||
|
||||
@@ -31,7 +31,7 @@ namespace Orchard.Tests.UI.Admin {
|
||||
public void NormalRequestShouldNotBeAffected() {
|
||||
var authorizationContext = GetAuthorizationContext<NormalController>();
|
||||
|
||||
var filter = new AdminAuthorizationFilter(GetAuthorizer(false));
|
||||
var filter = new AdminFilter(GetAuthorizer(false));
|
||||
filter.OnAuthorization(authorizationContext);
|
||||
|
||||
Assert.That(authorizationContext.Result, Is.Null);
|
||||
@@ -39,16 +39,16 @@ namespace Orchard.Tests.UI.Admin {
|
||||
|
||||
private static void TestActionThatShouldRequirePermission<TController>() where TController : ControllerBase, new() {
|
||||
var authorizationContext = GetAuthorizationContext<TController>();
|
||||
var filter = new AdminAuthorizationFilter(GetAuthorizer(false));
|
||||
var filter = new AdminFilter(GetAuthorizer(false));
|
||||
filter.OnAuthorization(authorizationContext);
|
||||
Assert.That(authorizationContext.Result, Is.InstanceOf<HttpUnauthorizedResult>());
|
||||
Assert.That(AdminThemeSelector.IsApplied(authorizationContext.RequestContext), Is.True);
|
||||
Assert.That(AdminFilter.IsApplied(authorizationContext.RequestContext), Is.True);
|
||||
|
||||
var authorizationContext2 = GetAuthorizationContext<TController>();
|
||||
var filter2 = new AdminAuthorizationFilter(GetAuthorizer(true));
|
||||
var filter2 = new AdminFilter(GetAuthorizer(true));
|
||||
filter2.OnAuthorization(authorizationContext2);
|
||||
Assert.That(authorizationContext2.Result, Is.Null);
|
||||
Assert.That(AdminThemeSelector.IsApplied(authorizationContext2.RequestContext), Is.True);
|
||||
Assert.That(AdminFilter.IsApplied(authorizationContext2.RequestContext), Is.True);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -9,27 +9,27 @@ namespace Orchard.Tests.UI.Admin {
|
||||
[Test]
|
||||
public void IsAppliedShouldBeFalseByDefault() {
|
||||
var context = new RequestContext(new StubHttpContext(), new RouteData());
|
||||
var isApplied = AdminThemeSelector.IsApplied(context);
|
||||
var isApplied = AdminFilter.IsApplied(context);
|
||||
Assert.That(isApplied, Is.False);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void IsAppliedShouldBeTrueAfterBeingApplied() {
|
||||
var context = new RequestContext(new StubHttpContext(), new RouteData());
|
||||
Assert.That(AdminThemeSelector.IsApplied(context), Is.False);
|
||||
AdminThemeSelector.Apply(context);
|
||||
Assert.That(AdminThemeSelector.IsApplied(context), Is.True);
|
||||
Assert.That(AdminFilter.IsApplied(context), Is.False);
|
||||
AdminFilter.Apply(context);
|
||||
Assert.That(AdminFilter.IsApplied(context), Is.True);
|
||||
}
|
||||
|
||||
|
||||
[Test]
|
||||
public void IsAppliedIsFalseOnNewContext() {
|
||||
var context = new RequestContext(new StubHttpContext(), new RouteData());
|
||||
Assert.That(AdminThemeSelector.IsApplied(context), Is.False);
|
||||
AdminThemeSelector.Apply(context);
|
||||
Assert.That(AdminThemeSelector.IsApplied(context), Is.True);
|
||||
Assert.That(AdminFilter.IsApplied(context), Is.False);
|
||||
AdminFilter.Apply(context);
|
||||
Assert.That(AdminFilter.IsApplied(context), Is.True);
|
||||
context = new RequestContext(new StubHttpContext(), new RouteData());
|
||||
Assert.That(AdminThemeSelector.IsApplied(context), Is.False);
|
||||
Assert.That(AdminFilter.IsApplied(context), Is.False);
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -46,7 +46,7 @@ namespace Orchard.Tests.UI.Admin {
|
||||
public void ThemeResultShouldBeTheAdminAt100AfterBeingSet() {
|
||||
var context = new RequestContext(new StubHttpContext(), new RouteData());
|
||||
|
||||
AdminThemeSelector.Apply(context);
|
||||
AdminFilter.Apply(context);
|
||||
|
||||
var selector = new AdminThemeSelector();
|
||||
var result = selector.GetTheme(context);
|
||||
|
||||
100
src/Orchard.Tests/UI/Navigation/MenuFilterTests.cs
Normal file
100
src/Orchard.Tests/UI/Navigation/MenuFilterTests.cs
Normal file
@@ -0,0 +1,100 @@
|
||||
using System.Linq;
|
||||
using System.Web.Mvc;
|
||||
using System.Web.Routing;
|
||||
using Moq;
|
||||
using NUnit.Framework;
|
||||
using Orchard.Localization;
|
||||
using Orchard.Mvc.ViewModels;
|
||||
using Orchard.Security;
|
||||
using Orchard.Tests.Stubs;
|
||||
using Orchard.UI.Admin;
|
||||
using Orchard.UI.Navigation;
|
||||
|
||||
namespace Orchard.Tests.UI.Navigation {
|
||||
[TestFixture]
|
||||
public class MenuFilterTests {
|
||||
|
||||
private static AuthorizationContext GetAuthorizationContext<TController>() where TController : ControllerBase, new() {
|
||||
var controllerDescriptor = new ReflectedControllerDescriptor(typeof(TController));
|
||||
var controllerContext = new ControllerContext(new StubHttpContext(), new RouteData(), new TController());
|
||||
return new AuthorizationContext(
|
||||
controllerContext,
|
||||
controllerDescriptor.FindAction(controllerContext, "Index"));
|
||||
}
|
||||
|
||||
private static IAuthorizer GetAuthorizer(bool result) {
|
||||
var authorizer = new Mock<IAuthorizer>();
|
||||
authorizer
|
||||
.Setup(x => x.Authorize(StandardPermissions.AccessAdminPanel, It.IsAny<LocalizedString>())).
|
||||
Returns(result);
|
||||
return authorizer.Object;
|
||||
}
|
||||
|
||||
private static Mock<INavigationManager> GetNavigationManager() {
|
||||
var mainMenu = new[] { new MenuItem { Text = "The Main Menu" } };
|
||||
var adminMenu = new[] { new MenuItem { Text = "The Admin Menu" } };
|
||||
var navigationManager = new Mock<INavigationManager>();
|
||||
navigationManager.Setup(x => x.BuildMenu("main")).Returns(mainMenu);
|
||||
navigationManager.Setup(x => x.BuildMenu("admin")).Returns(adminMenu);
|
||||
return navigationManager;
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void MockNavManagerWorks() {
|
||||
var main = GetNavigationManager().Object.BuildMenu("main");
|
||||
Assert.That(main.Count(), Is.EqualTo(1));
|
||||
}
|
||||
|
||||
|
||||
[Test]
|
||||
public void MainMenuShouldBeCalledNormally() {
|
||||
Mock<INavigationManager> navigationManager = GetNavigationManager();
|
||||
|
||||
var authorizationContext = GetAuthorizationContext<NormalController>();
|
||||
var adminFilter = new AdminFilter(GetAuthorizer(true));
|
||||
adminFilter.OnAuthorization(authorizationContext);
|
||||
|
||||
var viewModel = new BaseViewModel();
|
||||
var resultExecutingContext = new ResultExecutingContext(
|
||||
authorizationContext,
|
||||
new ViewResult { ViewData = new ViewDataDictionary<BaseViewModel>(viewModel) });
|
||||
var menuFilter = new MenuFilter(navigationManager.Object);
|
||||
menuFilter.OnResultExecuting(resultExecutingContext);
|
||||
|
||||
Assert.That(viewModel.Menu, Is.Not.Null);
|
||||
Assert.That(viewModel.Menu.Single().Text, Is.SameAs("The Main Menu"));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void AdminMenuShouldHaveDifferentNavigation() {
|
||||
Mock<INavigationManager> navigationManager = GetNavigationManager();
|
||||
|
||||
var authorizationContext = GetAuthorizationContext<AdminController>();
|
||||
var adminFilter = new AdminFilter(GetAuthorizer(true));
|
||||
adminFilter.OnAuthorization(authorizationContext);
|
||||
|
||||
var viewModel = new BaseViewModel();
|
||||
var resultExecutingContext = new ResultExecutingContext(
|
||||
authorizationContext,
|
||||
new ViewResult { ViewData = new ViewDataDictionary<BaseViewModel>(viewModel) });
|
||||
var menuFilter = new MenuFilter(navigationManager.Object);
|
||||
menuFilter.OnResultExecuting(resultExecutingContext);
|
||||
|
||||
Assert.That(viewModel.Menu, Is.Not.Null);
|
||||
Assert.That(viewModel.Menu.Single().Text, Is.SameAs("The Admin Menu"));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public class NormalController : Controller {
|
||||
public ActionResult Index() {
|
||||
return View();
|
||||
}
|
||||
}
|
||||
|
||||
public class AdminController : Controller {
|
||||
public ActionResult Index() {
|
||||
return View();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Web.Routing;
|
||||
using System.Web.Routing;
|
||||
using NUnit.Framework;
|
||||
using Orchard.UI.Navigation;
|
||||
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using NUnit.Framework;
|
||||
using Orchard.UI.Navigation;
|
||||
|
||||
|
||||
@@ -62,12 +62,12 @@ namespace Orchard.Tests.UI.Notify {
|
||||
var filter = new NotifyFilter(sink);
|
||||
sink.Information("Working");
|
||||
|
||||
var model = new AdminViewModel();
|
||||
var model = new BaseViewModel();
|
||||
|
||||
var context = BuildContext();
|
||||
context.Controller.TempData.Add("messages", "dont-destroy" + System.Environment.NewLine + "-" + System.Environment.NewLine);
|
||||
context.Result = new ViewResult {
|
||||
ViewData = new ViewDataDictionary<AdminViewModel>(model),
|
||||
ViewData = new ViewDataDictionary<BaseViewModel>(model),
|
||||
TempData = context.Controller.TempData
|
||||
};
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ using Orchard.Core.Navigation.Models;
|
||||
using Orchard.Mvc.ViewModels;
|
||||
|
||||
namespace Orchard.Core.Navigation.ViewModels {
|
||||
public class CreateMenuItemViewModel : AdminViewModel {
|
||||
public class CreateMenuItemViewModel : BaseViewModel {
|
||||
public ContentItemViewModel<MenuPart> MenuItem { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -3,7 +3,7 @@ using System.Linq;
|
||||
using Orchard.Mvc.ViewModels;
|
||||
|
||||
namespace Orchard.Core.Navigation.ViewModels {
|
||||
public class NavigationManagementViewModel : AdminViewModel {
|
||||
public class NavigationManagementViewModel : BaseViewModel {
|
||||
public NavigationManagementViewModel() {
|
||||
MenuItemEntries = Enumerable.Empty<MenuItemEntry>().ToList();
|
||||
}
|
||||
|
||||
@@ -116,7 +116,6 @@
|
||||
<Compile Include="Navigation\Records\MenuItemRecord.cs" />
|
||||
<Compile Include="Navigation\Records\MenuPartRecord.cs" />
|
||||
<Compile Include="Navigation\Services\MainMenu.cs" />
|
||||
<Compile Include="Navigation\Filters\MainMenuFilter.cs" />
|
||||
<Compile Include="Navigation\ViewModels\CreateMenuItemViewModel.cs" />
|
||||
<Compile Include="Navigation\ViewModels\MenuItemEntry.cs" />
|
||||
<Compile Include="Navigation\ViewModels\NavigationManagementViewModel.cs" />
|
||||
|
||||
@@ -4,7 +4,7 @@ using Orchard.Mvc.ViewModels;
|
||||
using Orchard.Core.Settings.Models;
|
||||
|
||||
namespace Orchard.Core.Settings.ViewModels {
|
||||
public class SettingsIndexViewModel : AdminViewModel {
|
||||
public class SettingsIndexViewModel : BaseViewModel {
|
||||
public SiteSettings Site { get; set; }
|
||||
public ContentItemViewModel ViewModel { get; set; }
|
||||
|
||||
|
||||
@@ -97,7 +97,7 @@ namespace Orchard.Core.Themes.Controllers {
|
||||
}
|
||||
|
||||
public ActionResult Install() {
|
||||
return View(new AdminViewModel());
|
||||
return View(new BaseViewModel());
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
|
||||
@@ -3,7 +3,7 @@ using Orchard.Mvc.ViewModels;
|
||||
using Orchard.Themes;
|
||||
|
||||
namespace Orchard.Core.Themes.ViewModels {
|
||||
public class ThemesIndexViewModel : AdminViewModel {
|
||||
public class ThemesIndexViewModel : BaseViewModel {
|
||||
public ITheme CurrentTheme { get; set; }
|
||||
public IEnumerable<ITheme> Themes { get; set; }
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ using Orchard.Blogs.Models;
|
||||
using Orchard.Mvc.ViewModels;
|
||||
|
||||
namespace Orchard.Blogs.ViewModels {
|
||||
public class AdminBlogsViewModel : AdminViewModel {
|
||||
public class AdminBlogsViewModel : BaseViewModel {
|
||||
public IEnumerable<AdminBlogEntry> Entries { get; set; }
|
||||
}
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ using Orchard.Blogs.Models;
|
||||
using Orchard.Mvc.ViewModels;
|
||||
|
||||
namespace Orchard.Blogs.ViewModels {
|
||||
public class BlogEditViewModel : AdminViewModel {
|
||||
public class BlogEditViewModel : BaseViewModel {
|
||||
public ContentItemViewModel<Blog> Blog { get; set; }
|
||||
public bool PromoteToHomePage { get; set; }
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@ using Orchard.Blogs.Models;
|
||||
using Orchard.Mvc.ViewModels;
|
||||
|
||||
namespace Orchard.Blogs.ViewModels {
|
||||
public class BlogForAdminViewModel : AdminViewModel {
|
||||
public class BlogForAdminViewModel : BaseViewModel {
|
||||
public ContentItemViewModel<Blog> Blog { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -2,7 +2,7 @@ using Orchard.Blogs.Models;
|
||||
using Orchard.Mvc.ViewModels;
|
||||
|
||||
namespace Orchard.Blogs.ViewModels {
|
||||
public class BlogPostEditViewModel : AdminViewModel {
|
||||
public class BlogPostEditViewModel : BaseViewModel {
|
||||
public ContentItemViewModel<BlogPost> BlogPost { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -2,7 +2,7 @@ using Orchard.Blogs.Models;
|
||||
using Orchard.Mvc.ViewModels;
|
||||
|
||||
namespace Orchard.Blogs.ViewModels {
|
||||
public class CreateBlogPostViewModel : AdminViewModel {
|
||||
public class CreateBlogPostViewModel : BaseViewModel {
|
||||
public ContentItemViewModel<BlogPost> BlogPost { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -2,7 +2,7 @@ using Orchard.Blogs.Models;
|
||||
using Orchard.Mvc.ViewModels;
|
||||
|
||||
namespace Orchard.Blogs.ViewModels {
|
||||
public class CreateBlogViewModel : AdminViewModel {
|
||||
public class CreateBlogViewModel : BaseViewModel {
|
||||
public ContentItemViewModel<Blog> Blog { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -2,7 +2,7 @@
|
||||
using Orchard.Mvc.ViewModels;
|
||||
|
||||
namespace Orchard.Comments.ViewModels {
|
||||
public class CommentsCreateViewModel : AdminViewModel {
|
||||
public class CommentsCreateViewModel : BaseViewModel {
|
||||
[Required]
|
||||
public string Name { get; set; }
|
||||
public string Email { get; set; }
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
using Orchard.Mvc.ViewModels;
|
||||
|
||||
namespace Orchard.Comments.ViewModels {
|
||||
public class CommentsDetailsViewModel : AdminViewModel {
|
||||
public class CommentsDetailsViewModel : BaseViewModel {
|
||||
public IList<CommentEntry> Comments { get; set; }
|
||||
public CommentDetailsOptions Options { get; set; }
|
||||
public string DisplayNameForCommentedItem { get; set; }
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
using Orchard.Comments.Models;
|
||||
|
||||
namespace Orchard.Comments.ViewModels {
|
||||
public class CommentsEditViewModel : AdminViewModel {
|
||||
public class CommentsEditViewModel : BaseViewModel {
|
||||
public int Id { get; set; }
|
||||
public string Name { get; set; }
|
||||
public string Email { get; set; }
|
||||
|
||||
@@ -3,7 +3,7 @@ using Orchard.Comments.Models;
|
||||
using Orchard.Mvc.ViewModels;
|
||||
|
||||
namespace Orchard.Comments.ViewModels {
|
||||
public class CommentsIndexViewModel : AdminViewModel {
|
||||
public class CommentsIndexViewModel : BaseViewModel {
|
||||
public IList<CommentEntry> Comments { get; set; }
|
||||
public CommentIndexOptions Options { get; set; }
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ using System.ComponentModel.DataAnnotations;
|
||||
using Orchard.Mvc.ViewModels;
|
||||
|
||||
namespace Orchard.Media.ViewModels {
|
||||
public class MediaFolderCreateViewModel : AdminViewModel {
|
||||
public class MediaFolderCreateViewModel : BaseViewModel {
|
||||
[Required, DisplayName("Folder Name:")]
|
||||
public string Name { get; set; }
|
||||
public string MediaPath { get; set; }
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
using Orchard.Mvc.ViewModels;
|
||||
|
||||
namespace Orchard.Media.ViewModels {
|
||||
public class MediaFolderEditPropertiesViewModel : AdminViewModel {
|
||||
public class MediaFolderEditPropertiesViewModel : BaseViewModel {
|
||||
public string Name { get; set; }
|
||||
public string MediaPath { get; set; }
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ using Orchard.Media.Models;
|
||||
using Orchard.Mvc.ViewModels;
|
||||
|
||||
namespace Orchard.Media.ViewModels {
|
||||
public class MediaFolderEditViewModel : AdminViewModel {
|
||||
public class MediaFolderEditViewModel : BaseViewModel {
|
||||
public string FolderName { get; set; }
|
||||
public string MediaPath { get; set; }
|
||||
public IEnumerable<MediaFolder> MediaFolders { get; set; }
|
||||
|
||||
@@ -3,7 +3,7 @@ using Orchard.Mvc.ViewModels;
|
||||
using Orchard.Media.Models;
|
||||
|
||||
namespace Orchard.Media.ViewModels {
|
||||
public class MediaFolderIndexViewModel : AdminViewModel {
|
||||
public class MediaFolderIndexViewModel : BaseViewModel {
|
||||
public IEnumerable<MediaFolder> MediaFolders { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
using Orchard.Mvc.ViewModels;
|
||||
|
||||
namespace Orchard.Media.ViewModels {
|
||||
public class MediaItemAddViewModel : AdminViewModel {
|
||||
public class MediaItemAddViewModel : BaseViewModel {
|
||||
public string FolderName { get; set; }
|
||||
public string MediaPath { get; set; }
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
using Orchard.Mvc.ViewModels;
|
||||
|
||||
namespace Orchard.Media.ViewModels {
|
||||
public class MediaItemEditViewModel : AdminViewModel {
|
||||
public class MediaItemEditViewModel : BaseViewModel {
|
||||
public string Name { get; set; }
|
||||
public string Caption { get; set; }
|
||||
public long Size { get; set; }
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
using Orchard.Pages.Models;
|
||||
|
||||
namespace Orchard.Pages.ViewModels {
|
||||
public class PageCreateViewModel : AdminViewModel {
|
||||
public class PageCreateViewModel : BaseViewModel {
|
||||
public ContentItemViewModel<Page> Page { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -2,7 +2,7 @@
|
||||
using Orchard.Mvc.ViewModels;
|
||||
|
||||
namespace Orchard.Pages.ViewModels {
|
||||
public class PageEditViewModel : AdminViewModel {
|
||||
public class PageEditViewModel : BaseViewModel {
|
||||
public ContentItemViewModel<Page> Page { get; set; }
|
||||
public bool PromoteToHomePage { get; set; }
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ using Orchard.Mvc.ViewModels;
|
||||
using Orchard.Pages.Models;
|
||||
|
||||
namespace Orchard.Pages.ViewModels {
|
||||
public class PagesViewModel : AdminViewModel {
|
||||
public class PagesViewModel : BaseViewModel {
|
||||
public IList<PageEntry> PageEntries { get; set; }
|
||||
public PagesOptions Options { get; set; }
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@ using Orchard.Mvc.ViewModels;
|
||||
using Orchard.Security.Permissions;
|
||||
|
||||
namespace Orchard.Roles.ViewModels {
|
||||
public class RoleCreateViewModel : AdminViewModel {
|
||||
public class RoleCreateViewModel : BaseViewModel {
|
||||
[Required]
|
||||
public string Name { get; set; }
|
||||
public IDictionary<string, IEnumerable<Permission>> ModulePermissions { get; set; }
|
||||
|
||||
@@ -5,7 +5,7 @@ using Orchard.Mvc.ViewModels;
|
||||
using Orchard.Security.Permissions;
|
||||
|
||||
namespace Orchard.Roles.ViewModels {
|
||||
public class RoleEditViewModel : AdminViewModel {
|
||||
public class RoleEditViewModel : BaseViewModel {
|
||||
public int Id { get; set; }
|
||||
[Required]
|
||||
public string Name { get; set; }
|
||||
|
||||
@@ -3,7 +3,7 @@ using Orchard.Mvc.ViewModels;
|
||||
using Orchard.Roles.Records;
|
||||
|
||||
namespace Orchard.Roles.ViewModels {
|
||||
public class RolesIndexViewModel : AdminViewModel {
|
||||
public class RolesIndexViewModel : BaseViewModel {
|
||||
public IList<RoleRecord> Rows { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ using System.ComponentModel.DataAnnotations;
|
||||
using Orchard.Mvc.ViewModels;
|
||||
|
||||
namespace Orchard.Tags.ViewModels {
|
||||
public class TagsAdminCreateViewModel : AdminViewModel {
|
||||
public class TagsAdminCreateViewModel : BaseViewModel {
|
||||
[Required, DisplayName("Name:")]
|
||||
public string TagName { get; set; }
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ using System.ComponentModel.DataAnnotations;
|
||||
using Orchard.Mvc.ViewModels;
|
||||
|
||||
namespace Orchard.Tags.ViewModels {
|
||||
public class TagsAdminEditViewModel : AdminViewModel {
|
||||
public class TagsAdminEditViewModel : BaseViewModel {
|
||||
public int Id { get; set; }
|
||||
[Required, DisplayName("Name:")]
|
||||
public string TagName { get; set; }
|
||||
|
||||
@@ -3,7 +3,7 @@ using Orchard.Mvc.ViewModels;
|
||||
using Orchard.Tags.Models;
|
||||
|
||||
namespace Orchard.Tags.ViewModels {
|
||||
public class TagsAdminIndexViewModel : AdminViewModel {
|
||||
public class TagsAdminIndexViewModel : BaseViewModel {
|
||||
public IList<TagEntry> Tags { get; set; }
|
||||
public TagAdminIndexBulkAction BulkAction { get; set; }
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ using Orchard.ContentManagement;
|
||||
using Orchard.Mvc.ViewModels;
|
||||
|
||||
namespace Orchard.Tags.ViewModels {
|
||||
public class TagsAdminSearchViewModel : AdminViewModel {
|
||||
public class TagsAdminSearchViewModel : BaseViewModel {
|
||||
public string TagName { get; set; }
|
||||
public IEnumerable<IContent> Contents { get; set; }
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ using Orchard.Security;
|
||||
using Orchard.Users.Models;
|
||||
|
||||
namespace Orchard.Users.ViewModels {
|
||||
public class UserCreateViewModel : AdminViewModel {
|
||||
public class UserCreateViewModel : BaseViewModel {
|
||||
[Required]
|
||||
public string UserName { get; set; }
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ using Orchard.Mvc.ViewModels;
|
||||
using Orchard.Users.Models;
|
||||
|
||||
namespace Orchard.Users.ViewModels {
|
||||
public class UserEditViewModel : AdminViewModel {
|
||||
public class UserEditViewModel : BaseViewModel {
|
||||
[HiddenInput(DisplayValue = false)]
|
||||
public int Id {
|
||||
get { return User.Item.Id; }
|
||||
|
||||
@@ -4,7 +4,7 @@ using Orchard.Users.Models;
|
||||
|
||||
namespace Orchard.Users.ViewModels {
|
||||
|
||||
public class UsersIndexViewModel : AdminViewModel {
|
||||
public class UsersIndexViewModel : BaseViewModel {
|
||||
public class Row {
|
||||
public User User { get; set; }
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<%@ Control Language="C#" Inherits="Orchard.Mvc.ViewUserControl<AdminViewModel>" %>
|
||||
<%@ Control Language="C#" Inherits="Orchard.Mvc.ViewUserControl<BaseViewModel>" %>
|
||||
<%@ Import Namespace="Orchard.Mvc.ViewModels"%>
|
||||
<div id="app"><%=Html.ActionLink(T("Project Orchard").ToString(), "Index", new { Area = "", Controller = "Home" })%></div>
|
||||
<div id="site"><%=Html.ActionLink(T("Your Site").ToString(), "Index", new { Area = "", Controller = "Home" })%></div>
|
||||
@@ -1,4 +1,4 @@
|
||||
<%@ Control Language="C#" Inherits="Orchard.Mvc.ViewUserControl<AdminViewModel>" %>
|
||||
<%@ Control Language="C#" Inherits="Orchard.Mvc.ViewUserControl<BaseViewModel>" %>
|
||||
<%@ Import Namespace="Orchard.Mvc.ViewModels"%>
|
||||
<%@ Import Namespace="Orchard.Mvc.Html"%><%
|
||||
Html.RegisterStyle("site.css");
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<%@ Control Language="C#" Inherits="Orchard.Mvc.ViewUserControl<AdminViewModel>" %>
|
||||
<%@ Control Language="C#" Inherits="Orchard.Mvc.ViewUserControl<BaseViewModel>" %>
|
||||
<%@ Import Namespace="Orchard.Mvc.ViewModels"%>
|
||||
<ul id="navigation" role="navigation">
|
||||
<li class="first"><h3><span><%=_Encoded("Dashboard")%></span></h3></li>
|
||||
<%if (Model.AdminMenu != null) {
|
||||
foreach (var menuSection in Model.AdminMenu) {
|
||||
<%if (Model.Menu != null) {
|
||||
foreach (var menuSection in Model.Menu) {
|
||||
// todo: (heskew) need some help(er)
|
||||
var firstSectionItem = menuSection.Items.FirstOrDefault();
|
||||
var sectionHeaderMarkup = firstSectionItem != null
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<%@ Control Language="C#" Inherits="Orchard.Mvc.ViewUserControl<AdminViewModel>" %>
|
||||
<%@ Control Language="C#" Inherits="Orchard.Mvc.ViewUserControl<BaseViewModel>" %>
|
||||
<%@ Import Namespace="Orchard.Mvc.ViewModels"%>
|
||||
<% if (Model.CurrentUser != null) {
|
||||
%><div id="login"><%=_Encoded("User:")%> <%=Html.Encode(Model.CurrentUser.UserName)%> | <%=Html.ActionLink(T("Logout").ToString(), "LogOff", new { Area = "Orchard.Users", Controller = "Account" }) %></div><%
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
using System.Collections.Generic;
|
||||
using Orchard.UI.Navigation;
|
||||
|
||||
namespace Orchard.Mvc.ViewModels {
|
||||
public class AdminViewModel : BaseViewModel {
|
||||
public IEnumerable<MenuItem> AdminMenu { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
using System.Collections.Generic;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Orchard.Security;
|
||||
using Orchard.UI.Navigation;
|
||||
using Orchard.UI.Notify;
|
||||
@@ -6,15 +7,23 @@ using Orchard.UI.Zones;
|
||||
|
||||
namespace Orchard.Mvc.ViewModels {
|
||||
public class BaseViewModel : IZoneContainer {
|
||||
public BaseViewModel() {
|
||||
Messages = new List<NotifyEntry>();
|
||||
Zones = new ZoneCollection();
|
||||
private ZoneCollection _zones = new ZoneCollection();
|
||||
private IList<NotifyEntry> _messages = new List<NotifyEntry>();
|
||||
|
||||
public virtual ZoneCollection Zones {
|
||||
get { return _zones; }
|
||||
set { _zones = value; }
|
||||
}
|
||||
|
||||
public IList<NotifyEntry> Messages { get; set; }
|
||||
public IUser CurrentUser { get; set; }
|
||||
public ZoneCollection Zones { get; set; }
|
||||
public virtual IList<NotifyEntry> Messages {
|
||||
get { return _messages; }
|
||||
set { _messages = value; }
|
||||
}
|
||||
|
||||
public IEnumerable<MenuItem> Menu { get; set; }
|
||||
public virtual IUser CurrentUser { get; set; }
|
||||
public virtual IEnumerable<MenuItem> Menu { get; set; }
|
||||
}
|
||||
|
||||
[Obsolete("Please change your code to use BaseViewModel, as AdminViewModel will likely be removed in the near future.")]
|
||||
public class AdminViewModel : BaseViewModel { }
|
||||
}
|
||||
|
||||
@@ -226,7 +226,7 @@
|
||||
<Compile Include="Extensions\ExtensionEntry.cs" />
|
||||
<Compile Include="IOrchardServices.cs" />
|
||||
<Compile Include="UI\Admin\AdminAttribute.cs" />
|
||||
<Compile Include="UI\Admin\AdminAuthorizationFilter.cs" />
|
||||
<Compile Include="UI\Admin\AdminFilter.cs" />
|
||||
<Compile Include="Mvc\AntiForgery\AntiForgeryAuthorizationFilter.cs" />
|
||||
<Compile Include="Mvc\Html\FileRegistrationContext.cs" />
|
||||
<Compile Include="Mvc\Html\MvcFormAntiForgeryPost.cs" />
|
||||
@@ -286,7 +286,6 @@
|
||||
<Compile Include="Mvc\ViewEngines\LayoutViewContext.cs" />
|
||||
<Compile Include="Mvc\ViewEngines\ViewEngineFilter.cs" />
|
||||
<Compile Include="Mvc\ViewEngines\WebFormsViewEngineProvider.cs" />
|
||||
<Compile Include="Mvc\ViewModels\AdminViewModel.cs" />
|
||||
<Compile Include="Mvc\ViewModels\BaseViewModel.cs" />
|
||||
<Compile Include="UI\Admin\AdminThemeSelector.cs" />
|
||||
<Compile Include="UI\Navigation\INavigationManager.cs" />
|
||||
@@ -325,7 +324,7 @@
|
||||
<Compile Include="Themes\IThemeSelector.cs" />
|
||||
<Compile Include="Themes\IThemeService.cs" />
|
||||
<Compile Include="Themes\ThemesModule.cs" />
|
||||
<Compile Include="UI\Menus\AdminMenuFilter.cs" />
|
||||
<Compile Include="UI\Navigation\MenuFilter.cs" />
|
||||
<Compile Include="UI\Navigation\NavigationBuilder.cs" />
|
||||
<Compile Include="UI\Navigation\INavigationProvider.cs" />
|
||||
<Compile Include="UI\Navigation\MenuItem.cs" />
|
||||
|
||||
@@ -2,15 +2,16 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Web.Mvc;
|
||||
using System.Web.Routing;
|
||||
using Orchard.Localization;
|
||||
using Orchard.Mvc.Filters;
|
||||
using Orchard.Security;
|
||||
|
||||
namespace Orchard.UI.Admin {
|
||||
public class AdminAuthorizationFilter : FilterProvider, IAuthorizationFilter {
|
||||
public class AdminFilter : FilterProvider, IAuthorizationFilter {
|
||||
private readonly IAuthorizer _authorizer;
|
||||
|
||||
public AdminAuthorizationFilter(IAuthorizer authorizer) {
|
||||
public AdminFilter(IAuthorizer authorizer) {
|
||||
_authorizer = authorizer;
|
||||
T = NullLocalizer.Instance;
|
||||
}
|
||||
@@ -23,10 +24,19 @@ namespace Orchard.UI.Admin {
|
||||
filterContext.Result = new HttpUnauthorizedResult();
|
||||
}
|
||||
|
||||
AdminThemeSelector.Apply(filterContext.RequestContext);
|
||||
Apply(filterContext.RequestContext);
|
||||
}
|
||||
}
|
||||
|
||||
public static void Apply(RequestContext context) {
|
||||
// the value isn't important
|
||||
context.HttpContext.Items[typeof(AdminThemeSelector)] = null;
|
||||
}
|
||||
|
||||
public static bool IsApplied(RequestContext context) {
|
||||
return context.HttpContext.Items.Contains(typeof(AdminThemeSelector));
|
||||
}
|
||||
|
||||
private static bool IsAdmin(AuthorizationContext filterContext) {
|
||||
if (IsNameAdmin(filterContext) || IsNameAdminProxy(filterContext)) {
|
||||
return true;
|
||||
@@ -4,20 +4,12 @@ using Orchard.Themes;
|
||||
namespace Orchard.UI.Admin {
|
||||
public class AdminThemeSelector : IThemeSelector {
|
||||
public ThemeSelectorResult GetTheme(RequestContext context) {
|
||||
if (IsApplied(context)) {
|
||||
if (AdminFilter.IsApplied(context)) {
|
||||
return new ThemeSelectorResult { Priority = 100, ThemeName = "TheAdmin" };
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public static void Apply(RequestContext context) {
|
||||
// the value isn't important
|
||||
context.HttpContext.Items[typeof(AdminThemeSelector)] = null;
|
||||
}
|
||||
|
||||
public static bool IsApplied(RequestContext context) {
|
||||
return context.HttpContext.Items.Contains(typeof(AdminThemeSelector));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,30 +0,0 @@
|
||||
using System.Web.Mvc;
|
||||
using Orchard.Mvc.Filters;
|
||||
using Orchard.Mvc.ViewModels;
|
||||
using Orchard.UI.Navigation;
|
||||
|
||||
namespace Orchard.UI.Menus {
|
||||
public class AdminMenuFilter : FilterProvider, IResultFilter {
|
||||
private readonly INavigationManager _navigationManager;
|
||||
|
||||
public AdminMenuFilter(INavigationManager navigationManager ) {
|
||||
_navigationManager = navigationManager;
|
||||
}
|
||||
|
||||
public void OnResultExecuting(ResultExecutingContext filterContext) {
|
||||
var viewResult = filterContext.Result as ViewResult;
|
||||
if (viewResult == null)
|
||||
return;
|
||||
|
||||
var adminViewModel = viewResult.ViewData.Model as AdminViewModel;
|
||||
if (adminViewModel == null)
|
||||
return;
|
||||
|
||||
adminViewModel.AdminMenu = _navigationManager.BuildMenu("admin");
|
||||
}
|
||||
|
||||
public void OnResultExecuted(ResultExecutedContext filterContext) {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,13 +1,13 @@
|
||||
using System.Web.Mvc;
|
||||
using Orchard.Mvc.Filters;
|
||||
using Orchard.Mvc.ViewModels;
|
||||
using Orchard.UI.Navigation;
|
||||
using Orchard.UI.Admin;
|
||||
|
||||
namespace Orchard.Core.Navigation.Filters {
|
||||
public class MainMenuFilter : FilterProvider, IResultFilter {
|
||||
namespace Orchard.UI.Navigation {
|
||||
public class MenuFilter : FilterProvider, IResultFilter {
|
||||
private readonly INavigationManager _navigationManager;
|
||||
|
||||
public MainMenuFilter(INavigationManager navigationManager) {
|
||||
public MenuFilter(INavigationManager navigationManager) {
|
||||
_navigationManager = navigationManager;
|
||||
}
|
||||
|
||||
@@ -20,10 +20,15 @@ namespace Orchard.Core.Navigation.Filters {
|
||||
if (baseViewModel == null)
|
||||
return;
|
||||
|
||||
baseViewModel.Menu = _navigationManager.BuildMenu("main");
|
||||
var menuName = "main";
|
||||
if (AdminFilter.IsApplied(filterContext.RequestContext))
|
||||
menuName = "admin";
|
||||
|
||||
baseViewModel.Menu = _navigationManager.BuildMenu(menuName);
|
||||
}
|
||||
|
||||
public void OnResultExecuted(ResultExecutedContext filterContext) {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user