public override void Transform(Engine engine, Package package) { Initialize(engine, package); _config = GetNavigationConfiguration(GetComponent()); SitemapItemData sitemap = GenerateStructureGroupNavigation(Publication.RootStructureGroup); string sitemapJson = JsonSerialize(sitemap, IsPreview); package.PushItem(Package.OutputName, package.CreateStringItem(ContentType.Text, sitemapJson)); }
public void Transform_GenerateSitemap_Success() { Component navConfigComponent = (Component)TestSession.GetObject(TestFixture.NavConfigurationComponentWebDavUrl); Publication testPublication = (Publication)navConfigComponent.ContextRepository; StructureGroup rootStructureGroup = testPublication.RootStructureGroup; SitemapItemData sitemapRoot = RunTemplate <SitemapItemData>(typeof(GenerateSiteMap), navConfigComponent); Assert.AreEqual(rootStructureGroup.Id.ToString(), sitemapRoot.Id, "sitemapRoot.Id"); Assert.AreEqual(rootStructureGroup.PublishLocationUrl, sitemapRoot.Url, "sitemapRoot.Url"); Assert.AreEqual("StructureGroup", sitemapRoot.Type, "sitemapRoot.Type"); Assert.AreEqual(rootStructureGroup.Title, sitemapRoot.Title, "sitemapRoot.Title"); Assert.IsNotNull(sitemapRoot.Items, "sitemapRoot.Items"); // TODO: further assertions }
private SitemapItemData GenerateStructureGroupNavigation(StructureGroup structureGroup) { SitemapItemData result = new SitemapItemData { Id = structureGroup.Id, Title = GetNavigationTitle(structureGroup), Url = System.Web.HttpUtility.UrlDecode(structureGroup.PublishLocationUrl), Type = ItemType.StructureGroup.ToString(), Visible = IsVisible(structureGroup.Title) }; foreach (RepositoryLocalObject item in structureGroup.GetItems().Where(i => !i.Title.StartsWith("_")).OrderBy(i => i.Title)) { SitemapItemData childSitemapItem; Page page = item as Page; if (page != null) { if (!IsPublished(page)) { continue; } childSitemapItem = new SitemapItemData { Id = page.Id, Title = GetNavigationTitle(page), Url = GetUrl(page), Type = ItemType.Page.ToString(), PublishedDate = GetPublishedDate(page, Engine.PublishingContext?.TargetType), Visible = IsVisible(page.Title) }; } else { childSitemapItem = GenerateStructureGroupNavigation((StructureGroup)item); } result.Items.Add(childSitemapItem); } return(result); }