Example #1
0
 /// <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);
     }
 }
Example #2
0
        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);
        }
Example #3
0
        /// <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);
        }
Example #4
0
        /// <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));
        }
Example #5
0
        /// <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));
        }
Example #6
0
File: Menu.cs Project: Soju06/NUMC
 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);
 }
Example #7
0
        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);
        }
Example #8
0
        /// <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));;
        }
Example #9
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);
     }
 }
Example #10
0
        /// <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);
        }
Example #11
0
 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 );
 }
Example #12
0
        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);
        }
Example #13
0
    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
    }
Example #14
0
 internal void ReadyNextMenu(IMenu nextMenu)
 {
     Log.Information($"Adding new menu to menu chain: {nextMenu.GetType().Name}");
     MenuChain.Enqueue(nextMenu);
 }
Example #15
0
 public static bool UnloadClass(IMenu menu) =>
 UnloadClass(menu.GetType());