Beispiel #1
0
        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"));
        }
Beispiel #2
0
        // 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);
        }
Beispiel #4
0
        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);
        }