From a4a81b86e74829357195780dc7b1099be5e65015 Mon Sep 17 00:00:00 2001 From: Erik Porter Date: Wed, 3 Mar 2010 11:41:51 -0800 Subject: [PATCH] Fixed bug #16243 --HG-- branch : dev rename : src/Orchard.Web/Modules/Orchard.Pages/Services/PagesHomePageProvider.cs => src/Orchard.Web/Modules/Orchard.Pages/Services/PageHomePageProvider.cs --- .../HomePage/Controllers/HomeController.cs | 26 ++++++++++--------- .../Controllers/AdminController.cs | 2 +- .../Orchard.Pages/Orchard.Pages.csproj | 2 +- ...ageProvider.cs => PageHomePageProvider.cs} | 12 +++++---- .../Controllers/SetupController.cs | 4 ++- 5 files changed, 26 insertions(+), 20 deletions(-) rename src/Orchard.Web/Modules/Orchard.Pages/Services/{PagesHomePageProvider.cs => PageHomePageProvider.cs} (77%) diff --git a/src/Orchard.Web/Core/HomePage/Controllers/HomeController.cs b/src/Orchard.Web/Core/HomePage/Controllers/HomeController.cs index 775b3d6da..c3f227035 100644 --- a/src/Orchard.Web/Core/HomePage/Controllers/HomeController.cs +++ b/src/Orchard.Web/Core/HomePage/Controllers/HomeController.cs @@ -22,28 +22,30 @@ namespace Orchard.Core.HomePage.Controllers { public ActionResult Index() { try { - string homepage = CurrentSite.HomePage; + var homepage = CurrentSite.HomePage; if (String.IsNullOrEmpty(homepage)) { return View(new BaseViewModel()); } - string[] homePageParameters = homepage.Split(';'); + var homePageParameters = homepage.Split(';'); if (homePageParameters.Length != 2) { return View(new BaseViewModel()); } - string providerName = homePageParameters[0]; - int item = Int32.Parse(homePageParameters[1]); + var providerName = homePageParameters[0]; + var item = Int32.Parse(homePageParameters[1]); foreach (var provider in _homePageProviders) { - if (String.Equals(provider.GetProviderName(), providerName)) { - ActionResult result = provider.GetHomePage(item); - if (result is ViewResultBase) { - ViewResultBase resultBase = result as ViewResultBase; - ViewData.Model = resultBase.ViewData.Model; - resultBase.ViewData = ViewData; - } - return result; + if (!string.Equals(provider.GetProviderName(), providerName)) + continue; + + var result = provider.GetHomePage(item); + if (result is ViewResultBase) { + var resultBase = result as ViewResultBase; + ViewData.Model = resultBase.ViewData.Model; + resultBase.ViewData = ViewData; } + + return result; } return View(new BaseViewModel()); diff --git a/src/Orchard.Web/Modules/Orchard.Pages/Controllers/AdminController.cs b/src/Orchard.Web/Modules/Orchard.Pages/Controllers/AdminController.cs index af560d976..56f5a899c 100644 --- a/src/Orchard.Web/Modules/Orchard.Pages/Controllers/AdminController.cs +++ b/src/Orchard.Web/Modules/Orchard.Pages/Controllers/AdminController.cs @@ -195,7 +195,7 @@ namespace Orchard.Pages.Controllers { _pageService.Publish(model.Page.Item); Services.Notifier.Information(T("Page has been published")); if (model.PromoteToHomePage) { - CurrentSite.HomePage = "PagesHomePageProvider;" + model.Page.Item.Id; + CurrentSite.HomePage = "PageHomePageProvider;" + model.Page.Item.Id; } break; case "PublishLater": diff --git a/src/Orchard.Web/Modules/Orchard.Pages/Orchard.Pages.csproj b/src/Orchard.Web/Modules/Orchard.Pages/Orchard.Pages.csproj index 16eae8090..d7153e6b6 100644 --- a/src/Orchard.Web/Modules/Orchard.Pages/Orchard.Pages.csproj +++ b/src/Orchard.Web/Modules/Orchard.Pages/Orchard.Pages.csproj @@ -77,7 +77,7 @@ - + Code diff --git a/src/Orchard.Web/Modules/Orchard.Pages/Services/PagesHomePageProvider.cs b/src/Orchard.Web/Modules/Orchard.Pages/Services/PageHomePageProvider.cs similarity index 77% rename from src/Orchard.Web/Modules/Orchard.Pages/Services/PagesHomePageProvider.cs rename to src/Orchard.Web/Modules/Orchard.Pages/Services/PageHomePageProvider.cs index 7f13ccfa1..36f7526de 100644 --- a/src/Orchard.Web/Modules/Orchard.Pages/Services/PagesHomePageProvider.cs +++ b/src/Orchard.Web/Modules/Orchard.Pages/Services/PageHomePageProvider.cs @@ -1,16 +1,15 @@ using System.Web.Mvc; using Orchard.Localization; using Orchard.Mvc.Results; -using Orchard.Pages.Models; using Orchard.Pages.ViewModels; using Orchard.Services; namespace Orchard.Pages.Services { - public class PagesHomePageProvider : IHomePageProvider { + public class PageHomePageProvider : IHomePageProvider { private readonly IPageService _pageService; private readonly ISlugConstraint _slugConstraint; - public PagesHomePageProvider(IOrchardServices services, IPageService pageService, ISlugConstraint slugConstraint) { + public PageHomePageProvider(IOrchardServices services, IPageService pageService, ISlugConstraint slugConstraint) { Services = services; _slugConstraint = slugConstraint; _pageService = pageService; @@ -23,11 +22,14 @@ namespace Orchard.Pages.Services { #region Implementation of IHomePageProvider public string GetProviderName() { - return "PagesHomePageProvider"; + return "PageHomePageProvider"; } public ActionResult GetHomePage(int itemId) { - Page page = _pageService.Get(itemId); + var page = _pageService.Get(itemId); + if (page == null) + return new NotFoundResult(); + var correctedSlug = _slugConstraint.LookupPublishedSlug(page.Slug); if (correctedSlug == null) return new NotFoundResult(); diff --git a/src/Orchard.Web/Modules/Orchard.Setup/Controllers/SetupController.cs b/src/Orchard.Web/Modules/Orchard.Setup/Controllers/SetupController.cs index c7176fe6f..d73b0f88b 100644 --- a/src/Orchard.Web/Modules/Orchard.Setup/Controllers/SetupController.cs +++ b/src/Orchard.Web/Modules/Orchard.Setup/Controllers/SetupController.cs @@ -109,8 +109,10 @@ namespace Orchard.Setup.Controllers { page.As().Title = T("Home").ToString(); page.As().CommentsShown = false; page.As().Owner = user; + //HACK: (erikpo) Since content items are published by default they don't get a chance for handlers to fire to setup default values which blog up other pages in the system. Figure out what they are published by default and change + page.VersionRecord.Published = false; contentManager.Publish(page); - siteSettings.Record.HomePage = "PagesHomePageProvider;" + page.Id; + siteSettings.Record.HomePage = "PageHomePageProvider;" + page.Id; // add a menu item for the shiny new home page var menuItem = contentManager.Create("menuitem");