diff --git a/Oqtane.Server/Pages/Sitemap.cshtml.cs b/Oqtane.Server/Pages/Sitemap.cshtml.cs
index dd72c071..d4d6d636 100644
--- a/Oqtane.Server/Pages/Sitemap.cshtml.cs
+++ b/Oqtane.Server/Pages/Sitemap.cshtml.cs
@@ -30,87 +30,90 @@ namespace Oqtane.Pages
private readonly Alias _alias;
private string sitemapXml;
- public SitemapModel(IServiceProvider serviceProvider, IPageRepository pages, IPageModuleRepository pageModules, IModuleDefinitionRepository moduleDefinitions, IUserPermissions userPermissions, IUrlMappingRepository urlMappings, ISyncManager syncManager, ILogManager logger, ITenantManager tenantManager)
+ public SitemapModel(IServiceProvider serviceProvider, IPageRepository pages, IPageModuleRepository pageModules, IModuleDefinitionRepository moduleDefinitions, ISettingRepository settings, IUserPermissions userPermissions, IUrlMappingRepository urlMappings, ISyncManager syncManager, ILogManager logger, ITenantManager tenantManager)
{
_serviceProvider = serviceProvider;
_pages = pages;
_pageModules = pageModules;
_moduleDefinitions = moduleDefinitions;
+ _settings = settings;
_userPermissions = userPermissions;
_logger = logger;
_alias = tenantManager.GetAlias();
}
- public IActionResult OnGetAsync()
+ public IActionResult OnGet()
{
- var sitemap = new List();
+ var sitemap = new List();
- // build site map
- var moduleDefinitions = _moduleDefinitions.GetModuleDefinitions(_alias.SiteId).ToList();
- var pageModules = _pageModules.GetPageModules(_alias.SiteId);
- foreach (var page in _pages.GetPages(_alias.SiteId))
+ // build site map
+ var moduleDefinitions = _moduleDefinitions.GetModuleDefinitions(_alias.SiteId).ToList();
+ var pageModules = _pageModules.GetPageModules(_alias.SiteId);
+ foreach (var page in _pages.GetPages(_alias.SiteId))
+ {
+ if (_userPermissions.IsAuthorized(null, PermissionNames.View, page.PermissionList) && page.IsNavigation)
{
- if (_userPermissions.IsAuthorized(null, PermissionNames.View, page.PermissionList) && page.IsNavigation)
- {
- sitemap.Add(new Sitemap { Url = _alias.Protocol + _alias.Name + Utilities.NavigateUrl(_alias.Path, page.Path, ""), ModifiedOn = page.ModifiedOn });
+ sitemap.Add(new Sitemap { Url = _alias.Protocol + _alias.Name + Utilities.NavigateUrl(_alias.Path, page.Path, ""), ModifiedOn = page.ModifiedOn });
- foreach (var pageModule in pageModules.Where(item => item.PageId == page.PageId))
+ foreach (var pageModule in pageModules.Where(item => item.PageId == page.PageId))
+ {
+ if (_userPermissions.IsAuthorized(null, PermissionNames.View, pageModule.Module.PermissionList))
{
- if (_userPermissions.IsAuthorized(null, PermissionNames.View, pageModule.Module.PermissionList))
+ var moduleDefinition = moduleDefinitions.Where(item => item.ModuleDefinitionName == pageModule.Module.ModuleDefinitionName).FirstOrDefault();
+ if (moduleDefinition != null && moduleDefinition.ServerManagerType != "")
{
- var moduleDefinition = moduleDefinitions.Where(item => item.ModuleDefinitionName == pageModule.Module.ModuleDefinitionName).FirstOrDefault();
- if (moduleDefinition != null && moduleDefinition.ServerManagerType != "")
+ Type moduletype = Type.GetType(moduleDefinition.ServerManagerType);
+ if (moduletype != null && moduletype.GetInterface("ISitemap") != null)
{
- Type moduletype = Type.GetType(moduleDefinition.ServerManagerType);
- if (moduletype != null && moduletype.GetInterface("ISitemap") != null)
+ try
{
- try
+ pageModule.Module.Settings = _settings.GetSettings(EntityNames.Module, pageModule.ModuleId).ToDictionary(x => x.SettingName, x => x.SettingValue);
+ var moduleobject = ActivatorUtilities.CreateInstance(_serviceProvider, moduletype);
+ var urls = ((ISitemap)moduleobject).GetUrls(_alias.Path, page.Path, pageModule.Module);
+ foreach (var url in urls)
{
- var moduleobject = ActivatorUtilities.CreateInstance(_serviceProvider, moduletype);
- var urls = ((ISitemap)moduleobject).GetUrls(_alias.Path, page.Path, pageModule.Module);
- foreach (var url in urls)
- {
- sitemap.Add(new Sitemap { Url = _alias.Protocol + _alias.Name + url.Url, ModifiedOn = url.ModifiedOn });
- }
- }
- catch (Exception ex)
- {
- _logger.Log(LogLevel.Error, this, LogFunction.Other, ex, "Error Retrieving SiteMap For {Name} Module", moduleDefinition.Name);
+ sitemap.Add(new Sitemap { Url = _alias.Protocol + _alias.Name + url.Url, ModifiedOn = url.ModifiedOn });
}
}
+ catch (Exception ex)
+ {
+ _logger.Log(LogLevel.Error, this, LogFunction.Other, ex, "Error Retrieving SiteMap For {Name} Module", moduleDefinition.Name);
+ }
}
}
}
}
}
+ }
- // write XML
- XmlWriterSettings settings = new XmlWriterSettings();
- settings.Indent = true;
- settings.IndentChars = (" ");
- settings.CloseOutput = true;
- settings.OmitXmlDeclaration = true;
- settings.WriteEndDocumentOnClose = true;
+ // write XML
+ XmlWriterSettings settings = new XmlWriterSettings();
+ settings.Indent = true;
+ settings.IndentChars = (" ");
+ settings.CloseOutput = true;
+ settings.OmitXmlDeclaration = true;
+ settings.WriteEndDocumentOnClose = true;
- StringBuilder builder = new StringBuilder();
- using (XmlWriter writer = XmlWriter.Create(builder, settings))
+ StringBuilder builder = new StringBuilder();
+ using (XmlWriter writer = XmlWriter.Create(builder, settings))
+ {
+ writer.WriteStartDocument();
+ writer.WriteStartElement("urlset", "http://www.sitemaps.org/schemas/sitemap/0.9");
+
+ foreach (var url in sitemap)
{
- writer.WriteStartDocument();
- writer.WriteStartElement("urlset", "http://www.sitemaps.org/schemas/sitemap/0.9");
-
- foreach (var url in sitemap)
- {
- writer.WriteStartElement("url");
- writer.WriteElementString("loc", url.Url);
- writer.WriteElementString("lastmod", url.ModifiedOn.ToString("yyyy-MM-dd"));
- writer.WriteEndElement();
- }
- writer.Close();
+ writer.WriteStartElement("url");
+ writer.WriteElementString("loc", url.Url);
+ writer.WriteElementString("lastmod", url.ModifiedOn.ToString("yyyy-MM-dd"));
+ writer.WriteEndElement();
}
- // Cache the sitemap XML
- sitemapXml = builder.ToString();
+ writer.Close();
+ }
+
+ sitemapXml = builder.ToString();
return Content(sitemapXml, "application/xml");
}
}
}
+