0

4 つの画像を持つカスタム タイプのプロジェクトを作成しました。タイプ メディア ピッカーの 4 つのフィールドを使用したいので、リンクを追加しました ...

public int Create()
            {
                // Define the project type 
                ContentDefinitionManager.AlterTypeDefinition("Project", cfg => cfg
                    .WithSetting("Stereotype", "Content")
                    .CommomPart()
                    .AutoroutePart("our-work")
                    .BodyPart()
                    .WithPart("TitlePart")
                    .WithPart("PublishLaterPart")
                    .WithPart("MenuPart", builder => builder
                        .WithSetting("MenuPart.OnMenu", "true")
                        .WithSetting("MenuPart.CurrentMenu", "Project Menu"))
                    .WithPart("Project")
                    .Creatable()
                    .Draftable());

                return 1;

            }

            public int UpdateFrom1()
            {
                // Define project part - having a part with the same name will create fields in the project type
                ContentDefinitionManager.AlterPartDefinition("Project", builder => builder
                   .MediaPickerField("MainImage")
                   .MediaPickerField("MediumImage")
                   .MediaPickerField("SmallImage")
                   .MediaPickerField("Logo")
                   .TextField("ShortDescription", Flavour.TextArea)
                   .TextField("Features", Flavour.Markdown)
                   .TextField("ClientTitle", Flavour.DefaultFlavour)
                   .TextField("ClientName", Flavour.DefaultFlavour)
                   .TextField("ClientQuote", Flavour.Textarea)
                   .BooleanField("MainProjectOnHomePage", false)
                   .Attachable());

                return 2;
            }

少し冗長にするために使用される拡張メソッド

public static ContentPartDefinitionBuilder MediaPickerField(this ContentPartDefinitionBuilder builder, 
                                                                string name, bool required = true, string hint = "")
    {
        var displayName = SplitCamel(name);

        // default implementation of Media picker field - create overloads for more options
        return  builder.WithField(name, fieldBuilder => fieldBuilder
                    .OfType("MediaPickerField")
                    .WithDisplayName(displayName)
                    .WithSetting("MediaPickerFieldSettings.Required", required.ToString(CultureInfo.InvariantCulture))
                    .WithSetting("MediaPickerFieldSettings.AllowedExtensions", "jpg png gif")
                    .WithSetting("MediaPickerFieldSettings.Hint", hint));

    }

    public static ContentPartDefinitionBuilder TextField(this ContentPartDefinitionBuilder builder, 
                                                         string name, Flavour flavor, bool required = true, string hint = "")
    {
        var strFlavor = SplitCamel(flavor.ToString());

        // default implementation of Media picker field - create overloads for more options
        return builder.WithField(name, fieldBuilder => fieldBuilder
                    .OfType("TextField")
                    .WithSetting("TextFieldSettings.Required", required.ToString(CultureInfo.InvariantCulture))
                    .WithSetting("TextFieldSettings.Flavor", strFlavor)
                    .WithSetting("TextFieldSettings.Hint", hint));

    }

ダッシュボードの 4 つのフィールドにメディアを追加できますが、保存時に最初のメディア アイテムのみが保存されます。すべてのメディア フィールドが必要であるにもかかわらず、プロジェクトを保存できますが、3 つのフィールドのメディア アイテムがありません。 、

また、ダッシュボードからメディア ピッカーを追加してみましたが、同様の結果が得られました。

私は何か間違ったことをしていますか?

4

0 に答える 0