コード例 #1
0
        public async Task <Response <IList <MenuItem> > > GetMenuByTypeAsync(MenuType type)
        {
            string role     = _authService.GetUserRole();
            var    response = InitErrorListResponse <MenuItem>();

            try
            {
                var result = await _unitOfWork.TreeMenuRepository.FindByAsync(x => x.Type == type);

                IList <MenuItem> list = new List <MenuItem>();
                foreach (var item in result)
                {
                    MenuItem menu = new MenuItem
                    {
                        Id       = item.Id,
                        Icon     = item.DisplayIcon,
                        Name     = item.DisplayName,
                        State    = item.Link,
                        ParentId = item.ParentId,
                        Order    = item.Order,
                        Roles    = item.Roles.Split(',')
                    };
                    list.Add(menu);
                }

                var treeMenu = new TreeMenuBuilder().Build(role, list);
                response      = InitSuccessListResponse <MenuItem>(MessageConstant.Load);
                response.Item = treeMenu;
            }
            catch (Exception ex)
            {
                response.Message = ex.Message;
            }
            return(response);
        }
コード例 #2
0
        private void InitializePlugins()
        {
            var pluginList = new List <IPlugin>
            {
                new GeneralMenuPlugin(NavigationService),
                new TestPlugin(NavigationService),
                new TopBarPlugins(NavigationService)
            };

            var pm      = new PluginManager <IPlugin>();
            var plugins = pm.LoadPlugins("plugins");

            if (plugins != null)
            {
                pluginList.AddRange(plugins);
            }

            var navigationMenuBuilder = new TreeMenuBuilder();
            var topBarMenuBuilder     = new TreeMenuBuilder();

            foreach (var plugin in pluginList)
            {
                plugin.Initialize();
                if (plugin.NavigationMenuItems != null)
                {
                    navigationMenuBuilder.Append(plugin.NavigationMenuItems);
                }
                if (plugin.TopBarMenuItems != null)
                {
                    topBarMenuBuilder.Append(plugin.TopBarMenuItems);
                }
            }

            var navigationMenuViewModel = new NavigationMenuViewModel(NavigationService, navigationMenuBuilder.ToObservableCollection());
            var topBarMenuViewModel     = new TopBarMenuViewModel(NavigationService, topBarMenuBuilder.ToObservableCollection());

            Container.RegisterInstance(navigationMenuViewModel);
            Container.RegisterInstance(topBarMenuViewModel);
        }