示例#1
0
        protected override SyncAttempt <XElement> SerializeCore(IDomain item)
        {
            var node = new XElement(ItemType,
                                    new XAttribute("Key", item.Id.ToGuid()),
                                    new XAttribute("Alias", item.DomainName));

            var info = new XElement("Info",
                                    new XElement("IsWildcard", item.IsWildcard),
                                    new XElement("Language", item.LanguageIsoCode));


            if (item.RootContentId.HasValue)
            {
                var rootNode = contentService.GetById(item.RootContentId.Value);

                if (rootNode != null)
                {
                    info.Add(new XElement("Root", GetItemPath(rootNode),
                                          new XAttribute("Key", rootNode.Key)));
                }
            }

            node.Add(info);

            return(SyncAttempt <XElement> .SucceedIf(
                       node != null, item.DomainName, node, typeof(IDomain), ChangeType.Export));
        }
示例#2
0
        internal override SyncAttempt <XElement> SerializeCore(IMacro item)
        {
            var node = _packaingService.Export(item);

            return(SyncAttempt <XElement> .SucceedIf(
                       node != null, item.Name, node, typeof(IMacro), ChangeType.Export));
        }
示例#3
0
        protected override SyncAttempt<XElement> SerializeCore(ILanguage item, SyncSerializerOptions options)
        {
            var node = InitializeBaseNode(item, item.IsoCode);

            // don't serialize the ID, it changes and we don't use it! 
            // node.Add(new XElement("Id", item.Id));
            node.Add(new XElement("IsoCode", item.IsoCode));
            node.Add(new XElement("IsMandatory", item.IsMandatory));
            node.Add(new XElement("IsDefault", item.IsDefault));

            if (item.FallbackLanguageId != null)
            {
                var fallback = localizationService.GetLanguageById(item.FallbackLanguageId.Value);
                if (fallback != null)
                {
                    node.Add(new XElement("Fallback", fallback.IsoCode));
                }
            }

            return SyncAttempt<XElement>.SucceedIf(
                node != null,
                item.CultureName,
                node,
                typeof(ILanguage),
                ChangeType.Export);
        }
示例#4
0
        protected override SyncAttempt <XElement> SerializeCore(IRelationType item, SyncSerializerOptions options)
        {
            var node = this.InitializeBaseNode(item, item.Alias);

            var isDependency = false;

            if (item is IRelationTypeWithIsDependency dependencyItem)
            {
                isDependency = dependencyItem.IsDependency;
            }

            node.Add(new XElement("Info",
                                  new XElement("Name", item.Name),
                                  new XElement("ParentType", GetGuidValue(item, nameof(item.ParentObjectType))),
                                  new XElement("ChildType", GetGuidValue(item, nameof(item.ChildObjectType))),
                                  new XElement("Bidirectional", item.IsBidirectional),
                                  new XElement("IsDependency", isDependency)));


            if (options.GetSetting <bool>("IncludeRelations", false))
            {
                node.Add(SerializeRelations(item));
            }

            return(SyncAttempt <XElement> .SucceedIf(
                       node != null,
                       item.Name,
                       node,
                       typeof(IRelationType),
                       ChangeType.Export));
        }
示例#5
0
        internal override SyncAttempt <XElement> SerializeCore(IDictionaryItem item)
        {
            var node = _packagingService.Export(item, true);

            return(SyncAttempt <XElement> .SucceedIf(
                       node != null,
                       node != null?item.ItemKey : node.NameFromNode(),
                       node,
                       typeof(IDictionaryItem),
                       ChangeType.Export));
        }
示例#6
0
        internal override SyncAttempt <IDictionaryItem> DeserializeCore(XElement node)
        {
            // var items = _packagingService.ImportDictionaryItems(node);
            // var item = items.LastOrDefault();

            var langs = _localizationService.GetAllLanguages().ToList();
            var item  = UpdateDictionaryValues(node, null, langs);

            return(SyncAttempt <IDictionaryItem> .SucceedIf(
                       item != null,
                       item != null?item.ItemKey : node.NameFromNode(),
                       item,
                       ChangeType.Import));
        }
示例#7
0
        protected override SyncAttempt <XElement> SerializeCore(ILanguage item)
        {
            var node = InitializeBaseNode(item, item.IsoCode);

            node.Add(new XElement("Id", item.Id));
            node.Add(new XElement("IsoCode", item.IsoCode));
            node.Add(new XElement("CultureName", item.CultureName));
            node.Add(new XElement("IsMandatory", item.IsMandatory));
            node.Add(new XElement("IsDefault", item.IsDefault));

            if (item.FallbackLanguageId != null)
            {
                node.Add(new XElement("Fallback", item.FallbackLanguageId.Value));
            }

            return(SyncAttempt <XElement> .SucceedIf(
                       node != null,
                       item.CultureName,
                       node,
                       typeof(ILanguage),
                       ChangeType.Export));
        }
        protected override SyncAttempt <XElement> SerializeCore(IRelationType item, SyncSerializerOptions options)
        {
            var node = this.InitializeBaseNode(item, item.Alias);

            node.Add(new XElement("Info",
                                  new XElement("Name", item.Name),
                                  new XElement("ParentType", item.ParentObjectType),
                                  new XElement("ChildType", item.ChildObjectType),
                                  new XElement("Bidirectional", item.IsBidirectional)));

            if (options.GetSetting <bool>("IncludeRelations", true))
            {
                node.Add(SerializeRelations(item));
            }

            return(SyncAttempt <XElement> .SucceedIf(
                       node != null,
                       item.Name,
                       node,
                       typeof(IRelationType),
                       ChangeType.Export));
        }
示例#9
0
        protected override SyncAttempt <XElement> SerializeCore(IMacro item, SyncSerializerOptions options)
        {
            var node = this.InitializeBaseNode(item, item.Alias);

            node.Add(new XElement("Name", item.Name));
            node.Add(new XElement("MacroSource", item.MacroSource));
            node.Add(new XElement("MacroType", item.MacroType));
            node.Add(new XElement("UseInEditor", item.UseInEditor));
            node.Add(new XElement("DontRender", item.DontRender));
            node.Add(new XElement("CachedByMember", item.CacheByMember));
            node.Add(new XElement("CachedByPage", item.CacheByPage));
            node.Add(new XElement("CachedDuration", item.CacheDuration));

            var properties = new XElement("Properties");

            foreach (var propertyKey in item.Properties.Keys.OrderBy(x => x))
            {
                var property = item.Properties[propertyKey];

                if (property != null)
                {
                    properties.Add(new XElement("Property",
                                                new XElement("Name", property.Name),
                                                new XElement("Alias", property.Alias),
                                                new XElement("SortOrder", property.SortOrder),
                                                new XElement("EditorAlias", property.EditorAlias)));
                }
            }

            node.Add(properties);

            return(SyncAttempt <XElement> .SucceedIf(
                       node != null,
                       item.Name,
                       node,
                       typeof(IMacro),
                       ChangeType.Export));
        }