mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-09-22 12:09:41 +08:00
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
This commit is contained in:
@@ -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());
|
||||
|
@@ -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":
|
||||
|
@@ -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>
|
||||
|
@@ -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();
|
@@ -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");
|
||||
|
Reference in New Issue
Block a user