diff --git a/src/Orchard.Web/Modules/Orchard.Blogs/Controllers/BlogAdminController.cs b/src/Orchard.Web/Modules/Orchard.Blogs/Controllers/BlogAdminController.cs
index 6d7bde8ce..aa5cda63c 100644
--- a/src/Orchard.Web/Modules/Orchard.Blogs/Controllers/BlogAdminController.cs
+++ b/src/Orchard.Web/Modules/Orchard.Blogs/Controllers/BlogAdminController.cs
@@ -1,5 +1,7 @@
+using System;
using System.Linq;
using System.Web.Mvc;
+using JetBrains.Annotations;
using Orchard.Blogs.Extensions;
using Orchard.Blogs.Models;
using Orchard.Blogs.Services;
@@ -10,6 +12,7 @@ using Orchard.Data;
using Orchard.Localization;
using Orchard.Mvc.Results;
using Orchard.Security;
+using Orchard.Settings;
using Orchard.UI.Notify;
namespace Orchard.Blogs.Controllers {
@@ -33,6 +36,7 @@ namespace Orchard.Blogs.Controllers {
}
private Localizer T { get; set; }
+ protected virtual ISite CurrentSite { get; [UsedImplicitly] private set; }
public ActionResult Create() {
//TODO: (erikpo) Might think about moving this to an ActionFilter/Attribute
@@ -100,12 +104,17 @@ namespace Orchard.Blogs.Controllers {
return new NotFoundResult();
var model = new BlogEditViewModel {
- Blog = _services.ContentManager.UpdateEditorModel(blog, this)
+ Blog = _services.ContentManager.UpdateEditorModel(blog, this),
};
if (!ModelState.IsValid)
return View(model);
+ string setAsHomePage = input["PromoteToHomePage"];
+ if (!String.IsNullOrEmpty(setAsHomePage) && !setAsHomePage.Equals("false")) {
+ CurrentSite.HomePage = "BlogHomePageProvider;" + model.Blog.Item.Id;
+ }
+
_notifier.Information(T("Blog information updated"));
return Redirect(Url.BlogsForAdmin());
diff --git a/src/Orchard.Web/Modules/Orchard.Blogs/Orchard.Blogs.csproj b/src/Orchard.Web/Modules/Orchard.Blogs/Orchard.Blogs.csproj
index 9ad777ca2..a3aed286c 100644
--- a/src/Orchard.Web/Modules/Orchard.Blogs/Orchard.Blogs.csproj
+++ b/src/Orchard.Web/Modules/Orchard.Blogs/Orchard.Blogs.csproj
@@ -85,6 +85,7 @@
+
diff --git a/src/Orchard.Web/Modules/Orchard.Blogs/Services/BlogHomePageProvider.cs b/src/Orchard.Web/Modules/Orchard.Blogs/Services/BlogHomePageProvider.cs
new file mode 100644
index 000000000..b3ad68f4b
--- /dev/null
+++ b/src/Orchard.Web/Modules/Orchard.Blogs/Services/BlogHomePageProvider.cs
@@ -0,0 +1,49 @@
+using System.Linq;
+using System.Web.Mvc;
+using Orchard.Blogs.Extensions;
+using Orchard.Blogs.Models;
+using Orchard.Blogs.ViewModels;
+using Orchard.Mvc.Results;
+using Orchard.Services;
+using Orchard.Core.Feeds;
+
+namespace Orchard.Blogs.Services {
+ public class BlogHomePageProvider : IHomePageProvider {
+ private readonly IBlogService _blogService;
+ private readonly IFeedManager _feedManager;
+
+ public BlogHomePageProvider(IOrchardServices services, IBlogService blogService, IFeedManager feedManager) {
+ Services = services;
+ _feedManager = feedManager;
+ _blogService = blogService;
+ }
+
+ public IOrchardServices Services { get; private set; }
+
+ #region Implementation of IHomePageProvider
+
+ public string GetProviderName() {
+ return "BlogHomePageProvider";
+ }
+
+ public ActionResult GetHomePage(int itemId) {
+ Blog blog = _blogService.Get().Where(x => x.Id == itemId).FirstOrDefault();
+
+ if (blog == null)
+ return new NotFoundResult();
+
+ var model = new BlogViewModel {
+ Blog = Services.ContentManager.BuildDisplayModel(blog, "Detail")
+ };
+
+ _feedManager.Register(blog);
+
+ return new ViewResult {
+ ViewName = "~/Modules/Orchard.Blogs/Views/Blog/Item.ascx",
+ ViewData = new ViewDataDictionary(model)
+ };
+ }
+
+ #endregion
+ }
+}
diff --git a/src/Orchard.Web/Modules/Orchard.Blogs/ViewModels/BlogEditViewModel.cs b/src/Orchard.Web/Modules/Orchard.Blogs/ViewModels/BlogEditViewModel.cs
index 8b013decf..ebeae456e 100644
--- a/src/Orchard.Web/Modules/Orchard.Blogs/ViewModels/BlogEditViewModel.cs
+++ b/src/Orchard.Web/Modules/Orchard.Blogs/ViewModels/BlogEditViewModel.cs
@@ -4,5 +4,6 @@ using Orchard.Mvc.ViewModels;
namespace Orchard.Blogs.ViewModels {
public class BlogEditViewModel : AdminViewModel {
public ContentItemViewModel Blog { get; set; }
+ public bool PromoteToHomePage { get; set; }
}
}
\ No newline at end of file
diff --git a/src/Orchard.Web/Modules/Orchard.Blogs/Views/BlogAdmin/Edit.ascx b/src/Orchard.Web/Modules/Orchard.Blogs/Views/BlogAdmin/Edit.ascx
index 2f5ac0678..d90e5fafe 100644
--- a/src/Orchard.Web/Modules/Orchard.Blogs/Views/BlogAdmin/Edit.ascx
+++ b/src/Orchard.Web/Modules/Orchard.Blogs/Views/BlogAdmin/Edit.ascx
@@ -4,5 +4,7 @@
<% using (Html.BeginFormAntiForgeryPost()) { %>
<%=Html.ValidationSummary() %>
<%=Html.EditorForItem(m => m.Blog) %>
+ <%=Html.EditorFor(m => m.PromoteToHomePage) %>
+
<%
} %>
\ No newline at end of file