private void PrepareModel(MenuRecordModel model, MenuRecord entity)
        {
            var templateNames = new string[] { "LinkList", "ListGroup", "Dropdown", "Navbar" };

            if (entity != null && ModelState.IsValid)
            {
                model.SelectedStoreIds        = _storeMappingService.GetStoresIdsWithAccess(entity);
                model.SelectedCustomerRoleIds = _aclService.GetCustomerRoleIdsWithAccessTo(entity);

                model.IsCustomTemplate = entity.Template.HasValue() && !templateNames.Contains(entity.Template);
            }

            model.Locales = new List <MenuRecordLocalizedModel>();

            model.AllTemplates = templateNames
                                 .Select(x => new SelectListItem {
                Text = x, Value = x, Selected = x.IsCaseInsensitiveEqual(entity?.Template)
            })
                                 .ToList();

            model.AllProviders = _menuItemProviders.Values
                                 .Select(x => new SelectListItem
            {
                Text  = T("Providers.MenuItems.FriendlyName." + x.Metadata.ProviderName),
                Value = x.Metadata.ProviderName
            })
                                 .ToList();

            var entities = _menuStorage.GetMenuItems(model.Id, 0, true);

            model.ItemTree = entities.GetTree("EditMenu", _menuItemProviders);
        }
        public ActionResult Edit(MenuRecordModel model, bool continueEditing, FormCollection form)
        {
            var menu = _menuStorage.GetMenuById(model.Id);

            if (menu == null)
            {
                return(HttpNotFound());
            }

            if (ModelState.IsValid)
            {
                MiniMapper.Map(model, menu);
                menu.WidgetZone = string.Join(",", model.WidgetZone ?? new string[0]).NullEmpty();

                _menuStorage.UpdateMenu(menu);

                SaveStoreMappings(menu, model.SelectedStoreIds);
                SaveAclMappings(menu, model.SelectedCustomerRoleIds);
                UpdateLocales(menu, model);

                Services.EventPublisher.Publish(new ModelBoundEvent(model, menu, form));

                NotifySuccess(T("Admin.Common.DataSuccessfullySaved"));
                return(continueEditing ? RedirectToAction("Edit", menu.Id) : RedirectToAction("List"));
            }

            PrepareModel(model, menu);

            return(View(model));
        }
Exemplo n.º 3
0
        public ActionResult List(GridCommand command, MenuRecordListModel model)
        {
            var gridModel = new GridModel <MenuRecordModel>();

            if (Services.Permissions.Authorize(StandardPermissionProvider.ManageMenus))
            {
                var menus = _menuStorage.GetAllMenus(model.SystemName, model.StoreId, true, command.Page - 1, command.PageSize);

                gridModel.Data = menus.Select(x =>
                {
                    var itemModel = new MenuRecordModel();
                    MiniMapper.Map(x, itemModel);

                    return(itemModel);
                });

                gridModel.Total = menus.TotalCount;
            }
            else
            {
                gridModel.Data = Enumerable.Empty <MenuRecordModel>();
                NotifyAccessDenied();
            }

            return(new JsonResult
            {
                MaxJsonLength = int.MaxValue,
                Data = gridModel
            });
        }
Exemplo n.º 4
0
        public ActionResult Create(MenuRecordModel model, bool continueEditing, FormCollection form)
        {
            if (!Services.Permissions.Authorize(StandardPermissionProvider.ManageMenus))
            {
                return(AccessDeniedView());
            }

            if (ModelState.IsValid)
            {
                var menu = MiniMapper.Map <MenuRecordModel, MenuRecord>(model);
                menu.WidgetZone = string.Join(",", model.WidgetZone ?? new string[0]).NullEmpty();

                _menuStorage.InsertMenu(menu);

                SaveStoreMappings(menu, model);
                SaveAclMappings(menu, model);
                UpdateLocales(menu, model);

                Services.EventPublisher.Publish(new ModelBoundEvent(model, menu, form));

                NotifySuccess(T("Admin.Common.DataSuccessfullySaved"));
                return(continueEditing ? RedirectToAction("Edit", new { id = menu.Id }) : RedirectToAction("List"));
            }

            PrepareModel(model, null);

            return(View(model));
        }
        public ActionResult Create()
        {
            var model = new MenuRecordModel();

            PrepareModel(model, null);
            AddLocales(_languageService, model.Locales);

            return(View(model));
        }
 private void UpdateLocales(MenuRecord entity, MenuRecordModel model)
 {
     if (model.Locales != null)
     {
         foreach (var localized in model.Locales)
         {
             _localizedEntityService.SaveLocalizedValue(entity, x => x.Title, localized.Title, localized.LanguageId);
         }
     }
 }
        public ActionResult ItemList(int id)
        {
            var model = new MenuRecordModel {
                Id = id
            };

            PrepareModel(model, null);

            return(PartialView(model));
        }
Exemplo n.º 8
0
        public ActionResult Create()
        {
            if (!Services.Permissions.Authorize(StandardPermissionProvider.ManageMenus))
            {
                return(AccessDeniedView());
            }

            var model = new MenuRecordModel();

            PrepareModel(model, null);
            AddLocales(_languageService, model.Locales);

            return(View(model));
        }
Exemplo n.º 9
0
        // Ajax.
        public ActionResult ItemList(int id)
        {
            if (!Services.Permissions.Authorize(StandardPermissionProvider.ManageMenus))
            {
                NotifyAccessDenied();
                return(new EmptyResult());
            }

            var model = new MenuRecordModel {
                Id = id
            };

            PrepareModel(model, null);

            return(PartialView(model));
        }
        public ActionResult List(GridCommand command, MenuRecordListModel model)
        {
            var gridModel = new GridModel <MenuRecordModel>();

            var menus = _menuStorage.GetAllMenus(model.SystemName, model.StoreId, true, command.Page - 1, command.PageSize);

            gridModel.Data = menus.Select(x =>
            {
                var itemModel = new MenuRecordModel();
                MiniMapper.Map(x, itemModel);

                return(itemModel);
            });

            gridModel.Total = menus.TotalCount;

            return(new JsonResult
            {
                MaxJsonLength = int.MaxValue,
                Data = gridModel
            });
        }