Esempio n. 1
0
        public async Task <ActionResult> AddNewModule_Partial(AddNewModuleModel model)
        {
            PageDefinition page = await PageDefinition.LoadAsync(model.CurrentPageGuid);

            if (page == null)
            {
                throw new Error("Can't edit this page");
            }
            model.AddData(page);
            if (!ModelState.IsValid)
            {
                return(PartialView(model));
            }

            ModuleDefinition module = ModuleDefinition.CreateNewDesignedModule(model.SelectedModule, model.ModuleName, model.ModuleTitle);

            if (!module.IsModuleUnique)
            {
                module.ModuleGuid = Guid.NewGuid();
            }
            page.AddModule(model.SelectedPane, module, model.ModuleLocation == Location.Top);
            await page.SaveAsync();

            return(Reload(model, PopupText: this.__ResStr("okNew", "New module added")));
        }
Esempio n. 2
0
        public async Task <ActionResult> AddNewPage_Partial(AddNewPageModel model)
        {
            if (!ModelState.IsValid)
            {
                return(PartialView(model));
            }

            PageDefinition basePage = null;

            if (model.CopyPage)
            {
                basePage = await PageDefinition.LoadAsync(model.CurrentPageGuid);
            }

            PageDefinition.NewPageInfo newPage = await PageDefinition.CreateNewPageAsync(model.Title, model.Description, model.Url, basePage, model.CopyModules);

            PageDefinition page = newPage.Page;

            if (page == null)
            {
                ModelState.AddModelError(nameof(model.Url), newPage.Message);
                return(PartialView(model));
            }

            await page.SaveAsync();

            return(FormProcessed(model, this.__ResStr("okNewPage", "New page created"), NextPage: page.EvaluatedCanonicalUrl));
        }
Esempio n. 3
0
        public async Task <ActionResult> PageEdit_Partial(EditModel model)
        {
            PageDefinition page = await PageDefinition.LoadAsync(model.PageGuid);

            if (page == null)
            {
                throw new Error(this.__ResStr("alreadyDeleted", "This page has been removed and can no longer be updated."));
            }

            model.UpdateData(page);
            ObjectSupport.CopyData(page, model.Page, ReadOnly: true); // update read only properties in model in case there is an error
            model.Page.FavIcon_Data = page.FavIcon_Data;              // copy favicon
            if (!ModelState.IsValid)
            {
                return(PartialView(model));
            }
            page = model.GetData(page);  // merge new data into original
            model.SetData(page);         // and all the data back into model for final display

            await page.SaveAsync();      // this handles changing the Url automatically

            MenuList.ClearCachedMenus(); // page changes may affect all menus so clear the menu cache (this only clears current session)
            // if we're in a popup and the parent page is the page we're editing, then force a reload

            //$$$$ rename with querystring doesn't work
            OnPopupCloseEnum popupClose = OnPopupCloseEnum.ReloadModule;

            if (PageDefinition.IsSamePage(Manager.QueryReturnToUrl.Url, model.Page.Url))
            {
                popupClose = OnPopupCloseEnum.ReloadParentPage;
            }
            return(FormProcessed(model, this.__ResStr("okSaved", "Page settings saved"), OnPopupClose: popupClose));
        }
Esempio n. 4
0
        public async Task <ActionResult> SetUser(Guid guid)
        {
            using (PageDefinitionDataProvider pageDP = new PageDefinitionDataProvider()) {
                int            adminRole = Resource.ResourceAccess.GetAdministratorRoleId();
                int            userRole  = Resource.ResourceAccess.GetUserRoleId();
                PageDefinition page      = await PageDefinition.LoadAsync(guid);

                if (page == null)
                {
                    throw new InternalError($"Page with Guid {0} not found", guid);
                }
                page.AllowedRoles = new SerializableList <PageDefinition.AllowedRole>();
                page.AllowedUsers = new SerializableList <PageDefinition.AllowedUser>();
                page.AllowedRoles.Add(new PageDefinition.AllowedRole {
                    RoleId = userRole, View = PageDefinition.AllowedEnum.Yes
                });

                foreach (PageDefinition.ModuleEntry modEntry in page.ModuleDefinitions)
                {
                    ModuleDefinition module = await modEntry.GetModuleAsync();

                    if (module != null)
                    {
                        module.AllowedRoles = new SerializableList <ModuleDefinition.AllowedRole>();
                        module.AllowedUsers = new SerializableList <ModuleDefinition.AllowedUser>();
                        module.AllowedRoles.Add(new ModuleDefinition.AllowedRole {
                            RoleId = userRole, View = ModuleDefinition.AllowedEnum.Yes
                        });
                    }
                }
                await page.SaveAsync();
            }
            return(Reload(null, Reload: ReloadEnum.ModuleParts));
        }
Esempio n. 5
0
        public async Task <ActionResult> UpdateAdminAndEditorAuthorization()
        {
            using (PageDefinitionDataProvider pageDP = new PageDefinitionDataProvider()) {
                int adminRole  = Resource.ResourceAccess.GetAdministratorRoleId();
                int editorRole = Resource.ResourceAccess.GetEditorRoleId();
                DataProviderGetRecords <PageDefinition> pages = await pageDP.GetItemsAsync(0, 0, null, null);

                foreach (PageDefinition genericPage in pages.Data)
                {
                    PageDefinition page = await PageDefinition.LoadAsync(genericPage.PageGuid);

                    if (page != null)
                    {
                        PageDefinition.AllowedRole role;
                        while ((role = PageDefinition.AllowedRole.Find(page.AllowedRoles, adminRole)) != null)
                        {
                            page.AllowedRoles.Remove(role);
                        }
                        page.AllowedRoles.Add(new PageDefinition.AllowedRole {
                            RoleId = adminRole, View = PageDefinition.AllowedEnum.Yes, Edit = PageDefinition.AllowedEnum.Yes, Remove = PageDefinition.AllowedEnum.Yes,
                        });
                        while ((role = PageDefinition.AllowedRole.Find(page.AllowedRoles, editorRole)) != null)
                        {
                            page.AllowedRoles.Remove(role);
                        }
                        page.AllowedRoles.Add(new PageDefinition.AllowedRole {
                            RoleId = editorRole, View = PageDefinition.AllowedEnum.Yes, Edit = PageDefinition.AllowedEnum.Yes,
                        });
                        await page.SaveAsync();
                    }
                }
            }
            return(Reload(null, Reload: ReloadEnum.ModuleParts));
        }
Esempio n. 6
0
        public async Task <ActionResult> MoveBottom(Guid pageGuid, Guid moduleGuid, string pane, int moduleIndex = -1)
        {
            if (pageGuid == Guid.Empty || moduleGuid == Guid.Empty || pane == null || moduleIndex == -1)
            {
                throw new ArgumentException();
            }
            PageDefinition page = await LoadPageAsync(pageGuid);

            if (!page.IsAuthorized_Edit())
            {
                return(NotAuthorized());
            }
            page.ModuleDefinitions.MoveBottom(pane, moduleGuid, moduleIndex);
            await page.SaveAsync();

            return(Reload());
        }
Esempio n. 7
0
        public async Task <ActionResult> MoveToPane(Guid pageGuid, Guid moduleGuid, string oldPane, string newPane)
        {
            if (pageGuid == Guid.Empty || moduleGuid == Guid.Empty || oldPane == null || newPane == null)
            {
                throw new ArgumentException();
            }
            PageDefinition page = await LoadPageAsync(pageGuid);

            if (!page.IsAuthorized_Edit())
            {
                return(NotAuthorized());
            }
            page.ModuleDefinitions.MoveToPane(oldPane, moduleGuid, newPane);
            await page.SaveAsync();

            return(Reload());
        }
Esempio n. 8
0
        public async Task <ActionResult> AddExistingModule_Partial(AddExistingModel model)
        {
            PageDefinition page = await PageDefinition.LoadAsync(model.CurrentPageGuid);

            if (page == null)
            {
                throw new Error("Can't edit this page");
            }
            model.AddData(page);

            if (!ModelState.IsValid)
            {
                return(PartialView(model));
            }

            ModuleDefinition module = await ModuleDefinition.LoadAsync(model.ExistingModule);

            page.AddModule(model.ExistingModulePane, module, model.ModuleLocation == Location.Top);
            await page.SaveAsync();

            return(Reload(model, PopupText: this.__ResStr("okExisting", "Module added")));
        }
Esempio n. 9
0
        /// <summary>
        /// Builds the current site from the template file
        /// </summary>
        /// <returns></returns>
        private async Task BuildSiteFromTextAsync(List <string> lines, bool build)
        {
            // Build site from a template
            if (lines.Count() > 0)
            {
                lines = RemoveComments(lines);
                // process all lines
                for (; lines.Count > 0;)
                {
                    string section = lines.First().Trim(); ++_LineCounter; lines.RemoveAt(0);
                    if (section == "")
                    {
                        continue;
                    }
                    else if (section == "::PAGE-SECTION::")
                    {
                        await ExtractPageSectionAsync(lines, build);
                    }
                    else if (section == "::UNIQUE-MODULE-SECTION::")
                    {
                        await ExtractUniqueModuleSectionAsync(lines, build);
                    }
                    else if (section == "::NON-UNIQUE-MODULE-SECTION::")
                    {
                        await ExtractUniqueModuleSectionAsync(lines, build, Unique : false);
                    }
                    else if (section == "::LINK-SECTION::")
                    {
                        await ExtractLinkSectionAsync(lines, build);
                    }
                    else if (section == "::WEBCONFIG-SECTION::")
                    {
                        ExtractWebconfigSection(lines, build);
                    }
                    else if (section == "::COMMAND-SECTION::")
                    {
                        await ExtractCommandSectionAsync(lines, build);
                    }
                    else if (section == "::SQL-SECTION::")
                    {
                        ExtractSQLSection(lines, build);
                    }
                    else if (section.StartsWith("::INC "))
                    {
                        await ExtractINCSectionAsync(lines, build, section);
                    }
                    else
                    {
                        throw TemplateError("Invalid section statement");
                    }
                }
            }
            else
            {
                if (build)
                {
                    // Just build a site with a home page
                    // Build a site with a few pages
                    //PageDefinition page = new PageDefinition() { Title = "Home Page", Url = "/", PageGuid = new Guid(Globals.HomePageGuid) };
                    PageDefinition page = await PageDefinition.CreatePageDefinitionAsync("/");

                    await page.SaveAsync();

#if DEBUG
                    page = await PageDefinition.CreatePageDefinitionAsync("/page1");

                    await page.SaveAsync();

                    page = await PageDefinition.CreatePageDefinitionAsync("/page2");

                    await page.SaveAsync();

                    page = await PageDefinition.CreatePageDefinitionAsync("/page3");

                    await page.SaveAsync();
#endif
                }
            }
        }