void DoCreateMenuItem(string dirPath) { if (string.IsNullOrEmpty(MenuItemName.Text)) throw new PublicException(GetMessageRaw("Message.EmptyMenuItemName")); if (string.IsNullOrEmpty(MenuType.SelectedValue) || (MenuType.SelectedValue.IndexOfAny(Path.GetInvalidFileNameChars()) != -1)) throw new PublicException(GetMessageRaw("Message.IllegalMenuType")); try { BXUser.DemandOperations(BXRoleOperation.Operations.FileManage); bool isNewMenu = false; BXPublicMenuItemCollection menuItemCol = BXPublicMenu.Menu.GetMenuByUri(MenuType.SelectedValue, dirPath); if (menuItemCol == null) { menuItemCol = new BXPublicMenuItemCollection(); isNewMenu = true; } BXPublicMenuItem menuItem = new BXPublicMenuItem(); menuItem.Link = BXSiteRemapUtility.UnmapVirtualPath(VirtualPathUtility.AppendTrailingSlash(BXPath.TrimEnd(dirPath))); menuItem.Title = MenuItemName.Text; menuItemCol.Add(menuItem); int menuItemCount = menuItemCol.Count; for (int i = 0; i < menuItemCount; i++) menuItemCol[i].Sort = (i + 1) * 10; string menuDirPath = dirPath; if (!isNewMenu && !string.IsNullOrEmpty(menuItemCol.MenuFilePath)) menuDirPath = BXPath.GetDirectory(menuItemCol.MenuFilePath); BXPublicMenu.Menu.Save(menuDirPath, MenuType.SelectedValue, menuItemCol); } catch(Exception ex) { throw new PublicException(GetMessageRaw("Message.UnableToCreateMenu"), ex); } }
private void AddToMenu(string menuTypeId, MenuTypeInfo info, string pageNameExtensionless) { BXPublicMenuItemCollection menuItemCol = null; if ((info.SourcePath != null && Request.Form[string.Concat(UniqueID, IdSeparator, "cbCreateInSection")] != "Y")) menuItemCol = info.Items; else if (info.SectionPath == null) return; bool isNewMenu = false; if (menuItemCol == null) { menuItemCol = new BXPublicMenuItemCollection(); isNewMenu = true; } int menuItemIndex = ddlMenuItems.SelectedIndex; int menuItemCount = menuItemCol.Count; if (menuItemIndex < 0 || menuItemIndex > menuItemCount) menuItemIndex = menuItemCount; BXPublicMenuItem menuItem = new BXPublicMenuItem(); menuItem.Link = Bitrix.Services.BXSiteRemapUtility.UnmapVirtualPath(_clientVirtualPath); string title = !string.IsNullOrEmpty(tbxMenuName.Text) ? tbxMenuName.Text : pageNameExtensionless; menuItem.Title = HttpUtility.HtmlEncode(title); menuItemCol.Insert(menuItemIndex, menuItem); menuItemCount++; for (int i = 0; i < menuItemCount; i++) menuItemCol[i].Sort = (i + 1) * 10; string menuDirPath = BXPath.GetDirectory(!isNewMenu ? info.SourcePath : info.SectionPath); BXPublicMenu.Menu.Save(menuDirPath, menuTypeId, menuItemCol); }
protected void mainTabControl_Command(object sender, BXTabControlCommandEventArgs e) { if (string.IsNullOrEmpty(Path)) return; BXPublicMenuItemCollection menu = new BXPublicMenuItemCollection(); switch (e.CommandName.ToLower()) { case "apply": case "save": for (int i = 1; i < tblItems.Rows.Count; i++) { TextBox title = tblItems.Rows[i].Cells[0].Controls[0] as TextBox; TextBox link = tblItems.Rows[i].Cells[1].Controls[0] as TextBox; TextBox sort = tblItems.Rows[i].Cells[2].Controls[0] as TextBox; CheckBox delete = tblItems.Rows[i].Cells[3].Controls[0] as CheckBox; if (!delete.Checked && !string.IsNullOrEmpty(title.Text.Trim())) { BXPublicMenuItem item = new BXPublicMenuItem(); item.Link = link.Text; item.Title = title.Text; int weight; if (int.TryParse(sort.Text, out weight)) item.Sort = weight; else item.Sort = 10; menu.Add(item); } } BXPublicMenu.Menu.Save(CurDir, MenuType, menu); if (e.CommandName.ToLower() == "apply") Response.Redirect(Request.RawUrl); break; } GoBack(); }