mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-09-18 17:47:54 +08:00
Make page manager not use the page view model (separation of concerns)
--HG-- extra : convert_revision : svn%3A5ff7c347-ad56-4c35-b696-ccb81de16e03/trunk%4041950
This commit is contained in:
@@ -39,7 +39,7 @@ namespace Orchard.Tests.Packages.Pages.Controllers {
|
||||
_pageScheduler = _container.Resolve<IPageScheduler>();
|
||||
_templateProvider = _container.Resolve<ITemplateProvider>();
|
||||
_authorizer = _container.Resolve<IAuthorizer>();
|
||||
var page = _pageManager.CreatePage(new PageCreateViewModel { Slug = "slug", Templates = _templateProvider.List() });
|
||||
var page = _pageManager.CreatePage(new CreatePageParams(null, "slug", null));
|
||||
_slugPageId = page.Id;
|
||||
|
||||
_controller = _container.Resolve<AdminController>();
|
||||
@@ -155,11 +155,11 @@ namespace Orchard.Tests.Packages.Pages.Controllers {
|
||||
|
||||
[Test]
|
||||
public void IndexShouldReturnTheListOfFilteredPages() {
|
||||
var createPage = new PageCreateViewModel { Title = "hello", Slug = "world", TemplateName = "twocolumn" };
|
||||
var createPage = new CreatePageParams { Title = "hello", Slug = "world", TemplateName = "twocolumn" };
|
||||
var revision = _pageManager.CreatePage(createPage);
|
||||
_pageManager.Publish(revision, new PublishOptions());
|
||||
|
||||
var createPage2 = new PageCreateViewModel { Title = "hello2", Slug = "world2", TemplateName = "twocolumn" };
|
||||
var createPage2 = new CreatePageParams { Title = "hello2", Slug = "world2", TemplateName = "twocolumn" };
|
||||
var revision2 = _pageManager.CreatePage(createPage2);
|
||||
_pageScheduler.AddPublishTask(revision2, _clock.FutureMoment(TimeSpan.FromMinutes(1)));
|
||||
|
||||
@@ -212,7 +212,7 @@ namespace Orchard.Tests.Packages.Pages.Controllers {
|
||||
|
||||
[Test]
|
||||
public void IndexPostShouldPerformBulkPublishNow() {
|
||||
var createPage = new PageCreateViewModel { Title = "hello", Slug = "world", TemplateName = "twocolumn" };
|
||||
var createPage = new CreatePageParams { Title = "hello", Slug = "world", TemplateName = "twocolumn" };
|
||||
var revision = _pageManager.CreatePage(createPage);
|
||||
|
||||
// Add a scheduled publish task to make sure it's deleted when bulk "PublishNow" is called
|
||||
@@ -249,7 +249,7 @@ namespace Orchard.Tests.Packages.Pages.Controllers {
|
||||
|
||||
[Test]
|
||||
public void IndexPostShouldPerformBulkPublishLater() {
|
||||
var createPage = new PageCreateViewModel { Title = "hello", Slug = "world", TemplateName = "twocolumn" };
|
||||
var createPage = new CreatePageParams { Title = "hello", Slug = "world", TemplateName = "twocolumn" };
|
||||
var revision = _pageManager.CreatePage(createPage);
|
||||
|
||||
// Add a scheduled publish task to make sure it's deleted when bulk "PublishNow" is called
|
||||
@@ -293,7 +293,7 @@ namespace Orchard.Tests.Packages.Pages.Controllers {
|
||||
|
||||
[Test]
|
||||
public void IndexPostShouldPerformBulkDelete() {
|
||||
var createPage = new PageCreateViewModel { Title = "hello", Slug = "world", TemplateName = "twocolumn" };
|
||||
var createPage = new CreatePageParams { Title = "hello", Slug = "world", TemplateName = "twocolumn" };
|
||||
var revision = _pageManager.CreatePage(createPage);
|
||||
|
||||
// Add a scheduled publish task to make sure it's deleted when bulk "PublishNow" is called
|
||||
@@ -330,7 +330,7 @@ namespace Orchard.Tests.Packages.Pages.Controllers {
|
||||
|
||||
[Test]
|
||||
public void IndexPostShouldPerformBulkUnpublish() {
|
||||
var createPage = new PageCreateViewModel { Title = "hello", Slug = "world", TemplateName = "twocolumn" };
|
||||
var createPage = new CreatePageParams { Title = "hello", Slug = "world", TemplateName = "twocolumn" };
|
||||
var revision = _pageManager.CreatePage(createPage);
|
||||
_pageManager.Publish(revision, new PublishOptions());
|
||||
|
||||
@@ -394,7 +394,7 @@ namespace Orchard.Tests.Packages.Pages.Controllers {
|
||||
|
||||
[Test]
|
||||
public void ChooseTemplateListsAvailableTemplatesWithCurrentOneSelected() {
|
||||
var createPage = new PageCreateViewModel { Title = "hello", Slug = "world", TemplateName = "twocolumn" };
|
||||
var createPage = new CreatePageParams { Title = "hello", Slug = "world", TemplateName = "twocolumn" };
|
||||
var revision = _pageManager.CreatePage(createPage);
|
||||
var result = _controller.ChooseTemplate(revision.Id);
|
||||
|
||||
@@ -407,7 +407,7 @@ namespace Orchard.Tests.Packages.Pages.Controllers {
|
||||
|
||||
[Test]
|
||||
public void PostingDifferentTemplateResultsInDraftAndExtendsNamedContentItems() {
|
||||
var createPage = new PageCreateViewModel { Title = "hello", Slug = "world", TemplateName = "twocolumn" };
|
||||
var createPage = new CreatePageParams { Title = "hello", Slug = "world", TemplateName = "twocolumn" };
|
||||
var revision = _pageManager.CreatePage(createPage);
|
||||
_pageManager.Publish(revision, new PublishOptions());
|
||||
|
||||
@@ -436,7 +436,7 @@ namespace Orchard.Tests.Packages.Pages.Controllers {
|
||||
|
||||
[Test, Ignore("This can't be properly implementated until a transaction scope with rollback abilities is available to the controller")]
|
||||
public void PostingSameTemplateDoesNotResultInDraftBeingCreated() {
|
||||
var createPage = new PageCreateViewModel { Title = "hello", Slug = "world", TemplateName = "twocolumn" };
|
||||
var createPage = new CreatePageParams { Title = "hello", Slug = "world", TemplateName = "twocolumn" };
|
||||
var revision = _pageManager.CreatePage(createPage);
|
||||
_pageManager.Publish(revision, new PublishOptions());
|
||||
|
||||
|
@@ -25,7 +25,7 @@ namespace Orchard.Tests.Packages.Pages.Controllers {
|
||||
_templateProvider = _container.Resolve<ITemplateProvider>();
|
||||
_controller = _container.Resolve<TemplatesController>();
|
||||
|
||||
var revision = _pageManager.CreatePage(new PageCreateViewModel { Slug = "slug", Templates = _templateProvider.List() });
|
||||
var revision = _pageManager.CreatePage(new CreatePageParams(null, "slug", null));
|
||||
_pageManager.Publish(revision, new PublishOptions());
|
||||
}
|
||||
|
||||
|
@@ -65,8 +65,9 @@ namespace Orchard.Tests.Packages.Pages.Services {
|
||||
Assert.That(page.Contents, Has.Some.Property("ZoneName").EqualTo("content2"));
|
||||
}
|
||||
|
||||
private PageCreateViewModel PageCreate(string slug, string title, string template) {
|
||||
return new PageCreateViewModel { Slug = slug, Title = title, TemplateName = template, Templates = _templateProvider.List() };
|
||||
private CreatePageParams PageCreate(string slug, string title, string template) {
|
||||
return new CreatePageParams(title, slug, template);
|
||||
//return new CreatePageParams { Slug = slug, Title = title, TemplateName = template, Templates = _templateProvider.List() };
|
||||
}
|
||||
|
||||
[Test]
|
||||
@@ -95,7 +96,7 @@ namespace Orchard.Tests.Packages.Pages.Services {
|
||||
|
||||
[Test]
|
||||
public void GetPublishedBySlugShouldOnlyReturnPageAfterItIsPublished() {
|
||||
var revision = _manager.CreatePage(new PageCreateViewModel { Slug = "hello-world", Templates = _templateProvider.List() });
|
||||
var revision = _manager.CreatePage(new CreatePageParams { Slug = "hello-world" });
|
||||
|
||||
var notPublishedYet = _manager.GetPublishedBySlug("hello-world");
|
||||
Assert.That(notPublishedYet, Is.Null);
|
||||
@@ -109,7 +110,7 @@ namespace Orchard.Tests.Packages.Pages.Services {
|
||||
[Test]
|
||||
[Ignore("Linq to NHib doesn't support calling 'String.Equals' in expressions. Figure out a workaround.")]
|
||||
public void GetPublishedBySlugShouldBeCaseInsensitive() {
|
||||
var revision = _manager.CreatePage(new PageCreateViewModel { Slug = "hello-world", Templates = _templateProvider.List() });
|
||||
var revision = _manager.CreatePage(new CreatePageParams { Slug = "hello-world" });
|
||||
_manager.Publish(revision, new PublishOptions());
|
||||
|
||||
var publishedNow = _manager.GetPublishedBySlug("hello-WORLD");
|
||||
@@ -118,9 +119,9 @@ namespace Orchard.Tests.Packages.Pages.Services {
|
||||
|
||||
[Test]
|
||||
public void PublishingPagesAddsToCurrentlyPublishedSlugList() {
|
||||
_manager.Publish(_manager.CreatePage(new PageCreateViewModel { Slug = "one", Templates = _templateProvider.List() }), new PublishOptions());
|
||||
_manager.Publish(_manager.CreatePage(new PageCreateViewModel { Slug = "two", Templates = _templateProvider.List() }), new PublishOptions());
|
||||
_manager.Publish(_manager.CreatePage(new PageCreateViewModel { Slug = "three", Templates = _templateProvider.List() }), new PublishOptions());
|
||||
_manager.Publish(_manager.CreatePage(new CreatePageParams { Slug = "one" }), new PublishOptions());
|
||||
_manager.Publish(_manager.CreatePage(new CreatePageParams { Slug = "two" }), new PublishOptions());
|
||||
_manager.Publish(_manager.CreatePage(new CreatePageParams { Slug = "three" }), new PublishOptions());
|
||||
|
||||
var slugs = _manager.GetCurrentlyPublishedSlugs();
|
||||
Assert.That(slugs, Has.Count.GreaterThanOrEqualTo(3));
|
||||
@@ -131,9 +132,9 @@ namespace Orchard.Tests.Packages.Pages.Services {
|
||||
|
||||
[Test]
|
||||
public void PublishingPagesDoesNotChangeSlugCasing() {
|
||||
_manager.Publish(_manager.CreatePage(new PageCreateViewModel { Slug = "One", Templates = _templateProvider.List() }), new PublishOptions());
|
||||
_manager.Publish(_manager.CreatePage(new PageCreateViewModel { Slug = "TWO", Templates = _templateProvider.List() }), new PublishOptions());
|
||||
_manager.Publish(_manager.CreatePage(new PageCreateViewModel { Slug = "thRee", Templates = _templateProvider.List() }), new PublishOptions());
|
||||
_manager.Publish(_manager.CreatePage(new CreatePageParams { Slug = "One" }), new PublishOptions());
|
||||
_manager.Publish(_manager.CreatePage(new CreatePageParams { Slug = "TWO" }), new PublishOptions());
|
||||
_manager.Publish(_manager.CreatePage(new CreatePageParams { Slug = "thRee" }), new PublishOptions());
|
||||
|
||||
var slugs = _manager.GetCurrentlyPublishedSlugs();
|
||||
Assert.That(slugs, Has.Count.GreaterThanOrEqualTo(3));
|
||||
@@ -144,7 +145,7 @@ namespace Orchard.Tests.Packages.Pages.Services {
|
||||
|
||||
[Test]
|
||||
public void PublishingThePublishedRevisionDoesNothing() {
|
||||
var initial = _manager.CreatePage(new PageCreateViewModel { Slug = "foo", Templates = _templateProvider.List() });
|
||||
var initial = _manager.CreatePage(new CreatePageParams { Slug = "foo" });
|
||||
_manager.Publish(initial, new PublishOptions());
|
||||
|
||||
DateTime initialRevisionTime = initial.PublishedDate.Value;
|
||||
@@ -161,14 +162,14 @@ namespace Orchard.Tests.Packages.Pages.Services {
|
||||
|
||||
[Test]
|
||||
public void AcquireDraftOnUnpublishedPageShouldReturnExistingRevision() {
|
||||
var initial = _manager.CreatePage(new PageCreateViewModel { Slug = "foo", Templates = _templateProvider.List() });
|
||||
var initial = _manager.CreatePage(new CreatePageParams { Slug = "foo" });
|
||||
var draft = _manager.AcquireDraft(initial.Page.Id);
|
||||
Assert.That(initial, Is.SameAs(draft));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void AcquireDraftForUpdateOnPublishedPageShouldCreateNewRevision() {
|
||||
var initial = _manager.CreatePage(new PageCreateViewModel { Slug = "foo", Templates = _templateProvider.List() });
|
||||
var initial = _manager.CreatePage(new CreatePageParams { Slug = "foo" });
|
||||
_manager.Publish(initial, new PublishOptions());
|
||||
var draft = _manager.AcquireDraft(initial.Page.Id);
|
||||
Assert.That(initial, Is.Not.SameAs(draft));
|
||||
@@ -177,7 +178,7 @@ namespace Orchard.Tests.Packages.Pages.Services {
|
||||
|
||||
[Test]
|
||||
public void PublishingDraftWithKeepHistoryFalseShouldDeletePreviousPublishedRevision() {
|
||||
var initial = _manager.CreatePage(new PageCreateViewModel { Slug = "foo", Templates = _templateProvider.List() });
|
||||
var initial = _manager.CreatePage(new CreatePageParams { Slug = "foo" });
|
||||
var pageId = initial.Page.Id;
|
||||
|
||||
_manager.Publish(initial, new PublishOptions());
|
||||
@@ -196,7 +197,7 @@ namespace Orchard.Tests.Packages.Pages.Services {
|
||||
|
||||
[Test]
|
||||
public void PublishingDraftWithKeepHistoryTrueShouldLeavePreviousRevisionIntact() {
|
||||
var initial = _manager.CreatePage(new PageCreateViewModel { Slug = "foo", Templates = _templateProvider.List() });
|
||||
var initial = _manager.CreatePage(new CreatePageParams { Slug = "foo" });
|
||||
var pageId = initial.Page.Id;
|
||||
|
||||
Trace.WriteLine("Publish initial");
|
||||
@@ -218,7 +219,7 @@ namespace Orchard.Tests.Packages.Pages.Services {
|
||||
|
||||
[Test]
|
||||
public void PublishDateIsSetWhenPublishOccurs() {
|
||||
var initial = _manager.CreatePage(new PageCreateViewModel { Slug = "foo", Templates = _templateProvider.List() });
|
||||
var initial = _manager.CreatePage(new CreatePageParams { Slug = "foo" });
|
||||
Assert.That(initial.PublishedDate, Is.Null);
|
||||
_manager.Publish(initial, new PublishOptions());
|
||||
Assert.That(initial.PublishedDate, Is.EqualTo(_clock.UtcNow));
|
||||
@@ -228,7 +229,7 @@ namespace Orchard.Tests.Packages.Pages.Services {
|
||||
public void ModifiedDateIsSetWhenPageIsCreatedAndWhenAcquireDraftIsCalled() {
|
||||
var mark1 = _clock.UtcNow;
|
||||
|
||||
var initial = _manager.CreatePage(new PageCreateViewModel { Slug = "foo", Templates = _templateProvider.List() });
|
||||
var initial = _manager.CreatePage(new CreatePageParams { Slug = "foo" });
|
||||
Assert.That(initial.PublishedDate, Is.Null);
|
||||
Assert.That(initial.ModifiedDate, Is.EqualTo(mark1));
|
||||
|
||||
@@ -267,7 +268,7 @@ namespace Orchard.Tests.Packages.Pages.Services {
|
||||
|
||||
[Test]
|
||||
public void PublishedPropertyShouldCascadeInsertsAndDeletesWhenSetAndNulled() {
|
||||
var page = new Page {Published = new Published()};
|
||||
var page = new Page { Published = new Published() };
|
||||
page.Published.Page = page;
|
||||
|
||||
var pageRepos = _container.Resolve<IRepository<Page>>();
|
||||
|
@@ -5,7 +5,7 @@ using Orchard.CmsPages.ViewModels;
|
||||
namespace Orchard.Tests.Packages.Pages.Services {
|
||||
public static class TestExtensions {
|
||||
public static PageRevision CreateAndPublishPage(this IPageManager manager, string slug, string title) {
|
||||
var revision = manager.CreatePage(new PageCreateViewModel {Slug = slug, Title = title});
|
||||
var revision = manager.CreatePage(new CreatePageParams(title, slug, null));
|
||||
manager.Publish(revision, new PublishOptions());
|
||||
return revision;
|
||||
}
|
||||
|
@@ -204,7 +204,7 @@ namespace Orchard.CmsPages.Controllers {
|
||||
|
||||
Logger.Information("Creating CmsPage slug:{0} title{1}: template{2}",
|
||||
viewModel.Slug, viewModel.Title, viewModel.TemplateName);
|
||||
var revision = _pageManager.CreatePage(viewModel);
|
||||
var revision = _pageManager.CreatePage(new CreatePageParams(viewModel.Title, viewModel.Slug, viewModel.TemplateName));
|
||||
return RedirectToAction("Edit", new { revision.Page.Id });
|
||||
}
|
||||
catch (Exception ex) {
|
||||
|
@@ -22,13 +22,26 @@ namespace Orchard.CmsPages.Services {
|
||||
public PublishHistory History { get; set; }
|
||||
}
|
||||
|
||||
public class CreatePageParams {
|
||||
public CreatePageParams(){}
|
||||
public CreatePageParams(string title, string slug, string templateName) {
|
||||
Title = title;
|
||||
Slug = slug;
|
||||
TemplateName = templateName;
|
||||
}
|
||||
|
||||
public string Title { get; set; }
|
||||
public string Slug { get; set; }
|
||||
public string TemplateName { get; set; }
|
||||
}
|
||||
|
||||
public interface IPageManager : IDependency {
|
||||
IEnumerable<string> GetCurrentlyPublishedSlugs();
|
||||
PageRevision GetPublishedBySlug(string slug);
|
||||
|
||||
PageRevision GetLastRevision(int pageId);
|
||||
|
||||
PageRevision CreatePage(PageCreateViewModel pageCreate);
|
||||
PageRevision CreatePage(CreatePageParams createPageParams);
|
||||
PageRevision AcquireDraft(int pageId);
|
||||
void ApplyTemplateName(PageRevision revision, string templateName);
|
||||
void Publish(PageRevision revision, [NotNull] PublishOptions options);
|
||||
@@ -60,7 +73,8 @@ namespace Orchard.CmsPages.Services {
|
||||
|
||||
public ILogger Logger { get; set; }
|
||||
|
||||
public PageRevision CreatePage(PageCreateViewModel pageCreate) {
|
||||
|
||||
public PageRevision CreatePage(CreatePageParams createPageParams) {
|
||||
Logger.Information("CreatePage");
|
||||
|
||||
//var templateDescriptor = _templateProvider.Get(pageCreate.TemplateName);
|
||||
@@ -68,9 +82,8 @@ namespace Orchard.CmsPages.Services {
|
||||
var page = new Page();
|
||||
var revision = new PageRevision {
|
||||
Page = page,
|
||||
Title = pageCreate.Title,
|
||||
Slug = pageCreate.Slug,
|
||||
TemplateName = pageCreate.TemplateName,
|
||||
Title = createPageParams.Title,
|
||||
Slug = createPageParams.Slug,
|
||||
ModifiedDate = _clock.UtcNow,
|
||||
Number = 1
|
||||
};
|
||||
@@ -81,7 +94,7 @@ namespace Orchard.CmsPages.Services {
|
||||
// revision.Contents.Add(new ContentItem { PageRevision = revision, ZoneName = zone });
|
||||
// }
|
||||
//}
|
||||
ApplyTemplateName(revision, pageCreate.TemplateName);
|
||||
ApplyTemplateName(revision, createPageParams.TemplateName);
|
||||
|
||||
_pageRepository.Create(page);
|
||||
|
||||
|
@@ -75,10 +75,7 @@ namespace Orchard.CmsPages.Services {
|
||||
var title = content.Optional<string>("title");
|
||||
var description = content.Optional<string>("description");
|
||||
|
||||
var pageRevision = _pageManager.CreatePage(new PageCreateViewModel {
|
||||
Title = title,
|
||||
TemplateName = "TwoColumns"
|
||||
});
|
||||
var pageRevision = _pageManager.CreatePage(new CreatePageParams(title, null, "TwoColumns"));
|
||||
pageRevision.Contents.First().Content = description;
|
||||
|
||||
if (publish) {
|
||||
|
Reference in New Issue
Block a user