mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-09-22 20:13:50 +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() {
|
public ActionResult Index() {
|
||||||
try {
|
try {
|
||||||
string homepage = CurrentSite.HomePage;
|
var homepage = CurrentSite.HomePage;
|
||||||
if (String.IsNullOrEmpty(homepage)) {
|
if (String.IsNullOrEmpty(homepage)) {
|
||||||
return View(new BaseViewModel());
|
return View(new BaseViewModel());
|
||||||
}
|
}
|
||||||
|
|
||||||
string[] homePageParameters = homepage.Split(';');
|
var homePageParameters = homepage.Split(';');
|
||||||
if (homePageParameters.Length != 2) {
|
if (homePageParameters.Length != 2) {
|
||||||
return View(new BaseViewModel());
|
return View(new BaseViewModel());
|
||||||
}
|
}
|
||||||
string providerName = homePageParameters[0];
|
var providerName = homePageParameters[0];
|
||||||
int item = Int32.Parse(homePageParameters[1]);
|
var item = Int32.Parse(homePageParameters[1]);
|
||||||
|
|
||||||
foreach (var provider in _homePageProviders) {
|
foreach (var provider in _homePageProviders) {
|
||||||
if (String.Equals(provider.GetProviderName(), providerName)) {
|
if (!string.Equals(provider.GetProviderName(), providerName))
|
||||||
ActionResult result = provider.GetHomePage(item);
|
continue;
|
||||||
if (result is ViewResultBase) {
|
|
||||||
ViewResultBase resultBase = result as ViewResultBase;
|
var result = provider.GetHomePage(item);
|
||||||
ViewData.Model = resultBase.ViewData.Model;
|
if (result is ViewResultBase) {
|
||||||
resultBase.ViewData = ViewData;
|
var resultBase = result as ViewResultBase;
|
||||||
}
|
ViewData.Model = resultBase.ViewData.Model;
|
||||||
return result;
|
resultBase.ViewData = ViewData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
return View(new BaseViewModel());
|
return View(new BaseViewModel());
|
||||||
|
@@ -195,7 +195,7 @@ namespace Orchard.Pages.Controllers {
|
|||||||
_pageService.Publish(model.Page.Item);
|
_pageService.Publish(model.Page.Item);
|
||||||
Services.Notifier.Information(T("Page has been published"));
|
Services.Notifier.Information(T("Page has been published"));
|
||||||
if (model.PromoteToHomePage) {
|
if (model.PromoteToHomePage) {
|
||||||
CurrentSite.HomePage = "PagesHomePageProvider;" + model.Page.Item.Id;
|
CurrentSite.HomePage = "PageHomePageProvider;" + model.Page.Item.Id;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case "PublishLater":
|
case "PublishLater":
|
||||||
|
@@ -77,7 +77,7 @@
|
|||||||
<Compile Include="Security\Authorization.cs" />
|
<Compile Include="Security\Authorization.cs" />
|
||||||
<Compile Include="Services\IPageService.cs" />
|
<Compile Include="Services\IPageService.cs" />
|
||||||
<Compile Include="Services\PageService.cs" />
|
<Compile Include="Services\PageService.cs" />
|
||||||
<Compile Include="Services\PagesHomePageProvider.cs" />
|
<Compile Include="Services\PageHomePageProvider.cs" />
|
||||||
<Compile Include="Services\SlugConstraint.cs">
|
<Compile Include="Services\SlugConstraint.cs">
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
@@ -1,16 +1,15 @@
|
|||||||
using System.Web.Mvc;
|
using System.Web.Mvc;
|
||||||
using Orchard.Localization;
|
using Orchard.Localization;
|
||||||
using Orchard.Mvc.Results;
|
using Orchard.Mvc.Results;
|
||||||
using Orchard.Pages.Models;
|
|
||||||
using Orchard.Pages.ViewModels;
|
using Orchard.Pages.ViewModels;
|
||||||
using Orchard.Services;
|
using Orchard.Services;
|
||||||
|
|
||||||
namespace Orchard.Pages.Services {
|
namespace Orchard.Pages.Services {
|
||||||
public class PagesHomePageProvider : IHomePageProvider {
|
public class PageHomePageProvider : IHomePageProvider {
|
||||||
private readonly IPageService _pageService;
|
private readonly IPageService _pageService;
|
||||||
private readonly ISlugConstraint _slugConstraint;
|
private readonly ISlugConstraint _slugConstraint;
|
||||||
|
|
||||||
public PagesHomePageProvider(IOrchardServices services, IPageService pageService, ISlugConstraint slugConstraint) {
|
public PageHomePageProvider(IOrchardServices services, IPageService pageService, ISlugConstraint slugConstraint) {
|
||||||
Services = services;
|
Services = services;
|
||||||
_slugConstraint = slugConstraint;
|
_slugConstraint = slugConstraint;
|
||||||
_pageService = pageService;
|
_pageService = pageService;
|
||||||
@@ -23,11 +22,14 @@ namespace Orchard.Pages.Services {
|
|||||||
#region Implementation of IHomePageProvider
|
#region Implementation of IHomePageProvider
|
||||||
|
|
||||||
public string GetProviderName() {
|
public string GetProviderName() {
|
||||||
return "PagesHomePageProvider";
|
return "PageHomePageProvider";
|
||||||
}
|
}
|
||||||
|
|
||||||
public ActionResult GetHomePage(int itemId) {
|
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);
|
var correctedSlug = _slugConstraint.LookupPublishedSlug(page.Slug);
|
||||||
if (correctedSlug == null)
|
if (correctedSlug == null)
|
||||||
return new NotFoundResult();
|
return new NotFoundResult();
|
@@ -109,8 +109,10 @@ namespace Orchard.Setup.Controllers {
|
|||||||
page.As<RoutableAspect>().Title = T("Home").ToString();
|
page.As<RoutableAspect>().Title = T("Home").ToString();
|
||||||
page.As<HasComments>().CommentsShown = false;
|
page.As<HasComments>().CommentsShown = false;
|
||||||
page.As<CommonAspect>().Owner = user;
|
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);
|
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
|
// add a menu item for the shiny new home page
|
||||||
var menuItem = contentManager.Create("menuitem");
|
var menuItem = contentManager.Create("menuitem");
|
||||||
|
Reference in New Issue
Block a user