public static void WriteAsYaml([NotNull] this LayoutBuilder layoutBuilder, [NotNull] TextWriter writer)
        {
            var output = new YamlTextWriter(writer);

            output.WriteStartElement("Layout");

            foreach (var deviceBuilder in layoutBuilder.Devices)
            {
                output.WriteStartElement("Device");
                output.WriteAttributeString("Name", deviceBuilder.DeviceName);
                output.WriteAttributeStringIf("Layout", deviceBuilder.LayoutItemPath);

                foreach (var renderingBuilder in deviceBuilder.Renderings.Where(r => r.ParentRendering == null))
                {
                    WriteAsYaml(output, deviceBuilder, renderingBuilder);
                }

                output.WriteEndElement();
            }

            output.WriteEndElement();
        }
        public void WriteAsYamlTest()
        {
            var item = Project.ProjectItems.FirstOrDefault(i => i.QualifiedName == "/sitecore/content/Home/YamlItem") as Item;
            Assert.IsNotNull(item);

            var writer = new YamlTextWriter(new StringWriter());

            item.WriteAsYaml(writer);

            var result = writer.ToString();

            Assert.IsNotNullOrEmpty(result);
        }
        public static void WriteAsYaml([NotNull] this Item item, [NotNull] TextWriter writer, [CanBeNull] Action<TextWriter, int> writeInner = null)
        {
            var output = new YamlTextWriter(writer);

            var sharedFields = item.Fields.Where(f => string.IsNullOrEmpty(f.Language) && f.Version == 0).ToList();
            var unversionedFields = item.Fields.Where(f => !string.IsNullOrEmpty(f.Language) && f.Version == 0).ToList();
            var versionedFields = item.Fields.Where(f => !string.IsNullOrEmpty(f.Language) && f.Version != 0).ToList();

            output.WriteStartElement("Item");

            output.WriteAttributeString("Id", item.Uri.Guid.Format());
            output.WriteAttributeStringIf("Database", item.DatabaseName);
            output.WriteAttributeStringIf("Name", item.ItemName);
            output.WriteAttributeStringIf("Path", item.ItemIdOrPath);
            output.WriteAttributeStringIf("Template", item.TemplateIdOrPath);

            output.WriteStartElement("Fields");

            foreach (var field in sharedFields)
            {
                output.WriteStartElement("Field", field.FieldName);
                output.WriteAttributeString("Value", field.Value);
                output.WriteEndElement();
            }

            if (unversionedFields.Any())
            {
                output.WriteStartElement("Unversioned");

                foreach (var language in unversionedFields.Select(f => f.Language).Distinct())
                {
                    output.WriteStartElement(language);

                    foreach (var field in unversionedFields.Where(f => f.Language == language))
                    {
                        output.WriteStartElement("Field", field.FieldName);
                        output.WriteAttributeString("Value", field.Value);
                        output.WriteEndElement();
                    }

                    output.WriteEndElement();
                }

                output.WriteEndElement();
            }

            if (versionedFields.Any())
            {
                output.WriteStartElement("Versioned");

                foreach (var language in versionedFields.Select(f => f.Language).Distinct())
                {
                    output.WriteStartElement(language);

                    foreach (var version in versionedFields.Where(f => f.Language == language).Select(f => f.Version).Distinct())
                    {
                        output.WriteStartElement(version.ToString());

                        foreach (var field in versionedFields.Where(f => f.Language == language && f.Version == version))
                        {
                            output.WriteStartElement("Field", field.FieldName);
                            output.WriteAttributeString("Value", field.Value);
                            output.WriteEndElement();
                        }

                        output.WriteEndElement();
                    }

                    output.WriteEndElement();
                }

                output.WriteEndElement();
            }

            if (writeInner != null)
            {
                writeInner(writer, output.Indent);
            }
        }
        public static void WriteAsYaml([NotNull] this Template template, [NotNull] TextWriter writer)
        {
            var output = new YamlTextWriter(writer);

            output.WriteStartElement("Template");
            output.WriteAttributeString("Name", template.ItemName);
            output.WriteAttributeStringIf("Id", template.Uri.Guid.Format());
            output.WriteAttributeStringIf("Database", template.DatabaseName);
            output.WriteAttributeStringIf("Path", template.ItemIdOrPath);
            output.WriteAttributeStringIf("BaseTemplates", template.BaseTemplates);

            foreach (var section in template.Sections)
            {
                output.WriteStartElement("Section");
                output.WriteAttributeString("Name", section.SectionName);
                output.WriteAttributeStringIf("Id", section.Uri.Guid.Format());
                output.WriteAttributeStringIf("Icon", section.Icon);

                foreach (var field in section.Fields)
                {
                    output.WriteStartElement("Field");
                    output.WriteAttributeString("Name", field.FieldName);
                    output.WriteAttributeStringIf("Id", field.Uri.Guid.Format());
                    output.WriteAttributeStringIf("Sortorder", field.SortOrder);
                    output.WriteAttributeStringIf("Type", field.Type);
                    output.WriteAttributeStringIf("Source", field.Source);
                    output.WriteAttributeStringIf("Sharing", field.Shared ? "Shared" : field.Unversioned ? "Unversioned" : string.Empty);
                    output.WriteAttributeStringIf("ShortHelp", field.ShortHelp);
                    output.WriteAttributeStringIf("LongHelp", field.LongHelp);

                    output.WriteEndElement();
                }

                output.WriteEndElement();
            }

            output.WriteEndElement();
        }
Esempio n. 5
0
        public static void WriteAsYaml([NotNull] this Item item, [NotNull] TextWriter writer, bool writeChildren = false)
        {
            var output = new YamlTextWriter(writer);

            output.WriteStartElement(item.TemplateName, item.ItemName);
            output.WriteAttributeString("Id", item.Uri.Guid.Format());
            output.WriteAttributeStringIf("ItemPath", item.ItemIdOrPath);
            output.WriteAttributeStringIf("Database", item.DatabaseName);

            if (item.Fields.Any())
            {
                output.WriteStartElement("Fields");

                foreach (var field in item.Versions.GetSharedFields().OrderBy(f => f.FieldName))
                {
                    output.WriteAttributeString(field.FieldName, field.CompiledValue);
                }

                foreach (var language in item.Versions.GetLanguages())
                {
                    var unversionedFields = item.Versions.GetUnversionedFields(language);
                    var versions          = item.Versions.GetVersions(language);

                    if (!unversionedFields.Any() && !versions.Any())
                    {
                        continue;
                    }

                    output.WriteStartElement(language.LanguageName);

                    foreach (var field in unversionedFields.OrderBy(f => f.FieldName))
                    {
                        output.WriteAttributeString(field.FieldName, field.CompiledValue);
                    }

                    foreach (var version in versions.OrderByDescending(v => v.Number))
                    {
                        var versionedFields = item.Versions.GetVersionedFields(language, version);
                        if (!versionedFields.Any())
                        {
                            continue;
                        }

                        output.WriteStartElement(version.Number.ToString());

                        foreach (var field in versionedFields.OrderBy(f => f.FieldName))
                        {
                            output.WriteAttributeString(field.FieldName, field.CompiledValue);
                        }

                        output.WriteEndElement();
                    }

                    output.WriteEndElement();
                }

                output.WriteEndElement();
            }

            if (writeChildren)
            {
                var children = item.Children.ToArray();
                if (children.Any())
                {
                    output.WriteStartElement("Children");
                    foreach (var child in children)
                    {
                        child.WriteAsYaml(writer, true);
                    }

                    output.WriteEndElement();
                }
            }

            output.WriteEndElement();
        }