Exemplo n.º 1
0
            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>();
        }
Exemplo n.º 4
0
        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"));
        }
Exemplo n.º 6
0
        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"));
        }
Exemplo n.º 8
0
        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);
        }
Exemplo n.º 9
0
        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);
        }
Exemplo n.º 10
0
        //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);
        }
Exemplo n.º 11
0
        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);
            }
        }
Exemplo n.º 12
0
        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));
        }