Пример #1
0
 public ActionResult Create(string Tab)
 {
     Page page = GStoreDb.Pages.Create();
     page.SetDefaultsForNew(CurrentStoreFrontOrThrow.CurrentConfig());
     PageEditViewModel viewModel = new PageEditViewModel(page, isStoreAdminEdit: true, isCreatePage: true, activeTab: Tab);
     return View("Create", viewModel);
 }
Пример #2
0
        public virtual PartialViewResult UpdatePageAjax(int? PageId, PageEditViewModel pageEditViewModel)
        {
            this._logActionsAsPageViews = false;
            if (!PageId.HasValue)
            {
                return HttpBadRequestPartial("Page id parameter is null");
            }

            if (pageEditViewModel.PageId == 0)
            {
                return HttpBadRequestPartial("Page id in viewmodel is 0");
            }

            if (PageId.Value != pageEditViewModel.PageId)
            {
                return HttpBadRequestPartial("Page id mismatch. PageId Parameter " + PageId.Value + " != " + pageEditViewModel.PageId);
            }

            if (pageEditViewModel.PageTemplateId == 0)
            {
                string pageTemplateKey = (ModelState.ContainsKey("PageEditViewModel_PageTemplateId") ? "PageEditViewModel_PageTemplateId" : "PageTemplateId");
                ModelState.AddModelError(pageTemplateKey, "Page Template must be selected");
            }

            if (pageEditViewModel.ThemeId == 0)
            {
                string themeKey = (ModelState.ContainsKey("PageEditViewModel_ThemeId") ? "PageEditViewModel_ThemeId" : "ThemeId");
                ModelState.AddModelError(themeKey, "Page Theme must be selected");
            }

            if (string.IsNullOrWhiteSpace(pageEditViewModel.Url))
            {
                string urlKey = (ModelState.ContainsKey("PageEditViewModel_Url") ? "PageEditViewModel_Url" : "Url");
                ModelState.AddModelError(urlKey, "Url cannot be blank. Example: '/' or '/Contact'");
            }

            StoreFront storeFront = CurrentStoreFrontOrThrow;
            bool urlIsValid = GStoreDb.ValidatePageUrl(this, pageEditViewModel.Url, storeFront.StoreFrontId, storeFront.ClientId, pageEditViewModel.PageId);

            if (urlIsValid && ModelState.IsValid)
            {
                try
                {
                    Page page = null;
                    page = GStoreDb.UpdatePage(pageEditViewModel, this, CurrentStoreFrontOrThrow, CurrentUserProfileOrThrow);
                    AddUserMessage("Page Changes Saved!", "Page '" + page.Name.ToHtml() + "' [" + page.PageId + "] saved successfully", AppHtmlHelpers.UserMessageType.Success);
                    pageEditViewModel = new PageEditViewModel(page, activeTab: pageEditViewModel.ActiveTab);
                    return PartialView("_PageEditPartial", pageEditViewModel);
                }
                catch (Exception ex)
                {
                    string errorMessage = "An error occurred while saving your changes to page '" + pageEditViewModel.Name + "' Url: '" + pageEditViewModel.Url + "' [" + pageEditViewModel.PageId + "] \nError: '" + ex.GetType().FullName + "'";

                    if (CurrentUserProfileOrThrow.AspNetIdentityUserIsInRoleSystemAdmin())
                    {
                        errorMessage += "\nException.ToString(): '" + ex.ToString() + "'";
                    }
                    AddUserMessage("Error Saving Page!", errorMessage.ToHtmlLines(), AppHtmlHelpers.UserMessageType.Danger);
                    ModelState.AddModelError("Ajax", errorMessage);
                }
            }
            else
            {
                AddUserMessage("Page Edit Error", "There was an error with your entry for page " + pageEditViewModel.Name.ToHtml() + " [" + pageEditViewModel.PageId + "]. Please correct it.", AppHtmlHelpers.UserMessageType.Danger);
            }

            pageEditViewModel.FillListsIfEmpty(CurrentClientOrThrow, CurrentStoreFrontOrThrow);
            return PartialView("_PageEditPartial", pageEditViewModel);
        }
Пример #3
0
        public virtual ActionResult Create(PageEditViewModel pageEditViewModel)
        {
            if (pageEditViewModel.PageTemplateId == 0)
            {
                ModelState.AddModelError("PageTemplateId", "Page Template must be selected");
            }

            if (pageEditViewModel.ThemeId == 0)
            {
                ModelState.AddModelError("ThemeId", "Page Theme must be selected");
            }

            if (string.IsNullOrWhiteSpace(pageEditViewModel.Url))
            {
                ModelState.AddModelError("Url", "Url is blank. Enter a valid Url for this page. Example: '/' or '/Contact'");
            }
            else
            {
                if (pageEditViewModel.Url.Trim('/').Trim() == ".")
                {
                    ModelState.AddModelError("Url", "Url '" + pageEditViewModel.Url.ToHtml() + "' is invalid. Example: '/' or '/Contact'");
                }
                if (pageEditViewModel.Url.Contains('?'))
                {
                    ModelState.AddModelError("Url", "Url '" + pageEditViewModel.Url.ToHtml() + "' is invalid. Question mark is not allowed in URL. Example: '/' or '/Contact'");
                }
            }

            StoreFront storeFront = CurrentStoreFrontOrThrow;
            bool urlIsValid = GStoreDb.ValidatePageUrl(this, pageEditViewModel.Url, storeFront.StoreFrontId, storeFront.ClientId, null);

            if (urlIsValid && ModelState.IsValid)
            {
                try
                {
                    Page page = null;
                    page = GStoreDb.CreatePage(pageEditViewModel, storeFront, CurrentUserProfileOrThrow);
                    AddUserMessage("Page Created!", "Page '" + page.Name.ToHtml() + "' [" + page.PageId + "] was created successfully for Store Front '" + storeFront.CurrentConfig().Name.ToHtml() + "' [" + storeFront.StoreFrontId + "]", UserMessageType.Success);

                    if (pageEditViewModel.CreateMenuItemWithPage)
                    {
                        NavBarItem navBarItem = GStoreDb.CreateNavBarItemForPage(page, CurrentStoreFrontOrThrow, CurrentUserProfileOrThrow);
                        AddUserMessage("Site Menu Updated!", "Page '" + page.Name.ToHtml() + "' [" + page.PageId + "] was added to the site menu for Store Front '" + storeFront.CurrentConfig().Name.ToHtml() + "' [" + storeFront.StoreFrontId + "]", UserMessageType.Success);
                    }
                    if (CurrentStoreFrontOrThrow.Authorization_IsAuthorized(CurrentUserProfileOrThrow, GStoreAction.Pages_View))
                    {
                        return RedirectToAction("Details", new { id = page.PageId });
                    }
                    return RedirectToAction("Manager");
                }
                catch (Exception ex)
                {
                    string errorMessage = "An error occurred while Creating page '" + pageEditViewModel.Name + "' Url: '" + pageEditViewModel.Url + "' for Store Front '" + storeFront.CurrentConfig().Name.ToHtml() + "' [" + storeFront.StoreFrontId + "] \nError: " + ex.GetType().FullName;

                    if (CurrentUserProfileOrThrow.AspNetIdentityUserIsInRoleSystemAdmin())
                    {
                        errorMessage += " \nException.ToString(): " + ex.ToString();
                    }
                    AddUserMessage("Error Creating Page!", errorMessage.ToHtmlLines(), UserMessageType.Danger);
                    ModelState.AddModelError("Ajax", errorMessage);
                }
            }
            else
            {
                AddUserMessage("Page Create Error", "There was an error with your entry for new page '" + pageEditViewModel.Name.ToHtml() + "' for Store Front '" + storeFront.CurrentConfig().Name.ToHtml() + "' [" + storeFront.StoreFrontId + "]. Please correct it below and save.", UserMessageType.Danger);
            }

            pageEditViewModel.IsStoreAdminEdit = true;
            pageEditViewModel.FillListsIfEmpty(storeFront.Client, storeFront);
            pageEditViewModel.IsCreatePage = true;
            return View("Create", pageEditViewModel);
        }
Пример #4
0
        public virtual PartialViewResult UpdatePageAjax(int? PageId, PageEditViewModel pageEditViewModel)
        {
            if (!PageId.HasValue)
            {
                return HttpBadRequestPartial("Page id parameter is null");
            }

            if (pageEditViewModel.PageId == 0)
            {
                return HttpBadRequestPartial("Page id in viewmodel is 0");
            }

            if (PageId.Value != pageEditViewModel.PageId)
            {
                return HttpBadRequestPartial("Page id mismatch. PageId Parameter " + PageId.Value + " != " + pageEditViewModel.PageId);
            }

            if (pageEditViewModel.PageTemplateId == 0)
            {
                ModelState.AddModelError("PageTemplateId", "Page Template must be selected");
            }

            if (pageEditViewModel.ThemeId == 0)
            {
                ModelState.AddModelError("ThemeId", "Page Theme must be selected");
            }

            if (string.IsNullOrWhiteSpace(pageEditViewModel.Url))
            {
                ModelState.AddModelError("Url", "Url is invalid. Example: '/' or '/Contact'");
            }
            else
            {
                if (pageEditViewModel.Url.Trim('/').Trim() == ".")
                {
                    ModelState.AddModelError("Url", "Url '" + pageEditViewModel.Url.ToHtml() + "' is invalid. Example: '/' or '/Contact'");
                }
                if (pageEditViewModel.Url.Contains('?'))
                {
                    ModelState.AddModelError("Url", "Url '" + pageEditViewModel.Url.ToHtml() + "' is invalid. Question mark is not allowed in URL. Example: '/' or '/Contact'");
                }
            }

            StoreFront storeFront = CurrentStoreFrontOrThrow;
            bool urlIsValid = GStoreDb.ValidatePageUrl(this, pageEditViewModel.Url, storeFront.StoreFrontId, storeFront.ClientId, pageEditViewModel.PageId);

            if (urlIsValid && ModelState.IsValid)
            {
                Page page = null;
                try
                {
                    page = GStoreDb.UpdatePage(pageEditViewModel, this, storeFront, CurrentUserProfileOrThrow);
                    AddUserMessage("Page Changes Saved!", "Page '" + page.Name.ToHtml() + "' [" + page.PageId + "] saved successfully for Store Front '" + storeFront.CurrentConfig().Name.ToHtml() + "' [" + storeFront.StoreFrontId + "]", UserMessageType.Success);
                    pageEditViewModel = new PageEditViewModel(page, isStoreAdminEdit: true, activeTab: pageEditViewModel.ActiveTab);
                    return PartialView("_PageEditPartial", pageEditViewModel);
                }
                catch (Exception ex)
                {
                    string errorMessage = "An error occurred while saving your changes to page '" + pageEditViewModel.Name + "' Url: '" + pageEditViewModel.Url + "' [" + pageEditViewModel.PageId + "] for Store Front: '" + storeFront.CurrentConfig().Name + "' [" + storeFront.StoreFrontId + "] \nError: '" + ex.GetType().FullName + "'";

                    if (CurrentUserProfileOrThrow.AspNetIdentityUserIsInRoleSystemAdmin())
                    {
                        errorMessage += " \nException.ToString(): '" + ex.ToString() + "'";
                    }
                    AddUserMessage("Error Saving Page!", errorMessage.ToHtmlLines(), UserMessageType.Danger);
                    ModelState.AddModelError("Ajax", errorMessage);
                }
            }
            else
            {
                AddUserMessage("Page Edit Error", "There was an error with your entry for page " + pageEditViewModel.Name.ToHtml() + " [" + pageEditViewModel.PageId + "] for Store Front '" + storeFront.CurrentConfig().Name.ToHtml() + "' [" + storeFront.StoreFrontId + "]. Please correct it.", UserMessageType.Danger);
            }

            pageEditViewModel.IsStoreAdminEdit = true;
            pageEditViewModel.FillListsIfEmpty(CurrentClientOrThrow, CurrentStoreFrontOrThrow);
            return PartialView("_PageEditPartial", pageEditViewModel);
        }
Пример #5
0
        public ActionResult Edit(int? id, string Tab)
        {
            if (!id.HasValue)
            {
                return HttpBadRequest("PageId = null");
            }

            StoreFront storeFront = CurrentStoreFrontOrThrow;
            Page page = storeFront.Pages.Where(p => p.PageId == id.Value).SingleOrDefault();
            if (page == null)
            {
                AddUserMessage("Page not found", "Sorry, the page you are trying to edit cannot be found. Page id: [" + id.Value + "] for Store Front '" + storeFront.CurrentConfig().Name.ToHtml() + "' [" + storeFront.StoreFrontId + "]", UserMessageType.Danger);
                return RedirectToAction("Manager");

            }

            PageEditViewModel viewModel = new PageEditViewModel(page, isStoreAdminEdit: true, activeTab: Tab);
            return View("Edit", viewModel);
        }