public ToolStripMenuItem AddItem(MenuItemAttribute attribute, string nome, string tag) { IList <string> tmp = new List <string>(attribute.NomeLivelli); tmp.Add(nome); return(AddItem(attribute.Testo, tag, tmp.ToArray())); }
public void title_as_key_and_default_text() { var key = new MenuItemAttribute("SomeTitle", "some title").Title; key.DefaultValue.ShouldEqual("some title"); key.Key.ShouldEqual("SomeTitle"); key.ShouldBeOfType<NavigationKey>(); }
public void title_as_key_and_default_text() { var key = new MenuItemAttribute("SomeTitle", "some title").Title; key.DefaultValue.ShouldEqual("some title"); key.Key.ShouldEqual("SomeTitle"); key.ShouldBeOfType <NavigationKey>(); }
public void title_as_just_text() { var key = new MenuItemAttribute("some title").Title; key.DefaultValue.ShouldBe("some title"); key.Key.ShouldBe("some title"); key.ShouldBeOfType <NavigationKey>(); }
public void build_registration_for_add_to() { var registration = new MenuItemAttribute("something") { AddChildTo = "else" }.ToMenuRegistrations(theChain).Single().ShouldBeOfType <MenuRegistration>(); registration.Strategy.ShouldBeOfType <AddChild>(); registration.Node.Resolve(null); registration.Node.BehaviorChain.ShouldBeTheSameAs(theChain); registration.Node.Key.ShouldEqual(new NavigationKey("something")); registration.Matcher.ShouldEqual(new ByName("else")); }
private bool SetMenuVisible(MenuItemAttribute menuItemAttr, ParentMenuAttribute actionParentMenuAttr, ParentMenuAttribute ctrlParentMenuAttr) { if (menuItemAttr != null) { return(menuItemAttr.IsVisible); } if (actionParentMenuAttr != null) { return(actionParentMenuAttr.IsVisible); } return(ctrlParentMenuAttr is { IsVisible : true });
public void build_registration_for_add_to() { var registration = new MenuItemAttribute("something") { AddChildTo = "else" }.ToMenuRegistrations(theChain).Single().ShouldBeOfType<MenuRegistration>(); registration.Strategy.ShouldBeOfType<AddChild>(); registration.Node.Resolve(null); registration.Node.BehaviorChain.ShouldBeTheSameAs(theChain); registration.Node.Key.ShouldEqual(new NavigationKey("something")); registration.Matcher.ShouldEqual(new ByName("else")); }
private static MenuModel CreateAreaMenuItemFromController(Type controller, MenuItemAttribute menuItemAttribute) { string area = GetAreaNameForController(controller); var controllerName = controller.Name.Replace("Controller", ""); var menu = new MenuModel() { Name = menuItemAttribute.Title ?? controllerName, ControllerFullName = controller.FullName, Order = menuItemAttribute.Order, CssIcon = menuItemAttribute.CssIcon }; if (menuItemAttribute.IsClickable) { menu.Url = CreateActionPath(area, controllerName, menuItemAttribute.Action ?? "Index"); } var submenus = new List <SubMenu>(); //The actions under the controller becomes submenu controller.GetMethods().ToList().ForEach(method => { menuItemAttribute = method.GetCustomAttribute <MenuItemAttribute>(); if (menuItemAttribute == null) { return; } if (!UserHasAccess(method.GetCustomAttribute <AuthorizedRoleAttribute>())) { return; } var submenu = new SubMenu() { Name = menuItemAttribute.Title ?? method.Name, Order = menuItemAttribute.Order, CssIcon = menuItemAttribute.CssIcon }; if (menuItemAttribute.IsClickable) { submenu.Url = CreateActionPath(area, controllerName, method.Name); } submenus.Add(submenu); }); menu.SubMenus = submenus.OrderBy(m => m.Order).ToList(); return(menu); }
private static MenuModel CreateAreaMenuItemFromAction(Type controller, MethodInfo method, MenuItemAttribute menuItemAttribute) { string area = GetAreaNameForController(controller); var menu = new MenuModel() { Name = menuItemAttribute.Title ?? method.Name, ControllerFullName = controller.FullName, Order = menuItemAttribute.Order, CssIcon = menuItemAttribute.CssIcon }; if (menuItemAttribute.IsClickable) { menu.Url = CreateActionPath(area, controller.Name.Replace("Controller", ""), method.Name); } return(menu); }
//OnActionExecuting method is using Entity Framework to add a new ActionLog register. It creates and fills a new entity instance with the context information from filterContext. void IActionFilter.OnActionExecuting(ActionExecutingContext filterContext) { // Log Action Filter Call ApplicationDbContext db = new ApplicationDbContext(); // TODO: Add your acction filter's tasks here CustomAssemblyHelper helper = new CustomAssemblyHelper(); var syscontrollersList = helper.GetTypesAssembly <Controller>(); foreach (Type controller in syscontrollersList) { //if (controller.Name != "HomeController" && controller.Name != "AccountController" && controller.Name != "PerfilController" && controller.Name != "RolesAdminController" && controller.Name != "UsersAdminController") if (controller.Name == "SolicitudController" || controller.Name == "OrdenController") { string controladoraNombre = controller.Name.Replace("Controller", ""); if (controller.IsDefined(typeof(MenuItemAttribute), false)) { var controladoraAtributos = helper.GetTypeAttributes <MenuItemAttribute>(controller); MenuItemAttribute atributomenu = (MenuItemAttribute)controladoraAtributos.FirstOrDefault(); var moduloToInsert = new Modulo(); moduloToInsert.ModuloDescripcion = atributomenu.MenuItemModulo; //db.Modulos.AddOrUpdate(p => p.ModuloDescripcion, moduloToInsert); var moduloInDataBase = db.Modulos.Where(s => s.ModuloDescripcion == moduloToInsert.ModuloDescripcion).SingleOrDefault(); if (moduloInDataBase == null) { db.Modulos.Add(moduloToInsert); db.SaveChanges(); } Controladora controladoratoinsert = new Controladora() { ControladoraNumero = atributomenu.MenuItemNumero, ControladoraModulo = atributomenu.MenuItemModulo, ControladoraNombre = controladoraNombre, ControladoraNombreFull = controller.Name, ControladoraDescripcion = atributomenu.MenuItemDescripcion, Controladora_Modulo = moduloToInsert }; //db.Controladoras.AddOrUpdate(p => p.ControladoraNombre, controladoratoinsert); var controladoraInDataBase = db.Controladoras.Where(s => s.ControladoraNombre == controladoratoinsert.ControladoraNombre).SingleOrDefault(); if (controladoraInDataBase == null) { db.Controladoras.Add(controladoratoinsert); db.SaveChanges(); } //Recupero todas las acciones de la controladorapor REFLECTION var accionescontroladora = helper.GetControllerActions(controller); foreach (var action in accionescontroladora) { var accionAtributos = helper.GetTypeAttributes <ActionAttribute>(action); ActionAttribute accionatributo = (ActionAttribute)accionAtributos.FirstOrDefault(); //foreach (var atributo in accionatributos) //{ // if (atributo.GetType().Name == "ActionAttribute") // { // var descripcion = action.GetCustomAttributes(typeof(ActionAttribute)); // ActionAttribute desc = (ActionAttribute)descripcion.FirstOrDefault(); // } //} if (action.IsDefined(typeof(ActionAttribute), false) && accionatributo != null) { Accion acciontoinsert = new Accion() { AccionNumero = accionatributo.AccionNumero, AccionActivo = accionatributo.AccionInicial, AccionNombre = action.Name, AccionDescripcion = accionatributo.AccionNombre, }; //db.Acciones.AddOrUpdate(p => p.AccionNombre, acciontoinsert); var accionInDataBase = db.Acciones.Where(s => s.AccionNombre == acciontoinsert.AccionNombre).SingleOrDefault(); if (accionInDataBase == null) { db.Acciones.Add(acciontoinsert); db.SaveChanges(); } } } } } } this.OnActionExecuting(filterContext); }
private void Main_Load(object sender, EventArgs e) { PluginManager pluginManager = PluginManager.Create(this.GetType().Assembly, typeof(IFrameworkPlugin), this); List <MenuItemAttribute> menuItemAttributes = new List <MenuItemAttribute>(); foreach (IPlugin plugin in pluginManager.Plugins) { IFrameworkPlugin imagePickerPlugin = plugin as IFrameworkPlugin; object[] attributes = imagePickerPlugin.GetType().GetCustomAttributes(typeof(MenuItemAttribute), false); if (attributes.Length == 0 || attributes.Length > 1) { throw new AccumulateTreasureException("每个插件只允许注册一个菜单按钮."); } MenuItemAttribute menuItemAttribute = (MenuItemAttribute)attributes[0]; if (menuItemMapPlugin.ContainsKey(menuItemAttribute.Name)) { throw new AccumulateTreasureException(string.Format("{0} 插件名重复.", imagePickerPlugin.Name)); } menuItemAttributes.Add(menuItemAttribute); menuItemMapPlugin.Add(menuItemAttribute.Name, imagePickerPlugin); plugins.Add(imagePickerPlugin); } // add the parent menuitem. foreach (MenuComponent.MenuItemAttribute menuItemAttribute in menuItemAttributes) { if (string.IsNullOrEmpty(menuItemAttribute.ParentName) == true) { menuItems.Add(new MenuComponent.MenuItem(menuItemAttribute.Name, menuItemAttribute.Image)); } } foreach (MenuComponent.MenuItemAttribute menuItemAttribute in menuItemAttributes) { if (string.IsNullOrEmpty(menuItemAttribute.ParentName) == false) { MenuComponent.MenuItem menuItem = GetMenuItem(menuItemAttribute.ParentName); if (menuItem == null) { MenuComponent.MenuItem parentItem = new MenuComponent.MenuItem(menuItemAttribute.ParentName, menuItemAttribute.ParentImage); parentItem.ChildMenuItem.Add(new MenuComponent.MenuItem(menuItemAttribute.Name, menuItemAttribute.Image)); menuItems.Add(parentItem); } else { menuItem.ChildMenuItem.Add(new MenuComponent.MenuItem(menuItemAttribute.Name, menuItemAttribute.Image)); } } } foreach (MenuComponent.MenuItem menuItem in menuItems) { if (menuItem.ChildMenuItem.Count == 0) { ToolStripButton button = new ToolStripButton(); button.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; button.Image = Resources.GetImage(menuItem.Image); button.DisplayStyle = ToolStripItemDisplayStyle.ImageAndText; button.ImageTransparentColor = System.Drawing.Color.Magenta; button.Name = menuItem.Name; button.Text = menuItem.Name; RegistEvent(menuItemMapPlugin[menuItem.Name], button); this.menu.Items.AddRange(new ToolStripItem[] { button }); } else { ToolStripDropDownButton dropDownButton = new ToolStripDropDownButton(); dropDownButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.ImageAndText; dropDownButton.Image = Resources.GetImage(menuItem.Image); dropDownButton.ImageTransparentColor = System.Drawing.Color.Magenta; dropDownButton.Name = menuItem.Name; dropDownButton.Text = menuItem.Name; List <ToolStripMenuItem> childItems = new List <ToolStripMenuItem>(); foreach (MenuComponent.MenuItem item in menuItem.ChildMenuItem) { ToolStripMenuItem button = new ToolStripMenuItem(); button.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; button.Image = Resources.GetImage(item.Image); button.DisplayStyle = ToolStripItemDisplayStyle.ImageAndText; button.ImageTransparentColor = System.Drawing.Color.Magenta; button.Name = item.Name; button.Text = item.Name; if (menuItemMapPlugin.ContainsKey(item.Name)) { RegistEvent(menuItemMapPlugin[item.Name], button); } childItems.Add(button); } dropDownButton.DropDownItems.AddRange(childItems.ToArray()); this.menu.Items.AddRange(new ToolStripItem[] { dropDownButton }); } } LoadSettingMenuItem(); // Execute plugin 1; if (plugins.Count > 0) { bool handled = false; plugins[0].Execute(plugins[0].Name, ref handled); } }
public ActionResult MakeMenu2() { string str = ""; var ss = System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Module.Name; int index = ss.LastIndexOf(".dll", StringComparison.OrdinalIgnoreCase); var allTypes = Assembly.Load(ss.Substring(0, index)).GetTypes(); var types = allTypes.Where(e => e.BaseType.Name == nameof(BaseController)); List <MenuItemAttribute> allMenus = new List <MenuItemAttribute>(); foreach (var type in types) { var members = type.GetMethods().Where(e => (e.ReturnType.BaseType != null && e.ReturnType.BaseType.Name == nameof(ActionResult)) || e.ReturnType.Name == nameof(ActionResult)).ToList(); { //二级菜单 foreach (var member in members) { var attrs = member.GetCustomAttributes(typeof(MenuItemAttribute), true); if (attrs.Length == 0) { continue; } MenuItemAttribute menuItem = attrs[0] as MenuItemAttribute; var aname = member.Name; var cname = member.DeclaringType.Name; cname = cname.Substring(0, cname.LastIndexOf("Controller")); menuItem.Url = string.Format("/{0}/{1}", cname, aname); menuItem.ReturnType = member.ReturnType.Name; menuItem.ItemKey = Encrypt.MD5Encrypt(menuItem.Url); menuItem.ItemPKey = ""; allMenus.Add(menuItem); } } } allMenus.ForEach(t => { if (t.IsMain != 1) { var pMenu = allMenus.FirstOrDefault(m => m.IsMain == 1 && m.MainName == t.MainName); if (pMenu != null) { t.ItemPKey = pMenu.ItemKey; } } }); var allNewMenus = allMenus.Where(m => m.IsMain == 1).ToList(); allNewMenus.ForEach(t => { t.SubPages.Add(t); t.SubPages.AddRange(allMenus.Where(m => m.ItemPKey == t.ItemKey).ToList()); }); WebSYSMenuManager _WebSYSMenuManager = new WebSYSMenuManager(); int r = _WebSYSMenuManager.MakeMenu2(allNewMenus); str += r.ToString() + "<br />"; //str += JsonHelper.Serializer(allNewMenus); return(Content(str)); }