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