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);
        }
Beispiel #3
0
        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")
            });
        }
Beispiel #7
0
        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));
 }
Beispiel #10
0
 public ViewResult Confirm(MergeWebpageModel model)
 {
     ViewData["confirmation-model"] = _mergeWebpageAdminService.GetConfirmationModel(model);
     return(View(model));
 }