/// <summary> /// 销毁 Context /// </summary> /// <typeparam name="T"></typeparam> /// <param name="menu"></param> public static void Destroy(this IMenu menu, object param = null) { // 使用自定义的 OnDestroy if (menu is IMenuDestroy menuDes) { menuDes.OnDestroy(param);; // 执行默认的 Destroy } else { // 销毁 Context var context = menu.GetType().GetProperty("DataContext").GetValue(menu); if (context is BaseViewModel bvm) { bvm.OnDestroy(); } // 清除关联 menu.GetType().GetProperty("DataContext").SetValue(menu, null); } }
protected Menu(IMenu menu) { this.menu = menu; menu.IsOpenedChanged += this.UpdateIsSelected; this.CommandToggle = new ActionCommand(this.Toggle); this.isSelected = this.menu.IsOpened; RegisteredMenus.Add(this); Api.Logger.Info("Menu registered: " + menu.GetType().Name); }
/// <summary> /// 根据菜单类型查询菜单 /// </summary> /// <param name="MType">菜单类型</param> /// <returns></returns> public List <IMenu> QueryMenus(MenuType MType) { IMenu menu = entityfactory.CreateEntityInstance <IMenu>(); IDvTable dvt = entityfactory.CreateDriveTable(menu); menu.MENUTYPE = MType.ToString(); dvt.WhereClause("MENUTYPE", Operator.Deng, LinkOperator.nul); DataSet ds = dvt.Select(); List <IMenu> list = this.dh.Convert <IMenu>(menu.GetType(), ds); return(list); }
/// <summary> /// 查询菜单 /// </summary> /// <param name="PerntCode">父菜单编号</param> /// <returns></returns> public virtual List <IMenu> QuerySubmenu(string PerntCode) { IMenu menu = this.entityfactory.CreateEntityInstance <IMenu>(); menu.PARENTCODE = PerntCode; IDvTable dvt = this.entityfactory.CreateDriveTable(menu); dvt.WhereClause("PARENTCODE", Operator.Deng, LinkOperator.nul); DataSet ds = dvt.Select(); return(this.dh.Convert <IMenu>(menu.GetType(), ds)); }
/// <summary> /// 根据菜单类全名查询菜单 /// </summary> /// <param name="FullClassName"></param> /// <returns></returns> public IMenu QueryMenu(string FullClassName) { IMenu menu = entityfactory.CreateEntityInstance <IMenu>(); IDvTable dvt = entityfactory.CreateDriveTable(menu); menu.FULLCLASSNAME = FullClassName; dvt.WhereClause("FULLCLASSNAME", Operator.Deng, LinkOperator.nul); DataSet ds = dvt.Select(); DataHelper dte = new DataHelper(); return(dte.Convert <IMenu>(menu.GetType(), ds, 0)); }
public static ToolStripItem[] GetMenuItems(IMenu plugin) { if (plugin != null) { try { return(plugin.Menus); } catch (Exception ex) { Plugin.PluginException(ex, plugin.GetType(), "IMenu get Menus failed", "Menu"); } } return(null); }
public async Task SendMessageAsync(UserMessageInfo userMessageInfo, string text, bool isReply = false, IMenu menu = null) { var replyToMessageId = isReply ? int.Parse(userMessageInfo.Message.Token) : 0; if (menu != null && menu.GetType() != typeof(TelegramMenu)) { throw new ArgumentException($"{GetType().Name} может работать только с {nameof(IMenu)} типа {nameof(TelegramMenu)}"); } var telegramMenu = menu as TelegramMenu; await _client.SendTextMessageAsync(userMessageInfo.Group.ChatToken, text, replyToMessageId : replyToMessageId, replyMarkup : telegramMenu?.Markup); }
/// <summary> /// 查询菜单编码 /// </summary> /// <param name="MenuCode"></param> /// <returns></returns> public virtual IMenu QueryCode(string MenuCode) { IMenu menu = this.entityfactory.CreateEntityInstance <IMenu>(); menu.MENUCODE = MenuCode; IDvTable dvt = this.entityfactory.CreateDriveTable(menu); dvt.WhereClause("MENUCODE", Operator.Deng, LinkOperator.nul); DataSet ds = dvt.Select(); DataHelper dte = new DataHelper(); return(dte.Convert <IMenu>(menu.GetType(), ds, 0));; }
/// <summary> /// 初始化,绑定 Context /// </summary> /// <typeparam name="T"></typeparam> /// <param name="menu"></param> /// <param name="context"></param> public static void Initialize(this IMenu menu, object param) { // 使用自定义的 Init if (menu is IMenuInit menuInit) { menuInit.OnInit(param); // 默认的初始化 } else { //InitializeComponent() menu.GetType().GetMethod("InitializeComponent").Invoke(menu, null); } }
/// <summary> /// 根据角色名和菜单类型查询菜单 /// </summary> /// <param name="Role">角色</param> /// <param name="MType">菜单类型</param> /// <returns></returns> public List <IMenu> QueryMenus(IRole Role, MenuType MType) { IMenu menu = entityfactory.CreateEntityInstance <IMenu>(); menu.MENUTYPE = MType.ToString(); IAuthControl actrl = entityfactory.CreateEntityInstance <IAuthControl>(); actrl.RoleCode = Role.RoleCode; IDvTable dvt = entityfactory.CreateDriveTable(menu); dvt.Join.Entitys.Add(actrl); dvt.WhereClause("MENUTYPE", Operator.Deng, LinkOperator.and); dvt.WhereClause(actrl, "RoleCode", Operator.Deng, LinkOperator.nul); DataSet ds = dvt.Select(); List <IMenu> list = this.dh.Convert <IMenu>(menu.GetType(), ds); List <IMenu> result = RefactoringMenu(list); return(result); }
public override void log( String msg, IMenu menu ) { String dataInfo = "{Id:" + menu.Id + ", Name:'" + menu.Name + "'}"; logService.Add( (User)ctx.viewer.obj, msg, dataInfo, menu.GetType().FullName, ctx.Ip ); }
public override void log(String msg, IMenu menu) { String dataInfo = "{Id:" + menu.Id + ", Name:'" + menu.Name + "'}"; logService.Add((User)ctx.viewer.obj, msg, dataInfo, menu.GetType().FullName, ctx.Ip); }
protected override void OnPreLoad(EventArgs e) { base.OnPreLoad(e); IManageUser user = ManageProvider.Provider.Current; if (user == null) { Response.Redirect("Login.aspx"); } ICommonManageProvider provider = CommonManageProvider.Provider; IMenu root = null; if (provider != null) { root = provider.MenuRoot; } IAdministrator admin = user as IAdministrator; if (admin == null) { if (root != null) { menuItem.DataSource = root.Childs; menuItem.DataBind(); } return; } if (Request["act"] == "logout") { admin.Logout(); // 再跳一次,除去Url中的尾巴 if (!String.IsNullOrEmpty(Request.Url.Query)) { Response.Redirect("Default.aspx"); } } if (admin.Role != null) { //List<IMenu> list = admin.Role.GetMySubMenus(root.ID); IList <IMenu> list = provider.GetMySubMenus(root.ID); menuItem.DataSource = list; menuItem.DataBind(); if (list != null && list.Count > 0) { IMenu first = list[0]; DefaultLeft = String.Format("Frame/Left.aspx?ID={0}", first.ID); DefaultMain = first.Url; } } #region 自动修正菜单 // 自动修正菜单中英文 if (root != null) { using (EntityTransaction trans = new EntityTransaction(EntityFactory.CreateOperate(root.GetType()))) { root.CheckMenuName("Admin", "管理平台") .CheckMenuName(@"Admin\Sys", "系统管理") .CheckMenuName(@"Admin\Advance", "高级设置") .CheckMenuName(@"Admin\Help", "帮助手册"); // 自动挂载Main.aspx IMenu menu = root.FindByPath("Admin"); if (menu != null && menu.Url == "../Admin/Default.aspx") { menu.Url = "../Admin/Main.aspx"; menu.Save(); } if (menu != null) { #region 自动排序 IMenu menu2 = menu.FindByPath("Sys"); if (menu2 != null) { menu2.Sort = 3; menu2.Save(); } menu2 = menu.FindByPath("Advance"); if (menu2 != null) { menu2.Sort = 2; menu2.Save(); } menu2 = menu.FindByPath("Help"); if (menu2 != null) { menu2.Sort = 1; menu2.Save(); } #endregion } trans.Commit(); } } #endregion }
internal void ReadyNextMenu(IMenu nextMenu) { Log.Information($"Adding new menu to menu chain: {nextMenu.GetType().Name}"); MenuChain.Enqueue(nextMenu); }
public static bool UnloadClass(IMenu menu) => UnloadClass(menu.GetType());