예제 #1
0
    /// </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);
    }
예제 #2
0
    /// <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);
                }
            }
        }
    }
예제 #3
0
    /// <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);
    }