/// </summary> /// <param name="control"></param> /// <returns></returns> protected bool CheckIfXMLDataSourceExists(IXMLDataSource control) { bool isExists = true; foreach (string filename in control.XmlDataFileNames) { if (!System.IO.File.Exists(Server.MapPath(@"App_Data\" + filename))) { isExists = false; } } return(isExists); }
/// <summary> /// Loading all available pages for current user /// </summary> protected void DataBindMainMenu() { XDocument menu = XDocument.Load(Server.MapPath("~/App_Data/MainMenu.xml")); MenuItems = new Dictionary <string, string>(); foreach (XElement menuItem in menu.Root.Elements().Where(el => el.Attribute("visible").Value == "true")) //get all visible menu items { string menuName = menuItem.Attribute("name").Value; string menuPath = menuItem.Attribute("path").Value; if (menuItem.Attribute("role").Value.Contains("Guest") && !User.Identity.IsAuthenticated) { MenuItems.Add(menuItem.Attribute("name").Value, menuItem.Attribute("path").Value); } else if (menuItem.Attribute("role").Value.Contains("Admin") && Roles.IsUserInRole("Admin")) { MenuItems.Add(menuItem.Attribute("name").Value, menuItem.Attribute("path").Value); } else if (menuItem.Attribute("role").Value.Contains("Master") && Roles.IsUserInRole("Master")) { MenuItems.Add(menuName, menuPath); } else if (user != null && (menuItem.Attribute("role").Value.Contains("User"))) { int totalControls = menuItem.Elements().Count(); foreach (XElement control in menuItem.Elements()) { UserControl u = (UserControl)LoadControl("Modules/" + control.Attribute("name").Value); IXMLDataSource xmlSourceControl = u as IXMLDataSource; if (xmlSourceControl != null) //check if the control uses xml file as data source { if (!CheckIfXMLDataSourceExists(xmlSourceControl)) //check if the xml data source file exists { totalControls--; } } } if (totalControls > 0) { MenuItems.Add(menuName, menuPath); } } } }
/// <summary> /// Loadig all controls for current page /// </summary> /// <param name="mustDataBind"></param> protected void LoadControls(bool mustDataBind) { LastLoadedControls = new List <string>(); CurrentUrlHash = Request.Url.PathAndQuery.Replace("/", "#").Replace(".aspx", ""); string chekCurrentUrlHash = CurrentUrlHash; if (CurrentUrlHash.Contains("?")) { string[] splitCurrentUrlHash = CurrentUrlHash.Split(new string[] { "?" }, StringSplitOptions.RemoveEmptyEntries); chekCurrentUrlHash = splitCurrentUrlHash[0]; } XElement currentMenuItem = XDocument.Load(Server.MapPath("~/App_Data/MainMenu.xml")).Root.Elements().First(el => el.Attribute("path").Value.ToLower().Replace(".aspx", "") == chekCurrentUrlHash.Replace("#", "").ToLower()); foreach (XElement control in currentMenuItem.Elements()) //load all controns that need to be inside this control { UserControl u = (UserControl)LoadControl("Modules/" + control.Attribute("name").Value); IXMLDataSource xmlSourceControl = u as IXMLDataSource; if (xmlSourceControl != null) //check if the control uses xml file as data source { if (CheckIfXMLDataSourceExists(xmlSourceControl)) //check if the xml data source file exists { LastLoadedControls.Add("Modules/" + control.Attribute("name").Value); } } else { LastLoadedControls.Add("Modules/" + control.Attribute("name").Value); } } LoadUserControls(mustDataBind); }