diff --git a/src/Orchard.Web/Modules/Orchard.Blogs/Drivers/BlogArchivesPartDriver.cs b/src/Orchard.Web/Modules/Orchard.Blogs/Drivers/BlogArchivesPartDriver.cs index fcc6881c0..1aed18de4 100644 --- a/src/Orchard.Web/Modules/Orchard.Blogs/Drivers/BlogArchivesPartDriver.cs +++ b/src/Orchard.Web/Modules/Orchard.Blogs/Drivers/BlogArchivesPartDriver.cs @@ -6,27 +6,28 @@ using Orchard.Blogs.ViewModels; using Orchard.ContentManagement; using Orchard.ContentManagement.Drivers; using Orchard.ContentManagement.Handlers; +using Orchard.Core.Routable.Models; namespace Orchard.Blogs.Drivers { public class BlogArchivesPartDriver : ContentPartDriver { private readonly IBlogService _blogService; private readonly IBlogPostService _blogPostService; + private readonly IContentManager _contentManager; private readonly IBlogPathConstraint _blogPathConstraint; public BlogArchivesPartDriver( IBlogService blogService, IBlogPostService blogPostService, - IBlogPathConstraint blogPathConstraint) { + IContentManager contentManager) { _blogService = blogService; _blogPostService = blogPostService; - _blogPathConstraint = blogPathConstraint; + _contentManager = contentManager; } protected override DriverResult Display(BlogArchivesPart part, string displayType, dynamic shapeHelper) { return ContentShape("Parts_Blogs_BlogArchives", () => { - var path = _blogPathConstraint.FindPath(part.ForBlog); - BlogPart blog = _blogService.Get(path); + BlogPart blog = GetBlogFromSlug(part.ForBlog); if (blog == null) return null; @@ -37,7 +38,7 @@ namespace Orchard.Blogs.Drivers { protected override DriverResult Editor(BlogArchivesPart part, dynamic shapeHelper) { var viewModel = new BlogArchivesViewModel { - Path = part.ForBlog, + Slug = part.ForBlog, Blogs = _blogService.Get().ToList().OrderBy(b => b.Name) }; @@ -48,7 +49,7 @@ namespace Orchard.Blogs.Drivers { protected override DriverResult Editor(BlogArchivesPart part, IUpdateModel updater, dynamic shapeHelper) { var viewModel = new BlogArchivesViewModel(); if (updater.TryUpdateModel(viewModel, Prefix, null, null)) { - part.ForBlog = viewModel.Path; + part.ForBlog = viewModel.Slug; } return Editor(part, shapeHelper); @@ -64,5 +65,11 @@ namespace Orchard.Blogs.Drivers { protected override void Exporting(BlogArchivesPart part, ExportContentContext context) { context.Element(part.PartDefinition.Name).SetAttributeValue("BlogSlug", part.ForBlog); } + + private BlogPart GetBlogFromSlug(string slug) { + return _contentManager.Query() + .Join().Where(rr => rr.Slug == slug) + .List().FirstOrDefault(); + } } } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Blogs/Drivers/RecentBlogPostsPartDriver.cs b/src/Orchard.Web/Modules/Orchard.Blogs/Drivers/RecentBlogPostsPartDriver.cs index 093ba4cf4..207e97472 100644 --- a/src/Orchard.Web/Modules/Orchard.Blogs/Drivers/RecentBlogPostsPartDriver.cs +++ b/src/Orchard.Web/Modules/Orchard.Blogs/Drivers/RecentBlogPostsPartDriver.cs @@ -8,25 +8,22 @@ using Orchard.ContentManagement; using Orchard.ContentManagement.Drivers; using Orchard.ContentManagement.Handlers; using Orchard.Core.Common.Models; +using Orchard.Core.Routable.Models; namespace Orchard.Blogs.Drivers { public class RecentBlogPostsPartDriver : ContentPartDriver { private readonly IBlogService _blogService; private readonly IContentManager _contentManager; - private readonly IBlogPathConstraint _blogPathConstraint; public RecentBlogPostsPartDriver( IBlogService blogService, - IContentManager contentManager, - IBlogPathConstraint blogPathConstraint) { + IContentManager contentManager) { _blogService = blogService; _contentManager = contentManager; - _blogPathConstraint = blogPathConstraint; } protected override DriverResult Display(RecentBlogPostsPart part, string displayType, dynamic shapeHelper) { - var path = _blogPathConstraint.FindPath(part.ForBlog); - BlogPart blog = _blogService.Get(path); + BlogPart blog = GetBlogFromSlug(part.ForBlog); if (blog == null) { return null; @@ -49,7 +46,7 @@ namespace Orchard.Blogs.Drivers { protected override DriverResult Editor(RecentBlogPostsPart part, dynamic shapeHelper) { var viewModel = new RecentBlogPostsViewModel { Count = part.Count, - Path = part.ForBlog, + Slug = part.ForBlog, Blogs = _blogService.Get().ToList().OrderBy(b => b.Name) }; @@ -60,7 +57,7 @@ namespace Orchard.Blogs.Drivers { protected override DriverResult Editor(RecentBlogPostsPart part, IUpdateModel updater, dynamic shapeHelper) { var viewModel = new RecentBlogPostsViewModel(); if (updater.TryUpdateModel(viewModel, Prefix, null, null)) { - part.ForBlog = viewModel.Path; + part.ForBlog = viewModel.Slug; part.Count = viewModel.Count; } @@ -83,5 +80,11 @@ namespace Orchard.Blogs.Drivers { context.Element(part.PartDefinition.Name).SetAttributeValue("BlogSlug", part.ForBlog); context.Element(part.PartDefinition.Name).SetAttributeValue("Count", part.Count); } + + private BlogPart GetBlogFromSlug(string slug) { + return _contentManager.Query() + .Join().Where(rr => rr.Slug == slug) + .List().FirstOrDefault(); + } } } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Blogs/Models/RecentBlogPostsPart.cs b/src/Orchard.Web/Modules/Orchard.Blogs/Models/RecentBlogPostsPart.cs index 485cebe9e..e364c32e5 100644 --- a/src/Orchard.Web/Modules/Orchard.Blogs/Models/RecentBlogPostsPart.cs +++ b/src/Orchard.Web/Modules/Orchard.Blogs/Models/RecentBlogPostsPart.cs @@ -3,6 +3,7 @@ using Orchard.ContentManagement; namespace Orchard.Blogs.Models { public class RecentBlogPostsPart : ContentPart { + public string ForBlog { get { return Record.BlogSlug; } set { Record.BlogSlug = value; } diff --git a/src/Orchard.Web/Modules/Orchard.Blogs/Models/RecentBlogPostsPartRecord.cs b/src/Orchard.Web/Modules/Orchard.Blogs/Models/RecentBlogPostsPartRecord.cs index 0d892792a..43881a8f0 100644 --- a/src/Orchard.Web/Modules/Orchard.Blogs/Models/RecentBlogPostsPartRecord.cs +++ b/src/Orchard.Web/Modules/Orchard.Blogs/Models/RecentBlogPostsPartRecord.cs @@ -2,6 +2,10 @@ namespace Orchard.Blogs.Models { public class RecentBlogPostsPartRecord : ContentPartRecord { + public RecentBlogPostsPartRecord() { + Count = 5; + } + public virtual string BlogSlug { get; set; } public virtual int Count { get; set; } } diff --git a/src/Orchard.Web/Modules/Orchard.Blogs/ViewModels/BlogArchivesViewModel.cs b/src/Orchard.Web/Modules/Orchard.Blogs/ViewModels/BlogArchivesViewModel.cs index cd04428fe..274661006 100644 --- a/src/Orchard.Web/Modules/Orchard.Blogs/ViewModels/BlogArchivesViewModel.cs +++ b/src/Orchard.Web/Modules/Orchard.Blogs/ViewModels/BlogArchivesViewModel.cs @@ -3,7 +3,7 @@ using Orchard.Blogs.Models; namespace Orchard.Blogs.ViewModels { public class BlogArchivesViewModel { - public string Path { get; set; } + public string Slug { get; set; } public IEnumerable Blogs { get; set; } } } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Blogs/ViewModels/RecentBlogPostsViewModel.cs b/src/Orchard.Web/Modules/Orchard.Blogs/ViewModels/RecentBlogPostsViewModel.cs index d576554ab..4ff906191 100644 --- a/src/Orchard.Web/Modules/Orchard.Blogs/ViewModels/RecentBlogPostsViewModel.cs +++ b/src/Orchard.Web/Modules/Orchard.Blogs/ViewModels/RecentBlogPostsViewModel.cs @@ -4,7 +4,7 @@ using Orchard.Blogs.Models; namespace Orchard.Blogs.ViewModels { public class RecentBlogPostsViewModel { public int Count { get; set; } - public string Path { get; set; } + public string Slug { get; set; } public IEnumerable Blogs { get; set; } } } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Blogs/Views/EditorTemplates/Parts.Blogs.BlogArchives.cshtml b/src/Orchard.Web/Modules/Orchard.Blogs/Views/EditorTemplates/Parts.Blogs.BlogArchives.cshtml index f7c4e96a4..a0473f31a 100644 --- a/src/Orchard.Web/Modules/Orchard.Blogs/Views/EditorTemplates/Parts.Blogs.BlogArchives.cshtml +++ b/src/Orchard.Web/Modules/Orchard.Blogs/Views/EditorTemplates/Parts.Blogs.BlogArchives.cshtml @@ -6,8 +6,8 @@
- @Html.LabelFor(m => m.Path, T("For Blog")) - @foreach(BlogPart blog in Model.Blogs) { @Html.SelectOption(Model.Path, blog.As().Slug, blog.Name) } diff --git a/src/Orchard.Web/Modules/Orchard.Blogs/Views/EditorTemplates/Parts.Blogs.RecentBlogPosts.cshtml b/src/Orchard.Web/Modules/Orchard.Blogs/Views/EditorTemplates/Parts.Blogs.RecentBlogPosts.cshtml index f54f2e36f..e4ea7125d 100644 --- a/src/Orchard.Web/Modules/Orchard.Blogs/Views/EditorTemplates/Parts.Blogs.RecentBlogPosts.cshtml +++ b/src/Orchard.Web/Modules/Orchard.Blogs/Views/EditorTemplates/Parts.Blogs.RecentBlogPosts.cshtml @@ -6,16 +6,17 @@
- @Html.LabelFor(m => m.Path, T("For Blog")) - @foreach(BlogPart blog in Model.Blogs) { - @Html.SelectOption(Model.Path, blog.As().Path, blog.Name) + @Html.SelectOption(Model.Slug , blog.As().Slug, blog.Name) } @T("Select which blog you want to display the recent posts for")
@Html.LabelFor(m => m.Count, T("Count")) - @Html.TextBoxFor(m => m.Count) + @Html.TextBoxFor(m => m.Count, new { @class = "text-small"}) + @T("Number of posts to display. Zero for all.")
\ No newline at end of file