public async Task AddHierarchical() { using (var api = CreateApi()) { using (var config = new Piranha.Config(api)) { config.HierarchicalPageSlugs = true; } var page = MyPage.Create(api, "MyPage"); page.Id = Guid.NewGuid(); page.ParentId = PAGE_1_ID; page.SiteId = SITE_ID; page.Title = "My subpage"; page.Ingress = "My subpage ingress"; page.Body = "My subpage body"; await api.Pages.SaveAsync(page); page = await api.Pages.GetByIdAsync <MyPage>(page.Id); Assert.NotNull(page); Assert.Equal("my-first-page/my-subpage", page.Slug); var param = await api.Params.GetByKeyAsync(Piranha.Config.PAGES_HIERARCHICAL_SLUGS); await api.Params.DeleteAsync(param); } }
public void AddNonHierarchical() { using (var api = new Api(GetDb(), storage, cache)) { using (var config = new Piranha.Config(api)) { config.HierarchicalPageSlugs = false; } var page = MyPage.Create(api, "MyPage"); page.Id = Guid.NewGuid(); page.ParentId = PAGE_1_ID; page.SiteId = SITE_ID; page.Title = "My second subpage"; page.Ingress = "My subpage ingress"; page.Body = "My subpage body"; api.Pages.Save(page); page = api.Pages.GetById <MyPage>(page.Id); Assert.NotNull(page); Assert.Equal("my-second-subpage", page.Slug); var param = api.Params.GetByKey(Piranha.Config.PAGES_HIERARCHICAL_SLUGS); api.Params.Delete(param); } }
protected override void Init() { using (var api = new Api(services, GetDb(), storage, cache)) { Piranha.App.Init(api); var builder = new PageTypeBuilder(api) .AddType(typeof(MyPage)); builder.Build(); api.Sites.Save(new Data.Site() { Id = SITE_1_ID, InternalId = SITE_1, Title = SITE_1, Hostnames = SITE_1_HOSTS, IsDefault = true }); api.Sites.Save(new Data.Site() { InternalId = SITE_4, Title = SITE_4 }); api.Sites.Save(new Data.Site() { InternalId = SITE_5, Title = SITE_5 }); api.Sites.Save(new Data.Site() { InternalId = SITE_6, Title = SITE_6 }); var page1 = MyPage.Create(api); page1.SiteId = SITE_1_ID; page1.Title = "Startpage"; page1.Text = "Welcome"; page1.IsHidden = true; page1.Published = DateTime.Now; api.Pages.Save(page1); var page2 = MyPage.Create(api); page2.SiteId = SITE_1_ID; page2.SortOrder = 1; page2.Title = "Second page"; page2.Text = "The second page"; api.Pages.Save(page2); var page3 = MyPage.Create(api); page3.SiteId = SITE_1_ID; page3.ParentId = page2.Id; page3.Title = "Subpage"; page3.Text = "The subpage"; page3.Published = DateTime.Now; api.Pages.Save(page3); } }
protected override void Init() { using (var api = CreateApi()) { Piranha.App.Init(api); var builder = new PageTypeBuilder(api) .AddType(typeof(MyPage)); builder.Build(); // Add site var site1 = new Site { Id = SITE1_ID, Title = "Page Site", InternalId = "PageSite", IsDefault = true }; api.Sites.Save(site1); var site2 = new Site { Id = SITE2_ID, Title = "Page Site 2", InternalId = "PageSite2", Hostnames = "www.myothersite.com", IsDefault = false }; api.Sites.Save(site2); // Add pages var page1 = MyPage.Create(api); page1.Id = PAGE1_ID; page1.SiteId = SITE1_ID; page1.Title = "My first page"; page1.Body = "My first body"; page1.Published = DateTime.Now; api.Pages.Save(page1); var page2 = MyPage.Create(api); page2.Id = PAGE2_ID; page2.SiteId = SITE2_ID; page2.Title = "My second page"; page2.Body = "My second body"; page2.Published = DateTime.Now; api.Pages.Save(page2); var page3 = MyPage.Create(api); page3.Id = PAGE3_ID; page3.SiteId = SITE1_ID; page3.SortOrder = 1; page3.Title = "My third page"; page3.Published = DateTime.Now; page3.RedirectUrl = "http://www.redirect.com"; page3.RedirectType = Models.RedirectType.Temporary; api.Pages.Save(page3); } }
public void CanNotUpdateCopyOriginalPageWithAnotherCopy() { using (var api = new Api(GetDb(), new ContentServiceFactory(services), storage, cache)) { var page = MyPage.Create(api); page.Title = "New title"; page.OriginalPageId = PAGE_8_ID; // PAGE_8 is an copy of PAGE_7 var exn = Assert.Throws <InvalidOperationException>(() => { api.Pages.Save(page); }); Assert.Equal("Can not set copy of a copy", exn.Message); } }
public void CanNotUpdateCopyOriginalPageWithAnotherCopy() { using (var api = CreateApi()) { var page = MyPage.Create(api); page.Title = "New title"; page.OriginalPageId = PAGE_8_ID; // PAGE_8 is an copy of PAGE_7 var exn = Assert.Throws <InvalidOperationException>(() => { api.Pages.Save(page); }); Assert.Equal("Can not set copy of a copy", exn.Message); } }
public void Add() { using (var api = new Api(GetDb(), storage, cache)) { var page = MyPage.Create(api, "MyPage"); page.SiteId = SITE_ID; page.Title = "My fourth page"; page.Ingress = "My fourth ingress"; page.Body = "My fourth body"; api.Pages.Save(page); Assert.Equal(5, api.Pages.GetAll(SITE_ID).Count()); } }
public void Add() { using (var api = CreateApi()) { var count = api.Pages.GetAll(SITE_ID).Count(); var page = MyPage.Create(api, "MyPage"); page.SiteId = SITE_ID; page.Title = "My fourth page"; page.Ingress = "My fourth ingress"; page.Body = "My fourth body"; api.Pages.SaveDraft(page); Assert.Equal(count + 1, api.Pages.GetAll(SITE_ID).Count()); } }
public async Task Add() { using (var api = CreateApi()) { var count = (await api.Pages.GetAllAsync(SITE_ID)).Count(); var page = MyPage.Create(api, "MyPage"); page.SiteId = SITE_ID; page.Title = "My fourth page"; page.Ingress = "My fourth ingress"; page.Body = "My fourth body"; await api.Pages.SaveDraftAsync(page); Assert.Equal(count + 1, (await api.Pages.GetAllAsync(SITE_ID)).Count()); } }
protected override void Init() { using (var api = new Api(GetDb(), new ContentServiceFactory(services), storage, cache)) { Piranha.App.Init(); var builder = new PageTypeBuilder(api) .AddType(typeof(MyPage)); builder.Build(); var siteBuilder = new SiteTypeBuilder(api) .AddType(typeof(MySiteContent)); siteBuilder.Build(); api.Sites.Save(new Data.Site() { Id = SITE_1_ID, SiteTypeId = "MySiteContent", InternalId = SITE_1, Title = SITE_1, Hostnames = SITE_1_HOSTS, IsDefault = true }); api.Sites.Save(new Data.Site() { InternalId = SITE_4, Title = SITE_4 }); api.Sites.Save(new Data.Site() { InternalId = SITE_5, Title = SITE_5 }); api.Sites.Save(new Data.Site() { InternalId = SITE_6, Title = SITE_6 }); // Sites for testing hostname routing api.Sites.Save(new Data.Site { InternalId = "RoutingTest1", Title = "RoutingTest1", Hostnames = "mydomain.com,localhost" }); api.Sites.Save(new Data.Site { InternalId = "RoutingTest2", Title = "RoutingTest2", Hostnames = " mydomain.com/en" }); api.Sites.Save(new Data.Site { InternalId = "RoutingTest3", Title = "RoutingTest3", Hostnames = "sub.mydomain.com , sub2.localhost" }); var content = MySiteContent.Create(api); content.Header = "<p>Lorem ipsum</p>"; content.Footer = "<p>Tellus Ligula</p>"; api.Sites.SaveContent(SITE_1_ID, content); var page1 = MyPage.Create(api); page1.SiteId = SITE_1_ID; page1.Title = "Startpage"; page1.Text = "Welcome"; page1.IsHidden = true; page1.Published = DateTime.Now; api.Pages.Save(page1); var page2 = MyPage.Create(api); page2.SiteId = SITE_1_ID; page2.SortOrder = 1; page2.Title = "Second page"; page2.Text = "The second page"; api.Pages.Save(page2); var page3 = MyPage.Create(api); page3.SiteId = SITE_1_ID; page3.ParentId = page2.Id; page3.Title = "Subpage"; page3.Text = "The subpage"; page3.Published = DateTime.Now; api.Pages.Save(page3); } }
protected override void Init() { using (var api = new Api(GetDb(), storage, cache)) { Piranha.App.Init(api); var builder = new PageTypeBuilder(api) .AddType(typeof(MissingPage)) .AddType(typeof(MyBlogPage)) .AddType(typeof(MyPage)) .AddType(typeof(MyCollectionPage)); builder.Build(); var site = new Data.Site() { Id = SITE_ID, Title = "Default Site", InternalId = "DefaultSite", IsDefault = true }; var emptysite = new Data.Site() { Id = SITE_ID, Title = "Empty Site", InternalId = "EmptySite", IsDefault = false }; api.Sites.Save(site); api.Sites.Save(emptysite); var page1 = MyPage.Create(api); page1.Id = PAGE_1_ID; page1.SiteId = SITE_ID; page1.Title = "My first page"; page1.Ingress = "My first ingress"; page1.Body = "My first body"; api.Pages.Save(page1); var page2 = MyPage.Create(api); page2.Id = PAGE_2_ID; page2.SiteId = SITE_ID; page2.Title = "My second page"; page2.Ingress = "My second ingress"; page2.Body = "My second body"; api.Pages.Save(page2); var page3 = MyPage.Create(api); page3.Id = PAGE_3_ID; page3.SiteId = SITE_ID; page3.Title = "My third page"; page3.Ingress = "My third ingress"; page3.Body = "My third body"; api.Pages.Save(page3); var page4 = MyCollectionPage.Create(api); page4.SiteId = SITE_ID; page4.Title = "My collection page"; page4.SortOrder = 1; page4.Texts.Add(new TextField() { Value = "First text" }); page4.Texts.Add(new TextField() { Value = "Second text" }); page4.Texts.Add(new TextField() { Value = "Third text" }); api.Pages.Save(page4); var page5 = MyBlogPage.Create(api); page5.SiteId = SITE_ID; page5.Title = "Blog Archive"; api.Pages.Save(page5); } }
protected override void Init() { services = new ServiceCollection() .AddSingleton <IMyService, MyService>() .BuildServiceProvider(); using (var api = new Api(GetDb(), new ContentServiceFactory(services), storage, cache)) { Piranha.App.Init(); Piranha.App.Fields.Register <MyFourthField>(); var builder = new PageTypeBuilder(api) .AddType(typeof(MissingPage)) .AddType(typeof(MyBlogPage)) .AddType(typeof(MyPage)) .AddType(typeof(MyCollectionPage)) .AddType(typeof(MyDIPage)); builder.Build(); var site = new Data.Site { Id = SITE_ID, Title = "Default Site", InternalId = "DefaultSite", IsDefault = true }; var emptysite = new Data.Site { Id = SITE_ID, Title = "Empty Site", InternalId = "EmptySite", IsDefault = false }; api.Sites.Save(site); api.Sites.Save(emptysite); var page1 = MyPage.Create(api); page1.Id = PAGE_1_ID; page1.SiteId = SITE_ID; page1.Title = "My first page"; page1.Ingress = "My first ingress"; page1.Body = "My first body"; page1.Blocks.Add(new Extend.Blocks.TextBlock { Body = "Sollicitudin Aenean" }); page1.Blocks.Add(new Extend.Blocks.TextBlock { Body = "Ipsum Elit" }); api.Pages.Save(page1); var page2 = MyPage.Create(api); page2.Id = PAGE_2_ID; page2.SiteId = SITE_ID; page2.Title = "My second page"; page2.Ingress = "My second ingress"; page2.Body = "My second body"; api.Pages.Save(page2); var page3 = MyPage.Create(api); page3.Id = PAGE_3_ID; page3.SiteId = SITE_ID; page3.Title = "My third page"; page3.Ingress = "My third ingress"; page3.Body = "My third body"; api.Pages.Save(page3); var page4 = MyCollectionPage.Create(api); page4.SiteId = SITE_ID; page4.Title = "My collection page"; page4.SortOrder = 1; page4.Texts.Add(new TextField { Value = "First text" }); page4.Texts.Add(new TextField { Value = "Second text" }); page4.Texts.Add(new TextField { Value = "Third text" }); api.Pages.Save(page4); var page5 = MyBlogPage.Create(api); page5.SiteId = SITE_ID; page5.Title = "Blog Archive"; api.Pages.Save(page5); var page6 = MyDIPage.Create(api); page6.Id = PAGE_DI_ID; page6.SiteId = SITE_ID; page6.Title = "My Injection Page"; api.Pages.Save(page6); var page7 = MyPage.Create(api); page7.Id = PAGE_7_ID; page7.SiteId = SITE_ID; page7.Title = "My base page"; page7.Ingress = "My base ingress"; page7.Body = "My base body"; page7.ParentId = PAGE_1_ID; page7.SortOrder = 1; api.Pages.Save(page7); var page8 = MyPage.Create(api); page8.OriginalPageId = PAGE_7_ID; page8.Id = PAGE_8_ID; page8.SiteId = SITE_ID; page8.Title = "My copied page"; page8.ParentId = PAGE_1_ID; page8.SortOrder = 2; page8.IsHidden = true; page8.Route = "test-route"; api.Pages.Save(page8); } }
protected override void Init() { using (var api = new Api(GetDb(), new ContentServiceFactory(services), storage)) { Piranha.App.Init(api); var pageBuilder = new PageTypeBuilder(api) .AddType(typeof(MyPage)); pageBuilder.Build(); var postBuilder = new PostTypeBuilder(api) .AddType(typeof(MyPost)); postBuilder.Build(); // Add site var site1 = new Data.Site() { Id = SITE1_ID, Title = "Page Site", InternalId = "PostSite", IsDefault = true }; api.Sites.Save(site1); var site2 = new Data.Site() { Id = SITE2_ID, Title = "Page Site 2", InternalId = "PostSite2", Hostnames = "www.myothersite.com", IsDefault = false }; api.Sites.Save(site2); // Add pages var page1 = MyPage.Create(api); page1.Id = PAGE1_ID; page1.SiteId = SITE1_ID; page1.Title = "Blog"; page1.Published = DateTime.Now; api.Pages.Save(page1); var page2 = MyPage.Create(api); page2.Id = PAGE2_ID; page2.SiteId = SITE2_ID; page2.Title = "News"; page2.Published = DateTime.Now; api.Pages.Save(page2); // Add categories var category1 = new Data.Category() { Id = CATEGORY1_ID, BlogId = PAGE1_ID, Title = "Default category" }; api.Categories.Save(category1); var category2 = new Data.Category() { Id = CATEGORY2_ID, BlogId = PAGE2_ID, Title = "Default category" }; api.Categories.Save(category2); // Add tags var tag = new Data.Tag() { Id = TAG1_ID, BlogId = PAGE1_ID, Title = "My tag" }; api.Tags.Save(tag); tag = new Data.Tag() { Id = TAG2_ID, BlogId = PAGE2_ID, Title = "My other tag" }; api.Tags.Save(tag); // Add posts var post1 = MyPost.Create(api); post1.Id = POST1_ID; post1.BlogId = page1.Id; post1.Category = category1; post1.Title = "My first post"; post1.Body = "My first body"; post1.Tags.Add("My tag"); post1.Published = DateTime.Now; api.Posts.Save(post1); var post2 = MyPost.Create(api); post2.Id = POST2_ID; post2.BlogId = page2.Id; post2.Category = category2; post2.Title = "My second post"; post2.Body = "My second body"; post2.Tags.Add("My other tag"); post2.Published = DateTime.Now; api.Posts.Save(post2); } }
public override async Task InitializeAsync() { services = new ServiceCollection() .AddSingleton <IMyService, MyService>() .BuildServiceProvider(); using (var api = CreateApi()) { Piranha.App.Init(api); Piranha.App.Fields.Register <MyFourthField>(); var builder = new PageTypeBuilder(api) .AddType(typeof(MissingPage)) .AddType(typeof(MyBlogPage)) .AddType(typeof(MyPage)) .AddType(typeof(MyCollectionPage)) .AddType(typeof(MyDIPage)); builder.Build(); var site = new Site { Id = SITE_ID, Title = "My Test Site", InternalId = "MyTestSite", IsDefault = true }; await api.Sites.SaveAsync(site); var page1 = MyPage.Create(api); page1.Id = PAGE_1_ID; page1.SiteId = SITE_ID; page1.Title = "My first page"; page1.Ingress = "My first ingress"; page1.Body = "My first body"; page1.Blocks.Add(new Extend.Blocks.TextBlock { Body = "Sollicitudin Aenean" }); page1.Blocks.Add(new Extend.Blocks.TextBlock { Body = "Ipsum Elit" }); page1.Published = DateTime.Now; await api.Pages.SaveAsync(page1); var page2 = MyPage.Create(api); page2.Id = PAGE_2_ID; page2.SiteId = SITE_ID; page2.Title = "My second page"; page2.Ingress = "My second ingress"; page2.Body = "My second body"; await api.Pages.SaveAsync(page2); var page3 = MyPage.Create(api); page3.Id = PAGE_3_ID; page3.SiteId = SITE_ID; page3.Title = "My third page"; page3.Ingress = "My third ingress"; page3.Body = "My third body"; await api.Pages.SaveAsync(page3); var page4 = MyCollectionPage.Create(api); page4.SiteId = SITE_ID; page4.Title = "My collection page"; page4.SortOrder = 1; page4.Texts.Add(new TextField { Value = "First text" }); page4.Texts.Add(new TextField { Value = "Second text" }); page4.Texts.Add(new TextField { Value = "Third text" }); await api.Pages.SaveAsync(page4); var page5 = MyBlogPage.Create(api); page5.SiteId = SITE_ID; page5.Title = "Blog Archive"; await api.Pages.SaveAsync(page5); var page6 = MyDIPage.Create(api); page6.Id = PAGE_DI_ID; page6.SiteId = SITE_ID; page6.Title = "My Injection Page"; await api.Pages.SaveAsync(page6); var page7 = MyPage.Create(api); page7.Id = PAGE_7_ID; page7.SiteId = SITE_ID; page7.Title = "My base page"; page7.Ingress = "My base ingress"; page7.Body = "My base body"; page7.ParentId = PAGE_1_ID; page7.SortOrder = 1; await api.Pages.SaveAsync(page7); var page8 = MyPage.Create(api); page8.OriginalPageId = PAGE_7_ID; page8.Id = PAGE_8_ID; page8.SiteId = SITE_ID; page8.Title = "My copied page"; page8.ParentId = PAGE_1_ID; page8.SortOrder = 2; page8.IsHidden = true; page8.Route = "test-route"; await api.Pages.SaveAsync(page8); } }