Beispiel #1
0
        protected override bool OnValidate()
        {
            if (Name.ToLower().Equals("create"))
            {
                AddMessage(Message.GLOBAL, new Message("Non-valid page name: Create", MessageTypes.Error));
                return(false);
            }

            _page = Page.Query.Include(nameof(Page.PageModules)).SingleOrDefault(p => p.Name == PageName || p.Id == Id);
            if (_page != null && _page.Id != Id)
            {
                AddMessage(Message.GLOBAL, new Message("Page with name " + Name + " already exists", MessageTypes.Error));
                return(false);
            }

            if (AdminLocked.HasValue && !SessionVariables.User.IsInRole("Admin"))
            {
                AddMessage(Message.GLOBAL, new Message("You are not permitted to edit the admin lock on pages", MessageTypes.Error));
                NTGLogger.LogSecurityAction(HttpContext.Current.Request, SessionVariables.User, "Attempted to edit admin lock on " + _page.Id + " '" + _page.Name + "'");
                return(false);
            }

            if (Id != 0)
            {
                if (_page == null)
                {
                    AddMessage(Message.GLOBAL, new Message("Page does not exist", MessageTypes.Error));
                    return(false);
                }

                if (_page.AdminLocked && !SessionVariables.User.IsInRole("Admin"))
                {
                    AddMessage(Message.GLOBAL, new Message("You are not permitted to edit an admin locked page", MessageTypes.Error));
                    NTGLogger.LogSecurityAction(HttpContext.Current.Request, SessionVariables.User, "Attempted to edit admin locked page " + _page.Id + " '" + _page.Name + "'");
                    return(false);
                }

                if (ModuleActions != null)
                {
                    if (ModuleActions.GroupBy(mp => mp.Position).Any(mp => mp.Count() > 1))
                    {
                        AddMessage(Message.GLOBAL, new Message("Duplicate module positions are not allowed", MessageTypes.Error));
                        return(false);
                    }

                    if (ModuleActions.Any(mp => mp.Position < 1 || mp.Position > _page.PageModules.Count()))
                    {
                        AddMessage(Message.GLOBAL, new Message("A module has a non-valid position", MessageTypes.Error));
                        return(false);
                    }
                }
            }

            return(true);
        }
        public void TestInitialize()
        {
            workItem = new TestableRootWorkItem();

            MockUIElementAdapterFactory factory = new MockUIElementAdapterFactory();

            workItem.Services.Get <IUIElementAdapterFactoryCatalog>().RegisterFactory(factory);
            elementAdapter = new MockUIElementAdapter();
            workItem.UIExtensionSites.RegisterSite(UIExtensionSiteNames.ProductsPanel, elementAdapter);

            actionCatalog = workItem.Services.AddNew <MockActionCatalog, IActionCatalogService>();
            queueEntry    = workItem.Items.AddNew <QueueEntry>("QueueEntry");
            workspace     = workItem.Workspaces.AddNew <MockWorkspace>(WorkspaceNames.OfficerWorkspace);

            workItem.Services.AddNew <MockQuoteService, IQuoteService>();
            workItem.Services.AddNew <MockCustomerAccountService, ICustomerAccountService>();
            workItem.Services.AddNew <MockAccountService, IAccountService>();

            actions = workItem.Items.AddNew <ModuleActions>();
        }
Beispiel #3
0
        protected override void OnSubmit()
        {
            var isNew = _page == null;

            if (isNew)
            {
                _page = new Page();
                _page.UploadFolder = Path.GetRandomFileName();
                _page.Position     = Page.Query.Count() + 1;
            }

            using (var conn = new NTGDBTransactional())
            {
                if (_page.Id == 0 || !_page.Name.Equals(Name))
                {
                    RedirectTo = Name.Replace(" ", "-").ToLower();
                }

                _page.Name            = Name;
                _page.HeroImage       = HeroImage;
                _page.MobileHeroImage = !string.IsNullOrEmpty(HeroImage) ? MobileHeroImage : null;

                /*The page with position 1 is the equivalent of home and should always have
                 * InMenu and as false because it has its own logic to appear in the top menu as the home link*/
                _page.InMenu       = _page.Position == 1 ? false : InMenu;
                _page.InBottomMenu = _page.Position == 1 ? false : InBottomMenu;
                //The home page cannot be inactive
                _page.Visible = _page.Position == 1 ? true : Visible;

                if (AdminLocked.HasValue)
                {
                    _page.AdminLocked = AdminLocked.Value;
                    if (!isNew)
                    {
                        NTGLogger.LogSiteAction(HttpContext.Current.Request,
                                                SessionVariables.User,
                                                "Changed admin lock on page",
                                                _page.Id,
                                                _page.Name,
                                                null,
                                                null,
                                                conn);
                    }
                }

                _page.Save(conn);

                foreach (var module in _page.PageModules.OrderBy(pm => ModuleActions.OrderBy(ma => ma.Position).Select(ma => ma.Id).ToList().IndexOf(pm.Id)))
                {
                    var action = ModuleActions.SingleOrDefault(ma => ma.Id == module.Id);
                    if (action != null)
                    {
                        if (action.Delete)
                        {
                            ModuleService.DeleteModule(module, conn);
                            foreach (var nextAction in ModuleActions.Where(ma => ma.Position > action.Position))
                            {
                                nextAction.Position -= 1;
                            }
                            NTGLogger.LogSiteAction(HttpContext.Current.Request,
                                                    SessionVariables.User,
                                                    "Deleted Module",
                                                    _page.Id,
                                                    _page.Name,
                                                    module.ModuleId,
                                                    ModuleType.Query.FirstOrDefault(mt => mt.Id == module.ModuleTypeId)?.Name,
                                                    conn);
                        }
                        else if (module.Position != action.Position)
                        {
                            module.Position = action.Position;
                            module.Save(conn);
                        }
                    }
                }

                NTGLogger.LogSiteAction(HttpContext.Current.Request,
                                        SessionVariables.User,
                                        (isNew ? "Created" : "Editted") + " Page",
                                        _page.Id,
                                        _page.Name,
                                        null,
                                        null,
                                        conn);

                conn.Commit();
                ModuleService.RefreshModulesCache(_page.Id);
                AddMessage(Message.GLOBAL, new Message("Page " + Name + " successfully saved", MessageTypes.Success));
            }
        }