Customizing User Registration and Login with Dynamic Forms and Workflows

Customizing User Registration and Login

The goal of this tutorial is demonstrate how you can create a custom Registration and Login screen using Dynamic Forms and Workflows without the need for a custom module.

We will extend the User type to store additional information about the user: first name and last name, just to demonstrate how to collect and store additional information about the user during the registration process.

As we shall see, there are two approaches to using a form for the creation of a user. The first approach uses a method called binding, while the second approach uses a Workflow activity called CreateUser.

We will look at both of them.

Exending the User type

Oftentimes there are cases where you need to store additional information as part of a user. This can be done in a variety of ways. For our sample, we will simply attach two content fields to the User content type: FirstName and LastName.

To attach these fields to the User content type, go to Content Definition, edit the User type, and add two TextFields. Name them FirstName and LastName, respectively. The Display Name for these fields can be anything you like. I named them "First Name" and "Last Name".

Creating The Registration Form

The next thing we need to do is create a new Form content item. Enable the Dynamic Forms feature if you haven't already done so, and click on the "Form" menu item in the "New" section of the admin menu.

When we create a new Form content item, we will start out with a single Form and Button element. The first thing we will want to do is give this form element a name and enable client validation.

Specify "Registration" for the form's name and enabled client validation.

Note: the Form content item itself will be called "Register". Don't confuse this with the Form element, which will be called "Registration". We could use the same names if we wanted to, but I think "register" makes more sense for the content item and its URL, whereas submissions of the form element itself kind of represent a registration. Anyway, up to you.

We will not store the submitted form, but we will want to create a new content item when the form is submitted: we will create a new User content item.

The Form Element properties should look like this:

Next, we will add the neccessary form elements to our form.

For our registration form, we want the user to provide the following fields:

Field Element Type
First name Text Field
Last name Text Field
Email Email Field
Password Password Field
Confirm password Password Field
Accept terms and conditions Checkbox

We will also add a Validation Summary element to show any validation errors to the user.

The form will look like the following in design mode:

For each element, we can configure their name, whether or not to show a label, configure bindings, validation, and more.

The settings should be pretty much self-explanatory, but let's have a look at the Bindings section for the First Name field.

Bindings

What we see here is a list of bindings. A binding enables you to route an incoming form value to a part or field on the content item being created. The incoming form value is provided by the form element, which in the case of the First Name field is a TextField. Since the name of this field is "FirstText", the form value with that key will be supplied to the selected bindings.

Since we configured the form element to create a new content item of type User, the bindings section of a given form field element will enumerate all content fields and parts of that type for which a binding is available.

At the moment of this writing, the following bindings are available:

  • BodyPartBindings
  • TitlePartBindings
  • UserPartBindings
  • TextFieldBindings

If the User content type would have a BodyPart attached, then we would see its bindings as well.

As seen in the above picture, we checked the FirstName.Text binding, which means that any value submitted for this First Name text field element will be set to the Text property of the FirstName content field on the User content type.

We'll do the same for the Last Name, UserName, Email and Password fields.

However, when we try and select the bindings for the UserPart, we will find that these bindings don't appear in the list of bindings. What's going on?

The way the Bindings screen works is by inspecting the Content Type definition of the configured content type. Since the UserPart is welded onto the User content item dynamically at runtime, it won't find this part on the User type.

This is easily fixed by following these steps:

  1. Go to Content Definition -> Content Parts and create a new part called UserPart. Make sure this part is Attachable. Although the Description field is optional, it is considered good practice to always provide a description to parts. I specified Turns your content type into a user." as its description.
  2. Go to the User type edit screen and attach the UserPart.
  3. Optional: go back to the UserPart edit screen and uncheck the "Attachable" checkbox. This step is not necessary, but since we won't be attaching this part to any other content type, I'd like to keep things tidy.

Now when you go back to the Form editor and edit the UserName field element, you'll see the UserPart bindings as seen in the previous image.

Validation

An important aspect of most forms is input validation. Some examples of input validation are:

  • A value is required;
  • A value must have a minimum length and may not exceed a certain maximum;
  • A value must fall within a certain numerical range;
  • A value must match a certain pattern;
  • A value must match the value of another field;

With Dynamic Forms, each element type provides its own validation settings that we can configure. For example, the Text Field element supports a Required, Minimum Length and Maximum Length setting.

We can optionally provide a custom validation message that will be displayed when any of these rules add a validation error. If we leave that field empty, a default validation error will be presented to the user.

The "Show Validation Message" provides us with a way to automatically render the validation error message close to the input field. Since elements are rendered using shapes, this can be customized on a theme level.

Alternatively, we could add a Validation Message element to our form and position it anywhere we like, just as long as it is a child of the same Form element.

In this tutorial, we simply added the Validation Summary element to the beginning of our form. For this element to work properly, it too must be a child of the Form element.

Client Validation

Dynamic Forms supports client validation. To enable this, simply go to the Form element's properties, and check the "Enable Client Validation" option.

Now the form fields will be validated on the client side (in addition to serverside validation).

For the "Confirm Password" field (which is a Password Field element) we will use the Compare validator:

All we have to do is specify the name of the element whos value to compare with.

And that is basically all it takes to create a custom Registration form!

But wait a minute, what happens if the user tries to register with a username or email that is already taken?

Oh dear, that would be a problem indeed. We need unique logins. Also, we want to inform the user if he tries to register with an already existing username or email address.

And what if we want to assign the newly created user a role and send a welcome email?

Do we need a custom module after all?

Not if Orchard Workflows has any say in the matter!

Workflows

Orchard Workflows is a feature introduced with 1.7, and provides us with a way to visually program rules. They are like Orchard Rules, but way more powerful.

Dynamic Forms comes with a small set of workflow activities that will enable us to control what happens when a form is submitted. This enables us to prevent any from being submitted by adding a model error.

Let's define what our workflow should do when a Registration form is submitted:

  • Before the User content item is actually created, we want to validate the username and email. If the user name or email address is already in use, we want to add a model error. That will both notify the user of the error as well as prevent the form from actually creating the User content item.
  • If the user name and email are available, we want to automatically approve the user, create an authentication cookie, assign them to the Contributor role, send them a welcome email, and redirect him to the Admin dashboard.

Such a workflow would look like this:

Note that the start activity is the "Dynamic Form Validating" event (which is configured to only capture this event for the "Registration" form).

This event is triggered before the "Dynamic Form Submitted" event, and gives us a chance to perform custom validation and prevent the form from submitting data / creating content by adding a model error.

We use the Verify User Unicity activity to validate the specified user name and email like this:

What we see here is the usage of a new token provided by the Dynamic Forms module: {FormSubmission.Field:*}, where the  * is to be substituted with the form field name.

However, there is one problem with this workflow: the Approve User activity works only if the content item associated with the workflow is a User, but when a form is being validated, no content item is created yet.

This means that we need to devide our workflow into two: one workflow to validate the form, and another workflow to approve the user, login the user, assign a role, and send the welcome email.

After the modifications, the first workflow will look like this:

The second workflow, the one that will execute only after a user has been created, will look like this:

Here, we listen for the Content Published event (configured to trigger only for new published User events).

The Approve User activity will approve this user, then we assign the user the "Contributer" role, sigin in the user, send a welcome message, display a "Welcome" notification, and redirect to the administration dashboard.

An Alternative Approach

Although the approach we've taken works nicely, I want to show you a slightly different approach.

This time, we won't be creating a new User content item via binding, but by using the Create User activity.

The idea here is that we will simply listen for the Form Submitted event, and execute the Create User activity. The Create User activity has two branches: if the specified user name and or email is already in use, we add a model error. Otherwise, we continue and assign the user a role, send a welcome message, etc.

This enables us to use a single workflow.

Let's see how that works.

First of all, we need to change our Form element configuration by not creating a User content item anymore:

Next, we'll delete the two workflows created earlier, and create a new one:

This time, we listen for the "Form Submitted" event (specifically for the "Registration" form to be submitted).

When that happens, we execute the Create User activity, which is configured as follows:

The Create User activity requires a user name, email and password, which we provide using the FormSubmission.Fields:* token.

We also checked the "Approved" checkbox so that the user is autmatically approved, so no need to use the Approve User activity.

Now, we are also expecting the First Name and Last Name fields, which we want to store as part of the new user.

With the bindings approach, we were able to bind these form fields with the new user. How to do it without?

Meet the Decision activity. This activity, provided by the "C# Scripting" feature, enables as to execute C# code.

By lack of a "Bind Form" activity, we shall use the Decision activity with the following script:

We configured the Decision activity with a single outcome: "Done".

The script updates the two TextFields with the values provided by the {FormSubmission.Field:*} token. Note that we are using the new token syntax (#{}) and that these tokens are enclosed with quotation marks; the Decision activity will first tokenize the script, then execute.

The Sign In User activity does not need to be configured; it will sign in the workflow's current content item if that content item is a user. The Create User activity not only creates a user, but also sets the workflow's content item context to that user.

The rest of the workflow should be self-explanatory.

Login

Great! We have seen how we can create a custom registration screen, now let's see how we can create a custom login screen.

We will take a similar approach: we design a form and setup a workflow to handle its submission.

 Let's create a new Form content item that looks like this:

Remember to also configure the Form element by setting its Name and optionally enabling Client validation:

Now that we have a form, all we need to do is setup a workflow to handle its submission event.

When the Login form is submitted, we will want to:

  • Sign in the user, creating a persistent cookie if the "Remember Me" checkbox was checked;
  • Show a validation error if login failed and log this attempt;
  • Redirect the user to the dashboard if login succeeded and show a "Welcome back!" notification.

Such a workflow would look like this:

The most interesting activity here us the Sign In User activity, which is configured as follows:

Once again, we are providing the required values using the all-awesome{FormSubmission.Field:*} token.

Note: the "Create Persistent Cookie" value must evaluate to a value that is non-empty, and not equal to "false", "no" and "off". All other values will be interpreted as "true".

And that's it!

Now, a more advanced scenario would enable you to require a user to activate his account using some activation link.

To do that, you would update the Registration workflow to not automatically approve and sign in the user, but by just sending the Welcome email and an activation link.

This activation link can be generated using the {Workflow.TriggerUrl:*} token, which generates a nonce based on the current content item ID and provided signal name.

When the user clicks this activation link, they would be directed back to the website, triggering the Signal activity. This activity could either be the starting activity of a separate workflow, or it could resume the workflow that also created the user.

Let's see how that works.

Implementing the Activation Link

First of all, let's update our Registration workflow so that it does not approve and login the user. The updated workflow looks like this:

This looks almost exactly the same (we removed the Sign In User activity), but let's have a look at the updated activities.

Create User Activity

This activity was updated to not automatically approve the user:

Send Email Activity

This activity now looks as follows:

Notice that we're using the {Workflow.TriggerUrl:*} token to generate the URL for the activation link and that we are specifying "ActivateAccount" as the signal name.

This token will generate a URL and a nonce querystring parameter that contains the content item ID and signal name, encrypted.

Because this value is encrypted, no one will be able to tamper with it - only the recipient of the email will be able to trigger the "ActivateAccount" signal for his user account (which ID is part of the nonce).

All that's left is setup the workflow to listen for the signal event.

Activating the User Account

As mentioned earlier, when the user clicks on the activation link, they are directed to some URL on the website that will trigger a Signal event.

We shall create a new workflow that specifically listens for this event. When this event is triggered, we want to perform the following actions:

  • Activate the user's account;
  • Automatically login the user;
  • Show a notification confirming the user that their account is now activated;
  • Redirect to the dashboard.

Such a workflow would look like this:

The Signal activity is configured as follows:

Note that this is the same value as was used when generating the activation link ({Workflow.TriggerUrl:ActivateAccount}).

Conclusion

And there we have it! We have seen how we can create a custom Registration and Login form using the Dynamic Forms and Workflows modules without the need for a a custom module.

The two modules combined allow for a great amount of configuration and flexibility.

This article didn't show every step of the way as that would add a significant amount of images, so instead we created a screencast that demonstrates the construction of the various forms and workflows, as well as demonstrating how they look and function on the front end.

Enjoy!

97 comments

  • ... Posted by As Posted 02/24/2015 09:18 AM

    Hi in new version (750a4079c167 at 2/24/2015) how we can binding form fields? Thank You

  • ... Posted by Sipke Schoorstra Posted 02/24/2015 10:30 AM (Author)

    Form field bindings still work the same, however there's a bug where you first need to save your content item after having selected the content type on the form element before you see the Bindings tab on the field elements. Will be corrected.

  • ... Posted by Sander Posted 02/27/2015 03:46 PM

    Cool, already a tutorial on the new features! Have heard a lot about the upcoming Dynamic Forms, but did not know yet how to use it. Keep up the great tutorials Sipke!

    Greets a fellow Dutchman

  • ... Posted by As Posted 02/27/2015 06:45 PM

    Hi How we can use workflow without Dynamic form? I want to use my views that I've written them in the View folder. Thank You

  • ... Posted by As Posted 02/28/2015 04:59 AM

    Hi. In login and register forms, keyboard has delay. Thank you

  • ... Posted by Sipke Schoorstra Posted 03/01/2015 02:32 PM (Author)

    @Sander - Thanks!

    @As - You can use workflows as-is - just drag & drop an event activity such as Content Published and go from there. If you write your own event activities, you'll have to trigger those events using the workflow manager API, typically done from a controller (like Dynamic Forms is indirectly doing in the FormController by invoking _formService.SubmitForm()).

    Regarding your keyboard delay, I'm not sure I understand what you're saying. Do you mean that as you type away, the characters don't instantly appear in the text fields? Which browser is this, and can you reproduce this issue if you create another form with a single text field? Any repro steps would be helpful.

    Thanks for the feedback.

  • ... Posted by As Posted 03/01/2015 07:38 PM

    Hi sipke. I want two login and register forms in my website, one for employees and one for customers. The number of my customers might be 40,000 people. Are there sufficient security methods that You have described?

    Yes, when i type in login and register forms (in text field), keyboard has delay. my browsers are IE 11 and Goole Chrome. Thank you

  • ... Posted by Sipke Schoorstra Posted 03/02/2015 10:52 AM (Author)

    I don't understand your question about if there are sufficient security methods that I have described. Is your question about whether the dynamic forms method of authenticating a user is secure enough? If so, it is just as secure as the default Login form as provided by Orchard.Users.

    Regarding the delayed keyboard feedback, do you have client side validation enabled? If so, what happens if you disable that?

  • ... Posted by As Posted 04/08/2015 07:16 AM

    Hi In "commit 05faccd7226e" i can't bind and submit! why?

    Thank you

  • ... Posted by Kevin Posted 04/14/2015 08:53 AM

    Where can I get 1.9

  • ... Posted by Sipke Schoorstra Posted 05/08/2015 10:21 PM (Author)

    @As: Not sure what you mean, but could you try with the latest 1.9 release? If you are still having issues, please create an issue on GitHub. Thanks!

    @Kevin: 1.9 was released yesterday. :) You can get the bits here.

  • ... Posted by JP Posted 05/21/2015 10:55 AM

    Great tutorial(s) Sipke ! This greatly helps open our minds to the power of Orchard :)

  • ... Posted by Patrick Posted 06/11/2015 09:56 AM

    Hi,

    I'm trying to follow your example to create a form with the new Dynamic Forms but it looks like I missed something...If I try to edit the properties of the form there is no settings (gear button) above the Layout canvas. Where can I find the settings of the form or how do I enable it?

    To be clear I mean the gear button at 0:53 of this YouTube movie https://www.youtube.com/watch?v=TUVj6eyGOUM

    Kind regards, Patrick

  • ... Posted by Rade Posted 06/29/2015 08:26 AM

    Hi, Sipke. I want to answer how to do, that my users cant login without activate their account from sent email. Now they can log in without activate and i want to disable this option. I want they can log in only after full activate account. Thanks a lot

  • ... Posted by MW Posted 06/29/2015 11:53 AM

    Great tutorial but I can't see any figures on the page:) Please fix it. Thanks in advance.

  • ... Posted by Rob Posted 07/01/2015 07:05 PM [http://servicemagnet.com]

    Came across this post after doing much reasearch. Was getting close to gving up on what I thought should be a very simple way to create an Orchard CMS user registration and sign-up. Thanks for posting. As MW above states, the inline images are not displayed, are they able to be fixed?

    If not, the video is the next step.

    Many thanks again for your post, its very much appreciated by us new Orchard developers.

  • ... Posted by Tadej Posted 07/16/2015 08:33 AM [http://www.comtron.si]

    First of all great tutorial. I have a question about multiple registration workflows. What I want to do is use the default registration but than create another one that does not automaticaly log in the registerd user. So have two different registration workflows and use both(some users with specific rights will be able to register new users but I dont want them to automatically log in with created user after that..).

  • ... Posted by Ju Posted 07/21/2015 02:18 PM

    Could you please fix image issue. Thanks :)

  • ... Posted by chris Posted 07/29/2015 03:38 PM [http://www.riveragency.com]

    Could you please fix image issue. Thanks :)

  • ... Posted by Chukwuemeka Ugwuanyi Posted 08/03/2015 12:27 PM

    All the images are returning a 404. Great tutorial though.

    Thanks.

  • ... Posted by Alexander Posted 08/10/2015 09:53 AM [http://mainbit.com]

    Could you please fix image issue. Thanks :)

  • ... Posted by rtpHarry Posted 08/21/2015 07:05 AM

    Hey, this article is promising but all of the images are broken and it relies on the images to gain a complete understanding as it says things like "The Form Element properties should look like this:" and then a broken image.

    Could you find some time to fix this up please?

  • ... Posted by rtpHarry Posted 08/27/2015 10:41 PM

    No Initial Form On Create New

    The tutorial says when you create a form you start out with a Form and Button element but the Layout was empty for me.

    It looks like as of v1.9.1 you need to add in an extra step saying drag the form element onto the layout canvas.

    Some constructive feedback; this is my first few clicks of the new Layout module. It would help me to have a bit more handholding in the first few steps of this tutorial. Tell me exactly what to click in what order so I don't miss anything and build up confidence in the new tool.

    No Bindings Tab Appearing

    There is a known issue with the bindings tab not appearing in v1.9.1.

    It has already been fixed in the dev branch but until then you can do the following:

    To work around the issue, you need to edit the Form element and hit Save again.

    Confirm Password Binding?

    The tutorial doesn't say if I need to set a binding for the confirm password field. I'm guessing no at the moment.

  • ... Posted by rtpHarry Posted 08/28/2015 12:18 PM

    Workflows - Extra Module Features Not Enabled By Default

    I ground to a distracted halt yesterday when I went off looking for the reason why I wasn't seeing activities like "Approve User" and "Create User". Today I realised that not all elements of the Workflows module is enabled by default.

    You need to go to the Modules admin screen, search for workflows and you will see extra activities features like Users Workflows Activities and Email Workflows Activities which need to be enabled separately in order to follow this tutorial.

  • ... Posted by nqsoft Posted 11/10/2015 03:35 AM

    Dear Sipke Schoorstra, Thank you for this issue I dont know how to contact to you so could I ask you a question that is not relate to this issue

    I would like to setup a workflow like your video https://www.youtube.com/watch?v=J9-46bT2D6w but I couldnt see any scrip of each activity such as Decision, Send email activity....could you please send to me all of scrips. My email is: nqsoft@gmail.com Thank you in advance

  • ... Posted by George Papadopoulos Posted 01/25/2016 12:10 PM

    Great tutorial and very useful. Is there any way to create a Dynamic Form that deletes a Content?

  • ... Posted by Sipke Schoorstra Posted 01/28/2016 11:46 PM (Author)

    Thanks! Not at the moment, no. I also wonder how this would look like? for example, would you let the user select a content item to be removed, using a dropdown list? If so, you could implement a custom form element and setup a workflow that deletes the selected content item when the form is submitted.

  • ... Posted by Ed Kaufmann Posted 02/01/2016 08:38 AM [http://www.evalsite.org]

    what am I missing ... thanks for your time. My 1.9.2 does, in Admin -> new, NOT show 'Form'! All prereqs for 'Dynamic form' are enabled (so is of course Dynamic Form). When downloading from Github 1.9.3 'Form' is showing! However I don't (yet) want to use 9.3 . ? what am I possibly missing ? thanks for any hints, ed

  • ... Posted by Sipke Schoorstra Posted 02/01/2016 10:08 AM (Author)

    Hi Ed,

    Please check out http://orchard.codeplex.com/discussions/649349. In summary, it is an issue with the 1.9.2 compiled distribution. It will be fixed with the 1.9.3 release. If you're not ready to upgrade to 1.9.3, then your best bet is to download the 1.9.2 source package and build the solution yourself. But I highly recommend considering upgrading to 1.9.3, as it will contain quite a few bugfixes.

  • ... Posted by Ed Kaufmann Posted 02/07/2016 06:52 AM [http://www.meounes.com]

    Hi Sipke,firstly, thank you for your advise. I.e. all is working fine with the 'dynamic form' using 1.9.3. However, I ran into another issue (knowing: this is definitely NOT part of this forum !). But, your experience might help! Issue: The 1.9.3 Github download is obviously only available in source form. Although the Orchard.web project runs, it is to big to run deployed (1.5GB). My sites are average 0.17GB! Question: how do I extract a Web.Matrix version form the Source version? I'm using VS2015. The orchard doc contains an article: 'Building and deploying Orchard from a source code drop'. But I'm not succeding. I there a procedure / documentation to (reasonably) do that? Thanks again for your time and advise, ed

  • ... Posted by Sipke Schoorstra Posted 02/07/2016 12:35 PM (Author)

    You're welcome, glad to hear you got it working. The easiest way to create a deployable version like the WebMatrix one is to do it from Visual Studio:

    1. Right-click on Orchard.Web and click Publish
    2. Create a new Custom publish target
    3. Select File System as the Publish method and select a folder on your local machine
    4. Select Release as the configuration
    5. Hit Publish

    After a few minutes you'll find a version of Orchard that is suitable to be deployed to your webserver at the specified location.

    Hope this helps.

  • ... Posted by Ed Kaufmann Posted 02/07/2016 01:59 PM [http://www.meounes.com]

    wow, thanks a million for your support your orchard contributions and yes ... your time, ed

  • ... Posted by Ed Kaufmann Posted 02/09/2016 03:13 PM [http://www.meounes.com]

    Now where all prereqs are ok I tried to implement your sample (user registration) well, I'm either to dumb or this description is out of date. I started by: updating the user ContentType with First + last name , ok When creating New --> Form to create 'Registration' Form: I only see the Submit Button, where are 'client validation', 'create content' etc) Thanks to get me on the right track and thanks again for your patiance, ed

  • ... Posted by Sipke Schoorstra Posted 02/09/2016 05:50 PM (Author)

    Cheers Ed.

    The Submit button is a Button element inside the Form element. Click the Edit icon (</>) to launch the form editor. There you should see all of the available options for the form element.

  • ... Posted by Ed Kaufmann Posted 02/09/2016 08:49 PM [http://www.meounes.com]

    oops, that's almost to easy! thanks again, ed

  • ... Posted by Ed Kaufmann Posted 02/10/2016 10:26 AM [http://www.meounes.com]

    ... to embarasse myself again. Under Workflows you quote: "We use the Verify User Unicity activity to validate the specified user name and email like this:" Also your picture shows 'Verify user Unicity'; how do I get to that 'Edit Activity' screen. It does not show in the Workflows elements?! What stupid thing do I miss (misinterpret) here again? thanks for your patience, ed

  • ... Posted by Sipke Schoorstra Posted 02/10/2016 12:24 PM (Author)

    I probably should have mentioned that you need to enable a certain feature, something like "User Workflow Activities".

  • ... Posted by Ed Kaufmann Posted 02/16/2016 07:44 AM [http://www.meounes.com]

    I probably don't see the forest for the trees! What is needed, with 'Dynamic Forms', to send a message like done in Orchard to test the email 'settings' (Admin --> settings --> email ) based on DynamicForms? I do NOT need/want to create a CI; ONLY send a e-mail based on the form!

    I defined a Dynamic Form with fields: Subject, mytext, email In workflows I used: 'Dynamic Form Submitted': to start the process with my form. connected 'Send Mail': how can I move the content of the form 'Subject, mytext, email' into it ('binding'!?)

    OR, am I on the wrong path altogether ? Thanks for your time and helping me to see the forest again, ed PS: your sample of the 'registration' business works fine, thanks!

  • ... Posted by Ed Kaufmann Posted 02/17/2016 08:22 PM [http://www.meounes.com]

    tried to move my fields into workflow mail by using format below: {Content.Fields.ContactForm.mytext} When sending the form I get the msg I have defined BUT never see an e-mail. As said the Admin --> settings test works fine!

  • ... Posted by Sipke Schoorstra Posted 02/19/2016 12:08 PM (Author)

    Hi Ed,

    When you handle the Form Submitted event using Workflowsm you can access the submitted values via {FormSubmission.Field:MyFieldName}. Since you're not creating a content item using the dynamic form, you won;t be able to use the {Content.Fields...} tokens.

    Hope this helps.

  • ... Posted by Ed Kaufmann Posted 02/21/2016 02:40 PM [http://www.meounes.com]

    Sipke, Thanks on some detours Sipke suggested to NOT use the 'timer' in between 'Dynamic Form Submitted' and 'Send email'. That works. And, based on Sipke's suggestion I will open a Github issue reprting this case.

  • ... Posted by Ed Kaufmann Posted 02/29/2016 07:03 PM [http://www.meounes.com]

    All works just fine - but there are always open questions! When doing the 'Dynamic Form' using the widget (eg 'aside second'). The 'Show Notification' msg shows up in the 'Main Zone'. ? Is it possible to show that msg also in 'aside second'? That could irritate in case of a 'full' web page! I tried 'alternates', however I have an issue with 'shape tracing' (perhaps a 1.10 issue)! Thanks for your ideas, ed

  • ... Posted by Sipke Schoorstra Posted 02/29/2016 10:36 PM (Author)

    Hi Ed, I love the questions, keep'm coming. Regarding the notification, I'm afraid there is no way to control where they appear. They are always added to the Messages zone. However, this may be a very cool feature request you might want to create on GitHub, where we extend the notification API to include a target zone name for example. The Dynamic Forms module could then leverage this API and enable the user to specify where the notification should be displayed.

  • ... Posted by Ed Kaufmann Posted 03/02/2016 04:00 PM [http://www.meounes.com]

    Thanks again for the prompt answer. Well, for now I defer this request due to my own priorities, but more important, due to your guys priorities (1.10 etc). I certainly can live with the design right now; but might come back when I have real need!

  • ... Posted by Stefan Kjellberg Posted 03/10/2016 09:45 AM

    Thnaks! this is probably the best video of all times for any type of software, ultra fast, a real teaser but also pretty deep in its coverage. Instead of starting to code this it really showed the strength of orchard workflows. If you're like me comming from sharepoint, you will lve this. Once again, Thanks a LOT!

  • ... Posted by Emma Posted 04/06/2016 12:36 PM

    I know it's probably been mentioned before, but the images don't work for the login form section :(

  • ... Posted by Sipke Schoorstra Posted 04/07/2016 11:08 PM (Author)

    Sorry Emma, it's still on the list to fix those.

  • ... Posted by Mike Posted 04/08/2016 06:16 PM

    Excellent article Sipke. I second fixing the image issues as the article is incomplete without them.

  • ... Posted by Sipke Schoorstra Posted 04/17/2016 10:45 AM (Author)

    Thanks Mike, the image issues have been fixed. Hope this helps.

  • ... Posted by J.Qwe Posted 05/08/2016 11:13 AM

    I added a FirstName field in the User content type How do i update it in the Decision activity?

  • ... Posted by Sipke Schoorstra Posted 05/09/2016 09:13 AM (Author)

    Like this:

    ContentItem.User.FirstName.Text = "#{FormSubmission.Field:FirstName}";

    Keep in mind that whenever you add a field directly to a content type, Orchard actually creates an implicit part with the same name as the content type, "User" in this case.

  • ... Posted by Moonica Posted 07/01/2016 04:53 AM

    Good day,

    I am having the same problem as Ed Kaufmann above (02/01/2016) but with both v1.10.0 and v1.10.1. I installed from .zip out the box, go to Modules, enable all Dynamic Form related modules, but there's no "New" form option, nor can I drag a form element onto the canvas when creating a new page.

    Am I missing something? Is this a known issue in v10? Should I try 1.9.3 instead?

    Thanks

  • ... Posted by Moonica Posted 07/01/2016 09:28 AM

    update: same with 1.9.3. Next I'll try building the code from Github because this isn't working in ANY of the zipped versions.

  • ... Posted by Sipke Schoorstra Posted 07/01/2016 09:44 AM (Author)

    This was a know issue with the 1.9.3 as well as the 1.10 zip package, and seemlingly with 1.10.1 as well. I'll try it myself to see what's going one. In the meantime, you should have no problem building the source code.

  • ... Posted by Sipke Schoorstra Posted 07/01/2016 10:03 AM (Author)

    I just tried the 1.10.1 zip file, and was not able to reproduce the issue. In other words, it just works. This is hwat I did:

    1. Download the 1.10.1 Orchard.Web.zip package from here: https://github.com/OrchardCMS/Orchard/releases/download/1.10.1/Orchard.Web.zip
    2. Right-click on the zip file, check "Unblock" and hit OK. I don't know if this is really necessary, but I do it just in case.
    3. Unzip the file.
    4. Open the directory with Visual Studio using the "Open -> Web Site" menu item.
    5. Right-click on the Orchard root project node and click "View in Browser (Google Chrome)"
    6. The setup screen appears. Selected the Default recipe and hit Setup.
    7. Navigate to the dashboard -> Modules and enable the Dynamic Form features.
    8. The New -> Form menu item appears.

    Perhaps you could describe your steps in detail, or even better: create a screencast?

  • ... Posted by Sipke Schoorstra Posted 07/01/2016 10:03 AM (Author)

    Ps. Let's take this issue to GitHub: https://github.com/OrchardCMS/Orchard/issues/6260

  • ... Posted by EzTiger Posted 07/27/2016 10:26 PM

    Hi Sipke

    I'm having difficulties getting my UserPart to display either the UserName, Password or Email fields in the Bindings tab. I have followed your instructions to the letter, but to no avail. When clicking the bindings tab, all I get are the two that I added i.e. FirstName and LastName.

    I'm using v.1.10.1.0 and feeling quite frustrated that it isnt' working as described, please advise.

    Thank you.

  • ... Posted by EzTiger Posted 07/28/2016 01:17 PM

    Hi Sipke

    I'm having difficulties getting my Workflow to kick in and perform the validation. I have entered duplicate values for UserName and Email but the Registration form still submits and displays the contents of the Show Notification field of the form. Strangely enough, the user isn't actually saved and no user details are listed in the list of users. I have followed your instructions to the letter, but to no avail.

    I'm using v.1.10.1.0 and feeling quite frustrated that it isnt' working as described, please advise.

    Thank you.

  • ... Posted by Alessandro Posted 08/04/2016 02:28 PM

    Hi, thanks for this article! So, how can i edit profile data?

  • ... Posted by Sipke Schoorstra Posted 08/09/2016 02:54 PM (Author)

    Hi ExTiger,

    Sorry to hear about the issues. It sounds like this could be a bug. Which Orchard version are you using?

  • ... Posted by Sipke Schoorstra Posted 08/09/2016 02:57 PM (Author)

    Hi Alessandro,

    Dynamic Forms does not yet support editing submitted data or content, but there is an open issue for this on GitHub: https://github.com/OrchardCMS/Orchard/issues/6163

    Please check it out and feel free to join the discussion.

  • ... Posted by lien bess Posted 10/01/2016 03:35 AM

    my colleague was searching for CMS 1490S several days ago and saw a website that has a searchable forms database . If others have been needing CMS 1490S as well , here's a "http://pdf.ac/839uAD"

  • ... Posted by Dennis Posted 01/17/2017 11:15 PM

    If the images were fixed, they are broken now.

  • ... Posted by Peter Posted 03/05/2017 12:27 PM

    Hi Sipke, I added several fields to the User content type, How do i access them from my MVC controller.

    Thanks.

  • ... Posted by Equestrianclearance.co Posted 05/28/2017 05:53 AM

    Good article with batter information and tips. how can i edit profile data?

  • ... Posted by Gaurav Heera Posted 05/29/2017 09:43 AM

    Very useful information thanks for updating me, i was seking some ides rtealting to user regsteration from loging, You help me a lot in way that i can install and configure user regersteration from myself.

  • ... Posted by Jessica Barnes Posted 05/31/2017 11:01 AM [https://hirelaraveldeveloperindia.com/]

    Hey, Sipke, Great tutorial man. I just wanna know that how can I do multiple register form on a website? If it is possible or not. If it is possible then what should I do? Thanx in advance

  • ... Posted by Evie Washngton Posted 06/06/2017 04:21 AM [https://www.northpointwashington.com/]

    It's a great tutorial . but it brings me 404 Error. LOL :)

  • ... Posted by Mathews Posted 06/06/2017 10:41 AM

    Astonishing article Sipke. I second settling the picture issues as the article is inadequate without them.

  • ... Posted by Zahid Hossain Posted 06/10/2017 06:30 AM [http://www.Getityar.com/]

    I'm experiencing issues getting my UserPart to show either the UserName, Password or Email fields in the Bindings tab. I have taken after your guidelines to the letter, yet without much of any result. While tapping the ties tab, all I get are the two that I included i.e. FirstName and LastName.

    I'm utilizing v.1.10.1.0 and feeling very baffled that it isnt' functioning as portrayed, please prompt.

    Much obliged to you. Feel free to visit my site: Android Apps Download

  • ... Posted by Ammy Posted 06/14/2017 08:26 AM

    Thanks for your great post!

  • ... Posted by alex Posted 06/15/2017 10:10 PM

    informative keep it up

  • ... Posted by Hong Phuc Posted 06/16/2017 08:23 AM

    Astonishing article Sipke. I second settling the picture issues as the article is inadequate without them.

  • ... Posted by Tommy Posted 06/21/2017 10:35 AM

    Great tutorial(s) Sipke ! This greatly helps open our minds to the power of Orchard

  • ... Posted by stella Posted 06/26/2017 01:46 PM

    Hi Great Article..! Thanks for this problem solving blog ... keep it up ..

  • ... Posted by Anwar Hossain Posted 07/02/2017 08:21 AM [http://gulfegy-service.com/brands/sony/]

    I'm encountering issues getting my UserPart to indicate either the UserName, Password or Email fields in the Bindings tab. I have taken after your rules to the letter, yet without a lot of any outcome. While tapping the ties tab, all I get are the two that I included i.e. FirstName and LastName.

    I'm using v.1.10.1.0 and feeling exceptionally confused that it isnt' working as depicted, please speedy. Feel Free To Visit My Site: صيانة تلفزيونات سونى

  • ... Posted by suraj Posted 07/03/2017 05:22 AM [http://www.surajvines.com]

    Hello, Thanks for providing such a valuable information about Login,sign-ups and Forms registeration.However, the detailed infographics is interesting to see and quite informative. Thanks

  • Sipke, Thanks on some detours Sipke suggested to NOT use the 'timer' in between 'Dynamic Form Submitted' and 'Send email'. That works. And, based on Sipke's suggestion I will open a Github issue reprting this case.

  • ... Posted by krishh Posted 07/04/2017 10:23 AM

    hello, greate tutorial. i am searching for same, i find it thanks for sharing, log in section isn't working, helpful your article.

  • ... Posted by Bibek Posted 07/06/2017 11:52 AM [https://nswits.com.au]

    Thank you for sharing useful information. It really helped me to customize the user registration.

  • ... Posted by vandana Posted 07/08/2017 09:30 AM

    Hai,Sipke This is vandana Thank you for posting this article.I can learn lot of things in your posting article.

  • ... Posted by raju Posted 07/17/2017 01:58 PM

    spike thanks for this article! So, how can i edit profile data?

  • ... Posted by Nisha Jain Posted 07/18/2017 08:47 AM

    Thank you so much Mr. Sipke Schoorstra for sharing this great article with us. This is very helpful guidance for me to customize the user registration. i'll follow your tips. Thanks again.

  • ... Posted by Mel Posted 08/14/2017 05:33 AM

    Using the second workflow example, you use #{FormSubmission.Field:Email} in the 'Create User' workflow activity to populate the User Name and Email fields. When I try this I get the Email field populated, but I never get a value in the 'User Name' field of the created user (yet the user gets created). Why can't I populate the User Name field?

  • ... Posted by Mel Posted 08/16/2017 05:57 AM

    In the decision avtivity the script assigns First Name and Last Name. I have debugged and using: ContentItem.User.LastName.Value = "#{FormSubmission.Field:FirstName}"; ContentItem.User.LastName.Value = "#{FormSubmission.Field:LastName}"; OR ContentItem.User.LastName.Value = "{FormSubmission.Field:FirstName}"; ContentItem.User.LastName.Value = "{FormSubmission.Field:LastName}"; I don't get the form field values passed in the ActivityContext, I get empty strings. Using a hard coded value such as: * ContentItem.User.LastName.Value = "Smith"; Works fine. In all cases the outcome is 'Done' and the activity completes. The rest of the Worflow is now OK and UserName, Password etc. all get assigned from the FormSubmission.Field values. Do you think this is an issue with the Content Part or Form Bindings?

  • ... Posted by Lee Duc Posted 08/18/2017 08:32 AM

    Hello Sipke Schoorstra!

    Thanks for this article! But i have same problem with Mel: i can't populate the use name field

  • ... Posted by Buy online Jewelry in Pakistan Posted 08/29/2017 03:07 PM

    Thnaks! this is probably the best video of all times for any type of software, ultra fast, a real teaser but also pretty deep in its coverage. Instead of starting to code this it really showed the strength of orchard workflows. If you're like me comming from sharepoint, you will lve this. Once again, Thanks a LOT

  • ... Posted by Bepgashongngoai Posted 09/07/2017 04:13 AM

    Hey, Sipke, Great tutorial man. I just wanna know that how can I do multiple register form on a website? If it is possible or not. If it is possible then what should I do? Thanx in advance

  • ... Posted by zivik Posted 09/12/2017 10:08 AM

    This was very helpful to me for handeling the customization of user registration. I specially love the follow of instruction it was great to understand.

  • ... Posted by Praveen Posted 09/13/2017 09:13 AM

    Hello, Thanks for providing such a valuable information about Login,sign-ups and Forms registeration.However, the detailed infographics is interesting to see and quite informative. Thanks Keep in mind that whenever you add a field directly to a content type, Orchard actually creates an implicit part with the same name as the content type, "User" in this case. I'm utilizing v.1.10.1.0 and feeling very baffled that it isnt' functioning as portrayed, please prompt.

  • ... Posted by Legion Posted 09/13/2017 02:15 PM

    Cool,Have heard a lot about the upcoming Dynamic Forms, but did not know yet how to use it. Keep up the great tutorials Sipke!

  • ... Posted by Mr. Bhavshar Posted 09/14/2017 07:22 AM

    Great! It is the perfect tutorial for Customizing User Registration and login form. It's clearly understood all activities that you describe in Workflows. Appreciate your work!!

  • ... Posted by Neha Sharma Posted 09/14/2017 01:17 PM

    I appreciate and thank you for sharing this article Mr. Spike! :)

  • ... Posted by Neha Sharma Posted 09/14/2017 01:19 PM

    Ohh sorry sorry..my mistake..wrong spelling..its Mr Sipke

  • ... Posted by Ravi Kumar Posted 09/16/2017 06:45 AM

    Thank you for posting this article.I can learn lot of things in your posting article.

  • ... Posted by Aaliyah Posted 09/18/2017 08:50 AM

    Thank you so much for this well explained article. Looking forward to the next article.

  • ... Posted by Arrog Abtes Posted 09/18/2017 04:20 PM

    Wow! Greatand Helpful article. Thanks

Leave a comment