From 6f7d2b3ba1b6fa7decdaf855c151cf68f5f5f812 Mon Sep 17 00:00:00 2001 From: Sebastien Ros Date: Fri, 21 Feb 2014 10:56:40 -0800 Subject: [PATCH] Shifting BlogPart --- .../Drivers/RecentBlogPostsPartDriver.cs | 2 +- .../Handlers/BlogPartArchiveHandler.cs | 30 +++---------------- .../Orchard.Blogs/Handlers/BlogPartHandler.cs | 4 +-- .../Modules/Orchard.Blogs/Migrations.cs | 7 ----- .../Modules/Orchard.Blogs/Models/BlogPart.cs | 10 +++---- .../Models/BlogPartArchiveRecord.cs | 4 ++- .../Orchard.Blogs/Models/BlogPartRecord.cs | 10 ------- .../Orchard.Blogs/Orchard.Blogs.csproj | 1 - .../Orchard.Blogs/Services/ArchiveService.cs | 10 +++---- .../Orchard.Blogs/Services/BlogPostService.cs | 8 ++--- .../Orchard.Blogs/Services/BlogService.cs | 2 +- .../Upgrade/Controllers/InfosetController.cs | 12 ++++++++ 12 files changed, 36 insertions(+), 64 deletions(-) delete mode 100644 src/Orchard.Web/Modules/Orchard.Blogs/Models/BlogPartRecord.cs diff --git a/src/Orchard.Web/Modules/Orchard.Blogs/Drivers/RecentBlogPostsPartDriver.cs b/src/Orchard.Web/Modules/Orchard.Blogs/Drivers/RecentBlogPostsPartDriver.cs index a057ceea2..8ab1b9268 100644 --- a/src/Orchard.Web/Modules/Orchard.Blogs/Drivers/RecentBlogPostsPartDriver.cs +++ b/src/Orchard.Web/Modules/Orchard.Blogs/Drivers/RecentBlogPostsPartDriver.cs @@ -29,7 +29,7 @@ namespace Orchard.Blogs.Drivers { } var blogPosts = _contentManager.Query(VersionOptions.Published, "BlogPost") - .Join().Where(cr => cr.Container == blog.Record.ContentItemRecord) + .Join().Where(cr => cr.Container.Id == blog.Id) .OrderByDescending(cr => cr.CreatedUtc) .Slice(0, part.Count) .Select(ci => ci.As()); diff --git a/src/Orchard.Web/Modules/Orchard.Blogs/Handlers/BlogPartArchiveHandler.cs b/src/Orchard.Web/Modules/Orchard.Blogs/Handlers/BlogPartArchiveHandler.cs index 2453d56cc..42c6feb03 100644 --- a/src/Orchard.Web/Modules/Orchard.Blogs/Handlers/BlogPartArchiveHandler.cs +++ b/src/Orchard.Web/Modules/Orchard.Blogs/Handlers/BlogPartArchiveHandler.cs @@ -27,28 +27,6 @@ namespace Orchard.Blogs.Handlers { _workContextAccessor = workContextAccessor; _contentManager = contentManager; - //OnVersioning((context, bp1, bp2) => { - // var commonPart = bp1.As(); - // if (commonPart == null || !commonPart.CreatedUtc.HasValue) - // return; - - // if (context.BuildingItemVersionRecord.Published == context.ExistingContentItem.IsPublished()) { - // return; - // } - - // var previousPublishedVersion = contentManager.Get(commonPart.Id, VersionOptions.Published); - - // // retrieve the creation date when it was published - // if (previousPublishedVersion != null) { - // var versionCommonPart = previousPublishedVersion.As(); - // if (versionCommonPart.VersionCreatedUtc.HasValue) { - // _previousCreatedUtc[commonPart.Id] = versionCommonPart.VersionCreatedUtc.Value; - // } - // } - - //}); - - //OnUpdating((context, bp) => SavePreviousPublishDate(context.Id)); OnPublishing((context, bp) => SavePreviousPublishDate(context.Id)); OnRemoving((context, bp) => SavePreviousPublishDate(context.Id)); OnUnpublishing((context, bp) => SavePreviousPublishDate(context.Id)); @@ -90,7 +68,7 @@ namespace Orchard.Blogs.Handlers { var datetime = TimeZoneInfo.ConvertTimeFromUtc(commonPart.CreatedUtc.Value, timeZone); var previousArchiveRecord = _blogArchiveRepository.Table - .FirstOrDefault(x => x.BlogPart == blogPostPart.BlogPart.Record + .FirstOrDefault(x => x.BlogPart.Id == blogPostPart.BlogPart.Id && x.Month == datetime.Month && x.Year == datetime.Year); @@ -133,7 +111,7 @@ namespace Orchard.Blogs.Handlers { // decrement previous archive record var previousArchiveRecord = _blogArchiveRepository .Table - .FirstOrDefault(x => x.BlogPart == blogPostPart.BlogPart.Record + .FirstOrDefault(x => x.BlogPart.Id == blogPostPart.BlogPart.Id && x.Month == previousMonth && x.Year == previousYear); @@ -149,13 +127,13 @@ namespace Orchard.Blogs.Handlers { // increment new archive record var newArchiveRecord = _blogArchiveRepository .Table - .FirstOrDefault(x => x.BlogPart == blogPostPart.BlogPart.Record + .FirstOrDefault(x => x.BlogPart.Id == blogPostPart.BlogPart.Id && x.Month == newMonth && x.Year == newYear); // if record can't be found create it if (newArchiveRecord == null) { - newArchiveRecord = new BlogPartArchiveRecord { BlogPart = blogPostPart.BlogPart.Record, Year = newYear, Month = newMonth, PostCount = 0 }; + newArchiveRecord = new BlogPartArchiveRecord { BlogPart = blogPostPart.BlogPart.ContentItem.Record, Year = newYear, Month = newMonth, PostCount = 0 }; _blogArchiveRepository.Create(newArchiveRecord); } diff --git a/src/Orchard.Web/Modules/Orchard.Blogs/Handlers/BlogPartHandler.cs b/src/Orchard.Web/Modules/Orchard.Blogs/Handlers/BlogPartHandler.cs index b5d91ce1d..471aef56c 100644 --- a/src/Orchard.Web/Modules/Orchard.Blogs/Handlers/BlogPartHandler.cs +++ b/src/Orchard.Web/Modules/Orchard.Blogs/Handlers/BlogPartHandler.cs @@ -9,9 +9,7 @@ namespace Orchard.Blogs.Handlers { [UsedImplicitly] public class BlogPartHandler : ContentHandler { - public BlogPartHandler(IRepository repository) { - Filters.Add(StorageFilter.For(repository)); - + public BlogPartHandler() { OnGetDisplayShape((context, blog) => { context.Shape.Description = blog.Description; context.Shape.PostCount = blog.PostCount; diff --git a/src/Orchard.Web/Modules/Orchard.Blogs/Migrations.cs b/src/Orchard.Web/Modules/Orchard.Blogs/Migrations.cs index 2a0941ee6..18b5fc85c 100644 --- a/src/Orchard.Web/Modules/Orchard.Blogs/Migrations.cs +++ b/src/Orchard.Web/Modules/Orchard.Blogs/Migrations.cs @@ -15,13 +15,6 @@ namespace Orchard.Blogs { .Column("BlogPart_id") ); - SchemaBuilder.CreateTable("BlogPartRecord", - table => table - .ContentPartRecord() - .Column("Description", c => c.Unlimited()) - .Column("PostCount") - ); - SchemaBuilder.CreateTable("RecentBlogPostsPartRecord", table => table .ContentPartRecord() diff --git a/src/Orchard.Web/Modules/Orchard.Blogs/Models/BlogPart.cs b/src/Orchard.Web/Modules/Orchard.Blogs/Models/BlogPart.cs index ec48c8091..3a4aef476 100644 --- a/src/Orchard.Web/Modules/Orchard.Blogs/Models/BlogPart.cs +++ b/src/Orchard.Web/Modules/Orchard.Blogs/Models/BlogPart.cs @@ -2,20 +2,20 @@ using Orchard.ContentManagement; using Orchard.ContentManagement.Aspects; namespace Orchard.Blogs.Models { - public class BlogPart : ContentPart { + public class BlogPart : ContentPart { public string Name { get { return this.As().Title; } } public string Description { - get { return Retrieve(x => x.Description); } - set { Store(x => x.Description, value); } + get { return this.Retrieve(x => x.Description); } + set { this.Store(x => x.Description, value); } } public int PostCount { - get { return Retrieve(x => x.PostCount); } - set { Store(x => x.PostCount, value); } + get { return this.Retrieve(x => x.PostCount); } + set { this.Store(x => x.PostCount, value); } } } } \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Blogs/Models/BlogPartArchiveRecord.cs b/src/Orchard.Web/Modules/Orchard.Blogs/Models/BlogPartArchiveRecord.cs index 77a065254..cf3835320 100644 --- a/src/Orchard.Web/Modules/Orchard.Blogs/Models/BlogPartArchiveRecord.cs +++ b/src/Orchard.Web/Modules/Orchard.Blogs/Models/BlogPartArchiveRecord.cs @@ -1,7 +1,9 @@ +using Orchard.ContentManagement.Records; + namespace Orchard.Blogs.Models { public class BlogPartArchiveRecord { public virtual int Id { get; set; } - public virtual BlogPartRecord BlogPart { get; set; } + public virtual ContentItemRecord BlogPart { get; set; } public virtual int Year { get; set; } public virtual int Month { get; set; } public virtual int PostCount { get; set; } diff --git a/src/Orchard.Web/Modules/Orchard.Blogs/Models/BlogPartRecord.cs b/src/Orchard.Web/Modules/Orchard.Blogs/Models/BlogPartRecord.cs deleted file mode 100644 index 88dde3292..000000000 --- a/src/Orchard.Web/Modules/Orchard.Blogs/Models/BlogPartRecord.cs +++ /dev/null @@ -1,10 +0,0 @@ -using Orchard.ContentManagement.Records; -using Orchard.Data.Conventions; - -namespace Orchard.Blogs.Models { - public class BlogPartRecord : ContentPartRecord { - [StringLengthMax] - public virtual string Description { get; set; } - public virtual int PostCount { get; set; } - } -} \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.Blogs/Orchard.Blogs.csproj b/src/Orchard.Web/Modules/Orchard.Blogs/Orchard.Blogs.csproj index 13770ef7d..868eece16 100644 --- a/src/Orchard.Web/Modules/Orchard.Blogs/Orchard.Blogs.csproj +++ b/src/Orchard.Web/Modules/Orchard.Blogs/Orchard.Blogs.csproj @@ -104,7 +104,6 @@ - diff --git a/src/Orchard.Web/Modules/Orchard.Blogs/Services/ArchiveService.cs b/src/Orchard.Web/Modules/Orchard.Blogs/Services/ArchiveService.cs index e901d05cb..2dc97973c 100644 --- a/src/Orchard.Web/Modules/Orchard.Blogs/Services/ArchiveService.cs +++ b/src/Orchard.Web/Modules/Orchard.Blogs/Services/ArchiveService.cs @@ -23,13 +23,13 @@ namespace Orchard.Blogs.Services { public void RebuildArchive(BlogPart blogPart) { - var first = _contentManager.Query().Where(bp => bp.Container.Id == blogPart.Record.Id).OrderBy(x => x.CreatedUtc).Slice(0, 1).FirstOrDefault(); + var first = _contentManager.Query().Where(bp => bp.Container.Id == blogPart.Id).OrderBy(x => x.CreatedUtc).Slice(0, 1).FirstOrDefault(); if (first == null) { return; } - var last = _contentManager.Query().Where(bp => bp.Container.Id == blogPart.Record.Id).OrderByDescending(x => x.CreatedUtc).Slice(0, 1).FirstOrDefault(); + var last = _contentManager.Query().Where(bp => bp.Container.Id == blogPart.Id).OrderByDescending(x => x.CreatedUtc).Slice(0, 1).FirstOrDefault(); DateTime? start = DateTime.MaxValue; if (first.As() != null) { @@ -42,7 +42,7 @@ namespace Orchard.Blogs.Services { } // delete previous archive records - foreach (var record in _blogArchiveRepository.Table.Where(x => x.BlogPart == blogPart.Record)) { + foreach (var record in _blogArchiveRepository.Table.Where(x => x.BlogPart.Id == blogPart.Id)) { _blogArchiveRepository.Delete(record); } @@ -55,7 +55,7 @@ namespace Orchard.Blogs.Services { // build a collection of all the post dates var blogPostDates = new List(); - var blogPosts = _contentManager.Query().Where(bp => bp.Container.Id == blogPart.Record.Id); + var blogPosts = _contentManager.Query().Where(bp => bp.Container.Id == blogPart.Id); foreach (var blogPost in blogPosts.List()) { if (blogPost.As() != null) if (blogPost.As().CreatedUtc.HasValue) { @@ -82,7 +82,7 @@ namespace Orchard.Blogs.Services { //var count = _contentManager.Query().Where(x => x.CreatedUtc.Value >= from && x.CreatedUtc.Value < to).Count(); var count = blogPostDates.Count(bp => bp >= @from && bp < to); - var newArchiveRecord = new BlogPartArchiveRecord { BlogPart = blogPart.Record, Year = year, Month = month, PostCount = count }; + var newArchiveRecord = new BlogPartArchiveRecord { BlogPart = blogPart.ContentItem.Record, Year = year, Month = month, PostCount = count }; _blogArchiveRepository.Create(newArchiveRecord); } } diff --git a/src/Orchard.Web/Modules/Orchard.Blogs/Services/BlogPostService.cs b/src/Orchard.Web/Modules/Orchard.Blogs/Services/BlogPostService.cs index ade62759e..fcc08af69 100644 --- a/src/Orchard.Web/Modules/Orchard.Blogs/Services/BlogPostService.cs +++ b/src/Orchard.Web/Modules/Orchard.Blogs/Services/BlogPostService.cs @@ -60,7 +60,7 @@ namespace Orchard.Blogs.Services { public int PostCount(BlogPart blogPart, VersionOptions versionOptions) { return _contentManager.Query(versionOptions, "BlogPost") .Join().Where( - cr => cr.Container == blogPart.Record.ContentItemRecord) + cr => cr.Container.Id == blogPart.Id) .Count(); } @@ -90,7 +90,7 @@ namespace Orchard.Blogs.Services { public IEnumerable> GetArchives(BlogPart blogPart) { var query = from bar in _blogArchiveRepository.Table - where bar.BlogPart == blogPart.Record + where bar.BlogPart.Id == blogPart.Id orderby bar.Year descending, bar.Month descending select bar; @@ -124,11 +124,11 @@ namespace Orchard.Blogs.Services { return (task == null ? null : task.ScheduledUtc); } - private IContentQuery GetBlogQuery(ContentPart blog, VersionOptions versionOptions) { + private IContentQuery GetBlogQuery(BlogPart blog, VersionOptions versionOptions) { return _contentManager.Query(versionOptions, "BlogPost") .Join().Where( - cr => cr.Container == blog.Record.ContentItemRecord).OrderByDescending(cr => cr.CreatedUtc) + cr => cr.Container.Id == blog.Id).OrderByDescending(cr => cr.CreatedUtc) ; } } diff --git a/src/Orchard.Web/Modules/Orchard.Blogs/Services/BlogService.cs b/src/Orchard.Web/Modules/Orchard.Blogs/Services/BlogService.cs index 505635ffa..8dd9f563a 100644 --- a/src/Orchard.Web/Modules/Orchard.Blogs/Services/BlogService.cs +++ b/src/Orchard.Web/Modules/Orchard.Blogs/Services/BlogService.cs @@ -42,7 +42,7 @@ namespace Orchard.Blogs.Services { } public IEnumerable Get(VersionOptions versionOptions) { - return _contentManager.Query(versionOptions) + return _contentManager.Query(versionOptions, "Blog") .Join() .OrderBy(br => br.Title) .List(); diff --git a/src/Orchard.Web/Modules/Upgrade/Controllers/InfosetController.cs b/src/Orchard.Web/Modules/Upgrade/Controllers/InfosetController.cs index 1fefda72f..9a8d51d2f 100644 --- a/src/Orchard.Web/Modules/Upgrade/Controllers/InfosetController.cs +++ b/src/Orchard.Web/Modules/Upgrade/Controllers/InfosetController.cs @@ -252,6 +252,18 @@ namespace Upgrade.Controllers { #endregion + #region BlogPartRecord + var blogTable = _upgradeService.GetPrefixedTableName("Orchard_Blogs_BlogPartRecord"); + if (_upgradeService.TableExists(blogTable)) { + _upgradeService.ExecuteReader("SELECT * FROM " + blogTable, + (reader, connection) => { + site.As().Store("BlogPart", "Description", ConvertToString(reader["Description"])); + }); + + _upgradeService.ExecuteReader("DROP TABLE " + blogTable, null); + } + #endregion + // todo: user records _orchardServices.Notifier.Information(T("Site Settings migrated successfully"));