Good Form 2.0
Good Form is a grails plugin that lets you create easy to use, good looking, easy to maintain, complex web forms.
15/10/2014: GoodForm 2.0.0 released - GoodForm 2.0.0 is a major upgrade to GoodForm with new features like templating and improved documentation.
Sophisticated question flow
By complex we mean forms with sophisticated logical flows based on business logic. For example, if the person filling in the form has just said they own a dog, you could ask about their dog license next.
Tested in the real world
Good Form was developed in conjunction with theLegal Aid Commission, and is behind their grant application form. Their grant application form has around 90 defined questions, many of which contain a number of sub questions. Good Form helps the user navigate a relevant path through the questions, only asking what is relevant and is self expanding using entered information as required.
Usability is the priority
Good Form represents the form in a continuous feed of groups of questions. Answers to previous questions are always visible for the user to refer to, and they can jump back to change an answer at any time. Good Form will re-evaluate from any change of answer and determine if any new questions, or a new route through the form should be taken, and ask the next relevant question. Existing answers will be re-used as appropriate.
The form filling process can be exited after any question set with the data saved. The user can then continue filling out the form from where they left off.
Made to maintain and change
Good Form provides a structure that lets you change forms easily without having to completely re-write your website. Questions are written in a simple, readable, form definition DSL (Domain Specific Language). The flow and business validation is performed by the One Ring rules engine, separating the business logic from the display and form mechanics. Form versioning lets you update your online forms even when you have a long running form entry process, where the form may remain incomplete for weeks or months. Finally Good Form provides ample expansion and customisation points so you can provide bespoke operations like referencing other systems and data, complex validation, auto-completion and more.
To get started check out:
- the documentation for GoodForm 2.0.0.
- the tutorial.
- the code https://github.com/nerdErg/GoodForm
- the video of the gr8conf presentation for GoodForm 1.0 http://bit.ly/163CZyG
- Templates for form elements - so you can change form elements
- default templates and CSS made for Bootstrap 3 and Font-Awesome
- removed many dependencies including nerdErg FormTags plugin
- Add your own form elements
- Built for Grails 2.4.3, but works back to 2.2
- uses rest-client-builder for talking to One Ring instead of HTTPBuilder
- asset pipeline compatible
- removed rendering plugin and ability to create PDFs - it wasn’t core
- improved documentation
- uses latest jquery 1.11.1 and jquery-ui 1.10.4 plugin
- output HTML is optimised using jericho html parser
- Added a SELECT form element type
- Move uploaded attachments to uploaded.file.location/formName/formInstanceID/ uploaded.file.location is a configuration option you set in config.groovy
- Enable the use of layout 'cartridges' to enable different layouts in a simple fashion with community contributed L&F. The idea is to make it both more HTML5 and backwards compatible. You should be able to use bootstrap for example, but it should be more accessible.
- Document how you do i18n by using multiple form definitions.