private void AddPages(SiteMapNode parentNode) { SiteMapDataContext dbSiteMap = new SiteMapDataContext(SystemSetting.SageFrameConnectionString); string userName = SystemSetting.AnonymousUsername; if (HttpContext.Current.User != null) { if (Membership.GetUser() != null) { userName = Membership.GetUser().UserName; } } var pages = dbSiteMap.sp_GetSiteMapNodeWithRolesByParentNodeID(Int32.Parse(parentNode.Key.ToString()), userName, GetPortalID); foreach (var page in pages) { string[] PageRoles = page.PageRoles.Split(','); IList roles = new ArrayList(); for (int i = 0; i < PageRoles.Length; i++) { roles.Add(PageRoles[i]); } string url = string.Empty; if (string.IsNullOrEmpty(page.Url)) { url = "~" + page.TabPath; } else { url = page.Url; } SiteMapNode pageNode = new SiteMapNode(this, page.PageID.ToString(), url, page.PageName, page.Description, roles, null, null, null); AddNode(pageNode, parentNode); AddPages(pageNode); } }
public override SiteMapNode BuildSiteMap() { try { lock (this) { if (root != null) { return(root); } base.Clear(); string nodeKey, nodeTitle, nodeUrl, nodeDescription; SiteMapDataContext dbSiteMap = new SiteMapDataContext(SystemSetting.SageFrameConnectionString); string userName = SystemSetting.AnonymousUsername; if (HttpContext.Current.User != null) { if (Membership.GetUser() != null) { userName = Membership.GetUser().UserName; } } IList rootRoles = new ArrayList(); rootRoles.Add("*"); root = new SiteMapNode(this, "root", "~/" + CommonHelper.DefaultPage, "Home", "", rootRoles, null, null, null); AddNode(root); var pages = dbSiteMap.sp_GetSiteMapNodeWithRolesByParentNodeID(0, userName, GetPortalID); foreach (var page in pages) { nodeKey = page.PageID.ToString(); nodeTitle = page.PageName; if (string.IsNullOrEmpty(page.Url)) { nodeUrl = "~" + page.TabPath; } else { nodeUrl = page.Url; } nodeDescription = page.Description; string[] PageRoles = page.PageRoles.Split(','); IList roles = new ArrayList(); for (int i = 0; i < PageRoles.Length; i++) { roles.Add(PageRoles[i]); } SiteMapNode childNode = FindSiteMapNodeFromKey(nodeKey); if (childNode == null) { childNode = new SiteMapNode(this, nodeKey, nodeUrl, nodeTitle, nodeDescription, roles, null, null, null); AddNode(childNode, root); AddPages(childNode); } } SqlCacheDependency pagesTableDependency = new SqlCacheDependency(SystemSetting.SageFrameDBName, "Pages"); SqlCacheDependency MembershipTableDependency = new SqlCacheDependency(SystemSetting.SageFrameDBName, "aspnet_Membership"); SqlCacheDependency UsersTableDependency = new SqlCacheDependency(SystemSetting.SageFrameDBName, "aspnet_users"); AggregateCacheDependency aggregateDependencies = new AggregateCacheDependency(); aggregateDependencies.Add(pagesTableDependency); aggregateDependencies.Add(MembershipTableDependency); aggregateDependencies.Add(UsersTableDependency); HttpRuntime.Cache.Insert(CacheDependencyKey, DateTime.Now, aggregateDependencies , DateTime.Now , Cache.NoSlidingExpiration , CacheItemPriority.Normal , new CacheItemRemovedCallback(OnSiteMapChanged)); return(root); } } catch { return(root); } }
public override SiteMapNode BuildSiteMap() { try { lock (this) { if (root != null) return root; base.Clear(); string nodeKey, nodeTitle, nodeUrl, nodeDescription; SiteMapDataContext dbSiteMap = new SiteMapDataContext(SystemSetting.SageFrameConnectionString); string userName = SystemSetting.AnonymousUsername; if (HttpContext.Current.User != null) { if (Membership.GetUser() != null) { userName = Membership.GetUser().UserName; } } IList rootRoles = new ArrayList(); rootRoles.Add("*"); root = new SiteMapNode(this, "root", "~/" + CommonHelper.DefaultPage, "Home", "", rootRoles, null, null, null); AddNode(root); var pages = dbSiteMap.sp_GetSiteMapNodeWithRolesByParentNodeID(0, userName, GetPortalID); foreach (var page in pages) { nodeKey = page.PageID.ToString(); nodeTitle = page.PageName; if (string.IsNullOrEmpty(page.Url)) { nodeUrl = "~" + page.TabPath; } else { nodeUrl = page.Url; } nodeDescription = page.Description; string[] PageRoles = page.PageRoles.Split(','); IList roles = new ArrayList(); for (int i = 0; i < PageRoles.Length; i++) { roles.Add(PageRoles[i]); } SiteMapNode childNode = FindSiteMapNodeFromKey(nodeKey); if (childNode == null) { childNode = new SiteMapNode(this, nodeKey, nodeUrl, nodeTitle, nodeDescription, roles, null, null, null); AddNode(childNode, root); AddPages(childNode); } } SqlCacheDependency pagesTableDependency = new SqlCacheDependency(SystemSetting.SageFrameDBName, "Pages"); SqlCacheDependency MembershipTableDependency = new SqlCacheDependency(SystemSetting.SageFrameDBName, "aspnet_Membership"); SqlCacheDependency UsersTableDependency = new SqlCacheDependency(SystemSetting.SageFrameDBName, "aspnet_users"); AggregateCacheDependency aggregateDependencies = new AggregateCacheDependency(); aggregateDependencies.Add(pagesTableDependency); aggregateDependencies.Add(MembershipTableDependency); aggregateDependencies.Add(UsersTableDependency); HttpRuntime.Cache.Insert(CacheDependencyKey, DateTime.Now, aggregateDependencies , DateTime.Now , Cache.NoSlidingExpiration , CacheItemPriority.Normal , new CacheItemRemovedCallback(OnSiteMapChanged)); return root; } } catch { return root; } }
public void GenerateXMLFile(string sFileName, Int32 portalID, string portalName, string username) { IsUseFriendlyUrls = pagebase.GetSettingBollByKey(SageFrameSettingKeys.UseFriendlyUrls); Encoding enc = Encoding.UTF8; XmlTextWriter objXMLTW = new XmlTextWriter(sFileName, enc); try { objXMLTW.WriteStartDocument(); objXMLTW.WriteStartElement("siteMap"); objXMLTW.WriteAttributeString("enableLocalization", "true"); objXMLTW.WriteStartElement("siteMapNode"); objXMLTW.WriteAttributeString("title", "$resources:" + portalName + "sitemap, HomeTitle"); objXMLTW.WriteAttributeString("description", "$resources:" + portalName + "sitemap, HomeDescription"); if (IsUseFriendlyUrls) { if (portalID > 1) { objXMLTW.WriteAttributeString("url", "~/portal/" + portalName); } else { objXMLTW.WriteAttributeString("url", "~/"); } } else { objXMLTW.WriteAttributeString("url", "~/Default.aspx?ptlid=" + portalID.ToString() + "&ptSEO=" + portalName); } objXMLTW.WriteAttributeString("roles", "*"); var pages = dbSiteMap.sp_GetSiteMapNodeWithRolesByParentNodeID(0, username, portalID); foreach (sp_GetSiteMapNodeWithRolesByParentNodeIDResult page in pages) { string url = string.Empty; if (string.IsNullOrEmpty(page.Url)) { url = "~" + page.TabPath; } else { url = page.Url; } Int32 PageID = page.PageID; objXMLTW.WriteStartElement("siteMapNode"); objXMLTW.WriteAttributeString("title", "$resources:" + portalName + "sitemap, " + page.PageName.Replace(" ", "") + "Title"); objXMLTW.WriteAttributeString("description", "$resources:" + portalName + "sitemap, " + page.PageName.Replace(" ", "") + "Description"); objXMLTW.WriteAttributeString("url", url); objXMLTW.WriteAttributeString("roles", page.PageRoles); objXMLTW.WriteAttributeString("startdate", page.StartDate.ToString()); objXMLTW.WriteAttributeString("enddate", page.EndDate.ToString()); AddPages(PageID, portalID, portalName, username, objXMLTW); objXMLTW.WriteEndElement(); } objXMLTW.WriteEndElement(); objXMLTW.WriteEndDocument(); } finally { objXMLTW.Flush(); objXMLTW.Close(); } }