private static IList<XElement> GenerateXmlElements(IEnumerable<PageReference> pages,
                                                        ISet<string> urlSet,
                                                        SitemapData sitemapData,
                                                        ISitemapXmlGenerator sitemapGenerator)
        {
            IList<XElement> sitemapXmlElements = new List<XElement>();

            var baseUrl = string.IsNullOrEmpty(sitemapData.SiteUrl)
                             ? Settings.Instance.SiteUrl.ToString()
                             : sitemapData.SiteUrl;

            foreach (PageReference pageReference in pages)
            {
                var languagePages = DataFactory.Instance.GetLanguageBranches(pageReference);

                foreach (var page in languagePages)
                {
                    if (urlSet.Count >= MaxSitemapEntryCount)
                    {
                        sitemapData.ExceedsMaximumEntryCount = true;
                        return sitemapXmlElements;
                    }

                    AddFilteredPageElement(page, baseUrl, urlSet, sitemapData, sitemapGenerator, sitemapXmlElements);
                }
            }

            return sitemapXmlElements;
        }
        private static IList <XElement> GenerateXmlElements(IEnumerable <PageReference> pages,
                                                            ISet <string> urlSet,
                                                            SitemapData sitemapData,
                                                            ISitemapXmlGenerator sitemapGenerator)
        {
            IList <XElement> sitemapXmlElements = new List <XElement>();

            var baseUrl = string.IsNullOrEmpty(sitemapData.SiteUrl)
                             ? Settings.Instance.SiteUrl.ToString()
                             : sitemapData.SiteUrl;

            foreach (PageReference pageReference in pages)
            {
                var languagePages = DataFactory.Instance.GetLanguageBranches(pageReference);

                foreach (var page in languagePages)
                {
                    if (urlSet.Count >= MaxSitemapEntryCount)
                    {
                        sitemapData.ExceedsMaximumEntryCount = true;
                        return(sitemapXmlElements);
                    }

                    AddFilteredPageElement(page, baseUrl, urlSet, sitemapData, sitemapGenerator, sitemapXmlElements);
                }
            }

            return(sitemapXmlElements);
        }
        private static void AddFilteredPageElement(PageData page,
                                                   string baseUrl,
                                                   ISet <string> urlSet,
                                                   SitemapData sitemapData,
                                                   ISitemapXmlGenerator sitemapGenerator,
                                                   IList <XElement> xmlElements)
        {
            // filter the page
            if (PageFilter.FilterPage(page))
            {
                return;
            }

            // get page url
            string contentUrl  = UrlHelper.GetContentUrl(page);
            string fullPageUrl = UrlHelper.CombineUrl(baseUrl, contentUrl);

            // filter url
            if (urlSet.Contains(fullPageUrl) || UrlFilter.IsUrlFiltered(contentUrl, sitemapData))
            {
                return;
            }

            // get xml element
            var pageElement = sitemapGenerator.GenerateSiteElement(page, fullPageUrl);

            xmlElements.Add(pageElement);
            urlSet.Add(fullPageUrl);
        }
        /// <summary>
        /// Creates xml content for a given sitemap configuration entity
        /// </summary>
        /// <param name="sitemapData">sitemap configuration object</param>
        /// <param name="entryCount">out: count of sitemap entries in the returned element</param>
        /// <returns>XElement that contains sitemap entries according to the configuration</returns>
        public static XElement CreateSitemapXmlContents(SitemapData sitemapData, out int entryCount)
        {
            ISitemapXmlGenerator sitemapGenerator = GetSitemapXmlGenerator(sitemapData);

            var sitemapElement = sitemapGenerator.GenerateRootElement();

            ISet <string> urlSet = new HashSet <string>();

            sitemapElement.Add(GetSitemapXmlElements(sitemapData, sitemapGenerator, urlSet));

            entryCount = urlSet.Count;
            return(sitemapElement);
        }
        private void GenerateSitemaps(SitemapData sitemapConfig, StringBuilder message)
        {
            int entryCount;
            _currentGenerator = _sitemapXmlGeneratorFactory.GetSitemapXmlGenerator(sitemapConfig);
            bool success = _currentGenerator.Generate(sitemapConfig, true, out entryCount);

            if (success)
            {
                message.Append(string.Format("<br/>\"{0}{1}\": {2} entries", sitemapConfig.SiteUrl, _sitemapRepository.GetHostWithLanguage(sitemapConfig), entryCount));
            }
            else
            {
                message.Append("<br/>Error creating sitemap for \"" + _sitemapRepository.GetHostWithLanguage(sitemapConfig) + "\"");
            }
        }
        private void GenerateSitemaps(SitemapData sitemapConfig, StringBuilder message)
        {
            int entryCount;

            _currentGenerator = _sitemapXmlGeneratorFactory.GetSitemapXmlGenerator(sitemapConfig);
            bool success = _currentGenerator.Generate(sitemapConfig, true, out entryCount);

            if (success)
            {
                message.Append(string.Format("<br/>\"{0}{1}\": {2} entries", sitemapConfig.SiteUrl, _sitemapRepository.GetHostWithLanguage(sitemapConfig), entryCount));
            }
            else
            {
                message.Append("<br/>Error creating sitemap for \"" + _sitemapRepository.GetHostWithLanguage(sitemapConfig) + "\"");
            }
        }
        private static IList<XElement> GetSitemapXmlElements(SitemapData sitemapData, 
                                                            ISitemapXmlGenerator sitemapGenerator, 
                                                            ISet<string> urlSet)
        {
            var rootPage = sitemapData.RootPageId == 0
                               ? PageReference.RootPage
                               : new PageReference(sitemapData.RootPageId);

            var descendants = DataFactory.Instance.GetDescendents(rootPage);

            if (rootPage != PageReference.RootPage)
            {
                descendants.Add(rootPage);
            }

            return GenerateXmlElements(descendants, urlSet, sitemapData, sitemapGenerator);
        }
        private static IList <XElement> GetSitemapXmlElements(SitemapData sitemapData,
                                                              ISitemapXmlGenerator sitemapGenerator,
                                                              ISet <string> urlSet)
        {
            var rootPage = sitemapData.RootPageId == 0
                               ? PageReference.RootPage
                               : new PageReference(sitemapData.RootPageId);

            var descendants = DataFactory.Instance.GetDescendents(rootPage);

            if (rootPage != PageReference.RootPage)
            {
                descendants.Add(rootPage);
            }

            return(GenerateXmlElements(descendants, urlSet, sitemapData, sitemapGenerator));
        }
Beispiel #9
0
 public SitemapsModuleApiController(
     ISitemapService sitemapService,
     ISitemapItemService sitemapItemService,
     ISitemapXmlGenerator sitemapXmlGenerator,
     IUserNameResolver userNameResolver,
     IPushNotificationManager notifier,
     IBlobStorageProvider blobStorageProvider,
     IBlobUrlResolver blobUrlResolver,
     IHostingEnvironment hostingEnvironment)
 {
     _sitemapService      = sitemapService;
     _sitemapItemService  = sitemapItemService;
     _sitemapXmlGenerator = sitemapXmlGenerator;
     _userNameResolver    = userNameResolver;
     _notifier            = notifier;
     _blobStorageProvider = blobStorageProvider;
     _blobUrlResolver     = blobUrlResolver;
     _hostingEnvironment  = hostingEnvironment;
 }
        private static void AddFilteredPageElement(PageData page,
                                                string baseUrl,
                                                ISet<string> urlSet,
                                                SitemapData sitemapData,
                                                ISitemapXmlGenerator sitemapGenerator,
                                                IList<XElement> xmlElements)
        {
            // filter the page
            if (PageFilter.FilterPage(page))
            {
                return;
            }

            // get page url
            string contentUrl = UrlHelper.GetContentUrl(page);
            string fullPageUrl = UrlHelper.CombineUrl(baseUrl, contentUrl);

            // filter url
            if (urlSet.Contains(fullPageUrl) || UrlFilter.IsUrlFiltered(contentUrl, sitemapData))
            {
                return;
            }

            // get xml element
            var pageElement = sitemapGenerator.GenerateSiteElement(page, fullPageUrl);

            xmlElements.Add(pageElement);
            urlSet.Add(fullPageUrl);
        }
Beispiel #11
0
 public SitemapXmlController(IDomainService domainService, ISitemapXmlGenerator sitemapXmlGenerator)
 {
     _domainService       = domainService;
     _sitemapXmlGenerator = sitemapXmlGenerator;
 }