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)); }
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)); }
public void Handle(DesignContextChanged message) { var timeouteSetting = appSetting.GetSetting("MainWindow.PluginResponseTimeout", 15); pluginResponseTimeoutService.SetResponseTimeout(timeouteSetting); OnWindowGrab(null); NavigationMenuViewModel.ResetMenuState(); ToolboxMenuViewModel.ResetMenuState(); pluginActionSender.TerminatePlugins(); }
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>(); } }
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)); }
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)); }
protected override void OnInitialize() { base.OnInitialize(); eventAggregator.Subscribe(this); InitializeInformationBoard(); // eventAggregator.Subscribe(BusyIndicatorViewModel); // eventAggregator.Subscribe(BusyIndicatorWindowViewModel); BIVisible = false; NavigationMenuViewModel.Initialize(); ToolboxMenuViewModel.Initialize(); StartCommunicationServer(); CreatePluginContainer(); }
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)); } }
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); }
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); }
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); }
public async Task <ActionResult> AddMenuItem(NavigationMenuViewModel vm) { return(await _dataS.AddMenuItem(vm) && ModelState.IsValid ? View() : View(vm)); }
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))); }
public MainViewModel() { TableViewModel = new TableViewModel(); NavigationMenuViewModel = new NavigationMenuViewModel(); GraphViewModel = new GraphViewModel(); }
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))); }
public void SetDataContext(ChangeListView action) { DataContext = new NavigationMenuViewModel(action); }