--HG--
branch : dev
rename : src/Orchard.Web/Modules/Orchard.Pages/Services/PagesHomePageProvider.cs => src/Orchard.Web/Modules/Orchard.Pages/Services/PageHomePageProvider.cs
This commit is contained in:
Erik Porter
2010-03-03 11:41:51 -08:00
parent 32df33832c
commit a4a81b86e7
5 changed files with 26 additions and 20 deletions

View File

@@ -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());

View File

@@ -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":

View File

@@ -77,7 +77,7 @@
<Compile Include="Security\Authorization.cs" />
<Compile Include="Services\IPageService.cs" />
<Compile Include="Services\PageService.cs" />
<Compile Include="Services\PagesHomePageProvider.cs" />
<Compile Include="Services\PageHomePageProvider.cs" />
<Compile Include="Services\SlugConstraint.cs">
<SubType>Code</SubType>
</Compile>

View File

@@ -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();

View File

@@ -109,8 +109,10 @@ namespace Orchard.Setup.Controllers {
page.As<RoutableAspect>().Title = T("Home").ToString();
page.As<HasComments>().CommentsShown = false;
page.As<CommonAspect>().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");