a colleague has been evaluating Formulate and come up with a comprehensive list of items.
Would it be okay to post this feedback here?
Thanks
Muiris
PS I myself evaluated Umbraco's own form builder but unfortunately it looks like I won't be able to use it because we are stuck on WebForms for the moment.
Formulate forms look and behave far better than the forms package on our old CMS.
The main things missing, are CAPTCHA (Issue #2) and the ability to copy forms (Issue #18).
However, the emails can be difficult to read and the submission lists difficult to compare.
UI
The Rotating + to x icon was confusing at first (Issue #77). I
thought it looked like Add and Delete.
The pointer over expand and delete buttons (Issue #80) doesn’t show
they’re clickable.
I’m not sure in what order Data Values are presented in a picker
(Issue #73) but I’d expect it to be alphabetical.
There’s an occasional stack overflow in Tiny MCE when editing Rich
Text fields.
Currently selected validators aren’t persisted in the picker so
picking a new one wipes out those already picked unless all are
picked again. That behaviour may be intentional but it wasn’t
expected.
Dragging left to select text in some fields (e.g. Create Folder,
Layout, Data Value or Validation) closes the panel instead.
Choosing an orientation for radio button lists doesn’t appear to do
anything except set a class. Am I expected to implement this myself
in CSS?
Saving a Handler switches to the Form tab.
I can’t see all form submissions (Issue #82). There’s no scrollbar.
Update: Already fixed
It’s possible to create a folder as a child of a form. This may also
apply to folders in other trees but I haven’t tested those.
Steps to reproduce:
Click a form.
Quickly click the ellipsis on Forms (while the tree refresh animation is playing).
Click Create Folder from the menu.
Enter a name and click Create Folder button.
The folder will be created as a child of the selected form instead of Forms.
If you refresh now, you’ll find that you can’t expand the
tree of the affected form. I had to locate and delete the errant
folder’s JSON file from the file system.
Regular expressions give Formulate scope for better validation than the forms package in our old CMS.
Prepending ^$| to expressions allows them to be optional.
I was surprised at the omission of maxsize. Perhaps this is intended to be implemented using regex validation, which I’ve done along with max word count so bonus.
Comparison validation, slated for a future release, would be nice
but it's not essential.
How can we require at least 1 selection from a checkbox list? I
tried a mandatory validator and regex ^.+$
My guess is that it’s trying to test the group’s value instead of the individual items.
I would very much like multi-field conditional validation, where
validation of one field is dependent on the value of another. e.g.
an ‘if other, please specify’ type of field is only required when
‘other’ is selected from a list of options. Another example would be
where the appropriate email, telephone or address fields are only
required depending on the selected value or values of a ‘preferred
method of contact’ or ‘how would you like us to respond’ list.
Perhaps this will come naturally with Composite Fields (Issue #61)
I don’t know whether ‘Allow field to be blank’ would be better as
an option of a field, an option of a validator, or part of the
expression so I’ll just throw it out there anyway for comment but not
as a request.
Emails are plain text. This is no bad thing.
Logos are nice but we can live without them.
I’m liking multiple handlers with specific fields. This lets us send parts of a form to different departments. e.g. Equal Opportunities monitoring.
Fields are returned in the order of completion (Issue #68) and not
in the order defined in the form. This is especially problematic
where groups of fields can become mixed up. e.g. a change of tenancy
form with four sets of contact details (landlord/agent, property,
tenant, previous tenant) which can become intermingled. Update:
Already fixed and planned for the next release.
How do we get Heading and Rich Text fields to display in emails?
They break up blocks of fields nicely in forms but are absent from
emails. Some text may also be a statement that we ask people to
agree to so is an essential part of the email. Headings at least,
even plain text with double line breaks, would enhance the
readability of emails.
Can handlers be selected in configurations (Issue #50) to reuse
common forms with different handlers? We have many copies of a
standard contact form that are emailed to different people. I was
initially hoping to set this up as one form, two layouts (English and
Welsh) and many configurations (one for each combination of layout
and handler).
Can forms be copied? (Issue #18). This is linked to the point above.
If handlers have to be picked per form then multiple copies of forms
may be required. A JSON file copy and rename (Issue #45) helped here
but it would be nice if this could be done from within the system.
Is it possible to change the type of a Data Value e.g. from List to
List Function without locating and updating the forms it is used in?
Is it possible to re-order a Data Value List without deleting and
re-adding items? e.g. if adding a new item to an alphabetised list.
Drag and drop would be handy here, like re-ordering fields.
Could there be a ‘sort alphabetically’ (by text) button on lists?
That may just be me being lazy but it would be nice.
What is the Text Constant field type for? I don’t see it in layouts
or emails.
Angularjs directives aren’t prefixed data- so don’t pass w3c HTML
validation. It makes it more difficult to check our own code for
errors.
I find there’s a certain amount of repetition, particularly with
handlers. Would it be possible to set defaults, e.g. the from email
address? I like the idea of settings (Issue #43) in general. Perhaps
defaults could become part of this.
When it came to styling (Issue #38), I found it necessary to inspect
the rendered form to identify appropriate classes. Is there some
reference document I missed?
There’s no audit trail (Issue #51)
Documentation in general is rather sparse (Issue #76, #40, #38, #36,#34, #32, #31). I know the system is extensible and that may be the answer to some of my questions here but I’ve no idea how it all
works.
How to set number of rows in a text area field? You don’t. Set CSS
height instead.
textarea.formulate__control
How to change colour of error messages? Again, CSS
.formulate__error-msg
Things we have yet to do in our implementation of Formulate
Style text area height, error message colour checkbox margin and
radio button list orientation. The rest works great as Bootstrap
defaults.
Create List Functions where values could come from existing data and
could update automatically e.g. School Names.
Integrate Google Analytics. I’m not yet sure how to do this but I
expect it has something to do with hooking into an event on
successful submission (Issue #76).
That's it!
I hope we haven't blown you away with all of this, and we are finding the package really useful!
I will try to respond to everything this weekend (no time at the moment, I'm afraid).
If you or your colleague are interested, I would love to have a few more contributors to the core of Formulate. I have had lots of what you are mentioning on my own wish list, but simply no time time implement all of it.
Thanks Nicholas, glad to be able to offer some feedback.
Myself and my colleague work for local government in the UK and at the moment, our time is completely spent transferring from our old CMS to Umbraco - almost 12 years work - a massive undertaking, and a huge learning curve.
I'm hoping that when we come up for air, and have Umbraco live and on a steady keel, we can contribute more to the Umbraco community.
for my own part, I would like to know if there are any issues regarding SQL Injection if the data is stored into a database table.
There should be no issues with SQL injection. I'm well aware of the vulnerability, and have built queries in such a way that SQL injection should be impossible.
However, it is currently possible to create your own submission handler (e.g., one that sends emails in the exact way you prefer). I you have specific ideas for how to increase the readability of emails, please feel free to submit a feature request.
the submission lists difficult to compare
I suspect you are talking about how the fields are presented vertically rather than horizontally in a traditional table. This was an intentional choice, given how many fields tend to appear in a typical form.
There is the option to export to CSV, which when opened in Excel is easier to read. I am also open to suggestions for how to improve this. I have an idea or two myself, but likely won't get to them anytime soon as the CSV option typically works well.
The Rotating + to x icon was confusing at first (Issue #77). I thought it looked like Add and Delete.
I agree that could be confusing. Open to suggestions. If you see better icons, that might be a good place to start: https://icomoon.io/app/#/select
The pointer over expand and delete buttons (Issue #80) doesnt show theyre clickable.
As you've correctly noted, that is intended to be addressed as part of issue #80.
Im not sure in what order Data Values are presented in a picker (Issue #73) but Id expect it to be alphabetical.
That has been bothering me too. Hope to get to issue 73 that soon.
Theres an occasional stack overflow in Tiny MCE when editing Rich Text fields.
I'd be curious to know more about this in an issue report. I am aware of an issue where RTE's don't like to be dragged, but since saving the form works around that I haven't invested any time in addressing it. Would be good if you created an issue though so at least somebody can snag it if they find they have time.
Currently selected validators arent persisted in the picker so picking a new one wipes out those already picked unless all are picked again. That behaviour may be intentional but it wasnt expected.
Others have mentioned this to me as well. I'd like to improve that, but it's not super high on my priority list. Open to a pull request (though I'd recommend creating an issue soon so more eyes can be aware of it and possibly opt to do the pull request).
Dragging left to select text in some fields (e.g. Create Folder, Layout, Data Value or Validation) closes the panel instead.
Not entirely sure I'm interpreting this correctly, but if I am it sounds like a core bug. An bug report with a video capture or annotated screenshot might help to clarify this.
Choosing an orientation for radio button lists doesnt appear to do anything except set a class. Am I expected to implement this myself in CSS?
Yes, this is intended to be done purely with CSS. I've been thinking of included a basic set of CSS styles, but I also don't want to encourage people to overly rely on those CSS styles (the forms should be styled for your current website theme).
Saving a Handler switches to the Form tab.
Haven't figured out a way around this, though I think I have another task to split out handlers anyway, at which point this would become moot.
I cant see all form submissions (Issue #82). Theres no scrollbar. Update: Already fixed
Indeed, it has been fixed.
Its possible to create a folder as a child of a form. This may also apply to folders in other trees but I havent tested those.
Interesting. Definitely not intended. Could you submit an issue report for that?
Would be something like this (assuming a max length of 75):
^.{0,75}$
However, I would be open to adding a new category of validation (i.e., "max length") if somebody were to submit a pull request.
How can we require at least 1 selection from a checkbox list?
Mandatory validation should work. Sounds like it's not, so a bug report would be appreciated.
I would very much like multi-field conditional validation
This could get super complicated, fast. I'd be open to options, though when things start straying down this direction, I tend to simply start customizing Formulate. That is, I'll write some JavaScript that looks for a field called "contactMethod". When set to "Email", I handle the form in one way; when set to "Phone", I handle the form in a different way.
There are probably a few things I could do to help facilitate this from the Formulate core side (e.g., expose a "value changed" JavaScript event), so would love to collaborate with you on this to figure out what would be most useful.
I dont know whether Allow field to be blank would be better as an option of a field, an option of a validator, or part of the expression so Ill just throw it out there anyway for comment but not as a request.
I usually just build my regular expressions to allow for blanks. If I want something to be mandatory, I select a mandatory validation.
Integrate Google Analytics. Im not yet sure how to do this but I expect it has something to do with hooking into an event on successful submission (Issue #76).
There is an event that you can hook into with Angular. Will hopefully be documented at some point, but it's something like "FormSubmission.OK". This is how we handle analytics.
Fields are returned in the order of completion (Issue #68) and not in the order defined in the form.
As noted, has been fixed.
How do we get Heading and Rich Text fields to display in emails?
Maybe I can include some option on the form submission handler to "include transitory fields in email". Alternatively, you could create your own versions of these fields that get included in emails. Either way, a feature request on the issue tracker would be appreciated.
Angularjs directives arent prefixed data- so dont pass w3c HTML validation. It makes it more difficult to check our own code for errors.
I assume you are talking about the attribute directives, though I suppose you could also be talking about element directives. Can you clarify this in an issue report?
I find theres a certain amount of repetition, particularly with handlers. Would it be possible to set defaults, e.g. the from email address? I like the idea of settings (Issue #43) in general. Perhaps defaults could become part of this.
This might be best implemented as events that allow you to modify the form itself (e.g., a form creation event that allows you to set defaults). A feature request would help us to explore these options in more depth.
When it came to styling (Issue #38), I found it necessary to inspect the rendered form to identify appropriate classes. Is there some reference document I missed?
That's pretty much your best bet for now. I'm on the fence; either I'll add some example CSS, or add a bunch of CSS snippets in the form of documentation.
Theres no audit trail (Issue #51)
Definitely want to add that. I you have some particular events you want to see in the audit trail, please mention them on that ticket.
Documentation in general is rather sparse
Agreed. Perhaps it would be better if I focused more on documentation than on features. That might help the community to start contributing code themselves.
Though, now that you've figured out a few things yourself, I would invite you to add some documentation yourself. The documentation website is itself open source and open to contributions: http://www.formulate.rocks/
I think that comprehensively covers all the points, thank you.
Although, when I mentioned readability and ease of comparison, I was referring to the lack of headings and variable order of fields. The latter is the more important and you've already fixed it so great. Thanks again.
Testing formulate
Hi Nicholas
a colleague has been evaluating Formulate and come up with a comprehensive list of items.
Would it be okay to post this feedback here?
Thanks Muiris
PS I myself evaluated Umbraco's own form builder but unfortunately it looks like I won't be able to use it because we are stuck on WebForms for the moment.
The more feedback, the better!
Nicholas
for my own part, I would like to know if there are any issues regarding SQL Injection if the data is stored into a database table.
Here are the comments from my colleague (he will set up his own account here shortly):
It might read like a wish list but there are issues too.
Some of what I noted is already in the issue tracker. https://github.com/rhythmagency/formulate/issues
General Impression
Formulate forms look and behave far better than the forms package on our old CMS. The main things missing, are CAPTCHA (Issue #2) and the ability to copy forms (Issue #18). However, the emails can be difficult to read and the submission lists difficult to compare.
UI
If you refresh now, you’ll find that you can’t expand the tree of the affected form. I had to locate and delete the errant folder’s JSON file from the file system.
/more...
Validation
Regular expressions give Formulate scope for better validation than the forms package in our old CMS. Prepending ^$| to expressions allows them to be optional.
I was surprised at the omission of maxsize. Perhaps this is intended to be implemented using regex validation, which I’ve done along with max word count so bonus.
My guess is that it’s trying to test the group’s value instead of the individual items.
/more...
Emails
Emails are plain text. This is no bad thing. Logos are nice but we can live without them. I’m liking multiple handlers with specific fields. This lets us send parts of a form to different departments. e.g. Equal Opportunities monitoring.
/more...
Other Features
/more...
Questions I think I’ve been able to answer myself
Things we have yet to do in our implementation of Formulate
Style text area height, error message colour checkbox margin and radio button list orientation. The rest works great as Bootstrap defaults.
Create List Functions where values could come from existing data and could update automatically e.g. School Names.
Integrate Google Analytics. I’m not yet sure how to do this but I expect it has something to do with hooking into an event on successful submission (Issue #76).
That's it!
I hope we haven't blown you away with all of this, and we are finding the package really useful!
That is an AWESOME list of feedback! Thank you!
I will try to respond to everything this weekend (no time at the moment, I'm afraid).
If you or your colleague are interested, I would love to have a few more contributors to the core of Formulate. I have had lots of what you are mentioning on my own wish list, but simply no time time implement all of it.
Thanks Nicholas, glad to be able to offer some feedback.
Myself and my colleague work for local government in the UK and at the moment, our time is completely spent transferring from our old CMS to Umbraco - almost 12 years work - a massive undertaking, and a huge learning curve.
I'm hoping that when we come up for air, and have Umbraco live and on a steady keel, we can contribute more to the Umbraco community.
Thanks Muiris
There should be no issues with SQL injection. I'm well aware of the vulnerability, and have built queries in such a way that SQL injection should be impossible.
Just created this ticket: Support HTML Emails
However, it is currently possible to create your own submission handler (e.g., one that sends emails in the exact way you prefer). I you have specific ideas for how to increase the readability of emails, please feel free to submit a feature request.
I suspect you are talking about how the fields are presented vertically rather than horizontally in a traditional table. This was an intentional choice, given how many fields tend to appear in a typical form.
There is the option to export to CSV, which when opened in Excel is easier to read. I am also open to suggestions for how to improve this. I have an idea or two myself, but likely won't get to them anytime soon as the CSV option typically works well.
I agree that could be confusing. Open to suggestions. If you see better icons, that might be a good place to start: https://icomoon.io/app/#/select
As you've correctly noted, that is intended to be addressed as part of issue #80.
That has been bothering me too. Hope to get to issue 73 that soon.
I'd be curious to know more about this in an issue report. I am aware of an issue where RTE's don't like to be dragged, but since saving the form works around that I haven't invested any time in addressing it. Would be good if you created an issue though so at least somebody can snag it if they find they have time.
Others have mentioned this to me as well. I'd like to improve that, but it's not super high on my priority list. Open to a pull request (though I'd recommend creating an issue soon so more eyes can be aware of it and possibly opt to do the pull request).
Not entirely sure I'm interpreting this correctly, but if I am it sounds like a core bug. An bug report with a video capture or annotated screenshot might help to clarify this.
Yes, this is intended to be done purely with CSS. I've been thinking of included a basic set of CSS styles, but I also don't want to encourage people to overly rely on those CSS styles (the forms should be styled for your current website theme).
Haven't figured out a way around this, though I think I have another task to split out handlers anyway, at which point this would become moot.
Indeed, it has been fixed.
Interesting. Definitely not intended. Could you submit an issue report for that?
Yep, can be done with regex. Would probably be good to include such a regex with the sample validations I hope to add at some point: https://github.com/rhythmagency/formulate/issues/24
Would be something like this (assuming a max length of 75):
However, I would be open to adding a new category of validation (i.e., "max length") if somebody were to submit a pull request.
Mandatory validation should work. Sounds like it's not, so a bug report would be appreciated.
This could get super complicated, fast. I'd be open to options, though when things start straying down this direction, I tend to simply start customizing Formulate. That is, I'll write some JavaScript that looks for a field called "contactMethod". When set to "Email", I handle the form in one way; when set to "Phone", I handle the form in a different way.
There are probably a few things I could do to help facilitate this from the Formulate core side (e.g., expose a "value changed" JavaScript event), so would love to collaborate with you on this to figure out what would be most useful.
I usually just build my regular expressions to allow for blanks. If I want something to be mandatory, I select a mandatory validation.
The built in US States list function is a good example of this: https://github.com/rhythmagency/formulate/blob/1433de6699e2faf525f9fda628632d02a21075db/src/formulate.app/DataValues/Suppliers/Kinds/UsStateSupplier.cs
It's pretty darn simple.
There is an event that you can hook into with Angular. Will hopefully be documented at some point, but it's something like "FormSubmission.OK". This is how we handle analytics.
https://github.com/rhythmagency/formulate/issues/83
As noted, has been fixed.
Maybe I can include some option on the form submission handler to "include transitory fields in email". Alternatively, you could create your own versions of these fields that get included in emails. Either way, a feature request on the issue tracker would be appreciated.
Hopefully someday, but not very high on my priority list.
This is probably one of those things that I'll probably implement someday out of necessity, but I don't have a clear timeline.
That would be a neat feature. Probably more complicated than it appears. The best place to start would be to submit a feature request.
Would definitely like to add drag drop to that. If you submit a feature request, it will be more likely to be addressed sooner.
Makes a lot of sense. Can you submit a feature request?
I use it to send constant values to web API's: https://github.com/rhythmagency/formulate/blob/2301bfcd6f3546be9ddc5d45ceb688250480e51d/src/formulate.app/Forms/Fields/TextConstant/TextConstantField.cs#L16
I assume you are talking about the attribute directives, though I suppose you could also be talking about element directives. Can you clarify this in an issue report?
This might be best implemented as events that allow you to modify the form itself (e.g., a form creation event that allows you to set defaults). A feature request would help us to explore these options in more depth.
That's pretty much your best bet for now. I'm on the fence; either I'll add some example CSS, or add a bunch of CSS snippets in the form of documentation.
Definitely want to add that. I you have some particular events you want to see in the audit trail, please mention them on that ticket.
Agreed. Perhaps it would be better if I focused more on documentation than on features. That might help the community to start contributing code themselves.
Though, now that you've figured out a few things yourself, I would invite you to add some documentation yourself. The documentation website is itself open source and open to contributions: http://www.formulate.rocks/
You can create documentation by submitting pull requests for this branch: https://github.com/rhythmagency/formulate/tree/gh-pages
Thanks again for all the feedback. Please let me know if I missed responding to anything in particular that you wanted a response to.
I think that comprehensively covers all the points, thank you.
Although, when I mentioned readability and ease of comparison, I was referring to the lack of headings and variable order of fields. The latter is the more important and you've already fixed it so great. Thanks again.
is working on a reply...