using System; using System.Collections.Generic; using System.Configuration; using System.Text; using QMFrameWork.Common.MLanguage; using QMFrameWork.WebUI.Menu; namespace QMAPP.Common.Web.Util { /// <summary> /// Outlook式菜单 /// 创建者:李炳海 /// 创建日期:2013.2.22 /// </summary> public class OutLookMenu { #region 获取菜单html /// <summary> /// 获取菜单html /// </summary> /// <param name="menus">菜单信息</param> /// <returns>菜单html</returns> public string GetMenuHtml(List<MenuInfo> menus) { string html = ""; StringBuilder sBuilder = new StringBuilder(); try { //style=\"overflow: scroll\" sBuilder.Append("<div class='no-skin sidebar' style='width: 99%'> "); sBuilder.Append("<ul class='nav nav-list'>"); //一级菜单 foreach (MenuInfo menu in menus) { string labelID = "menu_" + menu.MenuID; string labelText = GetLanguageLabel(labelID); menu.MenuDes = (string.IsNullOrEmpty(labelText) == false ? labelText : menu.MenuDes); var hasSub = menu.ChildMenus != null && menu.ChildMenus.Count != 0; sBuilder.Append("<li>"); sBuilder.AppendFormat("<a href='#' id=\"f{0}\" class='dropdown-toggle'", menu.MenuID); //如果有动作 添加动作 if (!string.IsNullOrWhiteSpace(menu.Action)) { //多系统用 string action; if (string.IsNullOrEmpty(menu.SystemID) == false) { action = ConfigurationManager.AppSettings[menu.SystemID.ToUpper() + "Root"] + menu.Action + (menu.Action.IndexOf("?") > 0 ? "&" : "?") + "sessionID=" + System.Web.HttpContext.Current.Session.SessionID; } else { action = menu.Action; } sBuilder.AppendFormat(" onclick=\"javascript:openUrl('f{0}','{2}','{3}','{1}');\" ", menu.MenuID, menu.MenuDes, action, menu.Target); } sBuilder.AppendFormat(">"); sBuilder.AppendFormat(" <span class='menu-text'>{0}</span>", menu.MenuDes); //如果有字菜单,添加下箭头 if (hasSub) { sBuilder.Append(" <b class='arrow fa fa-angle-down'></b>"); } sBuilder.Append("</a>"); if (hasSub) { sBuilder.Append("<b class='arrow'></b>"); sBuilder.Append(this.GetSubMenu(menu.ChildMenus)); } sBuilder.Append("</li>"); } sBuilder.Append("</ul>"); sBuilder.Append("</div> "); html = sBuilder.ToString(); return html; } catch (Exception ex) { throw ex; } } #endregion #region 获取菜单组html private string GetSubMenu(List<MenuInfo> Menus) { StringBuilder sBuilder = new StringBuilder(); sBuilder.Append("<ul class='submenu'>"); foreach (var menu in Menus) { string labelID = "menu_" + menu.MenuID; string labelText = GetLanguageLabel(labelID); menu.MenuDes = (string.IsNullOrEmpty(labelText) == false ? labelText : menu.MenuDes); var hasSub = menu.ChildMenus != null && menu.ChildMenus.Count != 0; sBuilder.Append("<li>"); sBuilder.AppendFormat("<a href='#' id=\"f{0}\" class='dropdown-toggle'", menu.MenuID); //如果有动作 添加动作 if (!string.IsNullOrWhiteSpace(menu.Action)) { //多系统用 string action; if (string.IsNullOrEmpty(menu.SystemID) == false) { action = ConfigurationManager.AppSettings[menu.SystemID.ToUpper() + "Root"] + menu.Action + (menu.Action.IndexOf("?") > 0 ? "&" : "?") + "sessionID=" + System.Web.HttpContext.Current.Session.SessionID; } else { action = menu.Action; } sBuilder.AppendFormat(" onclick=\"javascript:openUrl('f{0}','{2}','{3}','{1}');\" ", menu.MenuID, menu.MenuDes, action, menu.Target); } sBuilder.AppendFormat(">"); sBuilder.AppendFormat("<i class='menu-icon fa fa-caret-right'></i>"); sBuilder.AppendFormat("{0}", menu.MenuDes); //如果有字菜单,添加下箭头 if (hasSub) { sBuilder.Append(" <b class='arrow fa fa-angle-down'></b>"); } sBuilder.Append("</a>"); sBuilder.Append("<b class='arrow'></b>"); if (hasSub) { sBuilder.Append(this.GetSubMenu(menu.ChildMenus)); } sBuilder.Append("</li>"); } sBuilder.Append("</ul>"); return sBuilder.ToString(); } #endregion #region 获取多语言标签 private static string GetLanguageLabel(string labelID) { if (LanguageHelper.Instance == null) return ""; string labelText = ""; labelText = LanguageHelper.Instance.Language.GetItem(labelID.ToUpper()); return labelText; } #endregion } }