[Checkins] SVN: z3c.form/t Tag 2.3.4

Wichert Akkerman wichert at wiggy.net
Mon May 17 07:05:11 EDT 2010


Log message for revision 112406:
  Tag 2.3.4

Changed:
  A   z3c.form/tags/2.3.4/
  D   z3c.form/tags/2.3.4/CHANGES.txt
  A   z3c.form/tags/2.3.4/CHANGES.txt
  U   z3c.form/tags/2.3.4/setup.py
  U   z3c.form/trunk/CHANGES.txt
  U   z3c.form/trunk/setup.py

-=-
Deleted: z3c.form/tags/2.3.4/CHANGES.txt
===================================================================
--- z3c.form/trunk/CHANGES.txt	2010-05-17 11:00:04 UTC (rev 112403)
+++ z3c.form/tags/2.3.4/CHANGES.txt	2010-05-17 11:05:10 UTC (rev 112406)
@@ -1,724 +0,0 @@
-=======
-CHANGES
-=======
-
-2.3.4 (unreleased)
-------------------
-
-- Bugfix: applyChanges should not try to compare old and new values of the old
-  value can not be accessed.
-
-- Fix DictionaryField to conform to the IDataManager spec: get() should raise
-  an exception if no value can be found.
-
-
-2.3.3 (2010-04-20)
-------------------
-
-- The last discriminator of the 'message' IValue adapter used in the
-  ErrorViewSnippet is called 'content', but it was looked up as the error view
-  itself. It is now looked up on the form's context.
-
-- Don't let util.getSpecification() generate an interface more than once.
-  This causes strange effects when used in value adapters: if two adapters
-  use e.g. ISchema['some_field'] as a "discriminator" for 'field', with one
-  adapter being more specific on a discriminator that comes later in the
-  discriminator list (e.g. 'form' for an ErrorViewMessage), then depending on
-  the order in which these two were set up, the adapter specialisation may
-  differ, giving unexpected results that make it look like the adapter 
-  registry is picking the wrong adapter.
-
-- Fix trivial test failures on Python 2.4 stemming from differences in
-  pprint's sorting of dicts.
-
-- Don't invoke render() when publishing the form as a view if the HTTP status
-  code has been set to one in the 3xx range (e.g. a redirect or not-modified
-  response) - the response body will be ignored by the browser anyway.
-
-- Handle Invalid exceptions from constraints and field validators.
-
-- Don't create unnecessary self.items in update() method of
-  SelectWidget in DISPLAY_MODE. Now items is a property.
-
-- Add hidden widget templates for radio buttons and checkboxes.
-
-2.3.2 (2010-01-21)
-------------------
-
-- Reverted changes made in the previous release as the ``getContent``
-  method can return anything it wants to as long as a data manager can
-  map the fields to it. So ``context`` should be used for group
-  instantiation. In cases where ``context`` is not wanted, the group
-  can be instantiated in the ``update`` method of its parent group or
-  form. See also
-  https://mail.zope.org/pipermail/zope-dev/2010-January/039334.html
-
-  (So version 2.3.2 is the same as version 2.3.0.)
-
-
-2.3.1 (2010-01-18)
-------------------
-
-- ``GroupForm`` and ``Group`` now use ``getContent`` method when
-  instantiating group classes instead of directly accessing
-  ``self.context``.
-
-
-2.3.0 (2009-12-28)
-------------------
-
-Refactoring
-~~~~~~~~~~~
-
-- Removed deprecated zpkg slug and ZCML slugs.
-
-- Adapted tests to `zope.schema` 3.6.0.
-
-- Avoid to use `zope.testing.doctestunit` as it is now deprecated.
-
-Update
-~~~~~~
-
-- Updated German translations.
-
-
-2.2.0 (2009-10-27)
-------------------
-
-- Feature: Add ``z3c.form.error.ComputedErrorViewMessage`` factory for easy
-  creation of dynamically computed error messages.
-
-- Bug: <div class="error"> was generated twice for MultiWidget and
-  ObjectWidget in input mode.
-
-- Bug: Replace dots with hyphens when generating form id from its name.
-
-- Refactored OutputChecker to its own module to allow using
-  ``z3c.form.testing`` without needing to depend on ``lxml``.
-
-- Refactored: Folded duplicate code in
-  ``z3c.form.datamanager.AttributeField`` into a single property.
-
-
-2.1.0 (2009-07-22)
-------------------
-
-- Feature: The `DictionaryFieldManager` now allows all mappings
-  (``zope.interface.common.mapping.IMapping``), even
-  ``persistent.mapping.PersistentMapping`` and
-  ``persistent.dict.PersistentDict``. By default, however, the field
-  manager is only registered for dict, because it would otherwise get
-  picked up in undesired scenarios.
-
-- Bug: Updated code to pass all tests on the latest package versions.
-
-- Bug: Completed the Zope 3.4 backwards-compatibility. Also created a buidlout
-  configuration file to test the Zope 3.4 compatibility. Note: You *must* use
-  the 'latest' or 'zope34' extra now to get all required
-  packages. Alternatively, you can specify the packages listed in either of
-  those extras explicitely in your product's required packages.
-
-
-2.0.0 (2009-06-14)
-------------------
-
-Features
-~~~~~~~~
-
-- KGS 3.4 compatibility. This is a real hard thing, because `z3c.form` tests
-  use `lxml` >= 2.1.1 to check test output, but KGS 3.4 has `lxml`
-  1.3.6. Therefore we agree on that if tests pass with all package versions
-  nailed by KGS 3.4 but `lxml` overridden to 2.1.1 then the `z3c.form` package
-  works with a plain KGS 3.4.
-
-- Removed hard `z3c.ptcompat` and thus `z3c.pt` dependency.  If you have
-  `z3c.ptcompat` on the Python path it will be used.
-
-- Added nested group support. Groups are rendered as fieldsets.  Nested
-  fieldsets are very useful when designing forms.
-
-  WARNING: If your group did have an `applyChanges()` (or any added(?)) method
-  the new one added by this change might not match the signature.
-
-- Added `labelRequired` and `requiredInfo` form attributes. This is useful for
-  conditional rendering a required info legend in form templates.  The
-  `requiredInfo` label depends by default on a given `labelRequired` message
-  id and will only return the label if at least one widget field is required.
-
-- Add support for refreshing actions after their execution. This is useful
-  when button action conditions are changing as a result of action
-  execution. All you need is to set the `refreshActions` flag of the form to
-  `True` in your action handler.
-
-- Added support for using sources. Where it was previosly possible to use a
-  vocabulary it is now also possible to use a source. This works both for
-  basic and contextual sources.
-
-  **IMPORTANT:** The `ChoiceTerms` and `CollectionTerms` in `z3c.form.term`
-  are now simple functions that query for real `ITerms` adapters for field's
-  `source` or `value_type` respectively. So if your code inherits the old
-  `ChoiceTerms` and `CollectionTerms` classes, you'll need to review and adapt
-  it. See the `z3c.form.term` module and its documentation.
-
-- The new `z3c.form.interfaces.NOT_CHANGED` special value is available to
-  signal that the current value should be left as is.  It's currently handled
-  in the `z3c.form.form.applyChanges()` function.
-
-- When no file is specified in the file upload widget, instead of overwriting
-  the value with a missing one, the old data is retained.  This is done by
-  returning the new `NOT_CHANGED` special value from the
-  `FileUploadDataConvereter`.
-
-- Preliminary support for widgets for the `schema.IObject` field has been
-  added. However, there is a big caveat, please read the ``object-caveat.txt``
-  document inside the package.
-
-  A new `objectWidgetTemplate` ZCML directive is provided to register widget
-  templates for specific object field schemas.
-
-- Implemented the `MultiWidget` widget. This widget allows you to use simple
-  fields like `ITextLine`, `IInt`, `IPassword`, etc. in a `IList` or `ITuple`
-  sequence.
-
-- Implemented `TextLinesWidget` widget. This widget offers a text area element
-  and splits lines in sequence items. This is usfull for power user
-  interfaces.  The widget can be used for sequence fields (e.g. `IList`) that
-  specify a simple value type field (e.g. `ITextLine` or `IInt`).
-
-- Added a new flag `ignoreContext` to the form field, so that one can
-  individually select which fields should and which ones should not ignore the
-  context.
-
-- Allow raw request values of sequence widgets to be non-sequence values,
-  which makes integration with Javascript libraries easier.
-
-- Added support in the file upload widget's testing flavor to specify
-  'base64'-encoded strings in the hidden text area, so that binary data can be
-  uploaded as well.
-
-- Allow overriding the `required` widget attribute using `IValue` adapter just
-  like it's done for `label` and `name` attributes.
-
-- Add the `prompt` attribute of the `SequenceWidget` to the list of adaptable
-  attributes.
-
-- Added benchmarking suite demonstrating performance gain when using
-  ``z3c.pt``.
-
-- Added support for ``z3c.pt``. Usage is switched on via the "PREFER_Z3C_PT"
-  environment variable or via ``z3c.ptcompat.config.[enable/diable]()``.
-
-- The `TypeError` message used when a field does not provide `IFormUnicode`
-  now also contains the type of the field.
-
-- Add support for internationalization of `z3c.form` messages.  Added Russian,
-  French, German and Chinese translations.
-
-- Sphinx documentation for the package can now be created using the new `docs`
-  script.
-
-- The widget for fields implementing `IChoice` is now looked up by querying
-  for an adapter for ``(field, field.vocabulary, request)`` so it can be
-  differentiated according to the type of the source used for the field.
-
-- Move `formErrorsMessage` attribute from `AddForm` and `EditForm` to the
-  `z3c.form.form.Form` base class as it's very common validation status
-  message and can be easily reused (especially when translations are
-  provided).
-
-Refactoring
-~~~~~~~~~~~
-
-- Removed compatibility support with Zope 3.3.
-
-- Templates now declare XML namespaces.
-
-- HTML output is now compared using a modified version of the XML-aware output
-  checker provided by `lxml`.
-
-- Remove unused imports, adjust buildout dependencies in `setup.py`.
-
-- Use the `z3c.ptcompat` template engine compatibility layer.
-
-Fixed Bugs
-~~~~~~~~~~
-
-- **IMPORTANT** - The signature of `z3c.form.util.extractFileName` function
-  changed because of spelling mistake fix in argument name. The
-  `allowEmtpyPostFix` is now called `allowEmptyPostfix` (note `Empty` instead
-  of `Emtpy` and `Postfix` instead of `PostFix`).
-
-- **IMPORTANT** - The `z3c.form.interfaces.NOVALUE` special value has been
-  renamed to `z3c.form.interfaces.NO_VALUE` to follow the common naming
-  style. The backward-compatibility `NOVALUE` name is still in place, but the
-  `repr` output of the object has been also changed, thus it may break your
-  doctests.
-
-- When dealing with `Bytes` fields, we should do a null conversion when going
-  to its widget value.
-
-- `FieldWidgets` update method were appending keys and values within each
-  update call. Now the `util.Manager` uses a `UniqueOrderedKeys`
-  implementation which will ensure that we can't add duplicated manager
-  keys. The implementation also ensures that we can't override the
-  `UniqueOrderedKeys` instance with a new list by using a decorator. If this
-  `UniqueOrderedKeys` implementation doesn't fit for all use cases, we should
-  probably use a customized `UserList` implementation. Now we can call
-  ``widgets.update()`` more then one time without any side effect.
-
-- `ButtonActions` update where appending keys and values within each update
-  call. Now we can call ``actions.update()`` more then one time without any
-  side effect.
-
-- The `CollectionSequenceDataConverter` no longer throws a ``TypeError:
-  'NoneType' object is not iterable`` when passed the value of a non-required
-  field (which in the case of a `List` field is `None`).
-
-- The `SequenceDataConverter` and `CollectionSequenceDataConverter` converter
-  classes now ignore values that are not present in the terms when converting
-  to a widget value.
-
-- Use ``nocall:`` modifier in `orderedselect_input.pt` to avoid calling list
-  entry if it is callable.
-
-- `SingleCheckBoxFieldWidget` doesn't repeat the label twice (once in ``<div
-  class="label">``, and once in the ``<label>`` next to the checkbox).
-
-- Don't cause warnings in Python 2.6.
-
-- `validator.SimpleFieldValidator` is now able to handle
-  `interfaces.NOT_CHANGED`. This value is set for file uploads when the user
-  does not choose a file for upload.
-
-
-1.9.0 (2008-08-26)
-------------------
-
-- Feature: Use the ``query()`` method in the widget manager to try extract a
-  value. This ensures that the lookup is never failing, which is particularly
-  helpful for dictionary-based data managers, where dictionaries might not
-  have all keys.
-
-- Feature: Changed the ``get()`` method of the data manager to throw an error
-  when the data for the field cannot be found. Added ``query()`` method to
-  data manager that returns a default value, if no value can be found.
-
-- Feature: Deletion of widgets from field widget managers is now possible.
-
-- Feature: Groups now produce detailed `ObjectModifiedEvent` descriptions like
-  regular edit forms do. (Thanks to Carsten Senger for providing a patch.)
-
-- Feature: The widget manager's ``extract()`` method now supports an optional
-  ``setErrors`` (default value: True) flag that allows one to not set errors
-  on the widgets and widget manager during data extraction. Use case: You want
-  to inspect the entered data and handle errors manually.
-
-- Bug: The ``ignoreButtons`` flag of the ``z3c.form.form.extends()`` method
-  was not honored. (Thanks to Carsten Senger for providing a patch.)
-
-- Bug: Group classes now implement ``IGroup``. This also helps with the
-  detection of group instantiation. (Thanks to Carsten Senger for providing a
-  patch.)
-
-- Bug: The list of changes in a group were updated incorrectly, since it was
-  assumed that groups would modify mutually exclusive interfaces. Instead of
-  using an overwriting dictionary ``update()`` method, a purely additive merge
-  is used now. (Thanks to Carsten Senger for providing a patch.)
-
-- Bug: Added a widget for ``IDecimal`` field in testing setup.
-
-- Feature: The ``z3c.form.util`` module has a new function, ``createCSSId()``
-  method that generates readable ids for use with css selectors from any
-  unicode string.
-
-- Bug: The ``applyChanges()`` method in group forms did not return a changes
-  dictionary, but simply a boolean. This is now fixed and the group form
-  changes are now merged with the main form changes.
-
-- Bug: Display widgets did not set the style attribute if it was
-  available, even though the input widgets did set the style attribute.
-
-
-1.8.2 (2008-04-24)
-------------------
-
-- Bug: Display Widgets added spaces (due to code indentation) to the displayed
-  values, which in some cases, like when displaying Python source code, caused
-  the appearance to be incorrect.
-
-- Bug: Prevent to call ``__len__`` on ``ITerms`` and use ``is None`` for check
-  for existence. Because ``__len__`` is not a part of the ITerms API and ``not
-  widget.terms`` will end in calling ``__len__`` on existing terms.
-
-
-1.8.1 (2008-04-08)
-------------------
-
-- Bug: Fixed a bug that prohibited groups from having different contents than
-  the parent form.  Previously, the groups contents were not being properly
-  updated. Added new documentation on how to use groups to generate
-  object-based sub-forms. Thanks to Paul Carduner for providing the fix and
-  documentation.
-
-
-1.8.0 (2008-01-23)
-------------------
-
-- Feature: Implemented ``IDisplayForm`` interface.
-
-- Feature: Added integration tests for form interfaces. Added default class
-  attribute called ``widgets`` in form class with default value ``None``. This
-  helps to pass the integration tests. Now, the ``widgets`` attribute can also
-  be used as a indicator for updated forms.
-
-- Feature: Implemented additional ``createAndAdd`` hook in ``AddForm``. This
-  allows you to implement create and add in a single method. It also supports
-  graceful abortion of a create and add process if we do not return the new
-  object. This means it can also be used as a hook for custom error messages
-  for errors happen during create and add.
-
-- Feature: Add a hidden widget template for the ``ISelectWidget``.
-
-- Feature: Arrows in the ordered select widget replaced by named entities.
-
-- Feature: Added ``CollectionSequenceDataConverter`` to ``setupFormDefaults``.
-
-- Feature: Templates for the CheckBox widget are now registered in
-  ``checkbox.zcml``.
-
-- Feature: If a value cannot be converted from its unicode representation to a
-  field value using the field's ``IFromUnicode`` interface, the resulting type
-  error now shows the field name, if available.
-
-- Bug: ``createId`` could not handle arbitrary unicode input. Thanks to
-  Andreas Reuleaux for reporting the bug and a patch for it. (Added
-  descriptive doctests for the function in the process.)
-
-- Bug: Interface invariants where not working when not all fields needed for
-  computing the invariant are in the submitted form.
-
-- Bug: Ordered select didn't submit selected values.
-
-- Bug: Ordered select lists displayed tokens instead of value,
-
-- Bug: ``SequenceWidget`` displayed tokens instead of value.
-
-
-1.7.0 (2007-10-09)
-------------------
-
-- Feature: Implemented ``ImageButton``, ``ImageAction``, ``ImageWidget``, and
-  ``ImageFieldWidget`` to support imge submit buttons.
-
-- Feature: The ``AttributeField`` data manager now supports adapting
-  the content to the fields interface when the content doesn't implement
-  this interface.
-
-- Feature: Implemented single checkbox widget that can be used for boolean
-  fields. They are not available by default but can be set using the
-  ``widgetFactory`` attribute.
-
-- Bug: More lingual issues have been fixed in the documentation. Thanks to
-  Martijn Faassen for doing this.
-
-- Bug: When an error occurred during processing of the request the
-  widget ended up being security proxied and the system started
-  throwing `TraversalError`-'s trying to access the `label` attribute of
-  the widget. Declared that the widgets require the `zope.Public`
-  permission in order to access these attributes.
-
-- Bug: When rendering a widget the ``style`` attribute was not honored. Thanks
-  to Andreas Reuleaux for reporting.
-
-- Bug: When an error occurred in the sub-form, the status message was not set
-  correctly. Fixed the code and the incorrect test. Thanks to Markus
-  Kemmerling for reporting.
-
-- Bug: Several interfaces had the ``self`` argument in the method
-  signature. Thanks to Markus Kemmerling for reporting.
-
-
-1.6.0 (2007-08-24)
-------------------
-
-- Feature: An event handler for ``ActionErrorOccurred`` events is registered
-  to merge the action error into the form's error collectors, such as
-  ``form.widgets.errors`` and ``form.widgets['name'].error`` (if
-  applicable). It also sets the status of the form. (Thanks to Herman
-  Himmelbauer, who requested the feature, for providing use cases.)
-
-- Feature: Action can now raise ``ActionExecutionError`` exceptions that will
-  be handled by the framework. These errors wrap the original error. If an
-  error is specific to a widget, then the widget name is passed to a special
-  ``WidgetActionExecutionError`` error. (Thanks to Herman Himmelbauer, who
-  requested the feature, for providing use cases.)
-
-- Feature: After an action handler has been executed, an action executed event
-  is sent to the system. If the execution was successful, the event is
-  ``ActionSuccessfull`` event is sent. If an action execution error was
-  raised, the ``ActionErrorOccurred`` event is raised. (Thanks to Herman
-  Himmelbauer, who requested the feature, for providing use cases.)
-
-- Feature: The ``applyChanges()`` function now returns a dictionary of changes
-  (grouped by interface) instead of a boolean. This allows us to generate a
-  more detailed object-modified event. If no changes are applied, an empty
-  dictionary is returned. The new behavior is compatible with the old one, so
-  no changes to your code are required. (Thanks to Darryl Cousins for the
-  request and implementation.)
-
-- Feature: A new ``InvalidErrorViewSnippet`` class provides an error view
-  snippet for ``zope.interface.Invalid`` exceptions, which are frequently used
-  for invariants.
-
-- Feature: When a widget is required, HTML-based widgets now declare a
-  "required" class.
-
-- Feature: The validation data wrapper now knows about the context of the
-  validation, which provides a hook for invariants to access the environment.
-
-- Feature: The BoolTerms term tokens are now cosntants and stay the same, even
-  if the label has changed. The choice for the token is "true" and "false". By
-  default it used to be "yes" and "no", so you probably have to change some
-  unit tests. Functional tests are still okay, because you select by term
-  title.
-
-- Feature: BoolTerms now expose the labels for the true and false values
-  to the class. This makes it a matter of doing trivial sub-classing to
-  change the labels for boolean terms.
-
-- Feature: Exposed several attributes of the widget manager to the form for
-  convenience. The attributes are: mode, ignoreContext, ignoreRequest,
-  ignoreReadonly.
-
-- Feature: Provide more user-friendly error messages for number formatting.
-
-- Refactoring: The widget specific class name was in camel-case. A converntion
-  that later developed uses always dash-based naming of HTML/CSS related
-  variables. So for example, the class name "textWidget" is now
-  "text-widget". This change will most likely require some changes to your CSS
-  declarations!
-
-- Documentation: The text of ``field.txt`` has been reviewed linguistically.
-
-- Documentation: While reviewing the ``form.txt`` with some people, several
-  unclear and incomplete statements were discovered and fixed.
-
-- Bug (IE): In Internet Explorer, when a label for a radio input field is only
-  placed around the text describing the choice, then only the text is
-  surrounded by a dashed box. IE users reported this to be confusing, thus we
-  now place the label around the text and the input element so that both are
-  surrounded by the dashed border. In Firefox and KHTML (Safari) only the
-  radio button is surrounded all the time.
-
-- Bug: When extracting and validating data in the widget manager, invariant
-  errors were not converted to error view snippets.
-
-- Bug: When error view snippets were not widget-specific -- in other words,
-  the ``widget`` attribute was ``None`` -- rendering the template would fail.
-
-
-1.5.0 (2007-07-18)
-------------------
-
-- Feature: Added a span around values for widgets in display mode. This allows
-  for easier identification widget values in display mode.
-
-- Feature: Added the concept of widget events and implemented a particular
-  "after widget update" event that is called right after a widget is updated.
-
-- Feature: Restructured the approach to customize button actions, by requiring
-  the adapter to provide a new interface ``IButtonAction``. Also, an adapter
-  is now provided by default, still allowing cusotmization using the usual
-  methods though.
-
-- Feature: Added button widget. While it is not very useful without
-  Javascript, it still belongs into this package for completion.
-
-- Feature: All ``IFieldWidget`` instances that are also HTML element widgets
-  now declare an additional CSS class of the form "<fieldtype.lower()>-field".
-
-- Feature: Added ``addClass()`` method to HTML element widgets, so that adding
-  a new CSS class is simpler.
-
-- Feature: Renamed "css" attribute of the widget to "klass", because the class
-  of an HTML element is a classification, not a CSS marker.
-
-- Feature: Reviewed all widget attributes. Added all available HTML attributes
-  to the widgets.
-
-- Documentation: Removed mentioning of widget's "hint" attribute, since it
-  does not exist.
-
-- Optimization: The terms for a sequence widget were looked up multiple times
-  among different components. The widget is now the canonical source for the
-  terms and other components, such as the converter uses them. This avoids
-  looking up the terms multiple times, which can be an expensive process for
-  some applications.
-
-- Bug/Feature: Correctly create labels for radio button choices.
-
-- Bug: Buttons did not honor the name given by the schema, if created within
-  one, because we were too anxious to give buttons a name. Now name assignment
-  is delayed until the button is added to the button manager.
-
-- Bug: Button actions were never updated in the actions manager.
-
-- Bug: Added tests for textarea widget.
-
-
-1.4.0 (2007-06-29)
-------------------
-
-- Feature: The select widget grew a new ``prompt`` flag, which allows you to
-  explicitely request a selection prompt as the first option in the selection
-  (even for required fields). When set, the prompt message is shown. Such a
-  prompt as option is common in Web-UIs.
-
-- Feature: Allow "no value message" of select widgets to be dynamically
-  changed using an attribute value adapter.
-
-- Feature: Internationalized data conversion for date, time, date/time,
-  integer, float and decimal. Now the locale data is used to format and parse
-  those data types to provide the bridge to text-based widgets. While those
-  features require the latest zope.i18n package, backward compatibility is
-  provided.
-
-- Feature: All forms now have an optional label that can be used by the UI.
-
-- Feature: Implemented groups within forms. Groups allow you to combine a set
-  of fields/widgets into a logical unit. They were designed with ease of use
-  in mind.
-
-- Feature: Button Actions -- in other words, the widget for the button field
-  -- can now be specified either as the "actionFactory" on the button field or
-  as an adapter.
-
-- Bug: Recorded all public select-widget attributes in the interface.
-
-
-1.3.0 (2007-06-22)
-------------------
-
-- Feature: In an edit form applying the data and generating all necessary
-  messages was all done within the "Apply" button handler. Now the actual task
-  of storing is factored out into a new method called "applyChanges(data)",
-  which returns whether the data has been changed. This is useful for forms
-  not dealing with objects.
-
-- Feature: Added support for ``hidden`` fields. You can now use the ``hidden``
-  mode for widgets which should get rendered as ``<input type="hidden"
-  />``.
-
-  Note: Make sure you use the new formui templates which will avoid rendering
-        labels for hidden widgets or adjust your custom form macros.
-
-- Feature: Added ``missing_value`` support to data/time converters
-
-- Feature: Added named vocabulary lookup in ``ChoiceTerms`` and
-  ``CollectionTerms``.
-
-- Feature: Implemented support for ``FileUpload`` in ``FileWidget``.
-
-  * Added helper for handling ``FileUpload`` widgets:
-
-    + ``extractContentType(form, id)``
-
-      Extracts the content type if ``IBytes``/``IFileWidget`` was used.
-
-    + ``extractFileName(form, id, cleanup=True, allowEmtpyPostFix=False)``
-
-      Extracts a filename if ``IBytes``/``IFileWidget`` was used.
-
-      Uploads from win/IE need some cleanup because the filename includes also
-      the path. The option ``cleanup=True`` will do this for you. The option
-      ``allowEmtpyPostFix`` allows you to pass a filename without
-      extensions. By default this option is set to ``False`` and will raise a
-      ``ValueError`` if a filename doesn't contain an extension.
-
-  * Created afile upload data converter registered for
-    ``IBytes``/``IFileWidget`` ensuring that the converter will only be used
-    for fiel widgets. The file widget is now the default for the bytes
-    field. If you need to use a text area widget for ``IBytes``, you have to
-    register a custom widget in the form using::
-
-      fields['foobar'].widgetFactory = TextWidget
-
-- Feature: Originally, when an attribute access failed in Unauthorized or
-  ForbiddenAttribute exceptions, they were ignored as if the attribute would
-  have no value. Now those errors are propagated and the system will fail
-  providing the developer with more feedback. The datamanager also grew a new
-  ``query()`` method that returns always a default and the ``get()`` method
-  propagates any exceptions.
-
-- Feature: When writing to a field is forbidden due to insufficient
-  priviledges, the resulting widget mode will be set to "display". This
-  behavior can be overridden by explicitely specifying the mode on a field.
-
-- Feature: Added an add form implementation against ``IAdding``. While this is
-  not an encouraged method of adding components, many people still use this
-  API to extend the ZMI.
-
-- Feature: The ``IFields`` class' ``select()`` and ``omit()`` method now
-  support two ketword arguments "prefix" and "interface" that allow the
-  selection and omission of prefixed fields and still specify the short
-  name. Thanks to Nikolay Kim for the idea.
-
-- Feature: HTML element ids containing dots are not very good, because then
-  the "element#id" CSS selector does not work and at least in Firefox the
-  attribute selector ("element[attr=value]") does not work for the id
-  either. Converted the codebase to use dashes in ids instead.
-
-- Bug/Feature: The ``IWidgets`` component is now an adapter of the form
-  content and not the form context. This guarantees that vocabulary factories
-  receive a context that is actually useful.
-
-- Bug: The readonly flag within a field was never honored. When a field is
-  readonly, it is displayed in "display" mode now. This can be overridden by
-  the widget manager's "ignoreReadonly" flag, which is necessary for add
-  forms.
-
-- Bug: The mode selection made during the field layout creation was not
-  honored and the widget manager always overrode the options providing its
-  value. Now the mode specified in the field is more important than the one
-  from the widget manager.
-
-- Bug: It sometimes happens that the sequence widget has the no-value token as
-  one element. This caused ``displayValue()`` to fail, since it tried to find
-  a term for it. For now we simply ignore the no-value token.
-
-- Bug: Fixed the converter when the incoming value is an empty string. An
-  empty string really means that we have no value and it is thus missing,
-  returning the missing value.
-
-- Bug: Fix a slightly incorrect implementation. It did not cause any harm in
-  real-world forms, but made unit testing much harder, since an API
-  expectation was not met correctly.
-
-- Bug: When required selections where not selected in radio and checkbox
-  widgets, then the conversion did not behave correctly. This also revealed
-  some issues with the converter code that have been fixed now.
-
-- Bug: When fields only had a vocabulary name, the choice terms adaptation
-  would fail, since the field was not bound. This has now been corrected.
-
-- Documentation: Integrated English language and content review improvements
-  by Roy Mathew in ``form.txt``.
-
-
-1.2.0 (2007-05-30)
-------------------
-
-- Feature: Added ability to change the button action title using an ``IValue``
-  adapter.
-
-
-1.1.0 (2007-05-30)
-------------------
-
-- Feature: Added compatibility for Zope 3.3 and thus Zope 2.10.
-
-
-1.0.0 (2007-05-24)
-------------------
-
-- Initial Release

Copied: z3c.form/tags/2.3.4/CHANGES.txt (from rev 112404, z3c.form/trunk/CHANGES.txt)
===================================================================
--- z3c.form/tags/2.3.4/CHANGES.txt	                        (rev 0)
+++ z3c.form/tags/2.3.4/CHANGES.txt	2010-05-17 11:05:10 UTC (rev 112406)
@@ -0,0 +1,724 @@
+=======
+CHANGES
+=======
+
+2.3.4 (2010-05-17)
+------------------
+
+- Bugfix: applyChanges should not try to compare old and new values if the old
+  value can not be accessed.
+
+- Fix DictionaryField to conform to the IDataManager spec: get() should raise
+  an exception if no value can be found.
+
+
+2.3.3 (2010-04-20)
+------------------
+
+- The last discriminator of the 'message' IValue adapter used in the
+  ErrorViewSnippet is called 'content', but it was looked up as the error view
+  itself. It is now looked up on the form's context.
+
+- Don't let util.getSpecification() generate an interface more than once.
+  This causes strange effects when used in value adapters: if two adapters
+  use e.g. ISchema['some_field'] as a "discriminator" for 'field', with one
+  adapter being more specific on a discriminator that comes later in the
+  discriminator list (e.g. 'form' for an ErrorViewMessage), then depending on
+  the order in which these two were set up, the adapter specialisation may
+  differ, giving unexpected results that make it look like the adapter 
+  registry is picking the wrong adapter.
+
+- Fix trivial test failures on Python 2.4 stemming from differences in
+  pprint's sorting of dicts.
+
+- Don't invoke render() when publishing the form as a view if the HTTP status
+  code has been set to one in the 3xx range (e.g. a redirect or not-modified
+  response) - the response body will be ignored by the browser anyway.
+
+- Handle Invalid exceptions from constraints and field validators.
+
+- Don't create unnecessary self.items in update() method of
+  SelectWidget in DISPLAY_MODE. Now items is a property.
+
+- Add hidden widget templates for radio buttons and checkboxes.
+
+2.3.2 (2010-01-21)
+------------------
+
+- Reverted changes made in the previous release as the ``getContent``
+  method can return anything it wants to as long as a data manager can
+  map the fields to it. So ``context`` should be used for group
+  instantiation. In cases where ``context`` is not wanted, the group
+  can be instantiated in the ``update`` method of its parent group or
+  form. See also
+  https://mail.zope.org/pipermail/zope-dev/2010-January/039334.html
+
+  (So version 2.3.2 is the same as version 2.3.0.)
+
+
+2.3.1 (2010-01-18)
+------------------
+
+- ``GroupForm`` and ``Group`` now use ``getContent`` method when
+  instantiating group classes instead of directly accessing
+  ``self.context``.
+
+
+2.3.0 (2009-12-28)
+------------------
+
+Refactoring
+~~~~~~~~~~~
+
+- Removed deprecated zpkg slug and ZCML slugs.
+
+- Adapted tests to `zope.schema` 3.6.0.
+
+- Avoid to use `zope.testing.doctestunit` as it is now deprecated.
+
+Update
+~~~~~~
+
+- Updated German translations.
+
+
+2.2.0 (2009-10-27)
+------------------
+
+- Feature: Add ``z3c.form.error.ComputedErrorViewMessage`` factory for easy
+  creation of dynamically computed error messages.
+
+- Bug: <div class="error"> was generated twice for MultiWidget and
+  ObjectWidget in input mode.
+
+- Bug: Replace dots with hyphens when generating form id from its name.
+
+- Refactored OutputChecker to its own module to allow using
+  ``z3c.form.testing`` without needing to depend on ``lxml``.
+
+- Refactored: Folded duplicate code in
+  ``z3c.form.datamanager.AttributeField`` into a single property.
+
+
+2.1.0 (2009-07-22)
+------------------
+
+- Feature: The `DictionaryFieldManager` now allows all mappings
+  (``zope.interface.common.mapping.IMapping``), even
+  ``persistent.mapping.PersistentMapping`` and
+  ``persistent.dict.PersistentDict``. By default, however, the field
+  manager is only registered for dict, because it would otherwise get
+  picked up in undesired scenarios.
+
+- Bug: Updated code to pass all tests on the latest package versions.
+
+- Bug: Completed the Zope 3.4 backwards-compatibility. Also created a buidlout
+  configuration file to test the Zope 3.4 compatibility. Note: You *must* use
+  the 'latest' or 'zope34' extra now to get all required
+  packages. Alternatively, you can specify the packages listed in either of
+  those extras explicitely in your product's required packages.
+
+
+2.0.0 (2009-06-14)
+------------------
+
+Features
+~~~~~~~~
+
+- KGS 3.4 compatibility. This is a real hard thing, because `z3c.form` tests
+  use `lxml` >= 2.1.1 to check test output, but KGS 3.4 has `lxml`
+  1.3.6. Therefore we agree on that if tests pass with all package versions
+  nailed by KGS 3.4 but `lxml` overridden to 2.1.1 then the `z3c.form` package
+  works with a plain KGS 3.4.
+
+- Removed hard `z3c.ptcompat` and thus `z3c.pt` dependency.  If you have
+  `z3c.ptcompat` on the Python path it will be used.
+
+- Added nested group support. Groups are rendered as fieldsets.  Nested
+  fieldsets are very useful when designing forms.
+
+  WARNING: If your group did have an `applyChanges()` (or any added(?)) method
+  the new one added by this change might not match the signature.
+
+- Added `labelRequired` and `requiredInfo` form attributes. This is useful for
+  conditional rendering a required info legend in form templates.  The
+  `requiredInfo` label depends by default on a given `labelRequired` message
+  id and will only return the label if at least one widget field is required.
+
+- Add support for refreshing actions after their execution. This is useful
+  when button action conditions are changing as a result of action
+  execution. All you need is to set the `refreshActions` flag of the form to
+  `True` in your action handler.
+
+- Added support for using sources. Where it was previosly possible to use a
+  vocabulary it is now also possible to use a source. This works both for
+  basic and contextual sources.
+
+  **IMPORTANT:** The `ChoiceTerms` and `CollectionTerms` in `z3c.form.term`
+  are now simple functions that query for real `ITerms` adapters for field's
+  `source` or `value_type` respectively. So if your code inherits the old
+  `ChoiceTerms` and `CollectionTerms` classes, you'll need to review and adapt
+  it. See the `z3c.form.term` module and its documentation.
+
+- The new `z3c.form.interfaces.NOT_CHANGED` special value is available to
+  signal that the current value should be left as is.  It's currently handled
+  in the `z3c.form.form.applyChanges()` function.
+
+- When no file is specified in the file upload widget, instead of overwriting
+  the value with a missing one, the old data is retained.  This is done by
+  returning the new `NOT_CHANGED` special value from the
+  `FileUploadDataConvereter`.
+
+- Preliminary support for widgets for the `schema.IObject` field has been
+  added. However, there is a big caveat, please read the ``object-caveat.txt``
+  document inside the package.
+
+  A new `objectWidgetTemplate` ZCML directive is provided to register widget
+  templates for specific object field schemas.
+
+- Implemented the `MultiWidget` widget. This widget allows you to use simple
+  fields like `ITextLine`, `IInt`, `IPassword`, etc. in a `IList` or `ITuple`
+  sequence.
+
+- Implemented `TextLinesWidget` widget. This widget offers a text area element
+  and splits lines in sequence items. This is usfull for power user
+  interfaces.  The widget can be used for sequence fields (e.g. `IList`) that
+  specify a simple value type field (e.g. `ITextLine` or `IInt`).
+
+- Added a new flag `ignoreContext` to the form field, so that one can
+  individually select which fields should and which ones should not ignore the
+  context.
+
+- Allow raw request values of sequence widgets to be non-sequence values,
+  which makes integration with Javascript libraries easier.
+
+- Added support in the file upload widget's testing flavor to specify
+  'base64'-encoded strings in the hidden text area, so that binary data can be
+  uploaded as well.
+
+- Allow overriding the `required` widget attribute using `IValue` adapter just
+  like it's done for `label` and `name` attributes.
+
+- Add the `prompt` attribute of the `SequenceWidget` to the list of adaptable
+  attributes.
+
+- Added benchmarking suite demonstrating performance gain when using
+  ``z3c.pt``.
+
+- Added support for ``z3c.pt``. Usage is switched on via the "PREFER_Z3C_PT"
+  environment variable or via ``z3c.ptcompat.config.[enable/diable]()``.
+
+- The `TypeError` message used when a field does not provide `IFormUnicode`
+  now also contains the type of the field.
+
+- Add support for internationalization of `z3c.form` messages.  Added Russian,
+  French, German and Chinese translations.
+
+- Sphinx documentation for the package can now be created using the new `docs`
+  script.
+
+- The widget for fields implementing `IChoice` is now looked up by querying
+  for an adapter for ``(field, field.vocabulary, request)`` so it can be
+  differentiated according to the type of the source used for the field.
+
+- Move `formErrorsMessage` attribute from `AddForm` and `EditForm` to the
+  `z3c.form.form.Form` base class as it's very common validation status
+  message and can be easily reused (especially when translations are
+  provided).
+
+Refactoring
+~~~~~~~~~~~
+
+- Removed compatibility support with Zope 3.3.
+
+- Templates now declare XML namespaces.
+
+- HTML output is now compared using a modified version of the XML-aware output
+  checker provided by `lxml`.
+
+- Remove unused imports, adjust buildout dependencies in `setup.py`.
+
+- Use the `z3c.ptcompat` template engine compatibility layer.
+
+Fixed Bugs
+~~~~~~~~~~
+
+- **IMPORTANT** - The signature of `z3c.form.util.extractFileName` function
+  changed because of spelling mistake fix in argument name. The
+  `allowEmtpyPostFix` is now called `allowEmptyPostfix` (note `Empty` instead
+  of `Emtpy` and `Postfix` instead of `PostFix`).
+
+- **IMPORTANT** - The `z3c.form.interfaces.NOVALUE` special value has been
+  renamed to `z3c.form.interfaces.NO_VALUE` to follow the common naming
+  style. The backward-compatibility `NOVALUE` name is still in place, but the
+  `repr` output of the object has been also changed, thus it may break your
+  doctests.
+
+- When dealing with `Bytes` fields, we should do a null conversion when going
+  to its widget value.
+
+- `FieldWidgets` update method were appending keys and values within each
+  update call. Now the `util.Manager` uses a `UniqueOrderedKeys`
+  implementation which will ensure that we can't add duplicated manager
+  keys. The implementation also ensures that we can't override the
+  `UniqueOrderedKeys` instance with a new list by using a decorator. If this
+  `UniqueOrderedKeys` implementation doesn't fit for all use cases, we should
+  probably use a customized `UserList` implementation. Now we can call
+  ``widgets.update()`` more then one time without any side effect.
+
+- `ButtonActions` update where appending keys and values within each update
+  call. Now we can call ``actions.update()`` more then one time without any
+  side effect.
+
+- The `CollectionSequenceDataConverter` no longer throws a ``TypeError:
+  'NoneType' object is not iterable`` when passed the value of a non-required
+  field (which in the case of a `List` field is `None`).
+
+- The `SequenceDataConverter` and `CollectionSequenceDataConverter` converter
+  classes now ignore values that are not present in the terms when converting
+  to a widget value.
+
+- Use ``nocall:`` modifier in `orderedselect_input.pt` to avoid calling list
+  entry if it is callable.
+
+- `SingleCheckBoxFieldWidget` doesn't repeat the label twice (once in ``<div
+  class="label">``, and once in the ``<label>`` next to the checkbox).
+
+- Don't cause warnings in Python 2.6.
+
+- `validator.SimpleFieldValidator` is now able to handle
+  `interfaces.NOT_CHANGED`. This value is set for file uploads when the user
+  does not choose a file for upload.
+
+
+1.9.0 (2008-08-26)
+------------------
+
+- Feature: Use the ``query()`` method in the widget manager to try extract a
+  value. This ensures that the lookup is never failing, which is particularly
+  helpful for dictionary-based data managers, where dictionaries might not
+  have all keys.
+
+- Feature: Changed the ``get()`` method of the data manager to throw an error
+  when the data for the field cannot be found. Added ``query()`` method to
+  data manager that returns a default value, if no value can be found.
+
+- Feature: Deletion of widgets from field widget managers is now possible.
+
+- Feature: Groups now produce detailed `ObjectModifiedEvent` descriptions like
+  regular edit forms do. (Thanks to Carsten Senger for providing a patch.)
+
+- Feature: The widget manager's ``extract()`` method now supports an optional
+  ``setErrors`` (default value: True) flag that allows one to not set errors
+  on the widgets and widget manager during data extraction. Use case: You want
+  to inspect the entered data and handle errors manually.
+
+- Bug: The ``ignoreButtons`` flag of the ``z3c.form.form.extends()`` method
+  was not honored. (Thanks to Carsten Senger for providing a patch.)
+
+- Bug: Group classes now implement ``IGroup``. This also helps with the
+  detection of group instantiation. (Thanks to Carsten Senger for providing a
+  patch.)
+
+- Bug: The list of changes in a group were updated incorrectly, since it was
+  assumed that groups would modify mutually exclusive interfaces. Instead of
+  using an overwriting dictionary ``update()`` method, a purely additive merge
+  is used now. (Thanks to Carsten Senger for providing a patch.)
+
+- Bug: Added a widget for ``IDecimal`` field in testing setup.
+
+- Feature: The ``z3c.form.util`` module has a new function, ``createCSSId()``
+  method that generates readable ids for use with css selectors from any
+  unicode string.
+
+- Bug: The ``applyChanges()`` method in group forms did not return a changes
+  dictionary, but simply a boolean. This is now fixed and the group form
+  changes are now merged with the main form changes.
+
+- Bug: Display widgets did not set the style attribute if it was
+  available, even though the input widgets did set the style attribute.
+
+
+1.8.2 (2008-04-24)
+------------------
+
+- Bug: Display Widgets added spaces (due to code indentation) to the displayed
+  values, which in some cases, like when displaying Python source code, caused
+  the appearance to be incorrect.
+
+- Bug: Prevent to call ``__len__`` on ``ITerms`` and use ``is None`` for check
+  for existence. Because ``__len__`` is not a part of the ITerms API and ``not
+  widget.terms`` will end in calling ``__len__`` on existing terms.
+
+
+1.8.1 (2008-04-08)
+------------------
+
+- Bug: Fixed a bug that prohibited groups from having different contents than
+  the parent form.  Previously, the groups contents were not being properly
+  updated. Added new documentation on how to use groups to generate
+  object-based sub-forms. Thanks to Paul Carduner for providing the fix and
+  documentation.
+
+
+1.8.0 (2008-01-23)
+------------------
+
+- Feature: Implemented ``IDisplayForm`` interface.
+
+- Feature: Added integration tests for form interfaces. Added default class
+  attribute called ``widgets`` in form class with default value ``None``. This
+  helps to pass the integration tests. Now, the ``widgets`` attribute can also
+  be used as a indicator for updated forms.
+
+- Feature: Implemented additional ``createAndAdd`` hook in ``AddForm``. This
+  allows you to implement create and add in a single method. It also supports
+  graceful abortion of a create and add process if we do not return the new
+  object. This means it can also be used as a hook for custom error messages
+  for errors happen during create and add.
+
+- Feature: Add a hidden widget template for the ``ISelectWidget``.
+
+- Feature: Arrows in the ordered select widget replaced by named entities.
+
+- Feature: Added ``CollectionSequenceDataConverter`` to ``setupFormDefaults``.
+
+- Feature: Templates for the CheckBox widget are now registered in
+  ``checkbox.zcml``.
+
+- Feature: If a value cannot be converted from its unicode representation to a
+  field value using the field's ``IFromUnicode`` interface, the resulting type
+  error now shows the field name, if available.
+
+- Bug: ``createId`` could not handle arbitrary unicode input. Thanks to
+  Andreas Reuleaux for reporting the bug and a patch for it. (Added
+  descriptive doctests for the function in the process.)
+
+- Bug: Interface invariants where not working when not all fields needed for
+  computing the invariant are in the submitted form.
+
+- Bug: Ordered select didn't submit selected values.
+
+- Bug: Ordered select lists displayed tokens instead of value,
+
+- Bug: ``SequenceWidget`` displayed tokens instead of value.
+
+
+1.7.0 (2007-10-09)
+------------------
+
+- Feature: Implemented ``ImageButton``, ``ImageAction``, ``ImageWidget``, and
+  ``ImageFieldWidget`` to support imge submit buttons.
+
+- Feature: The ``AttributeField`` data manager now supports adapting
+  the content to the fields interface when the content doesn't implement
+  this interface.
+
+- Feature: Implemented single checkbox widget that can be used for boolean
+  fields. They are not available by default but can be set using the
+  ``widgetFactory`` attribute.
+
+- Bug: More lingual issues have been fixed in the documentation. Thanks to
+  Martijn Faassen for doing this.
+
+- Bug: When an error occurred during processing of the request the
+  widget ended up being security proxied and the system started
+  throwing `TraversalError`-'s trying to access the `label` attribute of
+  the widget. Declared that the widgets require the `zope.Public`
+  permission in order to access these attributes.
+
+- Bug: When rendering a widget the ``style`` attribute was not honored. Thanks
+  to Andreas Reuleaux for reporting.
+
+- Bug: When an error occurred in the sub-form, the status message was not set
+  correctly. Fixed the code and the incorrect test. Thanks to Markus
+  Kemmerling for reporting.
+
+- Bug: Several interfaces had the ``self`` argument in the method
+  signature. Thanks to Markus Kemmerling for reporting.
+
+
+1.6.0 (2007-08-24)
+------------------
+
+- Feature: An event handler for ``ActionErrorOccurred`` events is registered
+  to merge the action error into the form's error collectors, such as
+  ``form.widgets.errors`` and ``form.widgets['name'].error`` (if
+  applicable). It also sets the status of the form. (Thanks to Herman
+  Himmelbauer, who requested the feature, for providing use cases.)
+
+- Feature: Action can now raise ``ActionExecutionError`` exceptions that will
+  be handled by the framework. These errors wrap the original error. If an
+  error is specific to a widget, then the widget name is passed to a special
+  ``WidgetActionExecutionError`` error. (Thanks to Herman Himmelbauer, who
+  requested the feature, for providing use cases.)
+
+- Feature: After an action handler has been executed, an action executed event
+  is sent to the system. If the execution was successful, the event is
+  ``ActionSuccessfull`` event is sent. If an action execution error was
+  raised, the ``ActionErrorOccurred`` event is raised. (Thanks to Herman
+  Himmelbauer, who requested the feature, for providing use cases.)
+
+- Feature: The ``applyChanges()`` function now returns a dictionary of changes
+  (grouped by interface) instead of a boolean. This allows us to generate a
+  more detailed object-modified event. If no changes are applied, an empty
+  dictionary is returned. The new behavior is compatible with the old one, so
+  no changes to your code are required. (Thanks to Darryl Cousins for the
+  request and implementation.)
+
+- Feature: A new ``InvalidErrorViewSnippet`` class provides an error view
+  snippet for ``zope.interface.Invalid`` exceptions, which are frequently used
+  for invariants.
+
+- Feature: When a widget is required, HTML-based widgets now declare a
+  "required" class.
+
+- Feature: The validation data wrapper now knows about the context of the
+  validation, which provides a hook for invariants to access the environment.
+
+- Feature: The BoolTerms term tokens are now cosntants and stay the same, even
+  if the label has changed. The choice for the token is "true" and "false". By
+  default it used to be "yes" and "no", so you probably have to change some
+  unit tests. Functional tests are still okay, because you select by term
+  title.
+
+- Feature: BoolTerms now expose the labels for the true and false values
+  to the class. This makes it a matter of doing trivial sub-classing to
+  change the labels for boolean terms.
+
+- Feature: Exposed several attributes of the widget manager to the form for
+  convenience. The attributes are: mode, ignoreContext, ignoreRequest,
+  ignoreReadonly.
+
+- Feature: Provide more user-friendly error messages for number formatting.
+
+- Refactoring: The widget specific class name was in camel-case. A converntion
+  that later developed uses always dash-based naming of HTML/CSS related
+  variables. So for example, the class name "textWidget" is now
+  "text-widget". This change will most likely require some changes to your CSS
+  declarations!
+
+- Documentation: The text of ``field.txt`` has been reviewed linguistically.
+
+- Documentation: While reviewing the ``form.txt`` with some people, several
+  unclear and incomplete statements were discovered and fixed.
+
+- Bug (IE): In Internet Explorer, when a label for a radio input field is only
+  placed around the text describing the choice, then only the text is
+  surrounded by a dashed box. IE users reported this to be confusing, thus we
+  now place the label around the text and the input element so that both are
+  surrounded by the dashed border. In Firefox and KHTML (Safari) only the
+  radio button is surrounded all the time.
+
+- Bug: When extracting and validating data in the widget manager, invariant
+  errors were not converted to error view snippets.
+
+- Bug: When error view snippets were not widget-specific -- in other words,
+  the ``widget`` attribute was ``None`` -- rendering the template would fail.
+
+
+1.5.0 (2007-07-18)
+------------------
+
+- Feature: Added a span around values for widgets in display mode. This allows
+  for easier identification widget values in display mode.
+
+- Feature: Added the concept of widget events and implemented a particular
+  "after widget update" event that is called right after a widget is updated.
+
+- Feature: Restructured the approach to customize button actions, by requiring
+  the adapter to provide a new interface ``IButtonAction``. Also, an adapter
+  is now provided by default, still allowing cusotmization using the usual
+  methods though.
+
+- Feature: Added button widget. While it is not very useful without
+  Javascript, it still belongs into this package for completion.
+
+- Feature: All ``IFieldWidget`` instances that are also HTML element widgets
+  now declare an additional CSS class of the form "<fieldtype.lower()>-field".
+
+- Feature: Added ``addClass()`` method to HTML element widgets, so that adding
+  a new CSS class is simpler.
+
+- Feature: Renamed "css" attribute of the widget to "klass", because the class
+  of an HTML element is a classification, not a CSS marker.
+
+- Feature: Reviewed all widget attributes. Added all available HTML attributes
+  to the widgets.
+
+- Documentation: Removed mentioning of widget's "hint" attribute, since it
+  does not exist.
+
+- Optimization: The terms for a sequence widget were looked up multiple times
+  among different components. The widget is now the canonical source for the
+  terms and other components, such as the converter uses them. This avoids
+  looking up the terms multiple times, which can be an expensive process for
+  some applications.
+
+- Bug/Feature: Correctly create labels for radio button choices.
+
+- Bug: Buttons did not honor the name given by the schema, if created within
+  one, because we were too anxious to give buttons a name. Now name assignment
+  is delayed until the button is added to the button manager.
+
+- Bug: Button actions were never updated in the actions manager.
+
+- Bug: Added tests for textarea widget.
+
+
+1.4.0 (2007-06-29)
+------------------
+
+- Feature: The select widget grew a new ``prompt`` flag, which allows you to
+  explicitely request a selection prompt as the first option in the selection
+  (even for required fields). When set, the prompt message is shown. Such a
+  prompt as option is common in Web-UIs.
+
+- Feature: Allow "no value message" of select widgets to be dynamically
+  changed using an attribute value adapter.
+
+- Feature: Internationalized data conversion for date, time, date/time,
+  integer, float and decimal. Now the locale data is used to format and parse
+  those data types to provide the bridge to text-based widgets. While those
+  features require the latest zope.i18n package, backward compatibility is
+  provided.
+
+- Feature: All forms now have an optional label that can be used by the UI.
+
+- Feature: Implemented groups within forms. Groups allow you to combine a set
+  of fields/widgets into a logical unit. They were designed with ease of use
+  in mind.
+
+- Feature: Button Actions -- in other words, the widget for the button field
+  -- can now be specified either as the "actionFactory" on the button field or
+  as an adapter.
+
+- Bug: Recorded all public select-widget attributes in the interface.
+
+
+1.3.0 (2007-06-22)
+------------------
+
+- Feature: In an edit form applying the data and generating all necessary
+  messages was all done within the "Apply" button handler. Now the actual task
+  of storing is factored out into a new method called "applyChanges(data)",
+  which returns whether the data has been changed. This is useful for forms
+  not dealing with objects.
+
+- Feature: Added support for ``hidden`` fields. You can now use the ``hidden``
+  mode for widgets which should get rendered as ``<input type="hidden"
+  />``.
+
+  Note: Make sure you use the new formui templates which will avoid rendering
+        labels for hidden widgets or adjust your custom form macros.
+
+- Feature: Added ``missing_value`` support to data/time converters
+
+- Feature: Added named vocabulary lookup in ``ChoiceTerms`` and
+  ``CollectionTerms``.
+
+- Feature: Implemented support for ``FileUpload`` in ``FileWidget``.
+
+  * Added helper for handling ``FileUpload`` widgets:
+
+    + ``extractContentType(form, id)``
+
+      Extracts the content type if ``IBytes``/``IFileWidget`` was used.
+
+    + ``extractFileName(form, id, cleanup=True, allowEmtpyPostFix=False)``
+
+      Extracts a filename if ``IBytes``/``IFileWidget`` was used.
+
+      Uploads from win/IE need some cleanup because the filename includes also
+      the path. The option ``cleanup=True`` will do this for you. The option
+      ``allowEmtpyPostFix`` allows you to pass a filename without
+      extensions. By default this option is set to ``False`` and will raise a
+      ``ValueError`` if a filename doesn't contain an extension.
+
+  * Created afile upload data converter registered for
+    ``IBytes``/``IFileWidget`` ensuring that the converter will only be used
+    for fiel widgets. The file widget is now the default for the bytes
+    field. If you need to use a text area widget for ``IBytes``, you have to
+    register a custom widget in the form using::
+
+      fields['foobar'].widgetFactory = TextWidget
+
+- Feature: Originally, when an attribute access failed in Unauthorized or
+  ForbiddenAttribute exceptions, they were ignored as if the attribute would
+  have no value. Now those errors are propagated and the system will fail
+  providing the developer with more feedback. The datamanager also grew a new
+  ``query()`` method that returns always a default and the ``get()`` method
+  propagates any exceptions.
+
+- Feature: When writing to a field is forbidden due to insufficient
+  priviledges, the resulting widget mode will be set to "display". This
+  behavior can be overridden by explicitely specifying the mode on a field.
+
+- Feature: Added an add form implementation against ``IAdding``. While this is
+  not an encouraged method of adding components, many people still use this
+  API to extend the ZMI.
+
+- Feature: The ``IFields`` class' ``select()`` and ``omit()`` method now
+  support two ketword arguments "prefix" and "interface" that allow the
+  selection and omission of prefixed fields and still specify the short
+  name. Thanks to Nikolay Kim for the idea.
+
+- Feature: HTML element ids containing dots are not very good, because then
+  the "element#id" CSS selector does not work and at least in Firefox the
+  attribute selector ("element[attr=value]") does not work for the id
+  either. Converted the codebase to use dashes in ids instead.
+
+- Bug/Feature: The ``IWidgets`` component is now an adapter of the form
+  content and not the form context. This guarantees that vocabulary factories
+  receive a context that is actually useful.
+
+- Bug: The readonly flag within a field was never honored. When a field is
+  readonly, it is displayed in "display" mode now. This can be overridden by
+  the widget manager's "ignoreReadonly" flag, which is necessary for add
+  forms.
+
+- Bug: The mode selection made during the field layout creation was not
+  honored and the widget manager always overrode the options providing its
+  value. Now the mode specified in the field is more important than the one
+  from the widget manager.
+
+- Bug: It sometimes happens that the sequence widget has the no-value token as
+  one element. This caused ``displayValue()`` to fail, since it tried to find
+  a term for it. For now we simply ignore the no-value token.
+
+- Bug: Fixed the converter when the incoming value is an empty string. An
+  empty string really means that we have no value and it is thus missing,
+  returning the missing value.
+
+- Bug: Fix a slightly incorrect implementation. It did not cause any harm in
+  real-world forms, but made unit testing much harder, since an API
+  expectation was not met correctly.
+
+- Bug: When required selections where not selected in radio and checkbox
+  widgets, then the conversion did not behave correctly. This also revealed
+  some issues with the converter code that have been fixed now.
+
+- Bug: When fields only had a vocabulary name, the choice terms adaptation
+  would fail, since the field was not bound. This has now been corrected.
+
+- Documentation: Integrated English language and content review improvements
+  by Roy Mathew in ``form.txt``.
+
+
+1.2.0 (2007-05-30)
+------------------
+
+- Feature: Added ability to change the button action title using an ``IValue``
+  adapter.
+
+
+1.1.0 (2007-05-30)
+------------------
+
+- Feature: Added compatibility for Zope 3.3 and thus Zope 2.10.
+
+
+1.0.0 (2007-05-24)
+------------------
+
+- Initial Release

Modified: z3c.form/tags/2.3.4/setup.py
===================================================================
--- z3c.form/trunk/setup.py	2010-05-17 11:00:04 UTC (rev 112403)
+++ z3c.form/tags/2.3.4/setup.py	2010-05-17 11:05:10 UTC (rev 112406)
@@ -45,7 +45,7 @@
 
 setup (
     name='z3c.form',
-    version = '2.3.4dev',
+    version = '2.3.4',
     author = "Stephan Richter, Roger Ineichen and the Zope Community",
     author_email = "zope-dev at zope.org",
     description = "An advanced form and widget framework for Zope 3",

Modified: z3c.form/trunk/CHANGES.txt
===================================================================
--- z3c.form/trunk/CHANGES.txt	2010-05-17 11:04:56 UTC (rev 112405)
+++ z3c.form/trunk/CHANGES.txt	2010-05-17 11:05:10 UTC (rev 112406)
@@ -2,9 +2,15 @@
 CHANGES
 =======
 
-2.3.4 (unreleased)
+2.3.5 (unreleased)
 ------------------
 
+- ...
+
+
+2.3.4 (2010-05-17)
+------------------
+
 - Bugfix: applyChanges should not try to compare old and new values if the old
   value can not be accessed.
 

Modified: z3c.form/trunk/setup.py
===================================================================
--- z3c.form/trunk/setup.py	2010-05-17 11:04:56 UTC (rev 112405)
+++ z3c.form/trunk/setup.py	2010-05-17 11:05:10 UTC (rev 112406)
@@ -45,7 +45,7 @@
 
 setup (
     name='z3c.form',
-    version = '2.3.4dev',
+    version = '2.3.5dev',
     author = "Stephan Richter, Roger Ineichen and the Zope Community",
     author_email = "zope-dev at zope.org",
     description = "An advanced form and widget framework for Zope 3",



More information about the checkins mailing list