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));
        }
Esempio n. 2
0
        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);
        }