From a5416218db4fbf58e1404c0208c5c849bebe4f89 Mon Sep 17 00:00:00 2001 From: randompete Date: Wed, 7 Dec 2011 23:32:57 +0000 Subject: [PATCH] Remove Routable dependency on IHomePageProvider --HG-- branch : autoroute --- .../Core/Routable/Drivers/RoutePartDriver.cs | 14 ----- .../Routable/Handlers/RoutePartHandler.cs | 39 +----------- .../Services/RoutableHomePageProvider.cs | 59 ------------------- .../Routable/Views/Routable.HomePage.cshtml | 4 -- 4 files changed, 3 insertions(+), 113 deletions(-) delete mode 100644 src/Orchard.Web/Core/Routable/Services/RoutableHomePageProvider.cs delete mode 100644 src/Orchard.Web/Core/Routable/Views/Routable.HomePage.cshtml diff --git a/src/Orchard.Web/Core/Routable/Drivers/RoutePartDriver.cs b/src/Orchard.Web/Core/Routable/Drivers/RoutePartDriver.cs index e940dd7fc..cd285045f 100644 --- a/src/Orchard.Web/Core/Routable/Drivers/RoutePartDriver.cs +++ b/src/Orchard.Web/Core/Routable/Drivers/RoutePartDriver.cs @@ -18,16 +18,13 @@ namespace Orchard.Core.Routable.Drivers { private readonly IOrchardServices _services; private readonly IRoutableService _routableService; private readonly IHttpContextAccessor _httpContextAccessor; - private readonly IHomePageProvider _routableHomePageProvider; public RoutePartDriver(IOrchardServices services, IRoutableService routableService, - IEnumerable homePageProviders, IHttpContextAccessor httpContextAccessor) { _services = services; _routableService = routableService; _httpContextAccessor = httpContextAccessor; - _routableHomePageProvider = homePageProviders.SingleOrDefault(p => p.GetProviderName() == RoutableHomePageProvider.Name); T = NullLocalizer.Instance; } @@ -71,7 +68,6 @@ namespace Orchard.Core.Routable.Drivers { var containerUrl = new UriBuilder(request.ToRootUrlString()) { Path = (request.ApplicationPath ?? "").TrimEnd('/') + "/" + (part.GetContainerPath() ?? "") }; model.ContainerAbsoluteUrl = containerUrl.Uri.ToString().TrimEnd('/'); - model.PromoteToHomePage = model.Id != 0 && _routableHomePageProvider != null && _services.WorkContext.CurrentSite.HomePage == _routableHomePageProvider.GetSettingValue(model.Id); return ContentShape("Parts_Routable_Edit", () => shapeHelper.EditorTemplate(TemplateName: TemplateName, Model: model, Prefix: Prefix)); } @@ -111,22 +107,12 @@ namespace Orchard.Core.Routable.Drivers { part.Path = path; } - var promoteToHomePage = context.Attribute(part.PartDefinition.Name, "PromoteToHomePage"); - if (promoteToHomePage != null) { - part.PromoteToHomePage = Convert.ToBoolean(promoteToHomePage); - if (part.PromoteToHomePage && _routableHomePageProvider != null) { - _services.WorkContext.CurrentSite.HomePage = _routableHomePageProvider.GetSettingValue(part.ContentItem.Id); - } - } } protected override void Exporting(RoutePart part, ExportContentContext context) { context.Element(part.PartDefinition.Name).SetAttributeValue("Title", part.Title); context.Element(part.PartDefinition.Name).SetAttributeValue("Slug", part.Slug); context.Element(part.PartDefinition.Name).SetAttributeValue("Path", part.Path); - if (_services.WorkContext.CurrentSite.HomePage == _routableHomePageProvider.GetSettingValue(part.ContentItem.Id)) { - context.Element(part.PartDefinition.Name).SetAttributeValue("PromoteToHomePage", "true"); - } } } } \ No newline at end of file diff --git a/src/Orchard.Web/Core/Routable/Handlers/RoutePartHandler.cs b/src/Orchard.Web/Core/Routable/Handlers/RoutePartHandler.cs index b1eb08bd9..13cfa7f6a 100644 --- a/src/Orchard.Web/Core/Routable/Handlers/RoutePartHandler.cs +++ b/src/Orchard.Web/Core/Routable/Handlers/RoutePartHandler.cs @@ -18,7 +18,6 @@ namespace Orchard.Core.Routable.Handlers { private readonly IRoutableService _routableService; private readonly IContentManager _contentManager; private readonly IWorkContextAccessor _workContextAccessor; - private readonly IHomePageProvider _routableHomePageProvider; public RoutePartHandler( IOrchardServices services, @@ -26,14 +25,12 @@ namespace Orchard.Core.Routable.Handlers { IRoutablePathConstraint routablePathConstraint, IRoutableService routableService, IContentManager contentManager, - IWorkContextAccessor workContextAccessor, - IEnumerable homePageProviders) { + IWorkContextAccessor workContextAccessor) { _services = services; _routablePathConstraint = routablePathConstraint; _routableService = routableService; _contentManager = contentManager; _workContextAccessor = workContextAccessor; - _routableHomePageProvider = homePageProviders.SingleOrDefault(p => p.GetProviderName() == RoutableHomePageProvider.Name); T = NullLocalizer.Instance; Filters.Add(StorageFilter.For(repository)); @@ -51,32 +48,6 @@ namespace Orchard.Core.Routable.Handlers { Action handler = (context, route) => { FinalizePath(route, context, processSlug); - - if (_routableHomePageProvider == null) - return; - - var homePageSetting = _workContextAccessor.GetContext().CurrentSite.HomePage; - var currentHomePageId = !string.IsNullOrWhiteSpace(homePageSetting) - ? _routableHomePageProvider.GetHomePageId(homePageSetting) - : 0; - - if (route.Id != 0 && (route.Id == currentHomePageId || route.PromoteToHomePage)) { - - if (currentHomePageId != route.Id) { - // reset the path on the current home page - var currentHomePage = _contentManager.Get(currentHomePageId); - if (currentHomePage != null) - FinalizePath(currentHomePage.As(), context, processSlug); - // set the new home page - _services.WorkContext.CurrentSite.HomePage = _routableHomePageProvider.GetSettingValue(route.ContentItem.Id); - } - - // readjust the constraints of the current current home page - _routablePathConstraint.RemovePath(route.Path); - route.Path = ""; - _routableService.FixContainedPaths(route); - _routablePathConstraint.AddPath(route.Path); - } }; OnPublished(handler); @@ -128,11 +99,9 @@ namespace Orchard.Core.Routable.Handlers { public class RoutePartHandlerBase : ContentHandlerBase { private readonly IWorkContextAccessor _workContextAccessor; - private readonly IHomePageProvider _routableHomePageProvider; - public RoutePartHandlerBase(IWorkContextAccessor workContextAccessor, IEnumerable homePageProviders) { + public RoutePartHandlerBase(IWorkContextAccessor workContextAccessor) { _workContextAccessor = workContextAccessor; - _routableHomePageProvider = homePageProviders.SingleOrDefault(p => p.GetProviderName() == RoutableHomePageProvider.Name); } public override void GetContentItemMetadata(GetContentItemMetadataContext context) { @@ -144,9 +113,7 @@ namespace Orchard.Core.Routable.Handlers { // set the display route values if it hasn't been set or only has been set by the Contents module. // allows other modules to set their own display. probably not common enough to warrant some priority implementation if (context.Metadata.DisplayRouteValues == null || context.Metadata.DisplayRouteValues["Area"] as string == "Contents") { - var itemPath = routable.Id == _routableHomePageProvider.GetHomePageId(_workContextAccessor.GetContext().CurrentSite.HomePage) - ? "" - : routable.Path; + var itemPath = routable.Path; context.Metadata.DisplayRouteValues = new RouteValueDictionary { {"Area", "Routable"}, diff --git a/src/Orchard.Web/Core/Routable/Services/RoutableHomePageProvider.cs b/src/Orchard.Web/Core/Routable/Services/RoutableHomePageProvider.cs deleted file mode 100644 index 24a00b28a..000000000 --- a/src/Orchard.Web/Core/Routable/Services/RoutableHomePageProvider.cs +++ /dev/null @@ -1,59 +0,0 @@ -using System; -using System.Web.Mvc; -using JetBrains.Annotations; -using Orchard.Core.Routable.Models; -using Orchard.DisplayManagement; -using Orchard.Localization; -using Orchard.Services; -using Orchard.ContentManagement; - -namespace Orchard.Core.Routable.Services { - [UsedImplicitly] - public class RoutableHomePageProvider : IHomePageProvider { - private readonly IContentManager _contentManager; - public const string Name = "RoutableHomePageProvider"; - - public RoutableHomePageProvider( - IContentManager contentManager, - IShapeFactory shapeFactory) { - _contentManager = contentManager; - Shape = shapeFactory; - T = NullLocalizer.Instance; - } - - public Localizer T { get; set; } - dynamic Shape { get; set; } - - public string GetProviderName() { - return Name; - } - - public string GetSettingValue(int id) { - return GetProviderName() + ";" + id; - } - - public int GetHomePageId(string value) { - int id; - - if (string.IsNullOrWhiteSpace(value) || !int.TryParse(value.Substring(Name.Length + 1), out id)) - throw new ApplicationException(T("Invalid home page setting value for {0}: {1}", Name, value).Text); - - return id; - } - - public ActionResult GetHomePage(int id) { - var contentItem = _contentManager.Get(id, VersionOptions.Published); - if (contentItem == null || !contentItem.Is()) - return new HttpNotFoundResult(); - - // get the display metadata for the home page item - var displayRouteValues = _contentManager.GetItemMetadata(contentItem).DisplayRouteValues; - - var model = Shape.ViewModel(RouteValues: displayRouteValues); - return new PartialViewResult { - ViewName = "Routable.HomePage", - ViewData = new ViewDataDictionary(model) - }; - } - } -} diff --git a/src/Orchard.Web/Core/Routable/Views/Routable.HomePage.cshtml b/src/Orchard.Web/Core/Routable/Views/Routable.HomePage.cshtml deleted file mode 100644 index 594797276..000000000 --- a/src/Orchard.Web/Core/Routable/Views/Routable.HomePage.cshtml +++ /dev/null @@ -1,4 +0,0 @@ -@{ - RouteValueDictionary routeValues = Model.RouteValues; - Html.RenderAction(routeValues["action"] as string, routeValues["controller"] as string, routeValues); -} \ No newline at end of file