Copied to clipboard

Flag this post as spam?

This post will be reported to the moderators as potential spam to be looked at


  • Lachlann 343 posts 625 karma points
    Apr 15, 2015 @ 12:52
    Lachlann
    0

    Adding in Custom Field Type

    Hi All,

    I am looking to try and create some custom field types for Umbraco 7 Forms. I have seen the documentation here:

    https://github.com/umbraco/UmbracoFormsDocumentation/blob/master/Developer/Extending/index.md

    However I am still not getting extactly what is needed here. I have created a new FieldType as well as a partial to render it.

    In the steps it says i need to have it override the editor property but I am not sure what is meant by this.

    My second problem is that I need to create a field type that doesnt actualy save any content to the DB, a bit like the Text type you can add that just provides text on the form. Does any one have any suggestions on how to do this?

    Cheers

    L

  • Lachlann 343 posts 625 karma points
    Apr 15, 2015 @ 15:43
    Lachlann
    0

    Update:

    I found this post about how to do something similar https://our.umbraco.org/forum/umbraco-pro/contour/38385-Custom-Field-Type-in-V3 but as the last comment says the Umbraco Forms version of contour does not have an Editor method to override.

    L

  • Tim Geyssens 6562 posts 15373 karma points MVP 2x c-trib
    Apr 15, 2015 @ 15:50
    Tim Geyssens
    0

    I'm just about to release v4.1.0 once that is out I'll post a complete example for you

  • Tim Geyssens 6562 posts 15373 karma points MVP 2x c-trib
    Apr 15, 2015 @ 15:56
    Tim Geyssens
    0

    So this is the definition of the textstring fieldtype

       publicclassTextfield : FieldType

        {

            [Attributes.Setting("DefaultValue"

                description = "Enter a default value")]

            public string DefaultValue { get; set; }

     

            public Textfield() {

                //Provider

                this.Id =newGuid("3F92E01B-29E2-4a30-BF33-9DF5580ED52C");

                this.Name = "Textfield";

                this.Description ="Renders a html input fieldKey";

     

                //FieldType

                this.Icon = "icon-autofill";

                this.DataType = FieldDataType.String;

     

                this.Category = "Simple";

                this.SortOrder = 10;

            }

     

     

            public override bool SupportsRegex

            {

                get

                {

                    return true;

                }

            }

     

     

        }

  • Tim Geyssens 6562 posts 15373 karma points MVP 2x c-trib
    Apr 15, 2015 @ 15:58
    Tim Geyssens
    0

    so you'll see there is no more mention of webcontrols (since we aren't using webforms anymore) and you'll need a view for your fieldtype

    for textfield the view looks like 

    @model Umbraco.Forms.Mvc.Models.FieldViewModel

    <input type="text" name="@Model.Name" id="@Model.Id" class="text" value="@Model.Value" maxlength="500"

    @{if(Model.Mandatory || Model.Validate){<text>data-val="true"</text>}}

    @{if (Model.Mandatory) {<text> data-val-required="@Model.RequiredErrorMessage"</text>}}

    @{if (Model.Validate) {<text> data-val-regex="@Model.InvalidErrorMessage" data-regex="@Html.Raw(Model.Regex)"</text>}}

     

    />

    and it's found in the \Views\Partials\Forms\Fieldtypes\ directory

  • Tim Geyssens 6562 posts 15373 karma points MVP 2x c-trib
    Apr 15, 2015 @ 16:00
    Tim Geyssens
    0

    maybe it's easier if I make an example project, will create an email one, then you'll have a full working example

  • Lachlann 343 posts 625 karma points
    Apr 15, 2015 @ 16:23
    Lachlann
    0

    Wow thanks Tim, this is perfect, I look forward to seeing the email one! And i will look through the examples above.

    L

  • Tim Geyssens 6562 posts 15373 karma points MVP 2x c-trib
    Apr 15, 2015 @ 16:24
    Tim Geyssens
    0

    thought so, eta tomorrow morning

  • Lachlann 343 posts 625 karma points
    Apr 15, 2015 @ 16:40
    Lachlann
    0

    One thought, does the umbraco liscence make a difference here? I dont have a lic for my local version at the moment.

    L

  • Tim Geyssens 6562 posts 15373 karma points MVP 2x c-trib
    Apr 16, 2015 @ 11:33
    Tim Geyssens
    0

    Working on the example project now, will ping you once it's done

  • Tim Geyssens 6562 posts 15373 karma points MVP 2x c-trib
    Apr 16, 2015 @ 11:34
    Tim Geyssens
    0

    Our products always work fully on local host so you can try before you buy

  • Tim Geyssens 6562 posts 15373 karma points MVP 2x c-trib
    Apr 16, 2015 @ 12:39
    Tim Geyssens
    4

    Ok so this is an example project with the simples possible fieldtype https://www.dropbox.com/s/7s2nufmaayugyok/FormsExampleFieldType.zip?dl=0 you'll see that it consists of an class (the definition of the fieldtype) and the view used to render it

    To install you need to drop the dll in the \bin dir and the view in the \Views\Partials\Forms\Fieldtypes\ dir

  • Steve 139 posts 318 karma points
    Oct 26, 2015 @ 15:59
    Steve
    0

    Tim,
    This is really helpful - thanks.
    For anyone working with this sample it's worth noting that an email.html file must also be put in the App_Plugins/UmbracoForms/Backoffice/Common/FieldTypes folder.
    Also, line 3 of FieldType.Email.cshtml needs to be slightly edited to:

     @{if (Model.Mandatory || Model.Validate) {<text>data-val="true"</text>}}
    

    (capitalized Model, Mandatory, etc and removed a > before

  • Peter Cort Larsen 388 posts 922 karma points
    Oct 28, 2015 @ 14:01
    Peter Cort Larsen
    0

    Hi Tim,

    I did the following on a 7.2.8 solution.

    Compiled your code for Email field. Copied dll and view.

    But how do i make it show up in the fields dialog when creating a form?

  • Tim Geyssens 6562 posts 15373 karma points MVP 2x c-trib
    Apr 16, 2015 @ 12:39
    Tim Geyssens
    0

    If you have some details in the type of fieldtype you wish to create I can give you some more pointers

  • Lachlann 343 posts 625 karma points
    Apr 16, 2015 @ 13:12
    Lachlann
    0

    This is great! Thanks Tim, I have been working on the problem and I think I am getting there now! Thanks again.

    L

  • Jeric Yuen 334 posts 508 karma points
    Jun 30, 2015 @ 16:10
    Jeric Yuen
    0

    Hi Tim,

    I need to create a custom Upload for Contour that only allow specific file extension to be uploaded?

    Any idea how this can be done?

    Thanks a lot

  • Steve 139 posts 318 karma points
    Oct 26, 2015 @ 14:23
    Steve
    0

    Hi Tim,
    Like @JLon, I'd like to perform some custom validation on the field value. How/where do you put this code? Essentially I would like to have a programmable regex.
    thanks! Steve

  • This forum is in read-only mode while we transition to the new forum.

    You can continue this topic on the new forum by tapping the "Continue discussion" link below.

Please Sign in or register to post replies