public override void TypeEditorUpdating(ContentTypeDefinitionBuilder builder)
 {
     if (!TypeHasIdentity(builder.Current))
     {
         builder.WithPart("IdentityPart");
     }
 }
コード例 #2
0
 /// <summary>
 /// This extension method can be used for easy widget creation. Adds all necessary parts and settings to the part.
 /// </summary>
 /// <returns>The ContentTypeDefinitionBuilder object on which this method is called.</returns>
 public static ContentTypeDefinitionBuilder AsWidget(this ContentTypeDefinitionBuilder builder)
 {
     return(builder
            .WithPart("CommonPart")
            .WithPart("WidgetPart")
            .WithSetting("Stereotype", "Widget"));
 }
コード例 #3
0
 public static ContentTypeDefinitionBuilder WithMarkdownBody(this ContentTypeDefinitionBuilder t, string position)
 {
     return(t.WithPart(nameof(MarkdownBodyPart), p => {
         p.WithPosition(position);
         p.WithDisplayName("Markdown Body");
         p.WithEditor("Wysiwyg");
     }));
 }
コード例 #4
0
 public static ContentTypeDefinitionBuilder WithContainablePart(this ContentTypeDefinitionBuilder builder, bool showContainerPicker = false, bool showPositionEditor = false)
 {
     return(builder.WithPart(
                typeof(ContainablePart).Name,
                cfg => cfg
                .WithSetting("ContainableTypePartSettings.ShowContainerPicker", showContainerPicker.ToString())
                .WithSetting("ContainableTypePartSettings.ShowPositionEditor", showPositionEditor.ToString())));
 }
コード例 #5
0
 public static ContentTypeDefinitionBuilder WithBodyPart(
     this ContentTypeDefinitionBuilder builder,
     Flavour defaultFlavour = Flavour.Html)
 {
     return(builder.WithPart(
                typeof(BodyPart).Name,
                partBuilder => partBuilder.WithSetting("BodyTypePartSettings.Flavor", defaultFlavour.ToString())));
 }
コード例 #6
0
 public static ContentTypeDefinitionBuilder WithTitlePart(this ContentTypeDefinitionBuilder t, string position, TitlePartOptions options = TitlePartOptions.Editable, string pattern = "")
 {
     return(t.WithPart(nameof(TitlePart), p => p
                       .WithPosition(position)
                       .WithSettings(new TitlePartSettings()
     {
         Options = options, Pattern = pattern
     })
                       ));
 }
コード例 #7
0
 public static ContentTypeDefinitionBuilder WithContentPermission(this ContentTypeDefinitionBuilder t, string position, string redirectUrl = null)
 {
     return(t.WithPart(nameof(ContentPermissionsPart), p => {
         p.WithPosition(position);
         if (redirectUrl != null)
         {
             p.WithSettings(new ContentPermissionsPartSettings()
             {
                 RedirectUrl = redirectUrl
             });
         }
     }));
 }
コード例 #8
0
 public static ContentTypeDefinitionBuilder WithFlow(this ContentTypeDefinitionBuilder t, string position, string[] containedContentTypes = null)
 {
     return(t.WithPart(nameof(FlowPart), p => {
         p.WithPosition(position);
         if (containedContentTypes != null)
         {
             p.WithSettings(new FlowPartSettings()
             {
                 ContainedContentTypes = containedContentTypes
             });
         }
     }));
 }
コード例 #9
0
        public static ContentTypeDefinitionBuilder WithAutoroutePart(
            this ContentTypeDefinitionBuilder builder,
            string pathPrefix = "",
            bool automaticAdjustmentOnEdit = false)
        {
            var pattern = string.Format(
                "[{{Title:'{0}/Title', Pattern: '{0}/{{Content.Slug}}', Description: '{0}/my-page'}}]",
                pathPrefix.TrimEnd('/'));

            return(builder.WithPart(
                       "AutoroutePart",
                       partBuilder => partBuilder
                       .WithSetting("AutorouteSettings.PatternDefinitions", pattern)
                       .WithSetting("AutorouteSettings.AutomaticAdjustmentOnEdit", automaticAdjustmentOnEdit.ToString())));
        }
コード例 #10
0
        /// <summary>
        /// Merges a given content type definition provided in a XML format into a content type definition builder.
        /// </summary>
        /// <param name="element">The XML content type definition.</param>
        /// <param name="contentTypeDefinitionBuilder">The content type definition builder.</param>
        public void Merge(XElement element, ContentTypeDefinitionBuilder contentTypeDefinitionBuilder)
        {
            Argument.ThrowIfNull(element, nameof(element));
            Argument.ThrowIfNull(contentTypeDefinitionBuilder, nameof(contentTypeDefinitionBuilder));

            // Merge name
            contentTypeDefinitionBuilder.Named(XmlConvert.DecodeName(element.Name.LocalName));


            // Merge display name
            if (element.Attribute("DisplayName") != null)
            {
                contentTypeDefinitionBuilder.DisplayedAs(element.Attribute("DisplayName").Value);
            }

            // Merge settings
            foreach (var setting in _settingsFormatter.Map(element))
            {
                contentTypeDefinitionBuilder.WithSetting(setting.Key, setting.Value);
            }

            // Merge parts
            foreach (var iter in element.Elements())
            {
                var partElement = iter;
                var partName    = XmlConvert.DecodeName(partElement.Name.LocalName);
                if (partName == "remove")
                {
                    var nameAttribute = partElement.Attribute("name");
                    if (nameAttribute != null)
                    {
                        contentTypeDefinitionBuilder.RemovePart(nameAttribute.Value);
                    }
                }
                else
                {
                    contentTypeDefinitionBuilder.WithPart(
                        partName,
                        partBuilder =>
                    {
                        foreach (var setting in _settingsFormatter.Map(partElement))
                        {
                            partBuilder.WithSetting(setting.Key, setting.Value);
                        }
                    });
                }
            }
        }
コード例 #11
0
        public static ContentTypeDefinitionBuilder WithContainerPart(
            this ContentTypeDefinitionBuilder builder,
            string[] restrictedItemContentTypes,
            bool useCondensedViewAsDefault = false,
            bool enablePositioning         = false,
            bool displayContainerEditor    = false)
        {
            var restrictContentTypes = restrictedItemContentTypes != null;

            return(builder.WithPart(
                       typeof(ContainerPart).Name,
                       cfg => cfg
                       .WithSetting("ContainerTypePartSettings.AdminListViewName", useCondensedViewAsDefault ? "Condensed" : "Default")
                       .WithSetting("ContainerTypePartSettings.EnablePositioning", enablePositioning.ToString())
                       .WithSetting("ContainerTypePartSettings.DisplayContainerEditor", displayContainerEditor.ToString())
                       .WithSetting("ContainerTypePartSettings.RestrictItemContentTypes", restrictContentTypes.ToString())
                       .WithSetting("ContainerTypePartSettings.RestrictedItemContentTypes", restrictContentTypes ? string.Join(",", restrictedItemContentTypes) : string.Empty)));
        }
コード例 #12
0
 public static ContentTypeDefinitionBuilder WithTitlePart(this ContentTypeDefinitionBuilder t, string position)
 {
     return(t.WithPart(nameof(TitlePart), p => p
                       .WithPosition(position)
                       ));
 }
コード例 #13
0
 public static ContentTypeDefinitionBuilder WithTitlePart(this ContentTypeDefinitionBuilder builder)
 {
     return(builder.WithPart(typeof(TitlePart).Name));
 }
コード例 #14
0
 public static ContentTypeDefinitionBuilder WithCommonPart(this ContentTypeDefinitionBuilder builder, bool showOwnerEditor = false)
 {
     return(builder.WithPart(typeof(CommonPart).Name)
            .WithSetting("OwnerEditorSettings.ShowOwnerEditor", showOwnerEditor.ToString(CultureInfo.InvariantCulture).ToLower()));
 }
コード例 #15
0
 /// <summary>
 /// Adds IdentityPart to the content type.
 /// </summary>
 /// <returns>The ContentTypeDefinitionBuilder object on which this method is called.</returns>
 public static ContentTypeDefinitionBuilder WithIdentity(this ContentTypeDefinitionBuilder builder)
 {
     return(builder.WithPart("IdentityPart"));
 }