private bool CalculateVisibility(BXPublicPanelMenuSectionList sectionList) { foreach (BXPublicPanelMenuSection section in sectionList) foreach (BXPublicPanelMenu menu in section.Controls) if (menu.InfluencePublicPanelVisibility) return true; return false; }
protected override void CreateChildControls() { BXCommand cmdCreate = new BXCommand("Bitrix.Modules.BXPublicPanel.CreateMenu"); BXPublicPanelMenuSectionList sectionList = new BXPublicPanelMenuSectionList(); cmdCreate.AddCommandResult("SectionList", new BXCommandResult(BXCommandResultType.Ok, sectionList)); cmdCreate.Send(); Visible = CalculateVisibility(sectionList); if (!Visible) return; if (BXConfigurationUtility.IsDesignMode) Response.Cache.SetCacheability(HttpCacheability.NoCache); BXCommand cmdFill = new BXCommand("Bitrix.Modules.BXPublicPanel.PopulateMenu"); cmdFill.Parameters.Add("ShowMode", Bitrix.Configuration.BXConfigurationUtility.ShowMode); cmdFill.AddCommandResult("SectionList", new BXCommandResult(BXCommandResultType.Ok, sectionList)); cmdFill.Send(); int count = sectionList.Count; if (count == 0) return; sectionList.SortByOrder(); bool firstSection = true; foreach (BXPublicPanelMenuSection section in sectionList) if (section.ShouldRender) { if (!firstSection) { HtmlGenericControl separator = new HtmlGenericControl("div"); separator.Attributes.Add("class", "bx-pnseparator"); panelButtonsPlaceHolder.Controls.Add(separator); } else firstSection = false; panelButtonsPlaceHolder.Controls.Add(section); } }