예제 #1
0
        protected override DriverResult Editor(NavigationPart part, dynamic shapeHelper)
        {
            var currentUser = _workContextAccessor.GetContext().CurrentUser;

            if (!_authorizationService.TryCheckAccess(Permissions.ManageMainMenu, currentUser, part))
            {
                return(null);
            }

            return(ContentShape("Parts_Navigation_Edit",
                                () => {
                // loads all menu part of type ContentMenuItem linking to the current content item
                var model = new NavigationPartViewModel {
                    Part = part,
                    ContentMenuItems = _contentManager
                                       .Query <MenuPart>()
                                       .Join <ContentMenuItemPartRecord>()
                                       .Where(x => x.ContentMenuItemRecord == part.ContentItem.Record)
                                       .List(),
                    Menus = _menuService.GetMenus(),
                };

                return shapeHelper.EditorTemplate(TemplateName: "Parts.Navigation.Edit", Model: model, Prefix: Prefix);
            }));
        }
예제 #2
0
        protected override DriverResult Editor(NavigationPart part, IUpdateModel updater, dynamic shapeHelper)
        {
            var currentUser  = _workContextAccessor.GetContext().CurrentUser;
            var allowedMenus = _menuService.GetMenus().Where(menu => _authorizationService.TryCheckAccess(Permissions.ManageMenus, currentUser, menu)).ToList();

            if (!allowedMenus.Any())
            {
                return(null);
            }

            var model = new NavigationPartViewModel();

            if (updater.TryUpdateModel(model, Prefix, null, null))
            {
                if (model.AddMenuItem)
                {
                    if (string.IsNullOrEmpty(model.MenuText))
                    {
                        updater.AddModelError("MenuText", T("The MenuText field is required"));
                    }
                    else
                    {
                        var menu = allowedMenus.FirstOrDefault(m => m.Id == model.CurrentMenuId);

                        if (menu != null)
                        {
                            var menuItem = _contentManager.Create <ContentMenuItemPart>("ContentMenuItem");
                            menuItem.Content = part.ContentItem;

                            menuItem.As <MenuPart>().MenuText     = model.MenuText;
                            menuItem.As <MenuPart>().MenuPosition = Position.GetNext(_navigationManager.BuildMenu(menu));
                            menuItem.As <MenuPart>().Menu         = menu;
                        }
                    }
                }
            }

            return(Editor(part, shapeHelper));
        }