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 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)); }
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); }
public SitemapXmlController(IDomainService domainService, ISitemapXmlGenerator sitemapXmlGenerator) { _domainService = domainService; _sitemapXmlGenerator = sitemapXmlGenerator; }