private string GetNewUrl(MoveWebpageModel model, Webpage parent, Webpage page, Webpage immediateParent, MoveWebpageChangedPageModel parentModel) { if (!model.UpdateUrls) { return(page.UrlSegment); } if (immediateParent == null) { return(_webpageUrlService.Suggest(parent, new SuggestParams { DocumentType = page.DocumentType, PageName = page.Name, Template = page.PageTemplate?.Id, UseHierarchy = true, WebpageId = page.Id })); } return(_webpageUrlService.Suggest(immediateParent, new SuggestParams { DocumentType = page.DocumentType, PageName = $"{parentModel.NewUrl}/{page.Name}", Template = page.PageTemplate?.Id, UseHierarchy = false, WebpageId = page.Id })); }
public MoveWebpageResult Confirm(MoveWebpageModel model) { var confirmationModel = GetConfirmationModel(model); var success = SetParent(confirmationModel.Webpage, confirmationModel.Parent); if (!success) { return(new MoveWebpageResult { Success = false, Message = _resourceProvider.GetValue("There was an issue setting the parent to the new value") }); } success = _createUpdateUrlBatch.CreateBatch(confirmationModel); return(new MoveWebpageResult { Success = success, Message = _resourceProvider.GetValue(success ? "The page has been moved successfully" : "There was an issue creating the batch to update the page URLs") }); }
private List <MoveWebpageChangedPageModel> GetChangedPages(MoveWebpageModel model, Webpage webpage, Webpage parent) { var webpageHierarchy = GetWebpageHierarchy(webpage).ToList(); var parentActivePages = (parent?.ActivePages.Reverse() ?? Enumerable.Empty <Webpage>()).ToList(); List <MoveWebpageChangedPageModel> models = new List <MoveWebpageChangedPageModel>(); foreach (var page in webpageHierarchy) { var activePages = page.ActivePages.ToList(); var indexOf = activePages.IndexOf(webpage); var childActivePages = activePages.Take(indexOf + 1).ToList(); activePages.Reverse(); var immediateParent = childActivePages.ElementAtOrDefault(1); childActivePages.Reverse(); var newUrl = GetNewUrl(model, parent, page, immediateParent, models.FirstOrDefault(x => x.Id == immediateParent?.Id)); models.Add(new MoveWebpageChangedPageModel { Id = page.Id, ParentId = immediateParent?.Id, OldUrl = page.UrlSegment, NewUrl = newUrl, OldHierarchy = GetHierarchy(activePages), NewHierarchy = GetHierarchy(parentActivePages.Concat(childActivePages)) }); } return(models); }
public RedirectToRouteResult Index(MoveWebpageModel model) { var validationResult = _moveWebpageAdminService.Validate(model); if (!validationResult.Success) { TempData.ErrorMessages().Add(validationResult.Message); return(RedirectToAction("Index", new { id = model.Id })); } return(RedirectToAction("Confirm", model)); }
public MoveWebpageConfirmationModel GetConfirmationModel(MoveWebpageModel model) { var webpage = GetWebpage(model); var parent = GetParent(model); return(new MoveWebpageConfirmationModel { Webpage = webpage, Parent = parent, ChangedPages = GetChangedPages(model, webpage, parent) }); }
public RedirectToRouteResult Confirm_POST(MoveWebpageModel model) { var validationResult = _moveWebpageAdminService.Validate(model); if (!validationResult.Success) { TempData.ErrorMessages().Add(validationResult.Message); return(RedirectToAction("Index", new { model.Id })); } var confirmResult = _moveWebpageAdminService.Confirm(model); if (!confirmResult.Success) { TempData.ErrorMessages().Add(confirmResult.Message); return(RedirectToAction("Index", new { model.Id })); } TempData.SuccessMessages().Add(confirmResult.Message); return(RedirectToAction("Edit", "Webpage", new { model.Id })); }
public MoveWebpageResult Validate(MoveWebpageModel moveWebpageModel) { var webpage = GetWebpage(moveWebpageModel); var parent = GetParent(moveWebpageModel); if (parent == webpage.Parent.Unproxy()) { return(new MoveWebpageResult { Success = false, Message = _resourceProvider.GetValue("The webpage already has this parent") }); } var validParentWebpages = GetValidParentWebpages(webpage); var valid = parent == null?IsRootAllowed(webpage) : validParentWebpages.Contains(parent); return(new MoveWebpageResult { Success = valid, Message = valid ? string.Empty : _resourceProvider.GetValue("Sorry, but you can't select that as a parent for this page.") }); }
private Webpage GetWebpage(MoveWebpageModel moveWebpageModel) { return(_webpageRepository.Get(moveWebpageModel.Id)); }
private Webpage GetParent(MoveWebpageModel moveWebpageModel) { return(moveWebpageModel.ParentId.HasValue ? _webpageRepository.Get(moveWebpageModel.ParentId.Value) : null); }
public ViewResult Confirm(MoveWebpageModel model) { ViewData["confirmation-model"] = _moveWebpageAdminService.GetConfirmationModel(model); return(View(model)); }