예제 #1
0
        public static ContentPartDefinitionBuilder WithTaxonomyField(
            this ContentPartDefinitionBuilder builder,
            string fieldName,
            string taxonomyName,
            bool required         = false,
            bool leavesOnly       = false,
            bool singleChoice     = false,
            bool autocomplete     = false,
            bool allowCustomTerms = false,
            string hint           = "")
        {
            var displayName = fieldName.SplitCamel();

            // default implementation of Media library picker field - create overloads for more options
            return(builder.WithField(
                       fieldName,
                       fieldBuilder =>
                       fieldBuilder.OfType("TaxonomyField")
                       .WithDisplayName(displayName)
                       .WithSetting("TaxonomyFieldSettings.Taxonomy", taxonomyName)
                       .WithSetting("TaxonomyFieldSettings.Required", required.ToString(CultureInfo.InvariantCulture))
                       .WithSetting("TaxonomyFieldSettings.LeavesOnly", leavesOnly.ToString(CultureInfo.InvariantCulture))
                       .WithSetting("TaxonomyFieldSettings.SingleChoice", singleChoice.ToString(CultureInfo.InvariantCulture))
                       .WithSetting("TaxonomyFieldSettings.Autocomplete", autocomplete.ToString(CultureInfo.InvariantCulture))
                       .WithSetting("TaxonomyFieldSettings.AllowCustomTerms", allowCustomTerms.ToString(CultureInfo.InvariantCulture))
                       .WithSetting("TaxonomyFieldSettings.Hint", hint)));
        }
예제 #2
0
 public static ContentPartDefinitionBuilder WithTextField(this ContentPartDefinitionBuilder p, string name, string displayName, string position)
 {
     return(p.WithField(name, f => f
                        .OfType(nameof(TextField))
                        .WithDisplayName(displayName)
                        .WithPosition(position)
                        ));
 }
예제 #3
0
 public static ContentPartDefinitionBuilder WithSwitchBooleanField(this ContentPartDefinitionBuilder p, string name, string displayName, string position)
 {
     return(p.WithField(name, f => f
                        .OfType(nameof(BooleanField))
                        .WithEditor("Switch")
                        .WithDisplayName(displayName)
                        .WithPosition(position)
                        ));
 }
예제 #4
0
 public static ContentPartDefinitionBuilder WithBooleanField(this ContentPartDefinitionBuilder p, string name, string displayName, string position, BooleanFieldSettings settings)
 {
     return(p.WithField(name, f => f
                        .OfType(nameof(BooleanField))
                        .WithDisplayName(displayName)
                        .WithPosition(position)
                        .WithSettings(settings)
                        ));
 }
예제 #5
0
 public static ContentPartDefinitionBuilder WithTextFieldPredefinedList(this ContentPartDefinitionBuilder p, string name, string displayName, string position, TextFieldPredefinedListEditorSettings settings)
 {
     return(p.WithField(name, f => f
                        .OfType(nameof(TextField))
                        .WithDisplayName(displayName)
                        .WithEditor("PredefinedList")
                        .WithPosition(position)
                        .WithSettings(settings)
                        ));
 }
 public static ContentPartDefinitionBuilder WithTeamCaptainField(this ContentPartDefinitionBuilder p, string position)
 {
     return(p.WithField("TeamCaptain", f => f
                        .OfType(nameof(UserPickerField))
                        .WithDisplayName("Team Captain")
                        .WithPosition(position)
                        .WithSettings(new UserPickerFieldSettings()
     {
         DisplayedRoles = new string[] { "Hacker" }
     })
                        ));
 }
 public static ContentPartDefinitionBuilder WithChallengeField(this ContentPartDefinitionBuilder p, string position)
 {
     return(p.WithField("Challenge", f => f
                        .OfType(nameof(ContentPickerField))
                        .WithDisplayName("Challenge")
                        .WithPosition(position)
                        .WithSettings(new ContentPickerFieldSettings()
     {
         DisplayedContentTypes = new string[] { "Challenge" }
     })
                        ));
 }
예제 #8
0
 public static ContentPartDefinitionBuilder WithMarkdownField(this ContentPartDefinitionBuilder p, string name, string displayName, string hint, string position)
 {
     return(p.WithField(name, f => f
                        .OfType(nameof(MarkdownField))
                        .WithEditor("Wysiwyg")
                        .WithDisplayName(displayName)
                        .WithPosition(position)
                        .WithSettings(new MarkdownFieldSettings()
     {
         Hint = hint
     })
                        ));
 }
예제 #9
0
 public static ContentPartDefinitionBuilder WithBooleanField(
     this ContentPartDefinitionBuilder builder,
     string name,
     bool @default,
     string hint = "")
 {
     return(builder.WithField(
                name,
                fieldBuilder =>
                fieldBuilder.OfType("BooleanField")
                .WithSetting("BooleanFieldSettings.Hint", hint)
                .WithSetting("BooleanFieldSettings.DefaultValue", @default.ToString(CultureInfo.InvariantCulture))));
 }
예제 #10
0
 public static ContentPartDefinitionBuilder WithMultiValueTextField(this ContentPartDefinitionBuilder p, string name, string displayName, string position, ListValueOption[] options, MultiValueEditorOption editor = MultiValueEditorOption.Dropdown)
 {
     return(p.WithField(name, field => field
                        .OfType("MultiValueTextField")
                        .WithDisplayName(displayName)
                        .WithEditor("PredefinedList")
                        .WithPosition(position)
                        .WithSettings(new MultiValueTextFieldEditorSettings
     {
         Options = options,
         Editor = editor
     })
                        ));
 }
예제 #11
0
        public static ContentPartDefinitionBuilder WithTextField(
            this ContentPartDefinitionBuilder builder,
            string name,
            Flavour flavor,
            bool required = true,
            string hint   = "")
        {
            var strFlavor = flavor.ToString().SplitCamel();

            return(builder.WithField(
                       name,
                       fieldBuilder =>
                       fieldBuilder.OfType("TextField")
                       .WithSetting("TextFieldSettings.Required", required.ToString(CultureInfo.InvariantCulture))
                       .WithSetting("TextFieldSettings.Flavor", strFlavor)
                       .WithSetting("TextFieldSettings.Hint", hint)));
        }
예제 #12
0
        /// <summary>
        /// Merges a given content part definition provided in a XML format into a content part definition builder.
        /// </summary>
        /// <param name="element">The XML content type definition.</param>
        /// <param name="contentPartDefinitionBuilder">The content part definition builder.</param>
        public void Merge(XElement element, ContentPartDefinitionBuilder contentPartDefinitionBuilder)
        {
            Argument.ThrowIfNull(element, nameof(element));
            Argument.ThrowIfNull(contentPartDefinitionBuilder, nameof(contentPartDefinitionBuilder));

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

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

            // Merge fields
            foreach (var iter in element.Elements())
            {
                var fieldElement    = iter;
                var fieldParameters = XmlConvert.DecodeName(fieldElement.Name.LocalName).Split(new[] { '.' }, 2);
                var fieldName       = fieldParameters.FirstOrDefault();
                var fieldType       = fieldParameters.Skip(1).FirstOrDefault();
                if (fieldName == "remove")
                {
                    var nameAttribute = fieldElement.Attribute("name");
                    if (nameAttribute != null)
                    {
                        contentPartDefinitionBuilder.RemoveField(nameAttribute.Value);
                    }
                }
                else
                {
                    contentPartDefinitionBuilder.WithField(
                        fieldName,
                        fieldBuilder =>
                    {
                        fieldBuilder.OfType(fieldType);
                        foreach (var setting in _settingsFormatter.Map(fieldElement))
                        {
                            fieldBuilder.WithSetting(setting.Key, setting.Value);
                        }
                    });
                }
            }
        }
예제 #13
0
        public static ContentPartDefinitionBuilder WithMediaLibraryPickerField(
            this ContentPartDefinitionBuilder builder,
            string name,
            bool required = true,
            bool multiple = false,
            string hint   = "",
            string displayedContentTypes = "jpg jpeg png gif")
        {
            var displayName = name.SplitCamel();

            // default implementation of Media library picker field - create overloads for more options
            return(builder.WithField(
                       name,
                       fieldBuilder =>
                       fieldBuilder.OfType("MediaLibraryPickerField")
                       .WithDisplayName(displayName)
                       .WithSetting("MediaLibraryPickerFieldSettings.Required", required.ToString(CultureInfo.InvariantCulture))
                       .WithSetting("MediaLibraryPickerFieldSettings.DisplayedContentTypes", displayedContentTypes)
                       .WithSetting("MediaLibraryPickerFieldSettings.Multiple", multiple.ToString(CultureInfo.InvariantCulture))
                       .WithSetting("MediaLibraryPickerFieldSettings.Hint", hint)));
        }
예제 #14
0
        public static ContentPartDefinitionBuilder WithContentPickerField(
            this ContentPartDefinitionBuilder builder,
            string name,
            string hint                    = null,
            bool isRequired                = false,
            bool allowMultiple             = false,
            bool showContentTab            = true,
            string[] displayedContentTypes = null)
        {
            var displayName  = name.SplitCamel();
            var contentTypes = displayedContentTypes != null?string.Join(",", displayedContentTypes) : null;

            return(builder.WithField(
                       name,
                       cfg => cfg.OfType(typeof(ContentPickerField).Name)
                       .WithDisplayName(displayName)
                       .WithSetting("ContentPickerFieldSettings.Hint", hint)
                       .WithSetting("ContentPickerFieldSettings.Required", isRequired.ToString(CultureInfo.InvariantCulture))
                       .WithSetting("ContentPickerFieldSettings.Multiple", allowMultiple.ToString(CultureInfo.InvariantCulture))
                       .WithSetting("ContentPickerFieldSettings.ShowContentTab", showContentTab.ToString(CultureInfo.InvariantCulture))
                       .WithSetting("ContentPickerFieldSettings.DisplayedContentTypes", contentTypes)));
        }
예제 #15
0
        public static ContentPartDefinitionBuilder WithLinkField(
            this ContentPartDefinitionBuilder builder,
            string fieldName,
            string displayName        = null,
            bool required             = false,
            TargetMode targetMode     = TargetMode.None,
            LinkTextMode linkTextMode = LinkTextMode.Optional,
            string hint = "")
        {
            return(builder.WithField(
                       fieldName,
                       fieldBuilder => {
                fieldBuilder.OfType("LinkField")
                .WithSetting("LinkFieldSettings.Hint", hint)
                .WithSetting("LinkFieldSettings.Required", required.ToString(CultureInfo.InvariantCulture))
                .WithSetting("LinkFieldSettings.TargetMode", targetMode.ToString())
                .WithSetting("LinkFieldSettings.LinkTextMode", linkTextMode.ToString());

                if (displayName.HasValue())
                {
                    fieldBuilder.WithDisplayName(displayName);
                }
            }));
        }