From c2f46861bc8fb7180abdba7a9d361baf8532edab Mon Sep 17 00:00:00 2001 From: Sebastien Ros Date: Mon, 1 Nov 2010 13:16:55 -0700 Subject: [PATCH 1/3] Hiding the Register link if registering is not allowed (by default) --HG-- branch : dev --- .../Modules/Orchard.Users/Views/Account/LogOn.cshtml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/Orchard.Web/Modules/Orchard.Users/Views/Account/LogOn.cshtml b/src/Orchard.Web/Modules/Orchard.Users/Views/Account/LogOn.cshtml index b076b3bd0..f3a65a961 100644 --- a/src/Orchard.Web/Modules/Orchard.Users/Views/Account/LogOn.cshtml +++ b/src/Orchard.Web/Modules/Orchard.Users/Views/Account/LogOn.cshtml @@ -1,7 +1,12 @@ @model Orchard.Users.ViewModels.LogOnViewModel +@using Orchard.ContentManagement; + +@{ + var userCanRegister = @WorkContext.CurrentSite.As().UsersCanRegister; +}

@Html.TitleForPage(Model.Title)

-

@T("Please enter your username and password.") @Html.ActionLink("Register", "Register") @T(" if you don't have an account.")

+

@T("Please enter your username and password.") @if(userCanRegister) { @Html.ActionLink("Register", "Register") @T(" if you don't have an account.") }

@Html.ValidationSummary(T("Login was unsuccessful. Please correct the errors and try again.").ToString()) @using (Html.BeginFormAntiForgeryPost(Url.Action("LogOn", new {ReturnUrl = Request.QueryString["ReturnUrl"]}))) { From f2f739d9350b15d8728b234f1e43a1593f50b50e Mon Sep 17 00:00:00 2001 From: Nathan Heskew Date: Mon, 1 Nov 2010 15:57:20 -0700 Subject: [PATCH 2/3] Giving the admin menu an overhaul Mainly consists of changes in top-level section positions and ordering. Also updated the position comparer (and tests) to work with negative numeric position parts. --HG-- branch : dev --- .../UI/Navigation/PositionComparerTests.cs | 20 +++- src/Orchard.Web/Core/Contents/AdminMenu.cs | 12 +- src/Orchard.Web/Core/Dashboard/AdminMenu.cs | 5 +- src/Orchard.Web/Core/Navigation/AdminMenu.cs | 4 +- .../Navigation/Controllers/AdminController.cs | 3 +- src/Orchard.Web/Core/Reports/AdminMenu.cs | 5 +- src/Orchard.Web/Core/Settings/AdminMenu.cs | 6 +- .../Modules/Orchard.Blogs/AdminMenu.cs | 15 ++- .../Modules/Orchard.Comments/AdminMenu.cs | 7 +- .../Modules/Orchard.ContentTypes/AdminMenu.cs | 2 +- .../Modules/Orchard.Experimental/AdminMenu.cs | 6 +- .../Modules/Orchard.Indexing/AdminMenu.cs | 7 +- .../Modules/Orchard.Media/AdminMenu.cs | 7 +- .../Modules/Orchard.Migrations/AdminMenu.cs | 5 +- .../Modules/Orchard.Modules/AdminMenu.cs | 12 +- .../Modules/Orchard.MultiTenancy/AdminMenu.cs | 7 +- .../Modules/Orchard.Packaging/AdminMenu.cs | 8 +- .../Modules/Orchard.Roles/AdminMenu.cs | 6 +- .../Modules/Orchard.Tags/AdminMenu.cs | 7 +- .../Modules/Orchard.Themes/AdminMenu.cs | 8 +- .../Modules/Orchard.Users/AdminMenu.cs | 6 +- .../Modules/Orchard.Widgets/AdminMenu.cs | 6 +- .../Themes/TheAdmin/Styles/site.css | 14 +-- .../Themes/TheAdmin/Views/Menu.cshtml | 34 ++++-- .../Mvc/Html/TemplateViewModelExtensions.cs | 4 +- src/Orchard/Orchard.Framework.csproj | 1 - src/Orchard/UI/FlatPositionComparer.cs | 26 +++-- .../UI/Navigation/NavigationManager.cs | 4 +- src/Orchard/UI/Navigation/PositionComparer.cs | 105 ------------------ src/Orchard/Utility/Position.cs | 3 +- 30 files changed, 140 insertions(+), 215 deletions(-) delete mode 100644 src/Orchard/UI/Navigation/PositionComparer.cs diff --git a/src/Orchard.Tests/UI/Navigation/PositionComparerTests.cs b/src/Orchard.Tests/UI/Navigation/PositionComparerTests.cs index 5d1846fc4..2226bea88 100644 --- a/src/Orchard.Tests/UI/Navigation/PositionComparerTests.cs +++ b/src/Orchard.Tests/UI/Navigation/PositionComparerTests.cs @@ -1,7 +1,7 @@ using System; using System.Collections.Generic; using NUnit.Framework; -using Orchard.UI.Navigation; +using Orchard.UI; namespace Orchard.Tests.UI.Navigation { [TestFixture] @@ -10,7 +10,7 @@ namespace Orchard.Tests.UI.Navigation { [SetUp] public void Init() { - _comparer = new PositionComparer(); + _comparer = new FlatPositionComparer(); } @@ -47,6 +47,22 @@ namespace Orchard.Tests.UI.Navigation { AssertSame("007", "7"); } + [Test] + public void NegativeNumericValuesAreLessThanPositive() { + AssertLess("-5", "5"); + AssertSame("-5", "-5"); + AssertMore("42", "-42"); + } + + [Test] + public void NegativeNumericValuesShouldCompareNumerically() { + AssertMore("-3", "-5"); + AssertLess("-8", "-5"); + AssertSame("-5", "-5"); + AssertLess("-100", "-5"); + AssertSame("-007", "-7"); + } + [Test] public void DotsSplitParts() { AssertLess("0500.3", "0500.5"); diff --git a/src/Orchard.Web/Core/Contents/AdminMenu.cs b/src/Orchard.Web/Core/Contents/AdminMenu.cs index 4adf21bc0..e1f49f33b 100644 --- a/src/Orchard.Web/Core/Contents/AdminMenu.cs +++ b/src/Orchard.Web/Core/Contents/AdminMenu.cs @@ -21,14 +21,18 @@ namespace Orchard.Core.Contents { public void GetNavigation(NavigationBuilder builder) { var contentTypeDefinitions = _contentDefinitionManager.ListTypeDefinitions().OrderBy(d => d.Name); - builder.Add(T("Content"), "2", menu => { - menu.Add(T("Manage Content"), "1", item => item.Action("List", "Admin", new { area = "Contents", id = "" })); - foreach (var contentTypeDefinition in contentTypeDefinitions.Where(ctd => ctd.Settings.GetModel().Creatable)) { + builder.Add(T("Content"), "2", + menu => menu.Add(T("Content Items"), "1", item => item.Action("List", "Admin", new {area = "Contents", id = ""}))); + + builder.Add(T("New"), "-1", menu => { + menu.Add(T("Content Item"), "1", item => item.Action("List", "Admin", new { area = "Contents", id = "" })); + foreach (var contentTypeDefinition in contentTypeDefinitions.Where(ctd => ctd.Settings.GetModel().Creatable).OrderBy(ctd => ctd.DisplayName)) { var ci = _contentManager.New(contentTypeDefinition.Name); var cim = _contentManager.GetItemMetadata(ci); var createRouteValues = cim.CreateRouteValues; + // review: the display name should be a LocalizedString if (createRouteValues.Any()) - menu.Add(T("Create {0}", contentTypeDefinition.DisplayName), "1.3", item => item.Action(cim.CreateRouteValues["Action"] as string, cim.CreateRouteValues["Controller"] as string, cim.CreateRouteValues)); + menu.Add(T(contentTypeDefinition.DisplayName), "5", item => item.Action(cim.CreateRouteValues["Action"] as string, cim.CreateRouteValues["Controller"] as string, cim.CreateRouteValues)); } }); } diff --git a/src/Orchard.Web/Core/Dashboard/AdminMenu.cs b/src/Orchard.Web/Core/Dashboard/AdminMenu.cs index d960f6400..88be2cbd4 100644 --- a/src/Orchard.Web/Core/Dashboard/AdminMenu.cs +++ b/src/Orchard.Web/Core/Dashboard/AdminMenu.cs @@ -8,8 +8,9 @@ namespace Orchard.Core.Dashboard { public string MenuName { get { return "admin"; } } public void GetNavigation(NavigationBuilder builder) { - builder.Add(T("Orchard"), "0", - menu => menu.Add(T("Dashboard"), "0", item => item.Action("Index", "Admin", new { area = "Dashboard" }).Permission(StandardPermissions.AccessAdminPanel))); + builder.Add(T("Dashboard"), "0", + menu => menu.Add(T("Orchard"), "0", item => item.Action("Index", "Admin", new { area = "Dashboard" }) + .Permission(StandardPermissions.AccessAdminPanel))); } } } \ No newline at end of file diff --git a/src/Orchard.Web/Core/Navigation/AdminMenu.cs b/src/Orchard.Web/Core/Navigation/AdminMenu.cs index 5a0f9e0ef..37fd05e56 100644 --- a/src/Orchard.Web/Core/Navigation/AdminMenu.cs +++ b/src/Orchard.Web/Core/Navigation/AdminMenu.cs @@ -9,8 +9,8 @@ namespace Orchard.Core.Navigation { public void GetNavigation(NavigationBuilder builder) { //todo: - add new menu? and list menus? ...and remove hard-coded menu name here builder.Add(T("Navigation"), "8", - menu => menu - .Add(T("Main Menu"), "6.0", item => item.Action("Index", "Admin", new { area = "Navigation" }).Permission(Permissions.ManageMainMenu))); + menu => menu.Add(T("Main Menu"), "0", item => item.Action("Index", "Admin", new { area = "Navigation" }) + .Permission(Permissions.ManageMainMenu))); } } } diff --git a/src/Orchard.Web/Core/Navigation/Controllers/AdminController.cs b/src/Orchard.Web/Core/Navigation/Controllers/AdminController.cs index ceba193a9..87b7c0a98 100644 --- a/src/Orchard.Web/Core/Navigation/Controllers/AdminController.cs +++ b/src/Orchard.Web/Core/Navigation/Controllers/AdminController.cs @@ -8,6 +8,7 @@ using Orchard.Core.Navigation.ViewModels; using Orchard.DisplayManagement; using Orchard.Localization; using Orchard.Mvc.AntiForgery; +using Orchard.UI; using Orchard.UI.Navigation; using Orchard.Utility; @@ -41,7 +42,7 @@ namespace Orchard.Core.Navigation.Controllers { model = new NavigationManagementViewModel(); if (model.MenuItemEntries == null || model.MenuItemEntries.Count() < 1) - model.MenuItemEntries = _menuService.Get().Select(CreateMenuItemEntries).OrderBy(menuPartEntry => menuPartEntry.MenuItem.Position, new PositionComparer()).ToList(); + model.MenuItemEntries = _menuService.Get().Select(CreateMenuItemEntries).OrderBy(menuPartEntry => menuPartEntry.MenuItem.Position, new FlatPositionComparer()).ToList(); // need action name as this action is referenced from another action return View("Index", model); diff --git a/src/Orchard.Web/Core/Reports/AdminMenu.cs b/src/Orchard.Web/Core/Reports/AdminMenu.cs index 68086549d..394b22282 100644 --- a/src/Orchard.Web/Core/Reports/AdminMenu.cs +++ b/src/Orchard.Web/Core/Reports/AdminMenu.cs @@ -8,8 +8,9 @@ namespace Orchard.Core.Reports { public string MenuName { get { return "admin"; } } public void GetNavigation(NavigationBuilder builder) { - builder.Add(T("Site Configuration"), "11", - menu => menu.Add(T("Reports"), "15", item => item.Action("Index", "Admin", new { area = "Reports" }).Permission(StandardPermissions.AccessAdminPanel))); + builder.Add(T("Configuration"), "50", + menu => menu.Add(T("Reports"), "20", item => item.Action("Index", "Admin", new { area = "Reports" }) + .Permission(StandardPermissions.AccessAdminPanel))); } } } \ No newline at end of file diff --git a/src/Orchard.Web/Core/Settings/AdminMenu.cs b/src/Orchard.Web/Core/Settings/AdminMenu.cs index b552f0b5a..47739af01 100644 --- a/src/Orchard.Web/Core/Settings/AdminMenu.cs +++ b/src/Orchard.Web/Core/Settings/AdminMenu.cs @@ -7,9 +7,9 @@ namespace Orchard.Core.Settings { public string MenuName { get { return "admin"; } } public void GetNavigation(NavigationBuilder builder) { - builder.Add(T("Site Configuration"), "11", - menu => menu - .Add(T("Settings"), "10", item => item.Action("Index", "Admin", new { area = "Settings" }).Permission(Permissions.ManageSettings))); + builder.Add(T("Configuration"), "50", + menu => menu.Add(T("Settings"), "10", item => item.Action("Index", "Admin", new { area = "Settings" }) + .Permission(Permissions.ManageSettings))); } } } diff --git a/src/Orchard.Web/Modules/Orchard.Blogs/AdminMenu.cs b/src/Orchard.Web/Modules/Orchard.Blogs/AdminMenu.cs index e767abc2f..92a33c06c 100644 --- a/src/Orchard.Web/Modules/Orchard.Blogs/AdminMenu.cs +++ b/src/Orchard.Web/Modules/Orchard.Blogs/AdminMenu.cs @@ -16,7 +16,7 @@ namespace Orchard.Blogs { public string MenuName { get { return "admin"; } } public void GetNavigation(NavigationBuilder builder) { - builder.Add(T("Blogs"), "1", BuildMenu); + builder.Add(T("Blogs"), "2.5", BuildMenu); } private void BuildMenu(NavigationItemBuilder menu) { @@ -24,16 +24,15 @@ namespace Orchard.Blogs { var blogCount = blogs.Count(); var singleBlog = blogCount == 1 ? blogs.ElementAt(0) : null; - if (blogCount > 0 && singleBlog == null) - menu.Add(T("Manage Blogs"), "1.0", - item => - item.Action("List", "BlogAdmin", new {area = "Orchard.Blogs"}).Permission(Permissions.MetaListBlogs)); + if (blogCount > 0 && singleBlog == null) { + menu.Add(T("List"), "3", + item => item.Action("List", "BlogAdmin", new {area = "Orchard.Blogs"}).Permission(Permissions.MetaListBlogs)); + } else if (singleBlog != null) menu.Add(T("Manage Blog"), "1.0", - item => - item.Action("Item", "BlogAdmin", new {area = "Orchard.Blogs", blogSlug = singleBlog.Slug}).Permission(Permissions.MetaListBlogs)); + item => item.Action("Item", "BlogAdmin", new { area = "Orchard.Blogs", blogSlug = singleBlog.Slug }).Permission(Permissions.MetaListBlogs)); - if ( singleBlog != null ) + if (singleBlog != null) menu.Add(T("Create New Post"), "1.1", item => item.Action("Create", "BlogPostAdmin", new { area = "Orchard.Blogs", blogSlug = singleBlog.Slug }).Permission(Permissions.PublishBlogPost)); diff --git a/src/Orchard.Web/Modules/Orchard.Comments/AdminMenu.cs b/src/Orchard.Web/Modules/Orchard.Comments/AdminMenu.cs index 583ae82e2..95780f739 100644 --- a/src/Orchard.Web/Modules/Orchard.Comments/AdminMenu.cs +++ b/src/Orchard.Web/Modules/Orchard.Comments/AdminMenu.cs @@ -8,10 +8,9 @@ namespace Orchard.Comments { public string MenuName { get { return "admin"; } } public void GetNavigation(NavigationBuilder builder) { - builder.Add(T("Comments"), "3", - menu => menu - .Add(T("Manage Comments"), "1.0", item => item.Action("Index", "Admin", new { area = "Orchard.Comments" }).Permission(Permissions.ManageComments)) - ); + builder.Add(T("Comments"), "10", + menu => menu.Add(T("List"), "0", item => item.Action("Index", "Admin", new { area = "Orchard.Comments" }) + .Permission(Permissions.ManageComments))); } } } diff --git a/src/Orchard.Web/Modules/Orchard.ContentTypes/AdminMenu.cs b/src/Orchard.Web/Modules/Orchard.ContentTypes/AdminMenu.cs index 49bfd2220..4db431a4d 100644 --- a/src/Orchard.Web/Modules/Orchard.ContentTypes/AdminMenu.cs +++ b/src/Orchard.Web/Modules/Orchard.ContentTypes/AdminMenu.cs @@ -10,7 +10,7 @@ namespace Orchard.ContentTypes { public void GetNavigation(NavigationBuilder builder) { builder.Add(T("Content"), "2", - menu => menu.Add(T("Manage Content Types"), "1.1", item => item.Action("Index", "Admin", new { area = "Orchard.ContentTypes" }))); + menu => menu.Add(T("Content Types"), "3", item => item.Action("Index", "Admin", new {area = "Orchard.ContentTypes"}))); } } } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Experimental/AdminMenu.cs b/src/Orchard.Web/Modules/Orchard.Experimental/AdminMenu.cs index 2b77d9638..659eb4f54 100644 --- a/src/Orchard.Web/Modules/Orchard.Experimental/AdminMenu.cs +++ b/src/Orchard.Web/Modules/Orchard.Experimental/AdminMenu.cs @@ -8,10 +8,8 @@ namespace Orchard.Experimental { public Localizer T { get; set; } public void GetNavigation(NavigationBuilder builder) { - builder.Add(T("Site Configuration"), "11", - menu => menu - .Add(T("Experimental"), "10.0", item => item.Action("Index", "Home", new { area = "Orchard.Experimental" }) - )); + builder.Add(T("Configuration"), "50", + menu => menu.Add(T("Experimental"), "50", item => item.Action("Index", "Home", new { area = "Orchard.Experimental" }))); } } } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Indexing/AdminMenu.cs b/src/Orchard.Web/Modules/Orchard.Indexing/AdminMenu.cs index 7ab7230e4..958343ff3 100644 --- a/src/Orchard.Web/Modules/Orchard.Indexing/AdminMenu.cs +++ b/src/Orchard.Web/Modules/Orchard.Indexing/AdminMenu.cs @@ -7,10 +7,9 @@ namespace Orchard.Indexing { public string MenuName { get { return "admin"; } } public void GetNavigation(NavigationBuilder builder) { - builder.Add(T("Site Configuration"), "11", - menu => menu - .Add(T("Search Index"), "10.0", item => item.Action("Index", "Admin", new {area = "Orchard.Indexing"}) - .Permission(Permissions.ManageSearchIndex))); + builder.Add(T("Configuration"), "50", + menu => menu.Add(T("Search Index"), "15", item => item.Action("Index", "Admin", new {area = "Orchard.Indexing"}) + .Permission(Permissions.ManageSearchIndex))); } } } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Media/AdminMenu.cs b/src/Orchard.Web/Modules/Orchard.Media/AdminMenu.cs index f81ed3319..3b8f4f804 100644 --- a/src/Orchard.Web/Modules/Orchard.Media/AdminMenu.cs +++ b/src/Orchard.Web/Modules/Orchard.Media/AdminMenu.cs @@ -8,10 +8,9 @@ namespace Orchard.Media { public string MenuName { get { return "admin"; } } public void GetNavigation(NavigationBuilder builder) { - builder.Add(T("Media"), "4", - menu => menu - .Add(T("Manage Media"), "1.0", item => item.Action("Index", "Admin", new { area = "Orchard.Media" }).Permission(Permissions.ManageMediaFiles)) - ); + builder.Add(T("Media"), "6", + menu => menu.Add(T("Media"), "0", item => item.Action("Index", "Admin", new { area = "Orchard.Media" }) + .Permission(Permissions.ManageMediaFiles))); } } } diff --git a/src/Orchard.Web/Modules/Orchard.Migrations/AdminMenu.cs b/src/Orchard.Web/Modules/Orchard.Migrations/AdminMenu.cs index fbfe43b4e..da250a77f 100644 --- a/src/Orchard.Web/Modules/Orchard.Migrations/AdminMenu.cs +++ b/src/Orchard.Web/Modules/Orchard.Migrations/AdminMenu.cs @@ -7,9 +7,8 @@ namespace Orchard.Migrations { public string MenuName { get { return "admin"; } } public void GetNavigation(NavigationBuilder builder) { - builder.Add(T("Developer"), "10", - menu => menu - .Add(T("Migration"), "1.0", item => item.Action("Index", "DatabaseUpdate", new { area = "Orchard.Migrations" }))); + builder.Add(T("Developer"), "1", + menu => menu.Add(T("Migration"), "1.0", item => item.Action("Index", "DatabaseUpdate", new { area = "Orchard.Migrations" }))); } } } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Modules/AdminMenu.cs b/src/Orchard.Web/Modules/Orchard.Modules/AdminMenu.cs index 45cc8ac8d..e79b947cc 100644 --- a/src/Orchard.Web/Modules/Orchard.Modules/AdminMenu.cs +++ b/src/Orchard.Web/Modules/Orchard.Modules/AdminMenu.cs @@ -8,12 +8,12 @@ namespace Orchard.Modules { public string MenuName { get { return "admin"; } } public void GetNavigation(NavigationBuilder builder) { - builder.Add(T("Site Configuration"), "11", - menu => menu - .Add(T("Features"), "5.0", item => item.Action("Features", "Admin", new { area = "Orchard.Modules" }) - .Permission(Permissions.ManageFeatures)) - .Add(T("Modules"), "5.1", item => item.Action("Index", "Admin", new { area = "Orchard.Modules" }) - .Permission(Permissions.ManageModules))); + builder.Add(T("Configuration"), "50", + menu => menu + .Add(T("Features"), "0", item => item.Action("Features", "Admin", new { area = "Orchard.Modules" }) + .Permission(Permissions.ManageFeatures)) + .Add(T("Modules"), "5", item => item.Action("Index", "Admin", new { area = "Orchard.Modules" }) + .Permission(Permissions.ManageModules))); } } } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.MultiTenancy/AdminMenu.cs b/src/Orchard.Web/Modules/Orchard.MultiTenancy/AdminMenu.cs index 69131dcee..738be1b6a 100644 --- a/src/Orchard.Web/Modules/Orchard.MultiTenancy/AdminMenu.cs +++ b/src/Orchard.Web/Modules/Orchard.MultiTenancy/AdminMenu.cs @@ -18,10 +18,9 @@ namespace Orchard.MultiTenancy { if ( _shellSettings.Name != "Default" ) return; - builder.Add(T("Tenants"), "22", - menu => menu - .Add(T("Manage Tenants"), "1.0", item => item.Action("Index", "Admin", new { area = "Orchard.MultiTenancy" }).Permission(Permissions.ManageTenants)) - .Add(T("Add New Tenant"), "1.1", item => item.Action("Add", "Admin", new { area = "Orchard.MultiTenancy" }).Permission(Permissions.ManageTenants))); + builder.Add(T("Tenants"), "100", + menu => menu.Add(T("List"), "0", item => item.Action("Index", "Admin", new { area = "Orchard.MultiTenancy" }) + .Permission(Permissions.ManageTenants))); } } } diff --git a/src/Orchard.Web/Modules/Orchard.Packaging/AdminMenu.cs b/src/Orchard.Web/Modules/Orchard.Packaging/AdminMenu.cs index 989b48277..7730c5087 100644 --- a/src/Orchard.Web/Modules/Orchard.Packaging/AdminMenu.cs +++ b/src/Orchard.Web/Modules/Orchard.Packaging/AdminMenu.cs @@ -10,12 +10,12 @@ namespace Orchard.Packaging { public string MenuName { get { return "admin"; } } public void GetNavigation(NavigationBuilder builder) { - builder.Add(T("Gallery"), "5", menu => menu - .Add(T("Browse Modules"), "1.0", item => item + builder.Add(T("Gallery"), "30", menu => menu + .Add(T("Modules"), "1.0", item => item .Action("ModulesIndex", "Gallery", new { area = "Orchard.Packaging" })) - .Add(T("Browse Themes"), "2.0", item => item + .Add(T("Themes"), "2.0", item => item .Action("ThemesIndex", "Gallery", new { area = "Orchard.Packaging" })) - .Add(T("Gallery Feeds"), "3.0", item => item + .Add(T("Feeds"), "3.0", item => item .Action("Sources", "Gallery", new { area = "Orchard.Packaging" }))); } } diff --git a/src/Orchard.Web/Modules/Orchard.Roles/AdminMenu.cs b/src/Orchard.Web/Modules/Orchard.Roles/AdminMenu.cs index 2b1315f9c..323fc7f73 100644 --- a/src/Orchard.Web/Modules/Orchard.Roles/AdminMenu.cs +++ b/src/Orchard.Web/Modules/Orchard.Roles/AdminMenu.cs @@ -7,9 +7,9 @@ namespace Orchard.Roles { public string MenuName { get { return "admin"; } } public void GetNavigation(NavigationBuilder builder) { - builder.Add(T("Users"), "9", - menu => menu - .Add(T("Manage Roles"), "2.0", item => item.Action("Index", "Admin", new { area = "Orchard.Roles" }).Permission(Permissions.ManageRoles))); + builder.Add(T("Users"), "40", + menu => menu.Add(T("Roles"), "2.0", item => item.Action("Index", "Admin", new { area = "Orchard.Roles" }) + .Permission(Permissions.ManageRoles))); } } } diff --git a/src/Orchard.Web/Modules/Orchard.Tags/AdminMenu.cs b/src/Orchard.Web/Modules/Orchard.Tags/AdminMenu.cs index 43c57efce..5ca6758ff 100644 --- a/src/Orchard.Web/Modules/Orchard.Tags/AdminMenu.cs +++ b/src/Orchard.Web/Modules/Orchard.Tags/AdminMenu.cs @@ -7,10 +7,9 @@ namespace Orchard.Tags { public string MenuName { get { return "admin"; } } public void GetNavigation(NavigationBuilder builder) { - builder.Add(T("Tags"), "3", - menu => menu - .Add(T("Manage Tags"), "1.0", item => item.Action("Index", "Admin", new { area = "Orchard.Tags" }).Permission(Permissions.ManageTags)) - ); + builder.Add(T("Tags"), "20", + menu => menu.Add(T("List"), "0", item => item.Action("Index", "Admin", new { area = "Orchard.Tags" }) + .Permission(Permissions.ManageTags))); } } } diff --git a/src/Orchard.Web/Modules/Orchard.Themes/AdminMenu.cs b/src/Orchard.Web/Modules/Orchard.Themes/AdminMenu.cs index ff97ad3d8..7ff662f9e 100644 --- a/src/Orchard.Web/Modules/Orchard.Themes/AdminMenu.cs +++ b/src/Orchard.Web/Modules/Orchard.Themes/AdminMenu.cs @@ -7,10 +7,10 @@ namespace Orchard.Themes { public string MenuName { get { return "admin"; } } public void GetNavigation(NavigationBuilder builder) { - builder.Add(T("Site Design"), "10", - menu => menu - .Add(T("Themes"), "2.0", item => item.Action("Index", "Admin", new { area = "Orchard.Themes" }) - .Permission(Permissions.ManageThemes).Permission(Permissions.ApplyTheme))); + builder.Add(T("Themes"), "25", + menu => menu.Add(T("List"), "0", item => item.Action("Index", "Admin", new { area = "Orchard.Themes" }) + .Permission(Permissions.ManageThemes) + .Permission(Permissions.ApplyTheme))); } } } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Users/AdminMenu.cs b/src/Orchard.Web/Modules/Orchard.Users/AdminMenu.cs index 409339b38..61fd94b74 100644 --- a/src/Orchard.Web/Modules/Orchard.Users/AdminMenu.cs +++ b/src/Orchard.Web/Modules/Orchard.Users/AdminMenu.cs @@ -7,9 +7,9 @@ namespace Orchard.Users { public string MenuName { get { return "admin"; } } public void GetNavigation(NavigationBuilder builder) { - builder.Add(T("Users"), "9", - menu => menu - .Add(T("Manage Users"), "1.0", item => item.Action("Index", "Admin", new { area = "Orchard.Users" }).Permission(Permissions.ManageUsers))); + builder.Add(T("Users"), "40", + menu => menu.Add(T("Users"), "1.0", item => item.Action("Index", "Admin", new { area = "Orchard.Users" }) + .Permission(Permissions.ManageUsers))); } } } diff --git a/src/Orchard.Web/Modules/Orchard.Widgets/AdminMenu.cs b/src/Orchard.Web/Modules/Orchard.Widgets/AdminMenu.cs index d30656957..fd84a9fd9 100644 --- a/src/Orchard.Web/Modules/Orchard.Widgets/AdminMenu.cs +++ b/src/Orchard.Web/Modules/Orchard.Widgets/AdminMenu.cs @@ -7,9 +7,9 @@ namespace Orchard.Widgets { public string MenuName { get { return "admin"; } } public void GetNavigation(NavigationBuilder builder) { - builder.Add(T("Widgets"), "10", - menu => menu - .Add(T("Manage Widgets"), "1.0", item => item.Action("Index", "Admin", new { area = "Orchard.Widgets" }).Permission(Permissions.ManageWidgets))); + builder.Add(T("Widgets"), "4", + menu => menu.Add(T("Configure"), "0", item => item.Action("Index", "Admin", new { area = "Orchard.Widgets" }) + .Permission(Permissions.ManageWidgets))); } } } diff --git a/src/Orchard.Web/Themes/TheAdmin/Styles/site.css b/src/Orchard.Web/Themes/TheAdmin/Styles/site.css index b7d7da8f0..31437019b 100644 --- a/src/Orchard.Web/Themes/TheAdmin/Styles/site.css +++ b/src/Orchard.Web/Themes/TheAdmin/Styles/site.css @@ -116,7 +116,7 @@ number of columns: 24; actual width: 946; column width: 26; gutter width:14 float:right; width:83.08%; } -#navigation { +#menu .menu-admin { display:inline; float:left; width:15.401%; @@ -238,20 +238,20 @@ form.link button:hover { overflow:hidden; width:0; } -#navigation li { +#menu .menu-admin li { margin:5px 0 17px 4px; } -#navigation ul li { +#menu .menu-admin ul li { border:0; margin:0; } -#navigation li h3 { +#menu .menu-admin li h3 { padding:0 0 0 8px; } -#navigation li h3 a, #navigation li h3 span { +#menu .menu-admin li h3 a, #menu .menu-admin li h3 span { line-height:1.2em; } -#navigation ul a, #navigation ul a:link, #navigation ul a:visited { +#menu .menu-admin ul a, #menu .menu-admin ul a:link, #menu .menu-admin ul a:visited { color:#2d2f25; display:block; font-size:1.4em; @@ -259,7 +259,7 @@ form.link button:hover { padding:.4em 0 .4em 12px; text-decoration:none; } -#navigation ul a:hover, #navigation ul a:active, #navigation ul a:focus { +#menu .menu-admin ul a:hover, #menu .menu-admin ul a:active, #menu .menu-admin ul a:focus { background:#f5f5f5; color: #000; text-decoration:underline; diff --git a/src/Orchard.Web/Themes/TheAdmin/Views/Menu.cshtml b/src/Orchard.Web/Themes/TheAdmin/Views/Menu.cshtml index 9812eeb5e..ce2ec4b5c 100644 --- a/src/Orchard.Web/Themes/TheAdmin/Views/Menu.cshtml +++ b/src/Orchard.Web/Themes/TheAdmin/Views/Menu.cshtml @@ -1,17 +1,24 @@ @using System.Web.Routing; +@using Orchard.Utility.Extensions; @{ Script.Require("jQuery"); Script.Include("admin.js"); IEnumerable firstLevelMenuItems = Model; + + Model.Attributes.Add("role", "navigation"); + var tag = Tag(Model, "ul"); } - +@tag.EndElement @using(Script.Foot()) { diff --git a/src/Orchard/Mvc/Html/TemplateViewModelExtensions.cs b/src/Orchard/Mvc/Html/TemplateViewModelExtensions.cs index ba22edfbc..5f7e933b2 100644 --- a/src/Orchard/Mvc/Html/TemplateViewModelExtensions.cs +++ b/src/Orchard/Mvc/Html/TemplateViewModelExtensions.cs @@ -3,7 +3,7 @@ using System.Linq; using System.Web.Mvc; using System.Web.Mvc.Html; using Orchard.ContentManagement.ViewModels; -using Orchard.UI.Navigation; +using Orchard.UI; namespace Orchard.Mvc.Html { public static class TemplateViewModelExtensions { @@ -11,7 +11,7 @@ namespace Orchard.Mvc.Html { if (templates == null) return; - foreach (var template in templates.OrderByDescending(t => t.Position, new PositionComparer())) { + foreach (var template in templates.OrderByDescending(t => t.Position, new FlatPositionComparer())) { html.RenderTemplates(template); } } diff --git a/src/Orchard/Orchard.Framework.csproj b/src/Orchard/Orchard.Framework.csproj index f7da9c808..f93a771dd 100644 --- a/src/Orchard/Orchard.Framework.csproj +++ b/src/Orchard/Orchard.Framework.csproj @@ -791,7 +791,6 @@ - diff --git a/src/Orchard/UI/FlatPositionComparer.cs b/src/Orchard/UI/FlatPositionComparer.cs index 4055d1704..2cc478322 100644 --- a/src/Orchard/UI/FlatPositionComparer.cs +++ b/src/Orchard/UI/FlatPositionComparer.cs @@ -8,27 +8,33 @@ namespace Orchard.UI { if (x == y) return 0; - // "" == "5" - x = string.IsNullOrWhiteSpace(x) ? "5" : x.TrimStart(':'); // ':' is _sometimes_ used as a partition identifier - y = string.IsNullOrWhiteSpace(y) ? "5" : y.TrimStart(':'); + // null == "before; "" == "0" + x = x == null + ? "before" + : x.Trim() == "" ? "0" : x.Trim(':').TrimEnd('.'); // ':' is _sometimes_ used as a partition identifier + y = y == null + ? "before" + : y.Trim() == "" ? "0" : y.Trim(':').TrimEnd('.'); - var xParts = x.Split(new[] { '.' }, StringSplitOptions.RemoveEmptyEntries); - var yParts = y.Split(new[] { '.' }, StringSplitOptions.RemoveEmptyEntries); + var xParts = x.Split(new[] { '.', ':' }); + var yParts = y.Split(new[] { '.', ':' }); for (var i = 0; i < xParts.Count(); i++) { if (yParts.Length < i+1) // x is further defined meaning it comes after y (e.g. x == 1.2.3 and y == 1.2) return 1; int xPos; int yPos; + var xPart = string.IsNullOrWhiteSpace(xParts[i]) ? "before" : xParts[i]; + var yPart = string.IsNullOrWhiteSpace(yParts[i]) ? "before" : yParts[i]; - xParts[i] = NormalizeKnownPartitions(xParts[i]); - yParts[i] = NormalizeKnownPartitions(yParts[i]); + xPart = NormalizeKnownPartitions(xPart); + yPart = NormalizeKnownPartitions(yPart); - var xIsInt = int.TryParse(xParts[i], out xPos); - var yIsInt = int.TryParse(yParts[i], out yPos); + var xIsInt = int.TryParse(xPart, out xPos); + var yIsInt = int.TryParse(yPart, out yPos); if (!xIsInt && !yIsInt) - return string.Compare(x, y, StringComparison.OrdinalIgnoreCase); + return string.Compare(string.Join(".", xParts), string.Join(".", yParts), StringComparison.OrdinalIgnoreCase); if (!xIsInt || (yIsInt && xPos > yPos)) // non-int after int or greater x pos than y pos (which is an int) return 1; if (!yIsInt || xPos < yPos) diff --git a/src/Orchard/UI/Navigation/NavigationManager.cs b/src/Orchard/UI/Navigation/NavigationManager.cs index e8471eecc..e5b998390 100644 --- a/src/Orchard/UI/Navigation/NavigationManager.cs +++ b/src/Orchard/UI/Navigation/NavigationManager.cs @@ -92,7 +92,7 @@ namespace Orchard.UI.Navigation { private static IEnumerable Merge(IEnumerable> sources) { var comparer = new MenuItemComparer(); - var orderer = new PositionComparer(); + var orderer = new FlatPositionComparer(); return sources.SelectMany(x => x).ToArray() .GroupBy(key => key, (key, items) => Join(items), comparer) @@ -116,7 +116,7 @@ namespace Orchard.UI.Navigation { } private static string SelectBestPositionValue(IEnumerable positions) { - var comparer = new PositionComparer(); + var comparer = new FlatPositionComparer(); return positions.Aggregate(string.Empty, (agg, pos) => string.IsNullOrEmpty(agg) diff --git a/src/Orchard/UI/Navigation/PositionComparer.cs b/src/Orchard/UI/Navigation/PositionComparer.cs deleted file mode 100644 index aa0615ae7..000000000 --- a/src/Orchard/UI/Navigation/PositionComparer.cs +++ /dev/null @@ -1,105 +0,0 @@ -using System; -using System.Collections.Generic; - -namespace Orchard.UI.Navigation { - public class PositionComparer : IComparer { - public int Compare(string x, string y) { - if (x == null || y == null) { - return x == null && y == null ? 0 : (x == null ? -1 : 1); - } - if (x == "" || y == "") { - return x == "" && y == "" ? 0 : (x == "" ? -1 : 1); - } - - var xRange = new Range { Length = x.Length }; - var yRange = new Range { Length = y.Length }; - - while (xRange.Start != xRange.Length || yRange.Start != yRange.Length) { - var xSize = xRange.NextDot(x); - var ySize = yRange.NextDot(y); - - if (xSize == 0 || ySize == 0) { - // one or both sides are empty - if (xSize != 0 || ySize != 0) { - // favor the side that's not empty - return xSize - ySize; - } - // otherwise continue to the next segment if both are - } - else if (xRange.NumericValue != -1 && yRange.NumericValue != -1) { - // two strictly numeric values - - // return the difference - var diff = xRange.NumericValue - yRange.NumericValue; - if (diff != 0) - return diff; - - // or continue to next segment - } - else { - if (xRange.NumericValue != -1) { - // left-side only has numeric value, right-side explicitly greater - return -1; - } - - if (yRange.NumericValue != -1) { - // right-side only has numeric value, left-side explicitly greater - return 1; - } - - // two strictly non-numeric - var diff = string.Compare(x, xRange.Start, y, yRange.Start, Math.Min(xSize, ySize), - StringComparison.OrdinalIgnoreCase); - if (diff != 0) - return diff; - if (xSize != ySize) - return xSize - ySize; - } - - xRange.Advance(); - yRange.Advance(); - } - - return 0; - } - - struct Range { - public int Start { get; private set; } - private int End { get; set; } - public int Length { get; set; } - - public int NumericValue { get; private set; } - - public int NextDot(string value) { - if (Start == -1) { - End = -1; - return 0; - } - - End = value.IndexOf('.', Start); - - int numeric; - NumericValue = int.TryParse(Segment(value), out numeric) ? numeric : -1; - - return End == -1 ? Length - Start : End - Start; - } - - private string Segment(string value) { - if (Start == 0 && End == -1) { - return value; - } - if (End == -1) { - return value.Substring(Start); - } - return value.Substring(Start, End - Start); - } - - public void Advance() { - if (End == -1) - Start = Length; - else - Start = End + 1; - } - } - } -} \ No newline at end of file diff --git a/src/Orchard/Utility/Position.cs b/src/Orchard/Utility/Position.cs index 03c2e7d6a..d55266e40 100644 --- a/src/Orchard/Utility/Position.cs +++ b/src/Orchard/Utility/Position.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using Orchard.UI; using Orchard.UI.Navigation; namespace Orchard.Utility { @@ -9,7 +10,7 @@ namespace Orchard.Utility { var topMenuItem = menuItems.FirstOrDefault(); if (topMenuItem != null) { - var maxMenuItem = topMenuItem.Items.Where(PositionHasMojorNumber).OrderByDescending(mi => mi.Position, new PositionComparer()).FirstOrDefault(); + var maxMenuItem = topMenuItem.Items.Where(PositionHasMojorNumber).OrderByDescending(mi => mi.Position, new FlatPositionComparer()).FirstOrDefault(); var positionParts = maxMenuItem.Position.Split(new[] {'.'}, StringSplitOptions.RemoveEmptyEntries).Where(s => s.Trim() != ""); if (positionParts.Count() > 0) { int result; From f4721065b972a33d7bc6bcbcbb4b409831872925 Mon Sep 17 00:00:00 2001 From: Nathan Heskew Date: Mon, 1 Nov 2010 23:14:35 -0700 Subject: [PATCH 3/3] Giving the content edit link a more friendly name --HG-- branch : dev --- src/Orchard/Mvc/Html/ContentItemExtensions.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Orchard/Mvc/Html/ContentItemExtensions.cs b/src/Orchard/Mvc/Html/ContentItemExtensions.cs index f567c9f71..999a7911f 100644 --- a/src/Orchard/Mvc/Html/ContentItemExtensions.cs +++ b/src/Orchard/Mvc/Html/ContentItemExtensions.cs @@ -43,7 +43,7 @@ namespace Orchard.Mvc.Html { return null; return html.ActionLink( - NonNullOrEmpty(linkText, metadata.DisplayText, "edit"), + NonNullOrEmpty(linkText, metadata.DisplayText, content.ContentItem.TypeDefinition.DisplayName), Convert.ToString(metadata.EditorRouteValues["action"]), metadata.EditorRouteValues.Merge(additionalRouteValues)); }