private static void DeleteBlobs(IEnumerable <ContentReference> contentReferences, IContentRepository repo, StringBuilder sb, IBlobFactory blobFactory) { foreach (ContentReference reference in contentReferences) { ImageFile file = null; try { file = repo.Get <ImageFile>(reference); } catch { } if (file != null) { IContentVersionRepository versionRepo = ServiceLocator.Current.GetInstance <IContentVersionRepository>(); IEnumerable <ContentVersion> versions = versionRepo.List(file.ContentLink); foreach (ContentVersion version in versions) { var versionOfFile = repo.Get <ImageFile>(version.ContentLink); if (versionOfFile != null) { DeleteBlobInstances(sb, blobFactory, versionOfFile); } } sb.AppendFormat("{0}<br>", file.Name); // Delete old versions DeleteOldVersions(file, sb); } } }
/// <summary> /// Get all content version of current exported content in all languages. /// </summary> /// <param name="contentToExport"></param> /// <returns></returns> protected virtual IEnumerable <IContent> GetContentVersions( ContentReference contentToExport, RawContentInfo rawContentInfo, out ContentVersion latestPublishedMasterVersion) { var versionFilter = new VersionFilter { ContentLink = contentToExport, Languages = rawContentInfo.Languages.Select(x => CultureInfo.GetCultureInfo(x)), ExcludeDeleted = true }; if (_transferExportOptionsEx.VersionStatuses != null) { versionFilter.Statuses = _transferExportOptionsEx.VersionStatuses; } int totalCount; var versions = _contentVersionRepository .List(versionFilter, 0, int.MaxValue, out totalCount); latestPublishedMasterVersion = versions.FirstOrDefault(x => x.Status == VersionStatus.Published && x.LanguageBranch == rawContentInfo.MasterLanguage); versions = FilterVersions(versions); return(versions .OrderBy(x => x.LanguageBranch == rawContentInfo.MasterLanguage ? 1 : 2) .ThenBy(x => x.Saved) .Select(x => GetContent(x)) .Where(x => x != null)); }
public ActionResult Index(HomePage currentPage) { /* Implementation of action. You can create your own view model class that you pass to the view or * you can pass the page type for simpler templates */ var list = _contentRepository.GetChildren <NewsItemPage>(ContentReference.StartPage); var versions = _contentVersionRepository.List(list.Last().ContentLink); var links = _contentSoftLinkRepository.Load(ContentReference.StartPage, true); return(View(currentPage)); }
/// <summary> /// Returns content version by date /// </summary> /// <param name="contentLink">Version agnostic content id</param> /// <param name="date">Date of version</param> /// <returns>ContentReference to version available at <see cref="date"/></returns> public RestResultBase GetContentVersionByDate(ContentReference contentLink, DateTime date, string language) { if (ContentReference.IsNullOrEmpty(contentLink)) { return(new RestStatusCodeResult(HttpStatusCode.Conflict)); } if (string.IsNullOrWhiteSpace(language)) { language = _languageResolver.GetPreferredCulture().Name; } var contentVersions = _contentVersionRepository.List(contentLink.ToReferenceWithoutVersion(), language).ToList(); if (!contentVersions.Any()) { return(Rest(null)); } var version = contentVersions.Where(x => x.Saved < date).OrderByDescending(x => x.Saved).FirstOrDefault(); if (version == null) { var oldestVersion = contentVersions.OrderBy(x => x.Saved).First(); if (date <= oldestVersion.Saved) { return(Rest(oldestVersion.ContentLink)); } var newestVersion = contentVersions.OrderByDescending(x => x.Saved).First(); if (date <= newestVersion.Saved) { return(Rest(newestVersion.ContentLink)); } } return(Rest(version?.ContentLink)); }
private static void DeleteOldVersions(ImageFile file, StringBuilder sb) { IContentVersionRepository versionRepo = ServiceLocator.Current.GetInstance <IContentVersionRepository>(); IEnumerable <ContentVersion> versions = versionRepo.List(file.ContentLink); foreach (ContentVersion version in versions) { if (version.Status != VersionStatus.Published) { sb.AppendFormat("Deleting version: {0}", version.ContentLink); versionRepo.Delete(version.ContentLink); } } }
public IList <UiTemplateVersion> GetAllVersions(ContentReference contentRef, string virtualPath) { return(_contentVersionRepo.List(contentRef) .OrderByDescending(x => x.Saved) .Take(5) .Select(x => new UiTemplateVersion() { VirtualPath = virtualPath, Reference = x.ContentLink, ChangedBy = x.SavedBy, ChangeDate = x.Saved, Status = x.Status, StatusText = _localization.GetString("/versionstatus/" + x.Status.ToString(), x.Status.ToString()) }).ToList()); }
private void PublishItem(ContentReference contentLink) { // get the latest published version, not the latest saved version. var versions = ContentVersionRepository.List(contentLink).OrderByDescending(p => p.Saved); var latestVersion = versions.FirstOrDefault(p => p.Status == VersionStatus.CheckedOut); if (latestVersion != null) { var pageUnpublished = ContentLoader.Get <PageData>(latestVersion.ContentLink).CreateWritableClone(); //var action = pageUnpublished.CheckPublishedStatus(PagePublishedStatus.Published) // ? SaveAction.Publish // : SaveAction.Save; var action = SaveAction.Publish; action = action | SaveAction.ForceCurrentVersion; ContentRepository.Save(pageUnpublished, action, AccessLevel.NoAccess); } }