Add Dutch translation.
Add the deform.widget.DateTimeWidget widget, which uses the jQueryUI Timepicker add-on.
DateTimeWidget uses the ISO8601 combined date and time format internally, as expected by colander.DateTime, but converts to the more friendly separate date and time format for display in the widget.
This widget is now the default for colander.DateTime schema types.
Upgrade to jquery-ui 1.8.11, as required by the timepicker.
Compile all .po files to .mo in deform/locale and remove Texan locale (funny, but breaks python setup.py compile_catalog with an UnknownLocale error.)
Fix references to repoze.bfg and update obsoletes URLs in the demo application
Remove unused jquery.autocomplete.min.js file from static directory.
SelectWidget now has a size attribute to support single select widgets that are not dropdowns.
The value fed to the deform.form.Button class as name would generate an invalid HTML id if it contained spaces. Now it converts spaces to underscores if they exist in the name. See https://github.com/Pylons/deform/pull/14 .
Deformdemo application now has a Time field demonstration.
Deform Chameleon templates now contain i18n:translate tags.
German translation updated.
Fixed invalid HTML generated for “select” widget.
When using an ajax form without a redirect, a submit overwrites the form. In the case of a form validation failure on first submit, no event handlers were registered to submit the form via ajax on the second submit. This is now fixed. See https://github.com/Pylons/deform/pull/1 .
Sequence widgets are no longer structural by default; they now print the label of the sequence above the sequence adder.
Radio buttons in a radio button choice widget are now spaced closer together and the button is on the left hand side.
The sequence remove button is no longer an image.
The sequence widget now puts the sequence adding link after any existing items in the sequence (previously the link was always beneath the sequence title).
It is now possible to associate a widget with a schema node within the schema directly. For example:
import colander
import deform.widget
class MySchema(Schema):
description = colander.SchemaNode(
colander.String(),
widget=deform.widget.RichTextWidget()
)
For more information, see “Changing the Default Widget Associated With a Field” in the documentation.
The constructor of deform.Field objects (and thus deform.Form objects) now accept arbitrary keyword arguments, each of which is attached to the field or form object being constructed, as well as being attached to its descendant fields recursively.
The form object’s template now respects the css_class argument / attribute of the form node.
CheckboxChoice and RadioChoice widgets now use <ul> and <li> to display individual choice elements (thanks to Ergo^), and both widgets put the label after the element instead of before as previously.
The deform.widget.AutocompleteInputWidget widget now uses JQuery UI’s autocomplete sublibrary <http://docs.jquery.com/UI/Autocomplete> instead of the jquery.autocomplete library to perform its job in order to reduce the number of libraries needed by Deform. Some options have been changed as a result, and the set of resources returned by form.get_widget_resources has changed.
This change also implies that when a widget which uses a remote URL as a values input, the remote URL must return a JSON structure instead of a \n-delimited list of values.
Every form has a formid now, defaulting to deform. The formid is used to compute the id of the form tag as well as the button ids in the form. Previously, if a formid was not passed to the Form constructor, no id would be given to the rendered form and the form’s buttons would not be prefixed with any formid.
The deform.Form class now accepts two extra keyword arguments in its constructor: use_ajax and ajax_options.
If use_ajax is True, the page is not reloaded when a submit button is pressed. Instead, the form is posted, and the result replaces the DOM node on the page.
ajax_options is a string which allows you to pass extra options to the underlying AJAX form machinery when use_ajax is True.
Added a couple Ajax examples to the demo app.
Add a rudimentary Ajax chapter to the docs.