0.21.0
======
- #3 Add "Save an continue" Button. For forms with multiple pages formbar now
  renders a Save and continue submit button. An application can exime the
  request if the user has clicked this button to set active the next page on
  rendering.
- Add support for HTML code in help blocks.
- Added support to define validators directly in the form config.

0.20.3
======
- Allow user defined values on form initialisation. Needed for specific rules
  evaluations which relay on external data.
- Added "ignore" attribute to buttons to allow rendering forms with no
  buttons at all.

0.20.2
======
Bugfixes.

0.20.1
======
Bugfixes.

0.20.0
======
Large rewrite of the Javascript part and large parts of formbar to make
formbar more dynamic in case of showing messages on errors and warnings.

0.18.3
======
- Fixed selection filtering with user provided values.

0.18.2
======
- Fixed error on evaluating checkboxes.

0.18.1
======
- Fixed error that submitted unsaved values are not displayed in the form again if the
  form contains errors. This results in loosing the new entered data.
- Fixed error of dataloss in case of readonly checkbox fields on submit.

0.18.0
======
- Added new HTML directive. This can be used to insert custom html code in the
  form e.g lists and images.
- Improved performance: Do not build rules on loading a form configuration.
  Only build rules if they are actually needed (On rules evaluation). This
  improves the performance by almost factor of 2.
- Make simple left aligned numbering of textfield renderers work again.
- Added "maxlength" attribute to textareas. If set a small indicator is shown
  below the textfield counting the remaining chars.
- Gray out sections and text areas too if a conditional is inactive.
- Allow filtering of options in user defined options based on additional
  attribute in the option.

0.17.5
======
Bugfix and Maintenance release

- Fixed bug in inheritance code which adds a optional prefix to '$' variables
  in rules.

0.17.4
======
 * Render global error and warning messages in forms without pages too. Fixed
   bug that these messages were only shown for forms with an outline.
 * Added --tags option to generate.py to filter fields with specific tags.
 * Added command 'fieldnames' to only render fieldnames instead of the model.
   Additionally there is a aslist flag to render the names as a python list

0.17.3
======

 * Fixed annoying bug of jumping curson in textfields. If the user changes
   something in the middle of a textfield the cursor jump immediately to the
   end of the textfield again. This makes it quite impossible to work with
   textfields.

 * Fixed handling of static rules. In case the the form validation failes the
   `form.data` attribute is empty. This resulted in failing rule evaluations of
   static rules because there was not dictionary of valuea available. Now use the
   loaded_data in case the form.data is empty.

0.17.2
======
- Prevent forms from double submission on default.
  Added "disable-double-submit-prevention" css class which can be used
  in the form definition to explicit disable the submit prevention.
- Refacored code when initialising the form. Fixed/Improved comments on the
  involved methods.
- Fixed bug the getting only evaluable fields on validation reinitialized the
  form which leads to later problems on rule evaluation because of missing
  fields.
- Make logging warnings when trying to access attributes of the linked item
  more tolerant on errors. So only log those errors if the item is not fresh
  created as in this case chances are high that relations or other values are
  missing. Logging in this case would lead to too much false positives.
- Prevent forms from beeing double submitted. This is done on client side
  using JS.
- Cleanup of code to reset and remove values in the form in case a conditional
  becomes readonly.
- Fixed Bug of failing cascading resetting of field values in case of nested
  conditionals.

0.17.1
======
- Added entity-prefix attribute to the include directive.
- Some cleanup after the move from bitbucket to github. Close branches and
  remove mercurial specific configurations.

0.17.0
======
- Added include function. Includes can be used to include the content of a
  another configuration file in a form configuration.
- Added inheritance function. Inhertance can be used to inherit from a base
  form and onyl modify small parts of the form.

0.16.1
======
Bugfixrelease

- Fixed broken JS code to enable and disable fields because of conditionals.
  This also fixed broken saving of checkboxes.

0.16.0
======
- New option "reset-value" for conditionals.
- Improved conditionals. For conditionals with "reset-value" attribute set to
  "true" the following bahaviour has been improved:
  If the conditional becomes False and fields within the conditionalcondit
  become readonly or invisible, the value of all fields will be deleted to an
  empyt value. If the conditional becomes True again before the form has been
  submitted the initial values of the fields within the forms will be
  restored.
- Make readonly checkboxes and radio buttons not clickable.

0.15.2
======
Bugfix release:

- Fix handling of empty string values and make them unicode too.
- In case of InfoRender try to get the value from the item even if the entity
  is not included in the form. This is needed to be able to work with the
  value attribute.
- Set datatype attribute of hidden fields to fix data conversion on client
  side.

0.15.1
======
Bugfix release:

- Improved rule evaluation. Only try to get values for rules evaluation if the
  field is in the form. Reduces number of warnings in logfile.
- Fixed rendering of Radiofields. Removed support for fields which can have
  mulitple values as a Radiofield can only handle one value.
- Fixed client side data conversion of date fields for rule evaluation.


0.15.0
======
- Added new renderer "Textoption". A textoption field is basically a selection
  field which can be used to set multible values. In a textoption field the
  values can be entered in a textfield. The textfield has support for
  autocompletion which offers the available options.
- Added support for form wide errors and warnings using external validators.
  Form wide errors and warnings are shown at the top of every page of the
  form.

0.14.1
======
- Fixed rendering filtered items in checkbox renderer.

0.14
====
- Added configuration attribute to the renderer to configure an indent and
  styling of the field element(s).
- Added configuration attribute to the label to configure the position of the
  numbering in the label.
- Added configuration attribute to set a background for the label.
- Changed margins and font sizes of headings in the form to make the form more
  compact and improve the visual difference of the headings. Margins are
  reduced and differences between headings are larger now.

0.13
====
- Added attribute to configure how to display the help on the field. Show help
  on fields as tooltip per default. On behaviour can be reestablished by
  setting the display attribute of the help to "text".
- Remove default "Reset" form button. Asking people using forms shows
  that almost nobody is using a reset button in the forms. If you want
  to have a reset button than you need to define a custom button bar now
  in the form.
- Hide submit buttons on pages of forms with no input elements.

0.12
====
- Extract text form button for internationalisation.
- Fixed affix of outline sidebar on forms.
- Implement remove_filtered for dropdown elements too.

0.11
====
- Added support for metadata sections in the form configuration. This metadata
  is used together with the entity, and layout sections to generate a
  specification of the forms.
- Added formspec.py command to generate the speficication. 

0.10
====
- Modified "onchange" event for textfield. Detect if user stopped typing in
  a textfield and trigger evaluation of rules after 750ms automatically.


0.9.13
======
- Fixed type detection for VARCHAR fields.

0.9.12
======
- Raise deserialisation error when time format ist wrong.

0.9.11
======
- Performance Improvement: Do not evaluate all conditionals when a values
  changes in the form. Only evalute the conditionals which are affacted by the
  change.

0.9.10
======
- Enabled translation of the error messages while type conversion to python.
- Limit integer data type to 4byte (which is the value for integer datatype in
  a postgres database.)

0.9.9
=====
- Relaxed email validation. Removed client side checks for input values and
  removed server side validation of the local part of an email address.
- Fixed (workaround) getting default values for checkboxes in mako template.

0.9.8
=====
- Implemented server side evaluation of conditionals while rendering.
- Added interval type.
- Added placeholder configuration variable
- Implemented brabbel expressions in default value using "%" (Useful to get
  the current date.)
- Moved converters for serialisation and deserialisation into its own module
  (converters.py)
- Started to improve client side rule evaluation. In case the input element
  has the data type attribute set then try to convert the value of the field
  into the right representation for rule evaluation.
- Started to improve performance on form initialisation. First store the
  fields in a dictionary per page to make the access to fields on a specific
  page faster.

0.9.7 (alias 0.9.6)
===================
- Added autofocus attribute in field configuration (Textfield only yet)
- Fixed getting values from checkbox and radio fields.
- Fixed getting accepted language from browser. Now using locale setting from
  evaluate response.
- Implement filtering on user defined rules
- If no value can be get from a field then set the value to "None" in
  expressions to ensure the expression is valid.
- Removed datutils dependency as it is not py3 ready. Actually only the
  python-dateutil library is needed.

0.9.5
=====
- Add special logic for ringo items when rendererd in info fields. In this
  case display the expanded values.
- Do not show any value in the password field.
- Set requirement to brabbel >= 0.2.6
- Improve generation of model generation based on form definition.
- Added option configure a locale for the form. This is needed to render form
  elements like the datepicker with the correct locale settings.

0.9.4
=====
- Add url_prefix as new parameter for forms. This prefix will be used to build
  correct urls in case the application which uses formbar is hosted in a
  subpath. (eg. example.com/foo).

0.9.3
=====
- Fixed demo server to make it start up again (Still some flaws in it).
- Worked on documentation.
- Some layout in forms.

0.9.2
=====
- Fixed getting values from select fields if no value is selected and the
  value may be empty. In this case the application send all options to the server.
- Do not include "nullable" when generate model definitions from form definition.
- Restructured documentation.

0.9.1
=====
- Add option to options to define a attribute of the item where to load the available
  options from.

0.9
===
- Set autocomplete="off" for password fields.
- Added serialisation of dates.
- Security fix: Fixed potential code injection issue by removing the rule
  parsing out of formbar and use brabbel library for rule parsing and
  evaluation.

0.8.3
=====
- Added translation for warning and error messages.
- Added translation of options in dropdown fields.
- Fixed "readonly" mode for select fields. Select fields need a disabled
  attribute instead of a readonly attribute.

0.8.2
=====
- Added email field.

0.8.1
=====
- Removed dependency to formencode.
- Added experimental special logic to submit unselected items for radio and
  checkbox input fields.
- Render diff to previous value in dropdowns too.
- Add Section elements.

0.8.0
=====
- Added renderer for checkbox fields.
- Added renderer for radio fields.
- Added label tag for the renderer to have more option on rendering the fields
  label.
- Added support to configure simple text element within the form.
- Removed "star" indicator at labels for requierd fields.
- Support (+,-,*,/) and logical grouping of elements
- Conditionals supports now hidding whole pages.
- Table rendering: td and th supports row and colspan.

0.7.2
=====
- Changed Bootstrap version of demoserver to ver. 3.
- Changed example form. Show all possibilities in one form.

0.7.1
=====
- Set value of the field always on rendering (Fixes issue with dropdown fields in view model
- Split loading and filtering of options. Make filtering option available as
  method for external applications.
- Add support for defining buttons in a form. This is optional. If no form
  section is defined the default buttons will be added.

0.7.0
=====
- Added new renderer to render a editor for formbar forms. The editor support
  depends on a service which will render the form. This is not part of the
  editor. See ringo version > 0.12.0 for an example. Renderer support a live
  preview of the form.
- Removed injected "eval_url" in the formbar.js file. The js file is now
  static. The eval url must now provided on form initialisation.
- Use ACE editor for formbar editor. (http://ace.c9.io/)

0.6.5
=====
- Added support for the "value" attribute in the form configuration to define
  a default value of the field. This attribute is also used for Infofields.
- Added support for the "and" and "or" operators in rules.
- Added another variable identifier "@" in filter definitons of selection
  renderers. Variables beginning with "@" indicate a attribute in the forms item.
- Added another variable identifier "$" in filter definitons of selection
  renderers. Variables beginning with "@" indicate a special values like
  "$user" for the current user of the request.
- Add renderer option "remove_filtered" to completely ignore filtered items in
  selection list rendering.

0.6.4
=====
- Fixed rule evaluation. Allow " and ' in rules.
- #5. Added basic filtering on selections. Currently only works on SQLAlchemy relations.

0.6.3
=====
- Workaroud for https://github.com/formencode/formencode/pull/58
- Added "rows" attribute for textarea. (Renderer attribute)
- Add option to provide a external service to evaluate rules.
- If external service for rule evaluation is defined use this service for
  client side evaluation.
- Add support for nested fieldset elements up to three levels.
- Replaced bootstrap-datepicker. Now using: https://github.com/eternicode/bootstrap-datepicker
- Add HTML-Renderer. Can be used to include custom HTML in the form.

0.6.2
=====
- Add "History" feature. You can now optionally provide a dictionary with old
  values and the form will renderer the differences to these values in a nice
  visual way in read only mode. This is very similar to the change history
  known from other office products.
- Fixed bug in evaluating expressions in JS when rendering read only mode. Add
  value attribute for readonly dropdown fields holding the unexpanded value.

0.6.1
=====
- Fixed bug in deserialisation. Do not ignore readonly fields on
  deserialisation.

0.6.0
=====
- Added support for warning rules.
- Refactored serialisation, deserialisation, validation and rendering of the
  form. Splitted up the code to make it more readable.

0.5.2
=====
- Fix error on saving manytomany or onetomany relations. If there was only on
  item linked. The saving fails and other items are linked.
- Fix providing external values while rendering the form through the render
  function. Changed values merge mechanism.

0.5.1
=====
- Fix serialisation on GET requests.
- Implement serialisation of datetimes.

0.5.0
=====
- Added support for conditionals.
	- Conditionals are evaluated based on JavaScript on the client side
	- Conditionals are evaluated with Formed-Rules on Server side
	- Rules for fields which are with in a disabled conditional are now
	  exluded from validation.
- Rules are now checked after the basic type conversation is done. Pre rules
  will still validate on the raw submitted (unconverted) data.
- Changed default mode of rules from "pre" to "post"
- Clean submitted data. The submitted data will be cleaned on validation.
  Values for fields which are not actually configured in the form are erased
  from the submitted data.
- Show number of errors in the form outline for every page.
- Rendering of buttons can now be disabled on rendering the form using
  (buttons=false) as paramenter.
- Fixed preloading values on form rendering.
- Refactored code for evaluating expressions.

0.4.6
=====
- Added Renderer for hidden fields.

0.4.5
=====
- Make formbar compatible with Bootstrap 3

0.4.4
=====
- Added datetime conversion. Converts submitted strings in with format
  "2013-10-10 22:42:31" into a datetime.
- Change Layout of the buttonpane. Removed margin and padding. No background.


0.4.3
=====
- Added "time" fields. Will take the time in the form "HH:MM:SS" and converts
  it into the total amount of seconds.
- Fixed error in rule evaluation with non ascii values. The values are now
  converted to ascii (non ascii values are replace with '?') before
  evaluating.
- Improved "tabbing" in forms. Markers for required fields aren't links
  anymore which are tabable.
- Added support for CSRF protection. The form can now be initialised with a
  token for CSRF protection which is rendered as hidden field in the forms.

0.4.2
=====

- Added support for File Fields.

0.4.1
=====

- Added support for table rendering as additional layout element. Follows
  basically the html syntax (table, tr, th, td).
- Added support InfoFields. Infofields are not part of the datamodel. The are
  used to display dynamic calculated values.
- Added helper script "generate.py" to generate various information about the
  form configuration. E.g generate the SQLAlchemy model.
- Added optional request param for form initialisation. The current request
  from a wenframeform can no be provided to the form. This might be usefull
  while rendering with external renderers.

0.4.0
=====

- Removed FormAlchemy dependency. This includes some internal refactoring as
  the rendering and converting of values (especially relations) must now be
  done by formbar.

0.3.1
=====

- Fixed readonly view for textarea. Replace \n with <br>
- Added "in" rule operand. ($field in ['1','2','3'])

0.3
===

- Added a configurable JS-Callback function which is called when the user
  changes the currently selected page. The function will sent some information
  (selected page, item, itemid) to a configurable URL. The server behind the
  URL can save these values in a session and reuse it to preselect the page on
  the next form rendering.

Form-Rendering:
- Splitted up rendering of forms. The Fieldrenderer now renders label, field,
  help and errors seperately for each field.
- Enabled customs Renderers. Among the default FA Renderes wen can now
  configure our own renderers more easly. The goal is to  get rid of the FA
  Alchemy dependencie.

0.2.2
=====

- Added a new DatefieldRenderer which uses a bootstrap specific datepicker
  widget. Needs JS. Currently this widget is used if the datetype "date" is
  provided.
- Added helper method to get the needed JS code for formbar. Needed in other
  libraries.
- Renderer is not set depending on the datatype anymore. Default renderer is
  a TextfieldRenderer or the Renderer set by Formencode.
- Renderer is only set by the renderer attribute for an entity
- Fix in setup.py. Use hgtools to build package.
- Added support for pages in forms.


0.2.1
=====

- Added support for i18n. A translation function like gettext can now be
  injected on initialisation of a form.

0.2
===

- Changed initialisation of field.
- Implemented dropdonw field
- Layout Change. Field height is now 30px to match the Ringo form layout.

0.1
===

- First working version.
