Ejemplo n.º 1
0
        public async Task <IViewComponentResult> InvokeAsync(string navMenuId, string itemId = null)
        {
            if (string.IsNullOrEmpty(navMenuId))
            {
                return(new ViewComponentPlaceholder());
            }

            var navMenu = await _navigationMenuManager.GetFullNavMenuAsync(navMenuId);

            if (navMenu == null)
            {
                return(new ViewComponentPlaceholder());
            }

            var model = new NavigationMenuViewModel();

            model.Id     = navMenu.Id;
            model.SiteId = navMenu.SiteId;
            model.Title  = navMenu.Title;
            foreach (var item in navMenu.MenuItems)
            {
                var node = new TreeViewItemModel();
                LoadItemIntoNode(item, node);
                model.Items.Add(node);
            }
            if (!string.IsNullOrEmpty(itemId))
            {
                ExpandToNode(itemId, model.Items);
            }

            ViewData["FormTitle"] = "Edit Navigation Menu:";
            return(View(model));
        }
Ejemplo n.º 2
0
        public ActionResult RenderMenu()
        {
            var conference = conferenceLoader.LoadConference();
            var links      = new List <NavigationMenuLinkViewModel>
            {
                CreateLink("Home", "Home", "Index"),
                CreateLink("Sessions", "Session", "Index", () => conference.CanShowSessions() && !conference.CanPublishAgenda()),
                CreateLink("Speakers", "Speaker", "Index", () => conference.CanShowSpeakers() && !conference.CanPublishAgenda()),
                CreateLink("Agenda", "Home", "Agenda", conference.CanPublishAgenda),
                CreateLink("Register", "Home", "Register", conference.CanRegister),
                CreateLink("New to DDD?", "Home", "About"),
                CreateLink("Code of Conduct", "Home", "CodeOfConduct"),
                CreateLink("Venue", "Home", "Venue"),
                CreateLink("Accommodation", "Home", "Accommodation", conference.CanRegister),
                CreateLink("Sponsors", "Home", "Sponsors"),
                CreateLink("Team", "Home", "Team"),
//                    CreateLink("Environmental Policy", "Home", "Environmental"),
                CreateLink("Contact", "Home", "Contact"),
                CreateLink("Admin", "AdminHome", "Index", () => User.IsInRole("Administrator"), new { area = "Admin" }),
            };

            var model = new NavigationMenuViewModel {
                Links = links
            };

            return(PartialView(model));
        }
        // metoda Invoke jest wywoływana w chwili użycia komponentu przez silnik Razor
        public IViewComponentResult Invoke()
        {
            // klasa bazowa ViewComponent podobnie jak Controler przez zestaw właściwości zapewnia
            // dostęp do obiektu kontekstu jedna z nich RouteData dostarcza informacje jaki
            // adres URL został obsłużony przez system routinngu

            ViewBag.SelectedCategory = RouteData?.Values["categoryId"];

            int currentCategoryId;

            int.TryParse((string)RouteData?.Values["categoryId"], out currentCategoryId);

            var vm = new NavigationMenuViewModel()
            {
                Categories        = _advertService.GetUsedCategories(),
                CurrentCategoryId = currentCategoryId
            };

            // do widoku przekazujemy go po przez obiekt ViewBg
            // warto by było utworzyć kolejną klasę modelu widoku i za pomocą niej przekazać informację o wybranej kategorii

            // w przypadku komponentów w odróżnieniu od widoków szukamy widoku w katalogu:
            // Shared/Components/NavigationMenu/Default.cshtml

            return(View(vm));
        }
Ejemplo n.º 4
0
        public void Handle(DesignContextChanged message)
        {
            var timeouteSetting = appSetting.GetSetting("MainWindow.PluginResponseTimeout", 15);

            pluginResponseTimeoutService.SetResponseTimeout(timeouteSetting);
            OnWindowGrab(null);
            NavigationMenuViewModel.ResetMenuState();
            ToolboxMenuViewModel.ResetMenuState();
            pluginActionSender.TerminatePlugins();
        }
Ejemplo n.º 5
0
 private void ApplyTenants(TNavigationMenu original, NavigationMenuViewModel vm)
 {
     if (options.Value.TenantLinkMode == LinkMode.MultiSelect)
     {
         vm.Tenants = (from t in original.Tenants select t.TenantId).ToArray();
     }
     else
     {
         vm.Tenants = Array.Empty <int>();
     }
 }
Ejemplo n.º 6
0
        public IViewComponentResult Invoke()
        {
            var categories = _repository.Products
                             .Select(p => p.Category)
                             .Distinct()
                             .OrderBy(x => x);

            NavigationMenuViewModel model = new NavigationMenuViewModel(categories, (string)RouteData?.Values["category"]);

            return(View(model));
        }
Ejemplo n.º 7
0
        public async Task <bool> AddMenuItem(NavigationMenuViewModel vm) //TODO: dodać uprawnienia roli!!!!
        {
            try
            {
                NavigationMenu menuItem = new NavigationMenu
                {
                    Name           = vm.Name,
                    WithoutLinking = vm.WithoutLinking,
                    ActionName     = vm.ActionName,
                    ControllerName = vm.ControllerName,
                    IconClass      = vm.IconClass
                };
                var parent = await _db.NavigationMenu.FindAsync(vm.ParentMenuId);

                if (parent != null)
                {
                    menuItem.ParentMenuId = parent.Id;
                }
                _db.NavigationMenu.Add(menuItem);
                await _db.SaveChangesAsync();

                IdentityRole userRole = null;

                if (!string.IsNullOrEmpty(vm.RoleName))
                {
                    userRole = await _db.Roles.Where(r => r.Name == vm.RoleName).FirstOrDefaultAsync();
                }
                else
                {
                    userRole = await _db.Roles.Where(r => r.Name == "Admin").FirstOrDefaultAsync();
                }


                if (userRole != null)
                {
                    RoleMenuPermission rmp = new RoleMenuPermission
                    {
                        RoleId           = userRole.Id,
                        NavigationMenuId = menuItem.Id
                    };
                    _db.RoleMenuPermission.Add(rmp);
                    await _db.SaveChangesAsync();
                }


                return(true);
            }
            catch (Exception ex)
            {
                throw ex;
                return(false);
            }
        }
        public IViewComponentResult Invoke()
        {
            var model = new NavigationMenuViewModel
            {
                Categories = _categoryRepository.GetAll(),
            };

            if (RouteData?.Values.ContainsKey("category") == true)
            {
                model.CurrentCategory = RouteData.Values["category"].ToString();
            }
            return(View(model));
        }
        public async Task <JsonResult> SaveNavMenu(NavigationMenuViewModel vm)
        {
            var navMenu = new NavigationMenu();

            navMenu.Id     = vm.Id;
            navMenu.Title  = vm.Title;
            navMenu.SiteId = vm.SiteId;

            navMenu = await _navigationMenuManager.SaveNavMenuAsync(navMenu);

            vm.Id = navMenu.Id;

            return(Json(vm));
        }
Ejemplo n.º 10
0
        protected override void OnInitialize()
        {
            base.OnInitialize();
            eventAggregator.Subscribe(this);
            InitializeInformationBoard();

//            eventAggregator.Subscribe(BusyIndicatorViewModel);
//            eventAggregator.Subscribe(BusyIndicatorWindowViewModel);
            BIVisible = false;
            NavigationMenuViewModel.Initialize();
            ToolboxMenuViewModel.Initialize();
            StartCommunicationServer();
            CreatePluginContainer();
        }
Ejemplo n.º 11
0
        public async Task <IViewComponentResult> InvokeAsync(string siteId = "")
        {
            if (string.IsNullOrEmpty(siteId))
            {
                return(new ViewComponentPlaceholder());
            }
            else
            {
                var model = new NavigationMenuViewModel();
                model.Id     = string.Empty;
                model.SiteId = siteId;
                model.Title  = string.Empty;

                ViewData["FormTitle"] = "Create new Navigation Menu:";

                return(View(model));
            }
        }
Ejemplo n.º 12
0
        public NavigationMenu(NavigationMenuViewModel viewModel)
        {
            InitializeComponent();

            ViewModel = viewModel;

            Menu.Events()
            .ItemTapped
            .Select(x => x.Item as NavigationItemViewModel)
            .InvokeCommand(this, x => x.ViewModel.Navigate)
            .DisposeWith(Disappearing);

            Menu.Events()
            .ItemSelected
            .Where(x => x != null)
            .Subscribe(_ => Menu.SelectedItem = null)
            .DisposeWith(Disappearing);
        }
Ejemplo n.º 13
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);
        }
Ejemplo n.º 14
0
        public async Task <IActionResult> Update([DataSourceRequest] DataSourceRequest request, NavigationMenuViewModel viewModel)
        {
            var model = db.Navigation.First(n => n.NavigationMenuId == viewModel.NavigationMenuId);

            if (ModelState.IsValid)
            {
                await this.TryUpdateModelAsync <NavigationMenuViewModel, TNavigationMenu>(model, "", m =>
                {
                    return(m.ElementType == null);
                });

                SetTenants(viewModel.Tenants, model);
                await db.SaveChangesAsync();
            }

            return(Json(await new[] { model.ToViewModel <TNavigationMenu, NavigationMenuViewModel>(ApplyTenants) }.ToDataSourceResultAsync(request, ModelState)));
        }
        public static NavigationMenuViewModel CreateNavigationMenu(this IRepository repository, Guid?pageId, HttpRequestBase httpRequest)
        {
            var viewModel = new NavigationMenuViewModel
            {
                Title = StringResource.navbar_CategoriesTitle,
                Items = new List <NavigationItemViewModel>()
            };

            var catalogTree = repository.GetCatalogTree();

            if (catalogTree == null || catalogTree.Root == null || catalogTree.Root.Children == null)
            {
                repository.LogErrorMessage("[CreateNavigationMenu] Catalog tree is null or its root is null or empty.", httpRequest);
                return(viewModel);
            }

            var catalogItems = catalogTree.Root.Children
                               .Where(page => page != null && page.Page != null)
                               .OrderBy(page => page.Page.Position);

            foreach (var catalogItem in catalogItems)
            {
                bool isCurrentPage = catalogItem.Page.Id == pageId;

                viewModel.Items.Add(new NavigationItemViewModel
                {
                    Name     = catalogItem.Page.Name,
                    IsActive = isCurrentPage,
                    Link     = new NavigationLink {
                        PageId = catalogItem.Page.Id
                    }
                });

                if (isCurrentPage || catalogTree.LookupPage(pageId ?? Guid.Empty, catalogItem) != null)
                {
                    foreach (var catalogChildItem in catalogItem.Children.OrderBy(page => page.Page.Position))
                    {
                        viewModel.Items.Add(new NavigationItemViewModel
                        {
                            Name     = catalogChildItem.Page.Name,
                            Glyph    = "glyphicon glyphicon-chevron-right",
                            IsActive = catalogTree.LookupPage(pageId ?? Guid.Empty, catalogChildItem) != null,
                            Link     = new NavigationLink {
                                PageId = catalogChildItem.Page.Id
                            }
                        });
                    }
                }
            }

            /*
             * var siblingPages = repository.GetPages(parentId, null).Where(page => page.CategoryId != null).OrderBy(page => page.Position);
             * if (siblingPages == null || !siblingPages.Any())
             * {
             *  return viewModel;
             * }
             *
             * List<NavigationItemViewModel> parentCategoryList = null;
             * List<NavigationItemViewModel> childCategoryList = null;
             *
             * var childContentPages = repository.GetPages(pageId, null).Where(page => page.CategoryId != null);
             * if (childContentPages != null && childContentPages.Any())
             * {
             *  childCategoryList = childContentPages.OrderBy(page => page.Position).Select(page => new NavigationItemViewModel
             *  {
             *      Name = page.Name,
             *      Glyph = "glyphicon glyphicon-chevron-right",
             *      Link = new NavigationLink { PageId = page.Id }
             *  })
             *  .ToList();
             * }
             * else if (parentId != null && parentId != Guid.Empty)
             * {
             *  var parentContentPage = repository.GetPageById(parentId.Value);
             *  if (parentContentPage != null)
             *  {
             *      var parentPagesList = repository.GetPages(parentContentPage.ParentId, null).Where(page => page.CategoryId != null);
             *      if (parentPagesList != null && parentPagesList.Any())
             *      {
             *          parentCategoryList = parentPagesList.OrderBy(page => page.Position).Select(page => new NavigationItemViewModel
             *          {
             *              Name = page.Name,
             *              Link = new NavigationLink { PageId = page.Id }
             *          })
             *          .ToList();
             *      }
             *  }
             * }
             *
             * if (parentCategoryList != null)
             * {
             *  foreach (var parentCategory in parentCategoryList)
             *  {
             *      viewModel.Items.Add(parentCategory);
             *      if (parentCategory.Link.PageId == parentId)
             *      {
             *          foreach (var siblingPage in siblingPages)
             *          {
             *              viewModel.Items.Add(new NavigationItemViewModel
             *              {
             *                  Name = siblingPage.Name,
             *                  Glyph = "glyphicon glyphicon-chevron-right",
             *                  Link = new NavigationLink { PageId = siblingPage.Id },
             *                  IsActive = siblingPage.Id == contentPage.Id
             *              });
             *          }
             *      }
             *  }
             * }
             * else
             * {
             *  foreach (var siblingPage in siblingPages)
             *  {
             *      bool current = siblingPage.Id == contentPage.Id;
             *      viewModel.Items.Add(new NavigationItemViewModel
             *      {
             *          Name = siblingPage.Name,
             *          Link = new NavigationLink { PageId = siblingPage.Id },
             *          IsActive = current
             *      });
             *
             *      if (current && childCategoryList != null)
             *      {
             *          childCategoryList.ForEach(item => viewModel.Items.Add(item));
             *      }
             *  }
             * }
             */
            return(viewModel);
        }
Ejemplo n.º 16
0
 public async Task <ActionResult> AddMenuItem(NavigationMenuViewModel vm)
 {
     return(await _dataS.AddMenuItem(vm) && ModelState.IsValid ? View() : View(vm));
 }
Ejemplo n.º 17
0
        public async Task <IActionResult> Create([DataSourceRequest] DataSourceRequest request, [FromQuery] int?parentId, NavigationMenuViewModel viewModel)
        {
            var model = new TNavigationMenu();

            if (ModelState.IsValid)
            {
                var order = db.Navigation.Where(n => n.ParentId == parentId).Max(n => n.SortOrder) ?? 0;
                await this.TryUpdateModelAsync <NavigationMenuViewModel, TNavigationMenu>(model);

                model.ParentId  = parentId;
                model.SortOrder = order + 1;
                model.RefTag    = Guid.NewGuid().ToString("D");
                db.Navigation.Add(model);
                SetTenants(viewModel.Tenants, model);
                await db.SaveChangesAsync();
            }

            return(Json(await new[] { model.ToViewModel <TNavigationMenu, NavigationMenuViewModel>(ApplyTenants) }.ToDataSourceResultAsync(request, ModelState)));
        }
Ejemplo n.º 18
0
 public MainViewModel()
 {
     TableViewModel          = new TableViewModel();
     NavigationMenuViewModel = new NavigationMenuViewModel();
     GraphViewModel          = new GraphViewModel();
 }
Ejemplo n.º 19
0
        public async Task <IActionResult> Destroy([DataSourceRequest] DataSourceRequest request, NavigationMenuViewModel viewModel)
        {
            var model = db.Navigation.First(n => n.NavigationMenuId == viewModel.NavigationMenuId);

            if (ModelState.IsValid)
            {
                db.TenantNavigation.RemoveRange(model.Tenants);
                db.Navigation.Remove(model);
                await db.SaveChangesAsync();
            }

            return(Json(await new[] { viewModel }.ToDataSourceResultAsync(request, ModelState)));
        }
Ejemplo n.º 20
0
 public void SetDataContext(ChangeListView action)
 {
     DataContext = new NavigationMenuViewModel(action);
 }