public void ImportingPublishedShouldUpdateAndPublishExistingDraft() { // Create a draft and an export of it. var contentItem = _contentManager.New(ContentTypeName); contentItem.As <TitlePart>().Title = "Draft Dummy"; _contentManager.Create(contentItem, VersionOptions.Draft); var element = _contentManager.Export(contentItem); // Change the title and publish the draft. element.Element("TitlePart").Attr("Title", "Published Dummy"); element.Attr("Status", "Published"); // Import the element representing the published version. Import(element); // Assert that no additional version was created. var allVersions = _contentManager.GetAllVersions(contentItem.Id).ToList(); Assert.That(allVersions.Count, Is.EqualTo(1)); // Assert that the item has been updated and published. var published = _contentManager.Get(contentItem.Id, VersionOptions.Number(1)); Assert.That(published.VersionRecord.Published, Is.True); Assert.That(published.VersionRecord.Latest, Is.True); Assert.That(published.As <TitlePart>().Title, Is.EqualTo("Published Dummy")); }
// GET api/leads/lead public HttpResponseMessage Get(int id) { if (id <= 0) { throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.BadRequest)); } var histories = new List <JObject>(); var contentItems = _contentManager.GetAllVersions(id).ToList(); for (int itemIndex = 0; itemIndex < contentItems.Count() - 1; itemIndex++) { var result = _compareObjectService.CompareContent(contentItems[itemIndex], contentItems[itemIndex + 1]); if (!result) { foreach (var defferent in _compareObjectService.Defferences) { var history = new JObject(); history["Date"] = string.Empty; history["User"] = string.Empty; history["Action"] = defferent.Value; histories.Add(history); } } } var json = JsonConvert.SerializeObject(histories); var message = new HttpResponseMessage { Content = new StringContent(json, System.Text.Encoding.UTF8, "application/json") }; return(message); }
public bool Promote(int id, int versionId) { //Get the last version number to create a new version int lastversionNumber = _contentManager.GetAllVersions(id).Max(r => r.VersionRecord.Number); //Retrieve the content item to clone ContentItem contentItem = _contentManager.Get(id, VersionOptions.VersionRecord(versionId)); if (contentItem == null) { _notifier.Error(T("Could not find content with id {0}", id)); return(false); } int versionOfContentItemToClone = contentItem.VersionRecord.Number; //Unfortunately it creates not a new record but updates the old record _contentManager.Create(contentItem, VersionOptions.Number(lastversionNumber + 1)); //var newContent = BuildNewVersion(contentItem); //Update the table that a new version is added ContentItemVersionRecord previousLastRecord = _versionManagerDataService.ContentItemVersionRecords.FirstOrDefault( r => r.ContentItemRecord.Id == id && r.Latest); ContentItemVersionRecord newLastRecord = _versionManagerDataService.ContentItemVersionRecords.Where(r => r.ContentItemRecord.Id == contentItem.Id) .OrderByDescending(r => r.Number) .FirstOrDefault(); if (previousLastRecord != null && newLastRecord != null) { previousLastRecord.Latest = false; newLastRecord.Latest = true; _versionManagerDataService.SetContentItemVersionRecord(previousLastRecord); _versionManagerDataService.SetContentItemVersionRecord(newLastRecord); } _notifier.Information(T("Successfully promoted version {0} to {1}.", versionOfContentItemToClone, lastversionNumber + 1)); return(true); }
public IEnumerable <ContentItemVersion> GetContentItemVersionList(int id) { var versions = _contentManager.GetAllVersions(id).OrderByDescending(x => x.Version); var list = (from version in versions let modifiedBy = version.Has <VersionInfoSettings>() ? (String.IsNullOrWhiteSpace(version.As <VersionInfoSettings>().ModifiedBy) ? "Unknown" : version.As <VersionInfoSettings>().ModifiedBy) : (String.IsNullOrWhiteSpace(version.As <CommonPart>().Owner.UserName) ? "Unknown" : version.As <CommonPart>().Owner.UserName) let commonPart = version.As <CommonPart>() let title = version.Has <TitlePart>() ? version.As <TitlePart>().Title : String.Empty let identifier = version.Has <IdentityPart>() ? version.As <IdentityPart>().Identifier : String.Empty select new ContentItemVersion { Version = version.Version.ToString(CultureInfo.InvariantCulture), ModifiedDate = commonPart.VersionModifiedUtc.ToString(), PublishedDate = commonPart.VersionPublishedUtc.ToString(), ModifiedBy = modifiedBy, Title = title, Identifier = identifier, IsPublished = version.VersionRecord.Published, }).ToList(); return(list); }
public void GetAllVersionsShouldReturnHistoryInOrder() { Trace.WriteLine("gamma1"); var gamma1 = _manager.Create(DefaultGammaName, VersionOptions.Published); Flush(); Trace.WriteLine("gamma2"); var gamma2 = _manager.GetDraftRequired(gamma1.Id); Trace.WriteLine("publish"); _manager.Publish(gamma2); Flush(); Trace.WriteLine("gamma3"); var gamma3 = _manager.GetDraftRequired(gamma1.Id); Trace.WriteLine("publish"); _manager.Publish(gamma3); Flush(); Trace.WriteLine("gamma4"); var gamma4 = _manager.GetDraftRequired(gamma1.Id); Trace.WriteLine("publish"); _manager.Publish(gamma2); FlushAndClear(); Assert.That(gamma1.Version, Is.EqualTo(1)); Assert.That(gamma2.Version, Is.EqualTo(2)); Assert.That(gamma3.Version, Is.EqualTo(3)); Assert.That(gamma4.Version, Is.EqualTo(4)); var gammas = _manager.GetAllVersions(gamma1.Id).ToList(); Assert.That(gammas[0].Version, Is.EqualTo(1)); Assert.That(gammas[1].Version, Is.EqualTo(2)); Assert.That(gammas[2].Version, Is.EqualTo(3)); Assert.That(gammas[3].Version, Is.EqualTo(4)); }
// Migrating versioned SeoGlobalSettingsPartRecord entries to versioned infoset. public int Create() { var tableName = _upgradeService.GetPrefixedTableName("Onestop_SEO_SeoGlobalSettingsPartRecord"); IEnumerable <ContentItem> allVersions = null; if (_upgradeService.TableExists(tableName)) { _upgradeService.ExecuteReader(string.Format("SELECT * FROM {0}", tableName), (reader, connection) => { if (allVersions == null) { allVersions = _contentManager.GetAllVersions((int)reader["ContentItemRecord_id"]); } var item = allVersions.FirstOrDefault(p => p.VersionRecord.Id == ConvertFromDBValue <int>(reader["Id"])); if (item != null && item.Has <SeoGlobalSettingsPart>()) { var part = item.As <SeoGlobalSettingsPart>(); part.HomeTitle = ConvertFromDBValue <string>(reader["HomeTitle"]); part.HomeDescription = ConvertFromDBValue <string>(reader["HomeDescription"]); part.HomeKeywords = ConvertFromDBValue <string>(reader["HomeKeywords"]); part.SeoPatternsDefinition = ConvertFromDBValue <string>(reader["SeoPatternsDefinition"]); part.SearchTitlePattern = ConvertFromDBValue <string>(reader["SearchTitlePattern"]); part.EnableCanonicalUrls = ConvertFromDBValue <bool>(reader["EnableCanonicalUrls"]); part.TitleOverrideMaxLength = ConvertFromDBValue <int>(reader["TitleOverrideMaxLength"]); part.DescriptionOverrideMaxLength = ConvertFromDBValue <int>(reader["DescriptionOverrideMaxLength"]); part.KeywordsOverrideMaxLength = ConvertFromDBValue <int>(reader["KeywordsOverrideMaxLength"]); } }); _upgradeService.ExecuteReader(string.Format("DROP TABLE {0}", tableName), null); } return(1); }