using System.Linq; using System.Web.Mvc; using Orchard.Blogs.Extensions; using Orchard.Blogs.Models; using Orchard.Blogs.Services; using Orchard.Blogs.ViewModels; using Orchard.Core.Feeds; using Orchard.Mvc.Results; namespace Orchard.Blogs.Controllers { public class BlogController : Controller { private readonly IOrchardServices _services; private readonly IBlogService _blogService; private readonly IFeedManager _feedManager; public BlogController( IOrchardServices services, IBlogService blogService, IFeedManager feedManager) { _services = services; _blogService = blogService; _feedManager = feedManager; } public ActionResult List() { var model = new BlogsViewModel { Blogs = _blogService.Get().Select(b => _services.ContentManager.BuildDisplayModel(b, "Summary")) }; return View(model); } //TODO: (erikpo) Should move the slug parameter and get call and null check up into a model binder public ActionResult Item(string blogSlug) { Blog blog = _blogService.Get(blogSlug); if (blog == null) return new NotFoundResult(); var model = new BlogViewModel { Blog = _services.ContentManager.BuildDisplayModel(blog, "Detail") }; _feedManager.Register(blog); return View(model); } } }