示例#1
0
        private static SyncItem LoadItem(XmlDocument document)
        {
            SyncItem loadedItem = new SyncItem();

            XmlNode itemNode = document.DocumentElement;

            loadedItem.ID           = XmlUtil.GetAttribute("id", itemNode);
            loadedItem.Name         = XmlUtil.GetAttribute("name", itemNode);
            loadedItem.ParentID     = XmlUtil.GetAttribute("parentid", itemNode);
            loadedItem.TemplateID   = XmlUtil.GetAttribute("tid", itemNode);
            loadedItem.MasterID     = XmlUtil.GetAttribute("mid", itemNode);
            loadedItem.BranchId     = XmlUtil.GetAttribute("bid", itemNode);
            loadedItem.TemplateName = XmlUtil.GetAttribute("template", itemNode);

            SyncVersion loadedVersion = loadedItem.AddVersion(
                XmlUtil.GetAttribute("language", itemNode),
                XmlUtil.GetAttribute("version", itemNode),
                string.Empty);

            foreach (XmlNode node in itemNode.SelectNodes("fields/field"))
            {
                XmlNode content = node.SelectSingleNode("content");
                loadedVersion.AddField(
                    XmlUtil.GetAttribute("tfid", node),
                    XmlUtil.GetAttribute("key", node),
                    XmlUtil.GetAttribute("key", node),
                    content != null ? XmlUtil.GetValue(content) : null,
                    content != null);
            }
            return(loadedItem);
        }
 public SyncVersion BuildSyncVersion()
 {
     SyncVersion version = new SyncVersion
     {
         Language = DefaultVersion.Language,
         Version = DefaultVersion.Version,
         Revision = Guid.NewGuid().ToString()
     };
     string date = DateUtil.IsoNowWithTicks;
     version.AddField(StatisticsTemplateFields.Created, date);
     version.AddField(StatisticsTemplateFields.CreatedBy, CurrentUser);
     version.AddField(StatisticsTemplateFields.Revision, Guid.NewGuid().ToString());
     version.AddField(StatisticsTemplateFields.Updated, date);
     version.AddField(StatisticsTemplateFields.UpdatedBy, CurrentUser);
     return version;
 }
        public SyncVersion BuildSyncVersion()
        {
            SyncVersion version = new SyncVersion
            {
                Language = DefaultVersion.Language,
                Version  = DefaultVersion.Version,
                Revision = Guid.NewGuid().ToString()
            };
            string date = DateUtil.IsoNowWithTicks;

            version.AddField(StatisticsTemplateFields.Created, date);
            version.AddField(StatisticsTemplateFields.CreatedBy, CurrentUser);
            version.AddField(StatisticsTemplateFields.Revision, Guid.NewGuid().ToString());
            version.AddField(StatisticsTemplateFields.Updated, date);
            version.AddField(StatisticsTemplateFields.UpdatedBy, CurrentUser);
            return(version);
        }
        /// <summary>
        ///     Creates a new version for a content item in a particular language.
        /// </summary>
        /// <param name="itemDefinition">Used to identify the particular item</param>
        /// <param name="baseVersion">The version to copy off of</param>
        /// <param name="context"></param>
        /// <returns></returns>
        public override int AddVersion(ItemDefinition itemDefinition, VersionUri baseVersion, CallContext context)
        {
            if (!ItemsById.ContainsKey(itemDefinition.ID))
            {
                return(-1);
            }
            SyncItem current = ItemsById[itemDefinition.ID];

            int num = -1;

            Language baseVersionLanguage = baseVersion.Language;

            if (Language.Invariant.Equals(baseVersionLanguage))
            {
                baseVersionLanguage = LanguageManager.DefaultLanguage;
            }

            if (baseVersion.Version != null && baseVersion.Version.Number > 0)
            {
                // copy version
                SyncVersion matchingVersion = (current.Versions ?? new List <SyncVersion>())
                                              .OrderByDescending(vr => int.Parse(vr.Version))
                                              .FirstOrDefault(vr => vr.Language.Equals(baseVersionLanguage.Name));

                int?maxVersionNumber = matchingVersion != null?int.Parse(matchingVersion.Version) : null as int?;

                num = maxVersionNumber.HasValue && maxVersionNumber > 0 ? maxVersionNumber.Value + 1 : -1;

                if (num > 0)
                {
                    SyncVersion newVersion = current.AddVersion(matchingVersion.Language, num.ToString(),
                                                                matchingVersion.Revision);

                    IList <SyncField> currentFieldValues = matchingVersion.Fields;

                    foreach (SyncField fieldValue in currentFieldValues)
                    {
                        newVersion.AddField(fieldValue.FieldID, fieldValue.FieldName, fieldValue.FieldKey,
                                            fieldValue.FieldValue, true);
                    }
                }
            }
            if (num == -1)
            {
                num = 1;

                // add blank version
                current.AddVersion(baseVersionLanguage.Name, num.ToString(), Guid.NewGuid().ToString());
            }

            return(num);
        }
示例#5
0
		public static SyncVersion Clone(this SyncVersion version)
		{
			Assert.ArgumentNotNull(version, "version");

			var newSyncVersion = new SyncVersion
			{
				Language = version.Language,
				Revision = version.Revision,
				Version = version.Version
			};

			foreach (var field in version.Fields)
			{
				newSyncVersion.AddField(field.FieldID, field.FieldName, field.FieldKey, field.FieldValue, true);
			}

			return newSyncVersion;
		}
示例#6
0
        public static SyncVersion Clone(this SyncVersion version)
        {
            Assert.ArgumentNotNull(version, "version");

            var newSyncVersion = new SyncVersion
            {
                Language = version.Language,
                Revision = version.Revision,
                Version  = version.Version
            };

            foreach (var field in version.Fields)
            {
                newSyncVersion.AddField(field.FieldID, field.FieldName, field.FieldKey, field.FieldValue, true);
            }

            return(newSyncVersion);
        }
示例#7
0
        /// <summary>
        /// Builds the version.
        /// </summary>
        /// <param name="item">The item.</param>
        /// <param name="version">The version.</param>
        private static void BuildVersion(SyncItem item, Item version)
        {
            SyncVersion syncVersion = item.AddVersion(version.Language.ToString(), version.Version.ToString(), version.Statistics.Revision);

            if (syncVersion == null)
            {
                return;
            }
            version.Fields.ReadAll();
            version.Fields.Sort();
            foreach (Field field in version.Fields)
            {
                if (TemplateManager.GetTemplate(version).GetField(field.ID) != null && !field.Shared)
                {
                    string fieldValue = GetFieldValue(field);
                    if (fieldValue != null)
                    {
                        syncVersion.AddField(field.ID.ToString(), field.Name, field.Key, fieldValue, true);
                    }
                }
            }
        }
示例#8
0
 public static SyncVersion AddField(this SyncVersion syncItem, IFieldInfo field, string value)
 {
     syncItem.AddField(field.FieldId, field.Name, field.Key, value, true);
     return(syncItem);
 }