private void PublishedContentHandler(object sender, ContentEventArgs e) { if (Configuration.Configuration.AddAutomaticRedirects == false) { return; } var lastVersion = ContentVersionRepository .Service .List(e.ContentLink) .Where(p => p.Status == VersionStatus.PreviouslyPublished) .OrderByDescending(p => p.Saved) .FirstOrDefault(); if (lastVersion == null) { return; } var oldUrl = GetContentUrl(lastVersion.ContentLink, lastVersion.LanguageBranch); if (oldUrl == null) { return; } var newUrl = GetContentUrl(e.ContentLink, e.Content.LanguageBranch()); if (oldUrl == newUrl) { return; } var lastVersionPageData = ContentRepository.Service.Get <IContentData>(lastVersion.ContentLink) as PageData; if (lastVersionPageData == null) { return; } SystemRedirectsActions.AddRedirects(lastVersionPageData, oldUrl, SystemRedirectsHelper.GetCultureInfo(e), SystemRedirectReason.PublishedContent); }
private void MovedContentHandler(object sender, ContentEventArgs e) { if (Configuration.Configuration.AddAutomaticRedirects == false) { return; } if (!(e.Content is IChangeTrackable)) { return; } var originalParent = (e as MoveContentEventArgs)?.OriginalParent; if (originalParent == ContentReference.WasteBasket) { // do not create when restoring, cause not need to do redirects from waste basket. // however, DO redirect when moving to waste basket, because restore may be to another place return; } foreach (var language in LanguageBranchRepository.Service.ListEnabled()) { if (!(ContentRepository.Service.Get <IContentData>(e.ContentLink, language.Culture) is PageData pageData)) { continue; } var oldUrl = GetContentUrl(originalParent, language.Culture.Name, false); if (oldUrl == null) { continue; } SystemRedirectsActions.AddRedirects(pageData, oldUrl + pageData.URLSegment, language.Culture, SystemRedirectReason.MovedContent); } }
private void SavedContentHandler(object sender, ContentEventArgs e) { if (Configuration.Configuration.AddAutomaticRedirects == false) { return; } var oldUrl = e.Items[OldUrlKey]?.ToString(); if (oldUrl == null) { return; } var newUrl = UrlResolver.Service.GetUrl(e.ContentLink, null); if (newUrl != oldUrl) { var pageData = ContentRepository.Service.Get <IContentData>(e.ContentLink) as PageData; SystemRedirectsActions.AddRedirects(pageData, oldUrl, SystemRedirectsHelper.GetCultureInfo(e), SystemRedirectReason.SavedContent); } e.Items.Remove(OldUrlKey); }
private static void DeletedContentHandler(object sender, ContentEventArgs e) { SystemRedirectsActions.DeleteRedirects(e.ContentLink, ((DeleteContentEventArgs)e).DeletedDescendents); }