private string GetNewUrl(MergeWebpageModel model, Webpage parent, Webpage page, Webpage immediateParent, MergeWebpageChangedPageModel 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 })); }
private List <MergeWebpageChangedPageModel> GetChangedPages(MergeWebpageModel model, Webpage webpage, Webpage parent) { var webpageHierarchy = GetWebpageHierarchy(webpage).ToList(); var parentActivePages = (parent.ActivePages.Reverse()).ToList(); List <MergeWebpageChangedPageModel> models = new List <MergeWebpageChangedPageModel>(); foreach (var page in webpageHierarchy) { var activePages = page.ActivePages.ToList(); var indexOf = activePages.IndexOf(webpage); var childActivePages = activePages.Take(indexOf).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 MergeWebpageChangedPageModel { Id = page.Id, ParentId = immediateParent?.Id ?? model.Id, OldUrl = page.UrlSegment, NewUrl = newUrl, OldHierarchy = GetHierarchy(activePages), NewHierarchy = GetHierarchy(parentActivePages.Concat(childActivePages)) }); } return(models); }
public RedirectToRouteResult Index(MergeWebpageModel model) { var validationResult = _mergeWebpageAdminService.Validate(model); if (!validationResult.Success) { TempData.ErrorMessages().Add(validationResult.Message); return(RedirectToAction("Index", new { id = model.Id })); } return(RedirectToAction("Confirm", model)); }
public MergeWebpageConfirmationModel GetConfirmationModel(MergeWebpageModel model) { var webpage = GetWebpage(model); var parent = GetParent(model); return(new MergeWebpageConfirmationModel { Webpage = webpage, MergedInto = parent, ChangedPages = GetChangedPages(model, webpage, parent) }); }
public MergeWebpageResult Validate(MergeWebpageModel moveWebpageModel) { var webpage = GetWebpage(moveWebpageModel); var parent = GetParent(moveWebpageModel); var validParentWebpages = GetValidParentWebpages(webpage); var valid = webpage != null && parent != null && validParentWebpages.Contains(parent); return(new MergeWebpageResult { Success = valid, Message = valid ? string.Empty : _resourceProvider.GetValue("Sorry, but you can't select that as a parent for this page.") }); }
public MergeWebpageResult Confirm(MergeWebpageModel model) { var confirmationModel = GetConfirmationModel(model); var success = _createMergeBatch.CreateBatch(confirmationModel); return(new MergeWebpageResult { Success = success, Message = _resourceProvider.GetValue(success ? "The page has been moved successfully" : "There was an issue creating the batch to complete the merge") }); }
public RedirectToRouteResult Confirm_POST(MergeWebpageModel model) { var validationResult = _mergeWebpageAdminService.Validate(model); if (!validationResult.Success) { TempData.ErrorMessages().Add(validationResult.Message); return(RedirectToAction("Index", new { model.Id })); } var confirmResult = _mergeWebpageAdminService.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 { id = model.MergeIntoId })); }
private Webpage GetWebpage(MergeWebpageModel moveWebpageModel) { return(_webpageRepository.Get(moveWebpageModel.Id)); }
private Webpage GetParent(MergeWebpageModel moveWebpageModel) { return(_webpageRepository.Get(moveWebpageModel.MergeIntoId)); }
public ViewResult Confirm(MergeWebpageModel model) { ViewData["confirmation-model"] = _mergeWebpageAdminService.GetConfirmationModel(model); return(View(model)); }