public string GetXmlSitemap()
        {
            var activeLanguages = _languageRepository.GetActiveLanguages();

            _isMultilingual   = activeLanguages != null && activeLanguages.Count > 0;
            _enabledLanguages = _isMultilingual ? activeLanguages.Select(al => al.CultureCode).ToList() : null;
            var isSecureConnection = _httpContextAccessor.HttpContext.Request.IsHttps;

            _requestHost = _httpContextAccessor.HttpContext.Request.Host.Host;
            var scheme = isSecureConnection ? "https://" : "http://";

            _protocolHost = scheme + _requestHost;


            var publicPages = _navigation.GetPublicPages();
            List <SitemapUrl> sitemapUrls = new List <SitemapUrl>();

            if (publicPages != null && publicPages.Count > 0)
            {
                foreach (var page in publicPages)
                {
                    sitemapUrls.Add(GetSitemapUrl(page));
                }
            }


            XmlWriterSettings settings = new XmlWriterSettings();

            settings.Indent   = true;
            settings.Encoding = Encoding.UTF8;

            using (var stringWriter = new StringWriterUtf8())
            {
                using (var writer = XmlWriter.Create(stringWriter, settings))
                {
                    // build header
                    writer.WriteStartElement("urlset", "http://www.sitemaps.org/schemas/sitemap/" + SITEMAP_VERSION);
                    writer.WriteAttributeString("xmlns", "xsi", null, "http://www.w3.org/2001/XMLSchema-instance");
                    writer.WriteAttributeString("xmlns", "xhtml", null, "http://www.w3.org/1999/xhtml");
                    var schemaLocation = "http://www.sitemaps.org/schemas/sitemap/" + SITEMAP_VERSION;
                    writer.WriteAttributeString("xsi", "schemaLocation", null, string.Format("{0} {0}/sitemap.xsd", schemaLocation));

                    // write urls to output
                    foreach (SitemapUrl url in sitemapUrls)
                    {
                        AddURL(url, writer);
                    }

                    writer.WriteEndElement();
                    writer.Close();
                }
                return(stringWriter.ToString());
            }
        }
 public List <Language> GetActiveLanguages()
 {
     try
     {
         var enabledLanguages = _languageRepository.GetActiveLanguages();
         return(enabledLanguages);
     }
     catch (Exception ex)
     {
         _logger.LogError("Error occured while getting active languages", ex);
         throw ex;
     }
 }
        private Dictionary <string, string> InitParentUrls()
        {
            var activeLanguages = _languageRepository.GetActiveLanguages();
            Dictionary <string, string> parentURLs = new Dictionary <string, string>();

            if (activeLanguages != null && activeLanguages.Count > 1)
            {
                foreach (var lang in activeLanguages)
                {
                    parentURLs.Add(lang.CultureCode, lang.CultureCode.ToLower());
                }
            }
            else
            {
                parentURLs.Add(Globals.FallbackLanguage, "");
            }
            return(parentURLs);
        }
Example #4
0
        public List <Language> GetActiveLanguages()
        {
            var enabledLanguages = _languageRepository.GetActiveLanguages();

            return(enabledLanguages);
        }