Beispiel #1
0
        private void BindMenu(MenuItemCollection items, XmlNodeList nodes)
        {
            foreach (XmlNode node in nodes)
            {
                string pageId = null;
                if (node.Attributes["pageID"] != null)
                {
                    pageId = node.Attributes["pageID"].Value;
                }

                if (!PortalUtils.PageExists(pageId))
                {
                    continue;
                }

                string url = null;
                if (node.Attributes["url"] != null)
                {
                    url = node.Attributes["url"].Value;
                }

                string title = null;
                if (node.Attributes["title"] != null)
                {
                    title = node.Attributes["title"].Value;
                }

                string target = null;
                if (node.Attributes["target"] != null)
                {
                    target = node.Attributes["target"].Value;
                }

                string resourceGroup = null;
                if (node.Attributes["resourceGroup"] != null)
                {
                    resourceGroup = node.Attributes["resourceGroup"].Value;
                }

                string quota = null;
                if (node.Attributes["quota"] != null)
                {
                    quota = node.Attributes["quota"].Value;
                }

                bool disabled = false;
                if (node.Attributes["disabled"] != null)
                {
                    disabled = Utils.ParseBool(node.Attributes["disabled"].Value, false);
                }

                // get custom page parameters
                XmlNodeList   xmlParameters = node.SelectNodes("Parameters/Add");
                List <string> parameters    = new List <string>();
                foreach (XmlNode xmlParameter in xmlParameters)
                {
                    parameters.Add(xmlParameter.Attributes["name"].Value
                                   + "=" + xmlParameter.Attributes["value"].Value);
                }

                // add menu item
                string pageUrl = !String.IsNullOrEmpty(url) ? url : PortalUtils.NavigatePageURL(
                    pageId, PortalUtils.SPACE_ID_PARAM, PanelSecurity.PackageId.ToString(), parameters.ToArray());
                string   pageName = !String.IsNullOrEmpty(title) ? title : PortalUtils.GetLocalizedPageName(pageId);
                MenuItem item     = new MenuItem(pageName, "", "", disabled ? null : pageUrl);

                if (!String.IsNullOrEmpty(target))
                {
                    item.Target = target;
                }
                item.Selectable = !disabled;

                // check groups/quotas
                bool display = true;
                if (cntx != null)
                {
                    display = (String.IsNullOrEmpty(resourceGroup) ||
                               cntx.Groups.ContainsKey(resourceGroup)) &&
                              (String.IsNullOrEmpty(quota) ||
                               (cntx.Quotas.ContainsKey(quota) &&
                                cntx.Quotas[quota].QuotaAllocatedValue != 0));
                }

                if (display)
                {
                    // process nested menu items
                    XmlNodeList xmlNestedNodes = node.SelectNodes("MenuItems/MenuItem");
                    BindMenu(item.ChildItems, xmlNestedNodes);
                }

                if (display && !(disabled && item.ChildItems.Count == 0))
                {
                    items.Add(item);
                }
            }
        }
        private MenuItem CreateMenuItem(PackageContext cntx, XmlNode xmlNode)
        {
            string pageId = GetXmlAttribute(xmlNode, "pageID");

            if (!PortalUtils.PageExists(pageId))
            {
                return(null);
            }

            string url           = GetXmlAttribute(xmlNode, "url");
            string title         = GetXmlAttribute(xmlNode, "title");
            string imageUrl      = GetXmlAttribute(xmlNode, "imageUrl");
            string target        = GetXmlAttribute(xmlNode, "target");
            string resourceGroup = GetXmlAttribute(xmlNode, "resourceGroup");
            string quota         = GetXmlAttribute(xmlNode, "quota");
            bool   disabled      = Utils.ParseBool(GetXmlAttribute(xmlNode, "disabled"), false);

            // get custom page parameters
            XmlNodeList   xmlParameters = xmlNode.SelectNodes("Parameters/Add");
            List <string> parameters    = new List <string>();

            foreach (XmlNode xmlParameter in xmlParameters)
            {
                parameters.Add(xmlParameter.Attributes["name"].Value
                               + "=" + xmlParameter.Attributes["value"].Value);
            }

            // add menu item
            string pageUrl = !String.IsNullOrEmpty(url) ? url : PortalUtils.NavigatePageURL(
                pageId, PortalUtils.SPACE_ID_PARAM, cntx.Package.PackageId.ToString(), parameters.ToArray());
            string   pageName = !String.IsNullOrEmpty(title) ? title : PortalUtils.GetLocalizedPageName(pageId);
            MenuItem item     = new MenuItem(pageName, "", "", disabled ? null : pageUrl);

            item.ImageUrl = PortalUtils.GetThemedIcon(imageUrl);

            if (!String.IsNullOrEmpty(target))
            {
                item.Target = target;
            }
            item.Selectable = !disabled;

            // check groups/quotas
            bool display = true;

            if (cntx != null)
            {
                display = (String.IsNullOrEmpty(resourceGroup) ||
                           cntx.Groups.ContainsKey(resourceGroup)) &&
                          (String.IsNullOrEmpty(quota) ||
                           (cntx.Quotas.ContainsKey(quota) &&
                            cntx.Quotas[quota].QuotaAllocatedValue != 0));
            }

            // process nested menu items
            XmlNodeList xmlMenuNodes = xmlNode.SelectNodes("MenuItems/MenuItem");

            foreach (XmlNode xmlMenuNode in xmlMenuNodes)
            {
                MenuItem menuItem = CreateMenuItem(cntx, xmlMenuNode);
                if (menuItem != null)
                {
                    item.ChildItems.Add(menuItem);
                }
            }

            if (display && !(disabled && item.ChildItems.Count == 0))
            {
                return(item);
            }

            return(null);
        }
        private void BindMenu(MenuItemCollection items, XmlNodeList nodes)
        {
            bool ecUserEnabled  = false;
            bool ecAdminEnabled = PanelSecurity.SelectedUser.EcommerceEnabled;
            //
            UserInfo parent = UsersHelper.GetUser(PanelSecurity.SelectedUser.OwnerId);

            //
            if (parent != null)
            {
                ecUserEnabled = parent.EcommerceEnabled;
            }

            foreach (XmlNode node in nodes)
            {
                string pageId = null;
                if (node.Attributes["pageID"] != null)
                {
                    pageId = node.Attributes["pageID"].Value;
                }

                if (!PortalUtils.PageExists(pageId))
                {
                    continue;
                }

                string url = null;
                if (node.Attributes["url"] != null)
                {
                    url = node.Attributes["url"].Value;
                }

                string title = null;
                if (node.Attributes["title"] != null)
                {
                    title = node.Attributes["title"].Value;
                }

                string target = null;
                if (node.Attributes["target"] != null)
                {
                    target = node.Attributes["target"].Value;
                }

                string roles = null;
                if (node.Attributes["roles"] != null)
                {
                    roles = node.Attributes["roles"].Value;
                }

                // get custom page parameters
                XmlNodeList   xmlParameters = node.SelectNodes("Parameters/Add");
                List <string> parameters    = new List <string>();
                foreach (XmlNode xmlParameter in xmlParameters)
                {
                    parameters.Add(xmlParameter.Attributes["name"].Value
                                   + "=" + xmlParameter.Attributes["value"].Value);
                }

                bool display = true;
                // set user role visibility second
                if (!String.IsNullOrEmpty(roles))
                {
                    display = false;
                    string[] arrRoles = roles.Split(',');
                    string   userRole = PanelSecurity.SelectedUser.Role.ToString();
                    foreach (string role in arrRoles)
                    {
                        if (String.Compare(userRole, role, true) == 0)
                        {
                            display = true;
                            break;
                        }
                    }
                }
                // set ecommerce user visibility first
                if (display && node.Attributes["ecuser"] != null)
                {
                    display = ecUserEnabled;
                }
                // set ecommerce admin visibility third
                if (display && node.Attributes["ecadmin"] != null)
                {
                    display = ecAdminEnabled;
                }


                //Audit Log functionality is disabled when user is in Demo mode
                if ((pageId == "AuditLog") && (PanelSecurity.SelectedUser.IsDemo))
                {
                    display = false;
                }

                // add menu item
                if (display)
                {
                    string pageUrl = !String.IsNullOrEmpty(url) ? url : PortalUtils.NavigatePageURL(
                        pageId, PortalUtils.USER_ID_PARAM, PanelSecurity.SelectedUserId.ToString(), parameters.ToArray());
                    string   pageName = !String.IsNullOrEmpty(title) ? title : PortalUtils.GetLocalizedPageName(pageId);
                    MenuItem item     = new MenuItem(pageName, "", "", pageUrl);

                    if (!String.IsNullOrEmpty(target))
                    {
                        item.Target = target;
                    }

                    items.Add(item);

                    // process nested menu items
                    XmlNodeList xmlNestedNodes = node.SelectNodes("MenuItems/MenuItem");
                    BindMenu(item.ChildItems, xmlNestedNodes);
                }
            }
        }