using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using WeiSha.Common; using Song.ServiceInterfaces; using Song.Entities; namespace Song.Site.Manage.Panel { public partial class TreePanel : System.Web.UI.Page { //菜单总数据源 Song.Entities.ManageMenu[] _allMM; //小图标路径 private string empty = ""; private string line = ""; protected void Page_Load(object sender, EventArgs e) { _allMM = this.GetPurview(); //生成左侧标题部分,也就是一级菜单 string tm = ""; if (_allMM != null) { tm = "
"; for (int i = 0; i < _allMM.Length; i++) { ManageMenu m = _allMM[i]; if (m.MM_PatId == 0) { string title = m.MM_Intro.Trim() == "" ? m.MM_Name : m.MM_Intro; string style = i == 0 ? "current" : "out"; tm += "
" + m.MM_Name + "
"; } } tm += "
"; //生成标题结束 tm += _ConsLevel2Menu(); } else { tm = "
"; tm += "没有管理权限
"; } Response.Write(tm); Response.End(); } /// /// 员工的所有权限,包括所在院系、所属角色、所在员工组的所有权限,输出菜单id,如“12,34,22” /// /// private Song.Entities.ManageMenu[] GetPurview() { Song.Entities.ManageMenu[] mm = null; if (Extend.LoginState.Admin.IsSuperAdmin) { //如果是超级管理员,返回所有可用菜单项 mm = Business.Do().GetAll(null,true,"func"); } else { if (Extend.LoginState.Admin.IsAdmin) { //如果是机构管理员,返回所有机构的所有菜单项 int org = Extend.LoginState.Admin.CurrentUser.Org_ID; mm = Business.Do().GetAll4Org(org); } else { //获取功能菜单树的所有菜单项 mm = Business.Do().GetAll4Emplyee(Extend.LoginState.Admin.CurrentUserId); } } return mm; } private string _ConsLevel2Menu() { string tm = ""; try { //最顶级节点,为空节点; Extend.MenuNode node = new Song.Extend.MenuNode(null, _allMM); foreach (ManageMenu m in node.Childs) { tm += "
"; Extend.MenuNode node1 = new Song.Extend.MenuNode(m, _allMM); //生成二级菜单 foreach (ManageMenu t in node1.Childs) { Extend.MenuNode node2 = new Song.Extend.MenuNode(t, _allMM); string title = string.IsNullOrWhiteSpace(t.MM_Intro) || t.MM_Intro.Trim() == "" ? t.MM_Name : t.MM_Intro; //二级菜单条 tm += "
"; tm += " " + t.MM_Name + ""; tm += "
"; //三级菜单,至无限级 tm += "
"; tm += _ConsLevel3Menu(t, m.MM_Name + "," + t.MM_Name, t.MM_Id); tm += "
"; } tm += "
"; } } catch { throw; } return tm; } /// /// 生成三级菜单的树形,也就是无限级 /// /// 当前菜单节点对象 /// 当前节点上朔至根节点的路径 /// private string _ConsLevel3Menu(ManageMenu single, string path, int topid) { string tm = ""; try { Extend.MenuNode node = new Song.Extend.MenuNode(single, _allMM); if (!node.IsChilds) return ""; tm += "
"; foreach (ManageMenu m in node.Childs) { Extend.MenuNode node1 = new Song.Extend.MenuNode(m, _allMM); string title = string.IsNullOrWhiteSpace(m.MM_Intro) || m.MM_Intro.Trim() == "" ? m.MM_Name : m.MM_Intro; //节点项 tm += "
"; //节点前的图片(连线与标记) tm += "
"; tm += nodeLine(m, topid) + nodeIco(m); tm += "
"; //节点名称,记得删除样式 tm += "
"; tm += _BuildNode(m); tm += "
"; // tm += "
"; tm += _ConsLevel3Menu(m, path + "," + m.MM_Name, topid); } //tm += "
"; tm += ""; } catch (Exception) { return null; } return tm; } /// /// 生成节点文件项 /// /// /// private string _BuildNode(Song.Entities.ManageMenu m) { string temp = ""; try { //temp = "
"; //菜单节点的自定义样式 string style = "font-size: 13px; "; if (m.MM_Color != String.Empty && m.MM_Color != null) style += "color: " + m.MM_Color + ";"; if (m.MM_IsBold) style += "font-weight: bold;"; if (m.MM_IsItalic) style += "font-style: italic;"; if (m.MM_Font != String.Empty && m.MM_Font != null) style += "font-family: '" + m.MM_Font + "';"; // string name = "" + m.MM_Name + ""; if (m.MM_Link != string.Empty && m.MM_Link != null && m.MM_Link.Trim() != "") { temp += "" + name + ""; } else { temp += name; } } catch (Exception) { return null; } //temp += "
"; return temp; } /// /// 生成菜单项前的链接线 /// /// 当前节点 /// 当前节点上溯到最顶节点的id /// private string nodeLine(ManageMenu m, int topid) { string temp = ""; try { Extend.MenuNode mn = new Song.Extend.MenuNode(m, _allMM); //当前菜单项的上级菜单项 Extend.MenuNode p = new Song.Extend.MenuNode(mn.Parent, _allMM); while (p.Item.MM_Id != topid) { //如果是最后一个节点 if (p.IsLast) temp = empty + temp; else temp = line + temp; //temp = empty + temp; p = new Song.Extend.MenuNode(p.Parent, _allMM); } } catch (Exception) { return null; } return temp; } private string nodeIco(ManageMenu m) { string temp = ""; Extend.MenuNode n = new Song.Extend.MenuNode(m, _allMM); if (n.IsChilds && n.IsLast) temp += "" + ""; if (n.IsChilds && !n.IsLast) temp += "" + ""; if (!n.IsChilds && n.IsLast) temp += "" + ""; if (!n.IsChilds && !n.IsLast) temp += "" + ""; return temp.ToLower(); } } }