public async Task <IActionResult> Edit(int id, [Bind("Id,Alias,Name,Weight,PageContent")] PageEditViewModel newPage) { if (id != newPage.Id) { return(NotFound()); } if (ModelState.IsValid) { Page page = newPage.GetModelByViewModel(); try { db.Update(page); await db.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!PageExists(page.Id)) { return(NotFound()); } else { throw; } } return(RedirectToAction("List")); } return(View(newPage)); }
public ViewResult Create() { var model = new PageEditViewModel { Page = new Page(), Pages = _pRepo.Pages }; return(View("Edit", model)); }
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)); }
public ViewResult Edit(int pageId) { var model = new PageEditViewModel { Page = _pRepo.Pages.FirstOrDefault(s => s.PageID == pageId), Pages = _pRepo.Pages.Where(c => c.PageID != pageId) }; return(View(model)); }
/// <summary> /// 创一个<see cref="PageEditViewModel{TDto, TKey}"/>实例。一般用于 Edit Action。 /// </summary> /// <param name="model">数据传输对象。</param> /// <returns></returns> public virtual async Task <PageEditViewModel <TDto, TKey> > CreateEditModelAsync(TDto model) { var editModel = new PageEditViewModel <TDto, TKey>(model, EntityControllerDescriptor.EntityMetadata.EditPropertyMetadatas) { Title = ((await Repository.SingleByIdAsync(model.Id)) == null ? "新增" : "编辑") + (EntityControllerDescriptor.PageConfig.Title ?? typeof(TEntity).Name) }; return(editModel); }
public CreateOrUpdatePageRequest( string projectId, string userName, PageEditViewModel viewModel, IPage page, ModelStateDictionary modelState ) { ProjectId = projectId; UserName = userName; ViewModel = viewModel; Page = page; ModelState = modelState; }
public async Task <IActionResult> Edit(int?id) { if (id == null) { return(NotFound()); } var page = await PageEditViewModel.GetViewModelByModelId(id); if (page == null) { return(NotFound()); } return(View(page)); }
public async Task <IActionResult> CreateOrEdit(PageEditViewModel model) { try { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (!string.IsNullOrWhiteSpace(model.CssContent)) { var uglifyTest = Uglify.Css(model.CssContent); if (uglifyTest.HasErrors) { foreach (var err in uglifyTest.Errors) { ModelState.AddModelError(model.CssContent, err.ToString()); } return(BadRequest(ModelState)); } } var req = new UpdatePageRequest { HtmlContent = model.RawHtmlContent, CssContent = model.CssContent, HideSidebar = model.HideSidebar, Slug = model.Slug, MetaDescription = model.MetaDescription, Title = model.Title, IsPublished = model.IsPublished }; var uid = model.Id == Guid.Empty ? await _pageService.CreateAsync(req) : await _pageService.UpdateAsync(model.Id, req); _cache.Remove(CacheDivision.Page, req.Slug.ToLower()); return(Json(new { PageId = uid })); } catch (Exception e) { _logger.LogError(e, "Error Create or Edit CustomPage."); Response.StatusCode = (int)HttpStatusCode.InternalServerError; return(Json(e.Message)); } }
public ActionResult Edit(int id) { var model = db.pages.Find(id); if (model == null) { return(HttpNotFound()); } var viewModel = new PageEditViewModel(); viewModel.PageId = model.PageId; viewModel.Page = model.PageName; viewModel.IsPublished = model.IsPublished ? "A" : "I"; return(View(viewModel)); }
/// <summary> /// 创建一个<see cref="PageEditViewModel{TDto, TKey}"/>实例。一般用于 Detail Action。 /// </summary> /// <param name="id">实体主键。</param> /// <returns></returns> public virtual async Task <PageEditViewModel <TDto, TKey> > CreateDetailModelAsync(string id) { var entity = await Repository.SingleByIdAsync(ParseEntityKey(id)); if (entity == null) { throw new HttpException(404, null); } var detailModel = new PageEditViewModel <TDto, TKey>(entity.MapToDto <TDto, TKey>(), EntityControllerDescriptor.EntityMetadata.DetailPropertyMetadatas) { Title = "" }; return(detailModel); }
public ActionResult Edit(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } Page page = db.Pages.Find(id); if (page == null) { return(HttpNotFound()); } ViewBag.Page_Url = page.URL; ViewBag.Banner_ID = new SelectList(db.Banners, "Banner_ID", "Banner_Name", page.Banner_ID); PageEditViewModel viewMod = new PageEditViewModel(page); return(View(viewMod)); }
public async Task <IActionResult> Edit(int id, PageEditViewModel viewModel) { //blowing up here var page = await _context.Pages.FirstOrDefaultAsync(m => m.Id == id); ModelState.Remove("Page.Month"); ModelState.Remove("Page.Day"); if (ModelState.IsValid) { try { viewModel.Page = page; viewModel.Page.Thought = page.Thought; viewModel.Quote.PageId = page.Id; viewModel.Quote.Page = page; viewModel.Quote.CreationDate = DateTime.Now; _context.Add(viewModel.Quote); _context.Update(viewModel.Page); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!PageExists(viewModel.Page.Id)) { return(NotFound()); } else { throw; } } return(RedirectToAction("PageDay", "Pages", new { Id = viewModel.Page.BookId, page = $"{viewModel.Page.Month}-{viewModel.Page.Day}" })); } if (id != viewModel.Page.Id) { return(NotFound()); } return(View(viewModel)); }
public ActionResult Delete(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 Delete 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, isReadOnly: true, isDeletePage: true, activeTab: Tab); return(View("Delete", viewModel)); }
public IActionResult Edit(PageEditViewModel model) { if (model.Page.ParentID != null) { model.Page.ParentPage = _pRepo.Pages.FirstOrDefault(p => p.ParentID == model.Page.ParentID); } if (ModelState.IsValid) { _pRepo.SavePage(model.Page); TempData["message"] = $"{model.Page.PageName} has been saved"; return(RedirectToAction("Index")); } else { TempData["error"] = "The are something error in following fields. Please check."; model.Pages = _pRepo.Pages.Where(c => c.PageID != model.Page.PageID); return(View(model)); } }
public ActionResult Edit(PageEditViewModel viewModel) { if (ModelState.IsValid) { var model = db.pages.Find(viewModel.PageId); if (model == null) { return(HttpNotFound()); } model.PageName = viewModel.Page; model.IsPublished = viewModel.IsPublished == "A"; model.LastUpdatedBy = User.Identity.Name; model.LastUpdatedDate = DateTime.Now; db.SaveChanges(); return(RedirectToAction("index")); } return(View(viewModel)); }
public IActionResult Edit(int?id) { if (id == null) { return(RedirectToAction("Index")); } var findPage = _pageService.GetAdmin(id); var viewModel = new PageEditViewModel() { Name = findPage.Name, StatusId = findPage.StatusId, EditorContent = findPage.EditorContent, Slug = findPage.Slug, Description = findPage.Description, Id = findPage.Id }; return(View()); }
// GET: Pages/Edit/5 public async Task <IActionResult> Edit(int?id) { if (id == null) { return(NotFound()); } var page = await _context.Pages.FirstOrDefaultAsync(m => m.Id == id); var viewModel = new PageEditViewModel() { Page = page, }; if (page == null) { return(NotFound()); } return(View(viewModel)); }
public IActionResult Edit(PageEditViewModel viewModel) { if (!ModelState.IsValid) { return(View(viewModel)); } string uniqueFileName = null; if (viewModel.Photos != null && viewModel.Photos.Count > 0) { foreach (IFormFile photo in viewModel.Photos) { var extension = Path.GetExtension(photo.FileName).ToLower(); if (extension == ".jpg" || extension == ".jpeg" || extension == ".png") { string uploadsFolder = Path.Combine(_hostingEnvironment.WebRootPath, "images"); uniqueFileName = Guid.NewGuid().ToString() + "_" + photo.FileName; string filePath = Path.Combine(uploadsFolder, uniqueFileName); photo.CopyTo(new FileStream(filePath, FileMode.Create)); } else { throw new Exception("Dosya türü .JPG , .JPEG veya .PNG olmalıdır.."); } } } var editedPage = new Page() { ImageUrl = uniqueFileName, Name = viewModel.Name, StatusId = viewModel.StatusId, EditorContent = viewModel.EditorContent, Slug = viewModel.Slug, Description = viewModel.Description }; _pageService.Edit(editedPage); return(RedirectToAction("Index")); }
public async Task <IActionResult> Edit(Guid id) { var page = await _pageService.GetAsync(id); if (page is null) { return(NotFound()); } var model = new PageEditViewModel { Id = page.Id, Title = page.Title, Slug = page.Slug, MetaDescription = page.MetaDescription, CssContent = page.CssContent, RawHtmlContent = page.RawHtmlContent, HideSidebar = page.HideSidebar, IsPublished = page.IsPublished }; return(View("CreateOrEdit", model)); }
public ActionResult AddBannerElement(string Header_Text, string Summary, int?Banner_ID, int Page_ID, int?Content_Type_ID, int?Content_ID) { //you are here //check image size and validate that image was added HttpPostedFileBase file = Request.Files["BannerImage"]; if (file != null) { if (file.ContentLength > 0) { if (!(file.ContentLength > MAX_IMG_SIZE)) { byte[] imageSize = new byte[file.ContentLength]; file.InputStream.Read(imageSize, 0, (int)file.ContentLength); string filePath = Server.MapPath("~/images/banners/") + file.FileName; string fileName = file.FileName; string fileNameNoEx = Path.GetFileNameWithoutExtension(file.FileName); string ext = Path.GetExtension(file.FileName); if (ext.ToLower() == ".jpg" || ext.ToLower() == ".png") { if (System.IO.File.Exists(filePath)) { int i = 1; filePath = Server.MapPath("~/images/banners/") + fileNameNoEx + i.ToString() + ext; while (System.IO.File.Exists(filePath)) { i++; filePath = Server.MapPath("~/images/banners/") + fileNameNoEx + i.ToString() + ext; fileName = fileNameNoEx + i.ToString() + ext; } } file.SaveAs(filePath); Page page = db.Pages.Find(Page_ID); if (Banner_ID != null) { BannerElement newElement = new BannerElement(); newElement.Banner_ID = Banner_ID.Value; newElement.Header_Text = Header_Text; newElement.Summary = Summary; newElement.Date_Added = DateTime.Now; newElement.Added_By = User.Identity.Name.ToString();///TODO: Need authentication here newElement.Archived = false; newElement.Image_Path = "images/banners/" + fileName; if (Content_Type_ID != null)//link to content if provided { if (Content_Type_ID != 0) { newElement.Content_ID = Content_ID; newElement.Content_Type_ID = Content_Type_ID; } } db.BannerElements.Add(newElement); db.SaveChanges(); } else { Banner newBanner = new Banner(); string bannerName = page.Page_Name + "Banner"; if (((List <Banner>)(from b in db.Banners where b.Banner_Name == bannerName select b).ToList()).Count() > 0) { int nameCnt = 1; string nameStrng = bannerName + nameCnt.ToString(); while (((List <Banner>)(from b in db.Banners where b.Banner_Name == nameStrng select b).ToList()).Count() > 0) { nameCnt++; nameStrng = bannerName + nameCnt.ToString(); } bannerName = nameStrng; } newBanner.Banner_Name = bannerName; db.Banners.Add(newBanner); db.SaveChanges(); page.Banner = newBanner; BannerElement newElement = new BannerElement(); newElement.Banner_ID = newBanner.Banner_ID; newElement.Header_Text = Header_Text; newElement.Summary = Summary; newElement.Date_Added = DateTime.Now; newElement.Added_By = User.Identity.Name.ToString();///TODO: Need authentication here newElement.Archived = false; newElement.Image_Path = "images/banners/" + fileName; if (Content_Type_ID != null)//link to content if provided { if (Content_Type_ID != 0) { newElement.Content_ID = Content_ID; newElement.Content_Type_ID = Content_Type_ID; } } db.BannerElements.Add(newElement); db.SaveChanges(); } return(RedirectToAction("Edit", new { id = Page_ID })); } else { ModelState.AddModelError("", "Only .png and .jpg images are supported"); Page page = db.Pages.Find(Page_ID); if (page == null) { return(HttpNotFound()); } ViewBag.Banner_ID = new SelectList(db.Banners, "Banner_ID", "Banner_Name", page.Banner_ID); PageEditViewModel viewMod = new PageEditViewModel(page); return(View("Edit", viewMod)); } } else { ModelState.AddModelError("", "Your Banner Image must be less than 10 MB"); Page page = db.Pages.Find(Page_ID); if (page == null) { return(HttpNotFound()); } ViewBag.Banner_ID = new SelectList(db.Banners, "Banner_ID", "Banner_Name", page.Banner_ID); PageEditViewModel viewMod = new PageEditViewModel(page); return(View("Edit", viewMod)); } } else { ModelState.AddModelError("", "You must select a banner image"); Page page = db.Pages.Find(Page_ID); if (page == null) { return(HttpNotFound()); } ViewBag.Banner_ID = new SelectList(db.Banners, "Banner_ID", "Banner_Name", page.Banner_ID); PageEditViewModel viewMod = new PageEditViewModel(page); return(View("Edit", viewMod)); } } else { ModelState.AddModelError("", "You must select a banner image"); Page page = db.Pages.Find(Page_ID); if (page == null) { return(HttpNotFound()); } ViewBag.Banner_ID = new SelectList(db.Banners, "Banner_ID", "Banner_Name", page.Banner_ID); PageEditViewModel viewMod = new PageEditViewModel(page); return(View("Edit", viewMod)); } }
public async Task <IActionResult> Edit(PageEditViewModel model) { if (!ModelState.IsValid) { if (string.IsNullOrEmpty(model.Id)) { ViewData["Title"] = sr["New Page"]; } else { ViewData["Title"] = string.Format(CultureInfo.CurrentUICulture, sr["Edit - {0}"], model.Title); } return(View(model)); } var project = await projectService.GetCurrentProjectSettings(); if (project == null) { log.LogInformation("redirecting to index because project settings not found"); return(RedirectToRoute(pageRoutes.PageRouteName)); } var canEdit = await User.CanEditPages(project.Id, authorizationService); if (!canEdit) { log.LogInformation("redirecting to index because user is not allowed to edit"); return(RedirectToRoute(pageRoutes.PageRouteName)); } IPage page = null; if (!string.IsNullOrEmpty(model.Id)) { page = await pageService.GetPage(model.Id); } var needToClearCache = false; var isNew = false; string slug = string.Empty;; bool slugIsAvailable = false; if (page != null) { if ((!string.IsNullOrEmpty(page.ViewRoles))) { if (!User.IsInRoles(page.ViewRoles)) { log.LogWarning($"page {page.Title} is protected by roles that user is not in so redirecting"); return(RedirectToRoute(pageRoutes.PageRouteName)); } } if (page.Title != model.Title) { needToClearCache = true; } page.Title = model.Title; page.MetaDescription = model.MetaDescription; page.Content = model.Content; if (page.IsPublished != model.IsPublished) { needToClearCache = true; } if (page.PageOrder != model.PageOrder) { needToClearCache = true; } if (!string.IsNullOrEmpty(model.Slug)) { // remove any bad characters model.Slug = ContentUtils.CreateSlug(model.Slug); if (model.Slug != page.Slug) { slugIsAvailable = await pageService.SlugIsAvailable(model.Slug); if (slugIsAvailable) { page.Slug = model.Slug; needToClearCache = true; } else { this.AlertDanger(sr["The page slug was not changed because the requested slug is already in use."], true); } } } } else { isNew = true; needToClearCache = true; if (!string.IsNullOrEmpty(model.Slug)) { // remove any bad chars model.Slug = ContentUtils.CreateSlug(model.Slug); slugIsAvailable = await pageService.SlugIsAvailable(model.Slug); if (slugIsAvailable) { slug = model.Slug; } } if (string.IsNullOrEmpty(slug)) { slug = ContentUtils.CreateSlug(model.Title); } slugIsAvailable = await pageService.SlugIsAvailable(slug); if (!slugIsAvailable) { model.DisqusShortname = project.DisqusShortName; //log.LogInformation("returning 409 because slug already in use"); ModelState.AddModelError("pageediterror", sr["slug is already in use."]); return(View(model)); } page = new Page() { ProjectId = project.Id, Author = await authorNameResolver.GetAuthorName(User), Title = model.Title, MetaDescription = model.MetaDescription, Content = model.Content, Slug = slug, ParentId = "0" //,Categories = categories.ToList() }; } if (!string.IsNullOrEmpty(model.ParentSlug)) { var parentPage = await pageService.GetPageBySlug(model.ParentSlug); if (parentPage != null) { if (parentPage.Id != page.ParentId) { page.ParentId = parentPage.Id; page.ParentSlug = parentPage.Slug; needToClearCache = true; } } } else { // empty means root level page.ParentSlug = string.Empty; page.ParentId = "0"; } if (page.ViewRoles != model.ViewRoles) { needToClearCache = true; } page.ViewRoles = model.ViewRoles; page.CorrelationKey = model.CorrelationKey; page.PageOrder = model.PageOrder; page.IsPublished = model.IsPublished; page.ShowHeading = model.ShowHeading; page.ShowMenu = model.ShowMenu; page.MenuOnly = model.MenuOnly; page.ShowComments = model.ShowComments; if (page.MenuFilters != model.MenuFilters) { needToClearCache = true; } page.MenuFilters = model.MenuFilters; if (page.ExternalUrl != model.ExternalUrl) { needToClearCache = true; } page.ExternalUrl = model.ExternalUrl; if (!string.IsNullOrEmpty(model.Author)) { page.Author = model.Author; } if (!string.IsNullOrEmpty(model.PubDate)) { var localTime = DateTime.Parse(model.PubDate); page.PubDate = timeZoneHelper.ConvertToUtc(localTime, project.TimeZoneId); } if (page.ProjectId != project.Id) { page.ProjectId = project.Id; } if (isNew) { await pageService.Create(page, model.IsPublished); this.AlertSuccess(sr["The page was created successfully."], true); } else { await pageService.Update(page, model.IsPublished); this.AlertSuccess(sr["The page was updated successfully."], true); } if (needToClearCache) { pageService.ClearNavigationCache(); } if (page.Slug == project.DefaultPageSlug) { return(RedirectToRoute(pageRoutes.PageRouteName, new { slug = "" })); } if (!string.IsNullOrEmpty(page.ExternalUrl)) { this.AlertWarning(sr["Note that since this page has an override url, the menu item will link to the url so the page is used only as a means to add a link in the menu, the content is not used."], true); return(RedirectToRoute(pageRoutes.PageEditRouteName, new { slug = page.Slug })); } //var url = Url.RouteUrl(pageRoutes.PageRouteName, new { slug = page.Slug }); return(RedirectToRoute(pageRoutes.PageRouteName, new { slug = page.Slug })); //return Content(url); }
public async Task <IActionResult> Edit( string slug = "", string parentSlug = "" ) { var projectSettings = await projectService.GetCurrentProjectSettings(); if (projectSettings == null) { log.LogInformation("redirecting to index because project settings not found"); return(RedirectToRoute(pageRoutes.PageRouteName)); } var canEdit = await User.CanEditPages(projectSettings.Id, authorizationService); if (!canEdit) { log.LogInformation("redirecting to index because user cannot edit"); return(RedirectToRoute(pageRoutes.PageRouteName)); } if (slug == "none") { slug = string.Empty; } var model = new PageEditViewModel(); model.ProjectId = projectSettings.Id; model.DisqusShortname = projectSettings.DisqusShortName; IPage page = null; if (!string.IsNullOrEmpty(slug)) { page = await pageService.GetPageBySlug(slug); } if (page == null) { ViewData["Title"] = sr["New Page"]; model.Slug = slug; model.ParentSlug = parentSlug; model.PageOrder = await pageService.GetNextChildPageOrder(parentSlug); var rootList = await pageService.GetRootPages().ConfigureAwait(false); if (rootList.Count == 0) { // expected if home page doesn't exist yet if (slug == "home") { model.Title = sr["Home"]; } } model.Author = await authorNameResolver.GetAuthorName(User); model.PubDate = timeZoneHelper.ConvertToLocalTime(DateTime.UtcNow, projectSettings.TimeZoneId).ToString(); } else // page not null { // if the page is protected by view roles return 404 if user is not in an allowed role if ((!string.IsNullOrEmpty(page.ViewRoles))) { if (!User.IsInRoles(page.ViewRoles)) { log.LogWarning($"page {page.Title} is protected by roles that user is not in so returning 404"); return(NotFound()); } } ViewData["Title"] = string.Format(CultureInfo.CurrentUICulture, sr["Edit - {0}"], page.Title); model.Author = page.Author; model.Content = page.Content; model.Id = page.Id; model.CorrelationKey = page.CorrelationKey; model.IsPublished = page.IsPublished; model.ShowMenu = page.ShowMenu; model.MenuOnly = page.MenuOnly; model.MetaDescription = page.MetaDescription; model.PageOrder = page.PageOrder; model.ParentId = page.ParentId; model.ParentSlug = page.ParentSlug; model.PubDate = timeZoneHelper.ConvertToLocalTime(page.PubDate, projectSettings.TimeZoneId).ToString(); model.ShowHeading = page.ShowHeading; model.Slug = page.Slug; model.ExternalUrl = page.ExternalUrl; model.Title = page.Title; model.MenuFilters = page.MenuFilters; model.ViewRoles = page.ViewRoles; model.ShowComments = page.ShowComments; } return(View(model)); }
public async Task <IActionResult> Edit( string slug = "", string parentSlug = "" ) { var projectSettings = await projectService.GetCurrentProjectSettings(); if (projectSettings == null) { log.LogInformation("redirecting to index because project settings not found"); return(RedirectToRoute(pageRoutes.PageRouteName)); } var canEdit = await User.CanEditPages(projectSettings.Id, authorizationService); if (!canEdit) { log.LogInformation("redirecting to index because user cannot edit"); return(RedirectToRoute(pageRoutes.PageRouteName)); } if (slug == "none") { slug = string.Empty; } var model = new PageEditViewModel(); model.ProjectId = projectSettings.Id; model.DisqusShortname = projectSettings.DisqusShortName; model.FileBrowseUrl = Url.Action("CkFileDialog", "FileManager", new { type = "file" }); model.ImageBrowseUrl = Url.Action("CkFileDialog", "FileManager", new { type = "image" }); model.DropFileUrl = Url.Action("Upload", "FileManager"); IPage page = null; if (!string.IsNullOrEmpty(slug)) { page = await pageService.GetPageBySlug(projectSettings.Id, slug); } if (page == null) { ViewData["Title"] = sr["New Page"]; model.Slug = slug; var rootList = await pageService.GetRootPages().ConfigureAwait(false); if (rootList.Count == 0) { // expected if home page doesn't exist yet if (slug == "home") { model.Title = "Home"; } } model.Author = User.GetUserDisplayName(); model.PubDate = timeZoneHelper.ConvertToLocalTime(DateTime.UtcNow, projectSettings.TimeZoneId).ToString(); } else { ViewData["Title"] = string.Format(CultureInfo.CurrentUICulture, sr["Edit - {0}"], page.Title); model.Author = page.Author; model.Content = page.Content; model.Id = page.Id; model.CorrelationKey = page.CorrelationKey; model.IsPublished = page.IsPublished; model.ShowMenu = page.ShowMenu; model.MenuOnly = page.MenuOnly; model.MetaDescription = page.MetaDescription; model.PageOrder = page.PageOrder; model.ParentId = page.ParentId; model.ParentSlug = page.ParentSlug; model.PubDate = timeZoneHelper.ConvertToLocalTime(page.PubDate, projectSettings.TimeZoneId).ToString(); model.ShowHeading = page.ShowHeading; model.Slug = page.Slug; model.ExternalUrl = page.ExternalUrl; model.Title = page.Title; model.ViewRoles = page.ViewRoles; model.ShowComments = page.ShowComments; } return(View(model)); }
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)); }
public async Task <IActionResult> AjaxPost(PageEditViewModel model) { // disable status code page for ajax requests var statusCodePagesFeature = HttpContext.Features.Get <IStatusCodePagesFeature>(); if (statusCodePagesFeature != null) { statusCodePagesFeature.Enabled = false; } if (string.IsNullOrEmpty(model.Title)) { // if a page has been configured to not show the title // this may be null on edit, if it is a new page then it should be required // because it is used for generating the slug //if (string.IsNullOrEmpty(model.Slug)) //{ log.LogInformation("returning 500 because no title was posted"); return(StatusCode(500)); //} } var project = await projectService.GetCurrentProjectSettings(); if (project == null) { log.LogInformation("returning 500 blog not found"); return(StatusCode(500)); } var canEdit = await User.CanEditPages(project.Id, authorizationService); if (!canEdit) { log.LogInformation("returning 403 user is not allowed to edit"); return(StatusCode(403)); } //string[] categories = new string[0]; //if (!string.IsNullOrEmpty(model.Categories)) //{ // categories = model.Categories.Split(new char[] { ',' }, // StringSplitOptions.RemoveEmptyEntries); //} IPage page = null; if (!string.IsNullOrEmpty(model.Id)) { page = await pageService.GetPage(model.Id); } var needToClearCache = false; var isNew = false; if (page != null) { page.Title = model.Title; page.MetaDescription = model.MetaDescription; page.Content = model.Content; if (page.PageOrder != model.PageOrder) { needToClearCache = true; } } else { isNew = true; needToClearCache = true; var slug = ContentUtils.CreateSlug(model.Title); var available = await pageService.SlugIsAvailable(project.Id, slug); if (!available) { log.LogInformation("returning 409 because slug already in use"); return(StatusCode(409)); } page = new Page() { ProjectId = project.Id, Author = User.GetUserDisplayName(), Title = model.Title, MetaDescription = model.MetaDescription, Content = model.Content, Slug = slug, ParentId = "0" //,Categories = categories.ToList() }; } if (!string.IsNullOrEmpty(model.ParentSlug)) { var parentPage = await pageService.GetPageBySlug(project.Id, model.ParentSlug); if (parentPage != null) { if (parentPage.Id != page.ParentId) { page.ParentId = parentPage.Id; page.ParentSlug = parentPage.Slug; needToClearCache = true; } } } else { // empty means root level page.ParentSlug = string.Empty; page.ParentId = "0"; } if (page.ViewRoles != model.ViewRoles) { needToClearCache = true; } page.ViewRoles = model.ViewRoles; page.PageOrder = model.PageOrder; page.IsPublished = model.IsPublished; page.ShowHeading = model.ShowHeading; if (!string.IsNullOrEmpty(model.PubDate)) { var localTime = DateTime.Parse(model.PubDate); page.PubDate = timeZoneHelper.ConvertToUtc(localTime, project.TimeZoneId); } if (isNew) { await pageService.Create(page, model.IsPublished); } else { await pageService.Update(page, model.IsPublished); } if (needToClearCache) { pageService.ClearNavigationCache(); } var url = Url.Action("Index", "Page", new { slug = page.Slug }); return(Content(url)); }
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)); }
public IActionResult Create() { var model = new PageEditViewModel(); return(View("CreateOrEdit", model)); }
public ActionResult Edit(PageEditViewModel pageViewMod) { Page page = db.Pages.Find(pageViewMod.Page_ID); if (db.Pages.Where(x => x.URL.ToLower() == pageViewMod.URL.ToLower() && x.Page_ID != pageViewMod.Page_ID).Count() <= 0) { if (db.Pages.Where(x => x.Page_Name.ToLower() == pageViewMod.Page_Name.ToLower() && x.Page_ID != pageViewMod.Page_ID).Count() <= 0) { //if (ModelState.IsValid) //{ page.Page_Name = pageViewMod.Page_Name; page.URL = pageViewMod.URL; page.Title_Text = pageViewMod.Title_Text; if (pageViewMod.Is_Default) { List <Page> pages = (List <Page>)db.Pages.Where(x => x.Page_ID != page.Page_ID).ToList(); foreach (Page p in pages) { p.Is_Default = false; } } page.Is_Default = pageViewMod.Is_Default; page.Display_In_Menu = pageViewMod.Display_In_Menu; page.Redirect = pageViewMod.Redirect; page.Redirect_URL = pageViewMod.Redirect_URL; page.Allow_Feedback = pageViewMod.Allow_Feedback; if (page.Allow_Feedback) { if (pageViewMod.Recipients_Temp == null) { pageViewMod.Recipients_Temp = ""; } string[] recipients = pageViewMod.Recipients_Temp.Split('|'); int pageID = page.Page_ID; List <NotificationRecipent> existingRecip = db.NotificationRecipents.Where(x => x.PageRecipientAssigns.Any(y => y.Page_ID == pageID)).ToList(); foreach (NotificationRecipent rec in existingRecip) { bool onPage = false; foreach (string recip in recipients) { string[] parts = recip.Split(','); if (parts.Length == 3) { if (rec.Recipient_Name == parts[1] && rec.Recipient_Email == parts[2]) { onPage = true; break; } } } if (!onPage) { int recID = rec.Recipient_ID; int page_ID = page.Page_ID; PageRecipientAssign recDelTemp = db.PageRecipientAssigns.Where(x => x.Page_ID == page_ID && x.Recipient_ID == recID).FirstOrDefault(); db.PageRecipientAssigns.Remove(recDelTemp); if (db.PageRecipientAssigns.Where(x => x.Recipient_ID == recID && x.Page_ID != page_ID).Count() == 0) { NotificationRecipent delTemp = db.NotificationRecipents.Where(x => x.Recipient_ID == recID).FirstOrDefault(); db.NotificationRecipents.Remove(delTemp); } } } foreach (string recip in recipients) { string[] parts = recip.Split(','); if (parts.Length == 3) { string recName = parts[1]; string recEmail = parts[2]; if (existingRecip.Where(x => x.Recipient_Name == recName && x.Recipient_Email == recEmail).Count() == 0) { if (db.NotificationRecipents.Where(x => x.Recipient_Email == recEmail && x.Recipient_Name == recName).Count() > 0) { NotificationRecipent tempRec = db.NotificationRecipents.Where(x => x.Recipient_Name == recName && x.Recipient_Email == recEmail).FirstOrDefault(); PageRecipientAssign recAss = new PageRecipientAssign(); recAss.Page = page; recAss.NotificationRecipent = tempRec; recAss.Date_Added = DateTime.Now; recAss.Added_By = User.Identity.Name.ToString(); db.PageRecipientAssigns.Add(recAss); } else { NotificationRecipent newRec = new NotificationRecipent(); newRec.Recipient_Name = recName; newRec.Recipient_Email = recEmail; newRec.Date_Added = DateTime.Now; newRec.Added_By = User.Identity.Name.ToString(); db.NotificationRecipents.Add(newRec); PageRecipientAssign recAss = new PageRecipientAssign(); recAss.Page = page; recAss.NotificationRecipent = newRec; recAss.Date_Added = DateTime.Now; recAss.Added_By = User.Identity.Name.ToString(); db.PageRecipientAssigns.Add(recAss); } } } } } if (pageViewMod.Parent_Page_ID != null) { page.Is_Top = false; Page parentPage = db.Pages.Find(pageViewMod.Parent_Page_ID); parentPage.Has_Children = true; } else if (pageViewMod.Parent_Page_ID == null && page.Parent_Page_ID != null) { if (db.Pages.Where(x => x.Page_ID != page.Page_ID && x.Parent_Page_ID == page.Parent_Page_ID).Count() == 0) { Page parentPage = db.Pages.Find(page.Parent_Page_ID); parentPage.Has_Children = false; db.SaveChanges(); } page.Is_Top = true; } page.Parent_Page_ID = pageViewMod.Parent_Page_ID; page.Date_Modified = DateTime.Now; page.Modified_By = User.Identity.Name; db.SaveChanges(); ViewBag.Banner_ID = new SelectList(db.Banners, "Banner_ID", "Banner_Name", page.Banner_ID); return(RedirectToAction("Edit", new { id = page.Page_ID })); } else { ModelState.AddModelError("", "A Page with the Page Name '" + pageViewMod.Page_Name + "' already exists"); ViewBag.Banner_ID = new SelectList(db.Banners, "Banner_ID", "Banner_Name", page.Banner_ID); return(View("Edit", pageViewMod)); } } else { ModelState.AddModelError("", "A Page with the URL '" + pageViewMod.URL + "' already exists"); ViewBag.Banner_ID = new SelectList(db.Banners, "Banner_ID", "Banner_Name", page.Banner_ID); return(View("Edit", pageViewMod)); } //} //ModelState.AddModelError("", "An unexpectced error occurred. Invalid Model State. Please try again."); //return View(pageViewMod); }
public PageEditViewModel GetEdit(ApiCall call) { // optional type. string baseurl = call.Context.WebSite.BaseUrl(); baseurl = Kooboo.Data.Service.WebSiteService.EnsureHttpsBaseUrlOnServer(baseurl, call.Context.WebSite); Guid PageId = call.ObjectId; var sitedb = call.WebSite.SiteDb(); if (PageId == default(Guid)) { string layoutid = call.GetValue("layoutid"); string type = call.GetValue("type"); var result = new PageEditViewModel(); if (!string.IsNullOrEmpty(layoutid)) { var Layout = sitedb.Layouts.GetByNameOrId(layoutid); if (Layout != null) { result.Body = InitPageLayoutSource(Layout); } } else if (!string.IsNullOrEmpty(type) && (type.ToLower() == "richtext")) { result.Body = ""; } else { result.Body = "<html><head></head><body><div></div></body></html>"; result.Body = HtmlHeadService.SetBaseHref(result.Body, baseurl); } return(result); } var page = sitedb.Pages.Get(PageId); var route = sitedb.Routes.GetByObjectId(page.Id); var model = new PageEditViewModel(); model.Id = page.Id; model.Name = page.Name; model.Published = page.Online; model.UrlPath = route == null ? null : route.Name; model.Type = page.Type; if (page.Type == PageType.RichText) { string body = page.Body; var doc = Kooboo.Dom.DomParser.CreateDom(body); var titletag = doc.head.getElementsByTagName("title"); if (titletag != null && titletag.length > 0) { model.Title = titletag.item[0].InnerHtml; } model.Body = doc.body.InnerHtml; } else { if (!page.HasLayout) { // HtmlHeadService.AppendHeader(page.Body, page.Headers); } string body = string.IsNullOrEmpty(page.Body) ? string.Empty : HtmlHeadService.SetBaseHref(page.Body, baseurl); model.LayoutName = page.LayoutName; model.LayoutId = Kooboo.Data.IDGenerator.GetOrGenerate(page.LayoutName, ConstObjectType.Layout); model.Metas = page.Headers.Metas; model.CustomHeader = page.Headers.CustomHeader; model.MetaBindings = PageService.GetMetaBindings(sitedb, PageId); model.UrlParamsBindings = PageService.GetUrlParas(sitedb, PageId); model.ContentTitle = page.Headers.Titles; model.Parameters = page.Parameters; model.Body = body; model.Scripts = page.Headers.Scripts; model.Styles = page.Headers.Styles; } return(model); }
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)); }