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);
            }
        }
예제 #3
0
        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();
            }
        }
예제 #5
0
        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);
            }
        }