DO NOT USE CHANGELOG, USE CHANGES.rst!

1.9.4 (2013-08-29)
------------------

- Fixed error of validate_content_types when checking a field that was an
  instance of OFS.Image.File
  [ichim-david]

- fix transaction note so long notes do not bork the transaction
  [vangheem]


1.9.3 (2013-08-14)
------------------

- Avoid UnicodeDecodeError in @@at_utils.translate if the value contains
  special chars
  [gbastien]


1.9.2 (2013-08-13)
------------------

- Make some methods of TypesWidget unpublishable.
  [davisagli]

- Allow commas as decimal marks for inputs in float fields. The comma is then
  replaced by Python's standard decimal mark, the dot. Commas as separators
  between the decimal and fractional part are quite common in Central Europe.
  [rnix]

- Remove UIDResolver's resolve_url and protect UIDCatalogBrains' getObject.
  Protect ReferenceEngine's getReferences and getBackReferences.
  Add security declarations to functions in utils.py.
  (Security fixes from PloneHotfix20130618)
  [davisagli]

- Pass request to field validation so errors are translated properly.
  [davisagli]

- Add a transaction note when setting a default value for a field which doesn't
  have a storage yet
  [frapell]


1.9.1 (2013-05-29)
------------------

- Fix computed widget, use getParentNode to get the parent object instead of aq_parent,
  like in field.pt (avoid Unauthorized error)
  [jfroche]


1.9.0 (2013-05-23)
------------------

- Unmark creation_flag after object rename so we still know that the object
  is in the creation process in sub methods around the renaming functionnality
  (setId calls manage_beforeDelete, 'onDelete' event, ...)
  [gbastien]

1.8.7 (2013-04-06)
------------------

- Ignore missing file and blob uploads during content_type validation
  [pjstevns]

- Before validating the field, make sure you actually have the field
  objects for the type
  [vangheem]

- Fix issue #7556 (https://dev.plone.org/ticket/7556) by adding
  validation of uploaded blobs by checking the allowable_content_types
  attribute of a field
  [pjstevns]

- Provide fix for issue #9774 (https://dev.plone.org/ticket/9774)
  change import target and update order params in install_uidcatalog
  from setuphandlers has different order params
  [bogdangi]

- Provide sane defaults for minute_step, which is an integer
  everywhere else.
  [tomgross]

- Fix when using archetypes.schemaextender. the keyword widget call to
  field.getAccessor return None, so to let integrator do sth we
  need to said index name is equal to field name.
  [toutpt]

- Don't fail if contenttype can not be acquired (eg PFG)
  [tomgross]

- Translate selection values in base_view, fix #7627 (https://dev.plone.org/ticket/7627)
  [kiorky]

1.8.6 (2012-12-09)
------------------

- Remember selected tags entry on form error
  [maartenkling]

- Add missing security declarations on the UIDResolver class.
  https://plone.org/products/plone/security/advisories/20121106/08
  [davisagli]

- Sanitize input to go_back script. This fixes
  https://plone.org/products/plone/security/advisories/20121106/11
  [davisagli]

1.8.5 (2012-11-15)
------------------

- Disallow downloading files via the at_download script if the user does not
  have the field's read_permission.  This addresses a security vulnerability
  discussed at http://plone.org/products/plone/security/advisories/20121106/17
  [davisagli]

- Add minute_step to CalendarWidget so we can define another minute step than
  hardcoded 5 for now
  [gbastien]

- If form tabbing is allowed, make sure we can still track the current fieldset
  if form submission returns to the edit form.
  [davisagli]

- Fix inline validation for items in the portal_factory.
  [davisagli]

- Change used event to update metadata during copy&paste fixes #13326 and makes
  1.8.5 compatible with LinguaPlone again.
  [do3cc]


1.8.4 (2012-10-15)
------------------

- Add support for non-KSS-based inline validation.
  [davisagli]

- Fixed some problems with IntDisplayList.
  [maurits]

- Update object creation date on paste; closes https://dev.plone.org/ticket/9896 .
  [davidblewett]

- Import ``getBrain`` from Products.ZSQLMethods and declare dependency for Zope
  trunk compatibility.
  [elro]

- Always add alt to image when shown in file widget
  [maartenkling]

1.8.3 (2012-08-23)
------------------

- Fixed i18n regression introduced in 1.8 in several templates.
  [vincentfretin]

1.8.2 (2012-08-18)
------------------

- tiff, psd and eps images scales are generated, in jpeg format.
  Fixes thumbnail view and main view for image contents with tif, psd or eps file.
  With tif files, scales were generated but couldn't be seen in Plone UI ;
  psd and eps scales weren't generated.
  Refs https://dev.plone.org/ticket/13077
  [thomasdesvenain]

- BaseObject.setId(): Remove leading/trailing space from given id.
  Fixes http://dev.plone.org/ticket/8338 (test still needed).
  [patch by stxnext, applied by kleist]

- Changed deprecated getSiteEncoding to hardcoded `utf-8`
  [tom_gross]

1.8.1 (2012-07-02)
------------------

- BaseObject.py, CatalogMultiplex.py, mimetype_utils.py, UIDCatalog.py:
  Don't use list as default parameter value.
  [kleist]


1.8 (2012-05-25)
----------------

- PEP 8 (ignoring W602, W604, E231, E241, E301, E302, E501 and E701).
  [hvelarde]

- Remove remaining hard-coded required markers. The 1.7.14 change only got
  one of them.
  [smcmahon]

- Moved form help from a div after form field labels to a span within. The
  purpose is to semantically associate the label to the form help so that
  it's more useful to a screen reader user.
  Note that sunburst's public.css and classic's form.css.dtml were
  simultaneously changed to assure block display of help in normal
  font-weight.
  Closes http://dev.plone.org/ticket/7212, an accessibility ticket.
  [smcmahon]

- Deprecated aliases were replaced on tests.
  [hvelarde]


1.7.14 (2012-05-07)
-------------------

- removed hardcoded required icon. It can and should be set by CSS as it is done
  in the formTabs
  [tom_gross]

- added 'placeholder' support for StringWidget, DecimalWidget and IntegerWidget
  [zopyx]


1.7.13 (2012-04-09)
-------------------

- Make sure inline editing calls target the
  id="parent-fieldname-$fieldName-$UID" on text fields.
  Closes http://dev.plone.org/ticket/12465
  [esteele]

- Fixed the KeywordWidget template and JavaScript source. the widget can
  now be used for fields with name different from "subject". Also multiple
  istances of this field can be used in the same page.
  See http://dev.plone.org/ticket/12218
  [keul]

1.7.12 (2012-02-07)
-------------------

- Animated GIF loses animation if Archetypes ImageField original_size property set
  see http://dev.plone.org/ticket/12488
  [anthonygerrard]

1.7.11 (2012-01-26)
-------------------

- Archetypes ImageField converts GIF to PNG when it scales
  see http://dev.plone.org/plone/ticket/12472 [anthonygerrard]

- Delete image also when field mutator is given a `None`
  argument. Previously, an image would only be deleted if given the
  string `"DELETE_IMAGE"`.

  Note that we still return immediately if provided an empty string.
  [malthe]

1.7.10 (2011-11-24)
-------------------

- Fix DateTimeField.set() to handle all date formats DateTime handles.
  See discussion at http://dev.plone.org/plone/ticket/10141
  [elro]

- Add render_own_label to TypesWidget. Allows "special" widgets that need to
  render their own label/help text for styling to override it. Closes
  http://dev.plone.org/plone/ticket/12355
  [ggozad, stefan]

- Add new viewletmanger that enable extra markup before the fieldsets
  [jfroche]

- Include UID of object in widget DOM ids, eg:
  id="parent-fieldname-$fieldName-$UID". This makes it possible to
  render multiple Archetype objects in the same view without duplicate
  DOM ids. This fixes http://dev.plone.org/ticket/9464
  [rochecompaan]

- Fix SelectionWidgets getSelected not return selected values if the value is a int
  with value 0
  [martior]

- Gracefully deal with ReferenceFields that had their referencesSortable flag
  changed after creation.
  [stefan]


1.7.9 (2011-09-19)
------------------

- Fix: Make sure user sees login form rather than an exception when trying
  to access /edit on an unauthorized context.
  This fixes http://dev.plone.org/plone/ticket/12056
  [davisagli]


1.7.8 (2011-09-16)
------------------

- Raise a NotFound exception when the at_download script cannot
  find the requested field.  I have seen the Google bot trying to
  index at_download/info@example.org and at_download/www.example.org,
  which is obviously wrong.
  [maurits]


1.7.7 (2011-08-23)
------------------

- Fixed http://dev.plone.org/plone/ticket/11387 (Missing & orphaned labels
  for check boxes and radio buttons) by deferring label generation for label,
  select and multi-select widgets to each widget's edit macro. In the case
  of the select and multi-select widgets, this allows the label to be generated
  (or not) once the format (checkbox, dropdown...) is known.
  Same for label for calendar widget.
  Thanks to mattbarkau and jdeluca for researching this and proposing a solution.
  [smcmahon]

- When checking isVisible in validation, use instance, not widget as argument.
  [tesdal]

- Do a double DateTime conversion to avoid timezone naive values.
  Refs http://dev.plone.org/plone/ticket/10141.
  [rossp]

- Avoid site error when we display a file whose mimetype is unknown.
  Refs http://dev.plone.org/plone/ticket/12061.
  [thomasdesvenain]

- Fixed initial content length used by textCounter. Length should be the length
  of a unicode string, not the utf-8 string.
  [vincentfretin]


1.7.6 - 2011-05-21
------------------

- Fixed DisplayList slices to work on Windows 64bit. This closes
  http://dev.plone.org/plone/ticket/11232.
  [hannosch]

1.7.5 - 2011-05-12
------------------

- Add forward compatibility with DateTime 3.
  [hannosch]

- Avoid flagging base units as changed, if their values didn't actually change.
  [hannosch]

- Clarify default value of `BaseUnit.filename` to be `None` instead of
  switching between `None` and an empty string in every request.
  [hannosch]

- Rights field has text/plain format only. (If no allowable_format specified
  for secondary fields, we get unexpected behaviour) This refs
  http://dev.plone.org/plone/ticket/9345.
  [thomasdesvenain]

- Put required field indicator inside the label tag, fixes #11726
  [dimboo]

1.7.4 - 2011-04-03
------------------

- Fix bug where a TextField's default_content_type was not respected when
  wrapping a non-BaseUnit value.
  [davisagli]

- Fixed test setup to work with ZCA-based GenericSetup profile registry.
  [davisagli]

- Fixed: all labels on edit form had 'display: block' css behaviour
  once there was keywords.
  [thomasdesvenain]

1.7.3 - 2011-03-02
------------------

- Fixed i18n of new keywords widget.
  [vincentfretin]

- Remove method docstrings in Referenceable and ReferenceEngine to prevent
  making them publishable.
  [davisagli]

- Fixed handling of Anonymous ownership in ExtensibleMetadata, where the
  ownership tuple is None. Also triggered for views on FactoryTool-wrapped
  objects.
  [mj]

1.7.2 - 2011-02-04
------------------

- Merge PLIP 11017: Tags MultiSelectionWidget w/scrollbar & checkboxes.
  [esteele]

1.7.1 - 2011-01-11
------------------

- Include plone.app.viewletmanager package to clear up plone.app.layout test
  failures.
  [esteele]

1.7 - 2011-01-03
----------------

- Merged optimizations from the `experimental.atrefspeedup` distribution into
  the reference engine. We avoid intersections with the large relationship
  index and loading the persistent reference objects where possible.
  [hannosch]

- Fix Referenceable, UIDCatalog to support references to non-Archetypes-based
  content.
  [toutpt]

- Use the new `plone.uuid` package to generate UUIDs. The UID() method is now
  an alias for ``IUUID(obj)``, which is the new preferred means of looking up
  a UUID, since this can also work for non-Archetypes content. Archetypes
  provides an IUUID() adapter that returns the value stored in the Archetypes
  UID attribute. For new content, UUIDs are generated using
  `plone.uuid.interfaces.IUUIDGenerator`, although old content will not (and
  need not) be migrated.
  [optilude]

- Handle getCharset() returning None in Field.encode/decode.
  [elro]

- Avoid various deprecation warnings under Zope 2.13.
  [hannosch]

- Fixed a SyntaxWarning when using assert in the migrations module.
  [deo]

- Cleaned OrderedBaseFolder by using OFS implementation of OrderSupport.
  [tom_gross]

- Depend on Zope 2.13.1
  [tom_gross]

- Fixed textCounter JavaScript to work with fieldnames with hyphen.
  API of textCounter-method changed. Second parameter takes now
  the name of the counterfield, not the DOM object itself.
  https://dev.plone.org/plone/ticket/11334
  [tom_gross]

1.6.5 - 2011-02-25
------------------

- Remove method docstrings in Referenceable and ReferenceEngine to prevent
  making them publishable.
  [davisagli]

- Handle getCharset() returning None in Field.encode/decode.
  [elro]

- Avoid various deprecation warnings under Zope 2.13.
  [hannosch]

- Fixed a SyntaxWarning when using assert in the migrations module.
  [deo]

- Fixed textCounter JavaScript to work with fieldnames with hyphen.
  API of textCounter-method changed. Second parameter takes now
  the name of the counterfield, not the DOM object itself.
  http://dev.plone.org/plone/ticket/11334
  [tom_gross]

- Fixed handling of Anonymous ownership in ExtensibleMetadata, where the
  ownership tuple is None. Also triggered for views on FactoryTool-wrapped
  objects.
  [mj]

1.6.4 - 2010-11-06
------------------

- Speed up the unicodeTestIn skin script.
  [maurits]

- Fixed chameleon incompatibilities.
  [swampmonkey]

1.6.3 - 2010-09-30
------------------

- Fixed TypeError introduced in the previous fix for the selection
  widget when the passed value was None.
  [maurits]

1.6.2 - 2010-09-28
------------------

- Fixed error in the at_selection_widget view of a SelectionWidget if
  the vocabulary has integer keys (usually with an IntDisplayList).
  When a value has been filled in and the form is redisplayed
  (e.g. due to missing required input on a different field) you would
  loose the filled in value as it is submitted as a string, which is
  not in the vocabulary.
  (Fix forward ported from branch 1.5.)
  [maurits]

1.6.1 - 2010-07-18
------------------

- Avoid duplicated import in `OrderedBaseFolder.py`. This closes
  http://dev.plone.org/plone/ticket/10425.
  [hannosch]

- Downgrade a user warning to a debug message about explicit permissions set
  on custom accessor and mutator methods.
  [hannosch]

- Removed outdated ``content_types.css`` used in the standard reference widget.
  [hannosch]

1.6 - 2010-07-01
----------------

- Provide class default for new referencesSortable property.
  [sureshvv]

1.6b11 - 2010-06-13
-------------------

- Avoid deprecation warnings under Zope 2.13.
  [hannosch]

- Avoid testing dependency on zope.app.testing.
  [hannosch]

1.6b10 - 2010-05-31
-------------------

- Fixed Chameleon compatibility of boolean widget.
  [hannosch]

- Fixed invalid XHTML in base_view.
  [hannosch]

1.6b9 - 2010-05-01
------------------

- Fix another regression in my CalendarWidget fix, to make it handle 12 p.m.
  correctly when using a 12-hour clock. Fixes
  http://dev.plone.org/plone/ticket/10487
  [davisagli]

- Simplify conversion of `DateTime` instances to non-ISO8601 representation.
  Refs http://dev.plone.org/plone/ticket/10141
  [witsch]

- Allow ReferenceFields to be sortable when referencesSortable is set True.
  [cah190,esteele]

1.6b8 - 2010-04-10
------------------

- Fix a regression in my CalendarWidget fix, to make it handle hour '12'
  correctly when using a 12-hour clock.
  [davisagli]

1.6b7 - 2010-04-10
------------------

- Make sure the CalendarWidget returns string representations of datetimes in
  a format that will be treated by the DateTimeField setter as being in the
  local timezone.
  [davisagli]

1.6b6 - 2010-04-08
------------------

- Products.Archetypes.Field.DateTimeField.set: DateTime 2.12 changed the
  ISO-string behavior. Convert date values to a non-ISO8601 representation, so
  that DateTime respects the server's timezone and the date's "Daylight Saving
  Time" (DST) instead of assuming naive timezones.
  Refs http://dev.plone.org/plone/ticket/10141
  [thet]

- Replace the required field indicator image with a unicode box.
  Refs http://dev.plone.org/plone/ticket/10352
  [davisagli, limi]

- Update `DateTimeField` mutator to also accept value with a time zone, but
  still add the local zone if none was given.
  Refs http://dev.plone.org/plone/ticket/10141
  [witsch]

- fixed broken warnings.warn() parameters in Schema/_init__.py
  [ajung]

1.6b5 - 2010-03-08
------------------

- Also treat effective/expiry dates specified via the `DateTimeField` widget
  to be from the local time zone.
  Refs http://dev.plone.org/plone/ticket/10141
  [witsch]

1.6b4 - 2010-03-05
------------------

- Fix issues with sliding modification/publishing dates by using `DateTime`'s
  `ISO8601` method instead of `ISO`, which doesn't include time zones.
  Refs http://dev.plone.org/plone/ticket/10140, 10141 & 10171.
  [davisagli, witsch]

- Made base_view work for public items in private folders. This closes
  http://dev.plone.org/plone/ticket/9040.
  [hannosch]

- Avoid str() on unicode objects before passing them to guess_content_type.
  [deichi]

- More HTML validity fixes.  The checkbox widget needs an element with
  an id for the label to attach to.
  [rossp]

- Tolerate some cases where fieldName isn't defined yet.
  [rossp]

- The AT widget renderer has potentially very useful support for rendering a
  widget for a field under a different name than the field name. But this
  support has never been fully integrated into the rest of the AT widget
  machinery. Also fixes validation errors with duplicate element ID's with
  widget uses such as the Topic criterion edit form.
  [rossp]

- More useful description of what the description/summary is actually good for.
  [limi]

1.6b3 - 2010-02-17
------------------

- Updated templates to follow recent markup conventions.
  References http://dev.plone.org/plone/ticket/9981.
  [spliter]

- Let the file widget produce valid HTML. This closes
  http://dev.plone.org/plone/ticket/9948.
  [hannosch]

- Ported the GenericSetup handlers for the reference and uid catalog from
  LinguaPlone into this package.
  [hannosch]

- Sanitize the behavior of the 'alt' and 'title' attributes for the
  image_field.tag function. This closes http://dev.plone.org/plone/ticket/8756.
  [dukebody]

- Move the fields and fieldsets calculations from base_edit to the view class.
  There's no good reason why we need to do nested list comprehensions in a
  template.
  [hannosch]

1.6b2 - 2010-01-29
------------------

- Use the http://dev.plone.org/plone/changeset/33504 "unordered" ordering
  adapter for former "Large Plone Folder" content. This references
  http://dev.plone.org/plone/ticket/9791
  [witsch]

1.6b1 - 2010-01-25
------------------

- Portal variable no longer available via global definitions - fixed in skin
  widgets/reference.pt.
  [thet]

- Inserted explicit i18n:translate for the form tabs to make sure Chameleon
  does the right thing. This fixes http://dev.plone.org/plone/ticket/9224
  [limi]

- Removed some test helper constants, support for Zope 2.9 has long gone.
  [hannosch]

- Stop using the session_restore_value script. We never create a session in the
  first place, so looking for one is pointless.
  [hannosch]

- Don't render an empty select tag when there are no keywords defined.
  This references http://dev.plone.org/plone/ticket/9222
  [limi]

- There's no attribute wrap=off for textareas in keywords. Removed. References
  http://dev.plone.org/plone/ticket/9222
  [limi]

- Avoid needless zodb writes while creating content in the
  portal_factory.  Patch by hazmat.  Merged from 1.5 branch.
  Fixes http://dev.plone.org/plone/ticket/9672
  [maurits]

- Actually use IImageField, and add markers for other field types just to be
  consistent.
  [optilude]

1.6a4 - 2009-12-27
------------------

- Cleaned up manage_options for base types. No longer show unsupported ZMI
  screens. The functionality is still present for those that know its use and
  limitations.
  [hannosch]

- Respect the use_combined_language_codes setting from portal_languages if
  PloneLanguageTool is installed. Fixes http://dev.plone.org/plone/ticket/8907.
  [erico_andrei, hannosch]

- Let content_types.css.dtml no longer rely on content_icon.
  [hannosch]

- Redirect to the object view URL when the user is coming from the edit view of
  the object and clicks the Cancel button. This closes
  http://dev.plone.org/plone/ticket/8853.
  [dukebody, thanks hannosch and wichert]

- Fixed package dependencies.
  [hannosch]

1.6a3 - 2009-12-02
------------------

- Fix a regression from my adjustments to AT factories, to make sure that the
  reference engine still gets initialized before initializeArchetype is called.
  [davisagli]

1.6a2 - 2009-11-17
------------------

- Changed the language field in ExtensibleMetadata to respect the default
  language set on the portal_languages tool and remove incorrect "site default"
  from the "Language neutral" term.
  [hannosch]

- Updated readme and fixed reST errors in changes.txt.
  [hannosch]

1.6a1 - 2009-11-17
------------------

* Remove version.txt and functions that read it.
  [hannosch]

* Modified the auto-generated type factories for compatibility with CMF 2.2.
  The _constructInstance method of CMF FTI objects now takes care of raising
  object events for old-style factories, so AT factories no longer raise
  their own events.
  [davisagli]

* Restructured and restyled inandout widget to fix issue with rtl scripts.
  http://dev.plone.org/plone/ticket/5660
  [emanlove]

* Replaced the css_slot with the style_slot, as the deprecated
  css_slot is now really removed in Plone 4.
  [maurits+maartenkling]

* Sanitized the log message handling. Added a simple log module based on
  Python's logging module. The log methods in the debug module calculate
  the entire stack frame on *every* log call.
  [hannosch]

* "Categories" are now "Tags", in line with common usage and terminology.
  [limi]

* Changed the test_metadata tests regarding dates to change reasonable times.
  Times around the year 1000 had somewhat different timezones.
  [hannosch]

* Adjust to refactoring of CMFCatalogAware and PortalFolder's use of it.
  [davisagli]

* Fix for missing short-name field due to removal of globals.
  http://dev.plone.org/plone/ticket/9429
  [esteele]

* Deprecated our own IOrderedContainer interface in favor of the version
  from OFS. We do require Zope 2.7 for a while now ;)
  [hannosch]

* Declare package dependencies and fixed deprecation warnings for use
  of Globals.
  [hannosch]

* Removed PloneCompat module and moved transaction_note to utils.
  [hannosch]

* Removed tabindex and Iterator from the template scopes. Their use was
  discouraged long ago.
  [hannosch]

* Removed utils.getPkgInfo and `__pkginfo__`. We use setuptools as our
  distribution and package information platform.
  [hannosch]

* Removed unsupported AggregatedStorage. You can easily convert this into
  an add-on package if you use this storage.
  [hannosch]

* Fixed remaining test failures caused by CMFPlone dependencies. Moved
  normalizeString method to the edit view instead of requiring plone_utils.
  [hannosch]

* Created a separate layer for Archetypes, that does not depend on the
  Five ZCML layer anymore. AT tests can finally be run in isolation of other
  installed packages. Fixed a couple of test failures which now have a
  deterministic output.
  [hannosch]

* Removed a couple of assert statements which wouldn't help in any way.
  [hannosch]

* Changed all references to `here` in all templates to `context`.
  [hannosch]

* Removed reference graph visualization based on graphviz. It is
  unmaintained and certainly not a core feature.
  [hannosch]

* ``TextField._process_input doesn't forward **kwargs`` this fix
  https://dev.plone.org/plone/ticket/7597 [garbas]

* Traverse to ``plone_utils`` tool instead of relying on it being
  available in global variable scope. [malthe]

* Do not add empty schemas into a CompositeSchema anymore.
  This closes http://dev.plone.org/plone/ticket/7584.
  [hannosch]

* Removed deprecated _guessPackage method. This closes
  http://dev.plone.org/plone/ticket/7569.
  [davisagli]

* Normalizing the "id" attribute for fieldsets and fieldset legends, so
  javascript schemata selection works for schematas that have spaces in
  the title. This closes http://dev.plone.org/plone/ticket/7999.
  [rsantos]

* Added a missing alt tag to the image in the file widget. This closes
  http://dev.plone.org/plone/ticket/7763.
  [hannosch]

* Removed the rebuild catalog tab from the reference and uid catalog. The
  method is still there and can be accessed via the URL, but you won't
  accidentally click on a tab in the ZMI anymore and have your catalog be
  rebuilt without a warning. This closes
  http://dev.plone.org/plone/ticket/8093.
  [hannosch]

* Fixed the SelectionWidget view to keep the order of the passed in values
  on output and not sort after arbitrary Python internal dict order. This
  closes http://dev.plone.org/plone/ticket/7272.
  [hannosch]

* Fixed a macro expansion error when customizing templates which used
  the folderlisting macro from base.pt. This closes
  http://dev.plone.org/plone/ticket/6672.
  [hannosch]

* Purged old Zope 2 Interface interfaces for Zope 2.12 compatibility.
  Consider branching before this revision if release required before Plone 4.
  [elro]

* Avoid a failure in addCreator when called on an object without an
  Acquisition chain.
  [hannosch]

* Remove the long long deprecated 'type' class variable, which was
  replaced with 'schema'.
  [wichert]

* Allow fields to supply their own PdataStreamIterator. This closes
  http://dev.plone.org/plone/ticket/7572.
  [hannosch]

* Fixed off-by-two error in transaction_note. This refs
  http://dev.plone.org/plone/ticket/7610.
  [hannosch]

* Add a new publish traverse that exposes image fields and their scales.
  This removes the need for content types to have a __bobo_traverse__ method.
  [wichert]

* Move export/import step registrations to exportimport/configure.zcml. This
  change requires CMF trunk.
  [stefan]

* Added dependencies to GenericSetup profile.
  [hannosch]

* Removed five:implements statements from ZCML, which are already done in the
  classes themselves.
  [hannosch]

* Minor tweak in the calendar widget.
  [deo, hannosch]

* Converted Archetypes tests to use CMFTestCase as a base again, instead of
  PloneTestCase. Fixed all tests / code to actually work without Plone
  installed.
  [hannosch]

* Removed Archetypes Site customization policy.
  [hannosch]

* Removed deprecated code.
  [hannosch]

* Moved rejectAnonymous script from CMFPlone over, as it is still used
  inside base_metadata.cpt.
  [hannosch]

1.5.16 - unreleased
--------------------

* Fix the ImageWidget's preview_tag method to fetch the available scale
  sizes correctly using the field's getAvailableSizes method, rather than
  assuming its sizes attribute is a dictionary, since callables are allowed.
  [davisagli]

* Sanitize the behaviour of the 'alt' and 'title' attributes for the
  image_field.tag function.
  This closes http://dev.plone.org/plone/ticket/8756.
  [dukebody]

1.5.15 - 2010-01-25
-------------------

* Be more defensive in our assumptions about the Acquisition context of new
  items. This closes http://dev.plone.org/plone/ticket/10088.
  [hannosch]

1.5.14 - 2010-01-14
-------------------

* FixedPointField required validation now counts zero as a value, and the
  default default value is now None like other numeric fields, rather than
  0.00.  This closes http://dev.plone.org/old/plone/ticket/9414.
  [kilobug, davisagli]

* Pass request when testing validation in test_fields.
  [ccrownhart, jnelson, tesdal]

* Use the same default messages than in Plone for label_effective_date and
  help_expiration_date msgids. There is no new strings to translate.
  See http://dev.plone.org/plone/ticket/9633
  [vincentfretin]

1.5.12 - 2009-09-06
-------------------

* Replaced fti/title_or_id by fti/Title in edit_macros.pt.
  This fixes content type title translation when the i18n domain is different of plone.
  Note that the Title method defined in Products.CMFCore.TypesTool.TypeInformation
  takes care of id fallback if the title is not defined.
  [vincentfretin]

* Fix mapping for an i18n string in Field.validate_vocabulary. This closes
  http://dev.plone.org/plone/ticket/9287
  [vincentfretin]

* BaseObject.getCharset() now supports extraction of the default_charset
  for plain CMF sites.
  [ajung]


1.5.11 - 2009-03-30
-------------------

* When saving an AT object only validate the visible fields in the schema.
  (avoids hidden and invisible ones). Fixes
  http://dev.plone.org/plone/ticket/7964
  [massimo]

* Fix XML validity in base_edit.
  [mborch]

* Extinguishing last use of document_actions and add missing
  documentFirstHeading class in the metadata_macros template.
  [limi]

* check unrendered widget in KeywordWidget process_form.
  Fix for http://dev.plone.org/plone/ticket/8738
  [gotcha]

* Add implements-flag for ICatalogableDublinCore to ExtensibleMetadata.
  [wichert]


1.5.10 - 2008-09-30
-------------------

* Fire WebDAVObjectInitializedEvent/WebDAVObjectEditedEvent when
  content is created/edited via PUT/MKCOL. This is part of the fix
  for http://dev.plone.org/plone/ticket/7338
  [sidnei]

* A FixedPointField with a value between -1 and 0 (e.g. 0.5) is now
  stored as (0, -5) and shown correctly instead of as +0.5.  This
  closes http://dev.plone.org/plone/ticket/7549
  [maurits]

* Added search macro to zid.pt. This closes
  http://dev.plone.org/plone/ticket/7601
  [dukebody]

* Don't bail if fieldsets is empty in 'base_edit'.  This closes
  http://dev.plone.org/plone/ticket/7858
  [nouri]

* Backported the fix for id attribute of schematas with spaces.
  This closes http://dev.plone.org/plone/ticket/7999.
  [rsantos]

* Backported the fix for CatalogMultiplex.reindexObjectSecurity to check
  for the specific CMF catalog interface before trying to update the
  security stuff. This closes http://dev.plone.org/plone/ticket/8271.
  [deo]

* Make ExtensibleMetadata implement the IMutableDublinCore interface.
  [wichert]

* Fixed small grammar error in Field.py validation message.
  [hannosch]


1.5.9 - 2008-07-02
------------------

* According to rfc1806 the header is Content-Disposition not
  Content-disposition. Case matters, at least for IE6 (and results in
  IE6-typical strange effects).
  [jensens]

* Add a new archetypes.edit.afterfieldsets viewlet manager which
  can be used as a replacement of the extra_bottom slot on the edit
  view.
  [wichert]

* Add 'keepReferencesOnCopy' option to ReferenceField, which allows
  control over whether references of that field are copied on copy
  or not.  This defaults to False.
  [daftdog, nouri]

* Backported the fix for the KeywordWidget 'checkbox' format support.
  [deo]

1.5.8 - 2008-04-21
------------------

* Fix code in 'Field.validate_vocabulary' that would validate a set
  of values OK if the last element was in the vocabulary, but others
  weren't.
  This closes http://dev.plone.org/plone/ticket/7809
  [nouri]

* Change BooleanField to return actual booleans instead of the raw value.
  [wichert]

* Fixed validation messages to translate the inner parts of the mappings
  explicitly. This fixes the '${label_foo} is required, please correct.'
  messages.
  [hannosch]

* Remove invalid leading whitespace in hrefs.
  [wichert]

* Fixed NameError in Field.py when an error occurs in a transform. This
  closes http://dev.plone.org/plone/ticket/7905.
  [hannosch, sidnei]

* Add a new preview_scale property to ImageWidget. This is used by the edit
  view when showing the image. If the scale is not present the previous
  logic (only show if the image is <100kB in size) is used.
  [wichert]

* Add a new formQuestion class to field labels.
  [dannyb]

* Don't show the 'next' button if we allow tabbing, i.e. we're
  displaying all schematas on the same page.
  Fixes http://dev.plone.org/plone/ticket/6936
  [nouri]

1.5.7 - 2008-03-08
------------------

* Apply patch in http://dev.plone.org/plone/ticket/7777
  [nouri]

* Fixed calculation of default fieldset when the "default" schemata only
  contains invisible fields.
  [witsch]

1.5.6 - 2008-02-15
------------------

* Add a plone.locking unlock subscriber for IObjectInitializedEvent. This
  ensures non portal_factory (and LinguaPlone translations) are unlocked
  after creation.
  [ldr]

* Show the plone.abovecontentbody viewlets once per body instead
  of once per field.
  [wichert]

* Add checkbox in updateSchemaForm to remove the instance schemas.
  This is possibly needed when going from Archetypes 1.5.1 or
  earlier to a newer version.  Should be safe unless you know that
  you have content items with local schemata that you need to keep.
  [maurits]

* In mkDummyInContext use _setObject instead of setattr.  This means
  dummy content in the tests shows up when using
  context.objectIds().
  [maurits]

* Remove test dependency on ArchetypesTestUpdateSchema as this does
  not work on Zope > 2.7.  Unused tests removed.
  [maurits]

* Changed 'form.inlineForm' in 'archetypes_kss/at.kss' to use
  'kssSubmitForm' instead of simply 'currentForm'. This is needed
  to support multi-valued form variables in inline editing.
  This is dependent on http://dev.plone.org/archetypes/changeset/9200
  [raphael]

* Calling `getDefault` twice is unnecessarily slow and could potentially
  cause bugs when a `default_method` returning an object is used for the
  field.  In that case the field would get initialized with one instance,
  but a second, different instance would be returned from the call to `get`.
  [witsch]

1.5.5 - 2007-12-29
------------------

* If allow_discussion is set as an attribute on a content type class,
  ExtensibleMetaData.allowDiscussion() may hit a bug in CMF 2.1.0's
  CMFDefault.DiscussionTool.overrideDiscussionFor() that tries to delete
  a missing attribute, causing an AttributeError. This may be avoided by
  using GS instead of a class attribute to control discussion on the
  type, but there's no reason I can see to break old code. Fixed by
  catching exception. Closes http://dev.plone.org/archetypes/ticket/761
  [smcmahon]

* Archetypes should inform the widgets when processing the form in the
  validation phase.
  This closes http://dev.plone.org/archetypes/ticket/760
  [deo]

* Backported the fixes from r8665 and r8804: zope.i18n.translate calls
  should use the request, not the instance itself as the context.
  [deo]

1.5.4 - 2007-11-07
------------------

* Made the getSelection method in browser/widgets.py return the selection
  in the character set of the vocabulary -- not the input value.
  Fixes issue #759, UnicodeDecodeError with selection/multiselection
  widgets.
  [smcmahon]

* CalendarWidget would not return a value without JavaScript support from
  calendar_formfield.js. This is disabled for unauthenticated users in
  Plone 3. Added a process_form override method to CalendarWidget to
  assemble the input components.
  [smcmahon]

* Revert http://dev.plone.org/archetypes/changeset/8683 - Dont skip the
  'metadata' schema in base_edit. Wichert and I agreed thats this is
  wrong. Specially inside a bug-fix release. If theres a good reason to
  remove the metadata from fieldsets, we can do it in the next release.
  The UI was broken as well, btw.
  [jensens, wiggy]

1.5.3 - 2007-10-07
------------------

* Skip the 'metadata' schema in base_edit, like we used to do it
  pre-1.5.  Also, do not render fieldset and legend elements when
  we're only displaying one fieldset, i.e. the 'default' one.
  [nouri]

* Provide bbb alias for ReferenceEngine.UIDCatalog. This closes
  http://dev.plone.org/plone/ticket/6507.
  [hannosch, naro]

* Restore use of the defaultLanguage method for the language field and
  undeprecate it. This is done for two reasons: there is no alternative
  to this feature, which LinguaPlone requires, and there never was a
  deprecation warning.
  [wichert]

* Fix clicking on the "next" or "previous" button raises
  'Non-existing fieldset: None'.
  http://dev.plone.org/archetypes/ticket/754
  [encolpe]

* Forward-ported the disable-delete-option-when-required feature of image
  widgets from 1.4.
  [mj]

* Re-added UIDCatalog import to ReferenceEngine for sites migrating from
  Plone 2.1 (where the UIDCatalog is a class in that module).
  [mj]

1.5.2 - 2007-09-12
------------------

* Changed browser/configure.zcml to update unnecessarily restrictive
  permissions for two widget views. These were requiring ModifyPortalContent
  even though they exposed no private information, thus making the widgets
  less useful outside Archetypes.
  [smcmahon]

* Made OrderedContainer implement OFS.interfaces.IOrderedContainer.  Fixes
  bug #7084 in Plone issue tracker.
  [rocky]

* Update schema handling code to always use self.Schema() to get the current
  schema and never (re)set self.schema.
  [wichert]

* Fix the change made in 1.5.1 which produced invalid XHTML
  [limi]

1.5.1 - 2007-09-10
------------------

* Updating the AT widget views to be rendered inline, so they can be
  invoked in View mode by KSS without any special magic. This is a
  prerequisite for bug #6705 in the Plone issue tracker.
  [limi]

1.5.0 - 2007-08-16
------------------

* ImageField.set used 'size' attribute instead of 'get_size' API.

* added support for default DCMI "Right" using the portal_metadata
  tool. This closes http://dev.plone.org/plone/ticket/5831.
  Remark: overall support of portal_metadata is very poor.
  [jensens]

* Removed hard dependency on the plone.locking package.
  [hannosch]

* Removed a hard dependency on the plone.i18n package in Field.py.
  [hannosch]

* Don't attempt to convert to 'text/plain' in
  Archetypes.Field.FileField.getIndexable if there's no path to it.
  This avoids loading the whole file contents into memory for these
  cases.
  [nouri, drjnut]

1.5.0-rc3 - 2007-07-27
----------------------

* Fixed the msgid for the description of the location field. This closes
  http://dev.plone.org/plone/ticket/6797.
  [hannosch]

1.5.0-rc2 - 2007-07-13
----------------------

* Added a special fieldproperty type for reference fields, with a more
  generic base class for any field accessors/mutators that need to acquire
  tools. This uses a workaround for the fact that not all tools are
  utilities (yet) and acquisition doesn't work properly in property
  descriptors.
  [optilude]

* Fixed allowDiscussion handling in ExtensibleMetadata.
  This closes http://dev.plone.org/plone/ticket/5977.
  [hannosch]

1.5.0-rc1 - 2007-07-04
----------------------

* Removed all utility registrations.
  [hannosch, wichert]

* Fix incorrect test for value added to a display list. This fixes
  http://dev.plone.org/plone/ticket/6634
  [wichert]

* Corrected wrong i18n markup in edit_macros. This closes
  http://dev.plone.org/plone/ticket/6583.
  [hannosch]

* Updated keywords related i18n messages to reflect their new name.
  [hannosch]

1.5.0-b5 - 2007-05-05
---------------------

* Never validate fields that are not writeable.
  [optilude]

* Remove colors from log entries.
  [wichert]

1.5.0-b4 - 2007-04-28
---------------------

* Added an ATDateTimeFieldProperty version of the ATFieldProperty mentioned
  below. This takes care of conversion between Zope 2 DateTime's and Python
  datetime objects.
  [optilude]

* Convert filename to ASCII in Content-Disposition header on
  download. This fixes #620.
  [nouri]

* Added Products.Archetypes.fieldproperty.ATFieldProperty, which can be
  used analogously to zope.schema.fieldproperty.FieldProperty for Archetypes
  fields. See the doctest in that module for details.
  [optilude]

* Added an at_textarea_widget view and used it instead of the checkSelected,
  unicodeEncode and lookupMime scripts on the textarea and visual widgets.
  [hannosch]

* Replaced the getSelectionWidgetSelected script introduced in beta2 with the
  at_selection_widget browser view. This allows us to use a Python generator
  and safes us from iterating over all values in the vocabulary, when the
  first value is already the selected one.
  [hannosch]

* Make the boolean widget work correctly with or without javascript.
  [elvix]

* Removed the default value for starting_year from the CalendarWidget. This
  ensures the value can be looked up dynamically from the properties.
  [hannosch]

* Disable the content border when an object is being added using
  portal_factory. These tabs don't make sense in an "add form" scenario,
  and were causing errors.
  [optilude]

1.5.0-b3 - 2007-03-20
---------------------

* Refactored installation code. This is now based on a GenericSetup extension
  profile instead of the old Extensions/Install.py way.
  [hannosch]

* Removed tests/runalltests.py and tests/framework.py as they have
  outlived their usefulness. To run tests use Zope's testrunner:
  ./bin/zopectl test --nowarn -s Products.Archetypes
  [stefan]

* Added the Location element (also known as Coverage in Dublin Core) to the
  standard metadata set. This allows lots of interesting things like
  geotagging of images, location notices on news items, etc.
  [limi]

1.5.0-b2 - 2007-03-05
---------------------

* Added a new LanguageWidget that does the same as the SelectionWidget but
  does not try to translate the vocabulary using the normal translation
  machinery. It should use the Zope 3 locales information instead.
  [hannosch]

* Speed up the selection widget considerably by calculating the selected
  values ones and not for every value in the selection using a new
  getSelectionWidgetSelected script.
  [hannosch]

* Modernized some code in checkSelected and unicodeEncode scripts.
  [hannosch]

* Removed explicit invocations of the translate script from various
  vocabulary widgets. The getValue method of a vocabulary returns a Message
  which can be translated by the usual TAL engine.
  [hannosch]

* Allow field defaults to be looked up using an adapter of the instance
  to IFieldDefaultProvider, with a name that is the same as the field name
  in question (only if no default or default_method was set for that
  field). This allows dynamically determined, context-sensitive defaults
  without having to add a method into the class itself.
  [optilude]

* Make it possible to use vocabulary_factory for fields, giving the name
  of a Zope 3 style named IVocabularyFactory utility. This means that
  Archetypes fields can use more general Zope 3 vocabularies, and share them
  with e.g. formlib forms.
  [optilude]

1.5.0-b1 - 2007-02-27
---------------------

* Fixed deprecation warnings for minimalpath in skins install code.
  [hannosch]

* Updated error message handling in validation to use Zope3-style translation,
  which is available in the latest PTS.
  [hannosch]

* FileField is now a bit cleverer about indexing.  If you set a file
  field to be 'searchable' it will now per default attempt to
  convert it to plain text on indexing.
  [nouri]

* Replaced status message handling with new approach based on
  Products.statusmessages. This refs http://dev.plone.org/plone/ticket/6131.
  [hannosch]

* Automatic title to id generation is now optionally based on the plone.i18n
  package instead of requiring the plone_tool.
  [hannosch]

* Merged the plip174-reusable-i18n branch. This adds the optional ability to
  control the language metadata on objects by an utility approach based on
  plone.i18n.
  [hannosch]

1.5.0-a2 - 2007-02-06
---------------------

* Removed the typeDescription and typeDescMsgId attributes from all content
  classes. These were only used on the edit form which has been altered to
  use the Description method from the type information instead.
  [hannosch]

* Removed some BBB code in generator/i18n.py.
  [hannosch]

* Adjusted some code to work better with the CMF 2.1 tools as utilities work.
  [hannosch]

* Fix failing test in traversal.txt:184, where an acquired template
  overrode a view.  Added logic to BaseObject.__bobo_traverse__ to
  make sure the right order is respected.
  [nouri]

* Turned off debug mode for writeable checks on fields per default, as this
  caused a major performance problem with KSS.
  [hannosch]

* Made it work with the kss merge in. Some templates are modified,
  extra markup is added and a kss decorator view is defined that is
  overwritten if kss is loaded. Currently the addability support in
  the reference and inandout widgets has its javasacript commented
  out, this needs to get fixed asap.
  [ree]

* By default base_edit will show all fields of all schemas on one page now.
  The old behaviour can be kept by marking a content type with the
  IMultiPageSchema interface.
  [fschulze]

* Made ATSiteTestCase inherit its layer from PloneTestCase.
  [stefan]

* Fixed a DeprecationWarning for listContentTypes(by_metatype=1).
  [hannosch]

1.5.0-a1 - 2006-10-25
---------------------

* Cleaned up event usage: IObjectCreatedEvent is now fired during generated
  constructor, and two custom events are fired during processForm() -
  IObjectInitializedEvent and IObjectEditedEvent. Both inherit from
  IObjectModifiedEvent, and the Initialized event is fired on the first
  save, whereas the Edited event is fired on subsequent saves.
  [optilude]

* Applied patch from George Lee and modernised code a bit for Zope 2.10,
  to support event-based pre- and post-validation. See interfaces/_event.py
  [optilude]

* Cleaned up VarClassGen a bit to make it potentially useful for people
  needing it as part of a custom ISchema adapter.
  [optilude]

* Made it possible to look up AT schema using an adapter from self
  to ISchema. See note in Schema/factory.py.
  [whit, optilude]

* Fix #585 by providing the right arguments for testCondition in templates.
  [nouri]

* Added small optimizations for DisplayLists to not translate values of type
  Message by itself, added some tests.
  [hannosch]

* Deprecated explicit msgid attributes on DisplayLists. Store Zope3 Messages
  directly as values instead to get the same behavior.
  [hannosch]

* Deprecated the generator.i18n module. We use the translate method of the
  GlobalTranslationService directly for now, as long as we support
  PlacelessTranslationService. Ultimately this should be replaced by calls
  to 'from zope.i18n import translate'
  [hannosch]

* Removed outdated message catalogs and changed the few remaining texts in the
  'archetypes' domain to use the 'plone' domain instead. The translation
  files can be found as usual as part of the PloneTranslations product.
  [hannosch]

* Changed BaseObject and ExtensibleMetadata to use new Message approach for
  internationalization of labels and descriptions.
  [hannosch]

* Optimized the basic widget for the new default case of labels and
  descriptions as Messages. These are not translated automatically anymore
  but this is delayed to be triggered by the time they are rendered in a TAL
  context. This will ultimately safe quite some translation machinery hackery.
  [hannosch]

* Modernized DisplayLists to use isinstance instead of type checking. Now
  derived string types like Messages are allowed as keys and values as well.
  [hannosch]

* Removed last bits of dependency version checks from __init__.py as well as
  support for INSTALL_DEMO_TYPES. These types are not meant to be used in a
  live site but only serve as code examples and are used during test runs.
  [hannosch]

* Renamed sample_content profile to sample_types as it only includes types
  but no content ;) This profile is not registered globally anymore but only
  during test runs, as these types aren't meant to be used for anything else.
  [hannosch]

* Marked Base* as implementing their Z3 interfaces.
  [hannosch]

* Based tests on PloneTestCase with extension profile support for site setup.
  [hannosch]

* Added (Default) alias to base_view to all sample types, so calling them will
  still work in CMF >= 2.0.
  [hannosch]

* Removed deprecated spec argument from listFolderContents and
  folderlistingFolderContents of BaseFolderMixin.
  [hannosch]

* Changed import of TAL.ndiff to zope.tal.ndiff.
  [hannosch]

* Cleaned up XXX comments, converted non-critical ones to TODO.
  [hannosch]

* Removed five:traversable from configure.zcml as it is not needed anymore for
  Zope 2.10, which we require now.
  [hannosch]

* Cleaned up some comments, removed a pdb and an unused zLOG import.
  [hannosch]

* Removed some more BBB code.
  [hannosch]

* Removed deprecated ArchetypesTestCase.py.
  [hannosch]

* Adjusted rest tests to Zope2.10 output.
  [hannosch]

* Remove BBB code for calendar_macros.
  [hannosch]

1.4.5 unreleased
----------------

* Encode values in Field.toString so we do not fall over fields with
  unicode default values that contain non-ASCII text.
  [wichert]

* Fixed possible Unicode problem in BaseObject's SearchableText. This
  closes http://dev.plone.org/archetypes/ticket/720.
  [hannosch]

1.4.3 - 2011-05-21
------------------

* Add an ObjectModifiedEvent right after `initializeArchetype`,
  since that modifies the object with default values defined in the
  schema.
  [nouri]

* Fix http://dev.plone.org/archetypes/ticket/712: Do not put security
  declarations on a ComputedAttribute, or on 'def content_type(self)'.
  [mj]

* BooleanWidget always displays 'True' and 'False'. This is very IT-centric!
  In real world people prefer 'Yes' and 'No' - or custom settings. Latter was
  fixed before, but Archetypes should have a sane default behaviour, so its
  now changed to display 'Yes' and 'No' - and is l10n aware.
  [jensens]

* BooleanWidget offers to show something different than True/ False in view
  macro using a vocabulary. Unfortunally it passed a boolean to the
  DisplayList, which raised a TypeError. Now we pass the string
  representations 'True' and 'False using 'str(key)', so one can define
  a vocabulary like [('True', 'Yes'), ('False', 'No')].
  [jensens]

* Fix http://dev.plone.org/archetypes/ticket/686: "zid.pt does not
  respect the portal wide visible_ids setting".
  [nouri]

* The last change expected portal_type global available. This is true for all
  good archetypes products ;-) but failed with CacheSetup, where editmacros
  was called w/o setting it. Archetypes now ignores this missing global and
  inititalize it to 'unknowntype'.
  [jensens]

* for better css styling hpeter added a class and a id to edit_macros form
  element, which enables per-type styling of base_edit.
  [jensens]

* Fix unicodeEncode skin method to deal with sequences; fixes SelectionWidget
  with underlying LinesField case where the current value was not reflected
  in the edit widget. Fixes issue #705.
  [mj]

* BaseContent.PUT will now also fire the object modified event.
  [nouri]

* Update the base folder types to use sane permissions for
  manage_copyObjects, manage_pasteObjects, manage_renameObject(s)
  rather than the default 'View management screens' given by
  OFS.CopySupport (the permission mapping used is from
  Plone.PloneFolder)
  [alecm]

* Backported the catalog unindexing silencer code from trunk, as in contrast
  to the former code on this branch it doesn't use any private attributes.
  [hannosch]

* Fixed translation domain of two messages in go_back.cpy. These were missing
  from the Archetypes translation files.
  [hannosch]

1.4.2-final - 2006-12-15
------------------------

* Fixed missing declaration of timestamp property in TextAreaWidget for
  append_only mode.
  It may need a better intregration of plone datetime format property.
  [encolpe]

* Fixed missing i18n statement for the text format label on visual widgets.
  This closes http://dev.plone.org/archetypes/ticket/687.
  [hannosch]

* Fixed a minor issue of FixedPointField: It now works with integer default
  value.
  [jensens]

* Add a try: finally: clause in AllowedTypesByIfaceMixin when deleting
  the typeinfo "temporarily" Fixes http://dev.plone.org/plone/ticket/5314
  [alecm]

* Fix the unique name finder during initial rename on create so that it
  checks the names validity.  Fixes http://dev.plone.org/plone/ticket/5044
  [alecm]

* Fix BaseObject.isBinary to not assume AttributeStorage.  Fixes
  http://dev.plone.org/plone/ticket/5822
  [alecm]

* Silenced more catalog unindexing log error messages by checking if
  an object exists in the catalog before uncataloging.
  [rocky]

* Fixed #5963. Now all the first headers of the page have
  "documentFirstHeading" class applied.
  http://dev.plone.org/plone/ticket/5963
  [spliter]

* Fixed #5929. UID catalog rebuild broke path convention.
  http://dev.plone.org/plone/ticket/5929.
  [hannosch]

* Made tests use layers for AT site setup.
  [stefan]

1.4.1-final - 2006-09-08
------------------------

* Fix #635.  Large files were truncated on `setFileName`.  In
  `setFilename` of FileField, we now set the `filename` attribute
  directly instead of retrieving the BaseObject, setting the
  filename and setting the object again.
  [nouri]

* Fixed log_exc function in debug.py to print the actual exception including
  the traceback.
  [hannosch]

* base_edit (anything calling processForm, actually) now fires off
  appropriate IObjectCreatedEvent and IObjectModifiedEvent zope 3 events
  [rocky]

* Made the BaseObject __bobo_traverse__ fallback on Five traversal except in
  those cases where it would return something different.  This allows views
  to override acquired attributes. (this change is not intended for Zope 2.10,
  which behaves differently)
  [alecm]

* Fixed simple xhtml non-compliance and some erroneous i18n markup.
  [hannosch]

* Make all WebDAV request types return NullResources on failure, not just PUT
  and MKCOL.  This fixes a test failure resulting from some Zope traversal
  machinery tweaks.  Thanks to sidnei for webdav guidance.
  [alecm]

* Safari uses HTTP_ACCEPT=='*/*', which meant that the image widget never
  rendered an image due to some faulty boolean logic.
  [alecm]

* Backport of fix for #585 from trunk
  [nouri]

* Add a multiple catalog aware reindexObjectSecurity to BaseObject. This
  fixes problems with security checks in catalogs when objects are changed
  through other means than normal editing (such as workflow changes).
  [wichert]

* Fix #670: addCreator function fails with AttributeError in
  ExtensibleMetadata.  This closes
  http://dev.plone.org/archetypes/ticket/670
  [nouri]

1.4.0-final - 2006-06-16
------------------------

* Undeprecated 'public', there are too many products relying on it and it's
  just a name change without any real benefit.
  [hannosch]

1.4.0-RC1 - 2006-06-02
----------------------

* Use zope.contenttype in favor of zope.app.content_types if available.
  [hannosch]

* Added a new GenericSetup profile 'sample_content' which installs all
  available sample content types. This should mainly be used as a basis for
  the test setup.
  [hannosch]

1.4.0-beta1 - 2006-05-12
------------------------

* Added support for <catalog> entries to be added to the GenericSetup
  profile description of portal types to enable registration w/ multiple
  catalogs in the archetype_tool.
  [rafrombrc]

* Fixed a problem in Field.py which could split mutibyte characters at a wrong
  position, which could cause encoding problem in mimetypes_registry.
  This closes http://dev.plone.org/plone/ticket/5214.
  [hannosch]

* Add GenericSetup support for importing/exporting the catalog map from
  ArchetypeTool
  [wichert]

* Use portal type instead of meta type for the catalog map. Add an option
  to config.py to switch back to the old behaviour.
  [wichert]

* Removed some old commented out code.
  [hannosch]

* Added a archetypes historyaware mixin, providing access to archetypes
  persistent revisions (including annotations).
  [mj]

* Moved 'index_method' computation out from Extensions/utils.py into
  Field.  Because we want SearchableText of BaseObject to use the
  'index_method' too.  This fixes
  http://dev.plone.org/archetypes/ticket/645
  [nouri]

* Avoid DeprecationWarnings for manageAddDelete methods and converted the
  logging infrastructure to use Python's logging module in favor of zLOG.
  [hannosch]

* Removed reST-test-kludge. reStructuredText of Zope < 2.8 is buggy,
  don't bother with test failures.
  [stefan]

* converted remaining interfaces and unconverted metadata due to
  issues with CMF1.5's bridges
  [whit]

* converted add following modules to zope3 interfaces w/
  backward bridges::
  interfaces/_annotations.py
  interfaces/_field.py
  interfaces/_layer.py
  interfaces/_marshall.py
  interfaces/_metadata.py
  interfaces/_referenceengine.py
  interfaces/_schema.py
  interfaces/_storage.py
  [whit]

* added makeBridgeMaker, makeZ3Bridges, and makeZ2Bridges to util to
  assist in bridging
  [whit]

* removed superfluous bridge statements from zcml

* Spring-cleaning of tests infrastructure.
  [hannosch]

1.4.0-alpha03 - 2006-03-26
--------------------------

* Fixed some bizarro bug where the __call__ method of BaseFolder (i.e.
  render the default view) was instantiating a new CMFCore PortalFolderBase
  object and returning it (unrendered even).
  [alecm]

* fixes #617: Do not catch KeyboardInterrupt.
  [jensens]

* marked PhotoField as deprecated. After work done on ATImage and
  ImageField this one isnt needed anymore in Archetypes core.
  PhotoField and its supporting classes will be removed in AT 1.5
  [jensens]

* fixed #600: Auto-generated attributes are not protected by
  permissions. Attention: Enabling protection is a minor change in
  the config.py. Some products with code doing direct attribute
  access will break. People using and relying on those products
  can disable attribute protection, but better fix those Products.
  [jensens]

* fixed #608: Protect id field by 'Copy or Move'
  [jensens]

* fixed #637: Schema.moveField( ... after ) does incorrect reordering.
  Needed fixing of a buggy doctest.
  [jensens]

* merged in code of Daniel Nouri to support multiple references
  with the same name between two objects, thsi is needed for example
  with Relations product. Thx Daniel.
  [jensens]

* removed superfluos code from ClassGen.
  [jensens]

* Removed some nonsense on PUT that would look at REQUEST._steps and
  try to catch a exception (which would never occur!). Made it use
  'PATH_INFO' instead, with a fallback to 'self.getId()' which
  should suffice (PATH_INFO is always available as long as the
  request came in through ZPublisher.Publish).
  [sidnei]

* PdataStreamIterator could potentially end up loading a persistent
  object after the ZODB connection had been closed. Made it use a
  temporary file to stream out the content so that large files don't
  end up using all the available memory.
  [sidnei]

1.4.0-alpha02 - 2006-02-23
--------------------------

* Added check for duplicate 'accessor', 'edit_accessor' and
  'mutator' method names on a schema's fields. Helps Joe Schmoe to
  get unstuck, hopefully.
  [sidnei]

* dont generate 'Schema' method any more. its now part of BaseObject.
  [jensens]

* seperated UIDCatalog from ReferenceEngine.
  [jensens]

1.4.0-alpha01 - 2006-01-26
--------------------------

* Remove BBB code for CMFBTreeFolder import location.
  [hannosch]

* Make import from ``Products.Archetypes.atapi import *`` default and deprecate
  public.
  [jensens]

* Integrated 'generator' into Archetypes.
  [jensens]

* Changed transactions use to new API and removed some Plone 2.0 backwards
  compatibility code
  [hannosch]

* Changed imports of CMFCore.CMFCorePermissions to CMFCore.permissions
  [k_vertigo, hannosch]

* DisplayLists should be a little less strict on their values. Now not only
  unicode itself but also types inherited from unicode are allowed. This is
  needed to handle zope.i18nmessageid.MessageID objects correctly.
  [hannosch]

1.3.10-final2 - 2006-09-14
--------------------------

* Check mimetype before schema update and reapply type after. This fixes
  http://dev.plone.org/archetypes/ticket/618
  [alecm]

* Fixed import of NotFound in getBestIcon.py which broke CMF1.4 compatibility.
  This closes http://dev.plone.org/archetypes/ticket/656.
  [hannosch]

1.3.9-final - 2006-05-16
------------------------

* Add a new generateNewId method to BaseObject which is used to suggest
  a new id when automatically renaming an object after creation. This makes
  it easier to used custom naming in derived types.
  [wichert]

* Fix visual widget to not lose formatting if there's only one allowed
  content type - without passing this variable along, the field will revert
  to text/plain or MIME type guessing the second time it's saved.
  [optilude]

1.3.8-final - 2006-04-30
------------------------

* Cleanup of CatalogMultiplex: removed superfluos code, added docstring
  and comments.
  [jensens]

* Moved 'index_method' computation out from Extensions/utils.py into
  Field.  Because we want SearchableText of BaseObject to use the
  'index_method' too.  This fixes
  http://dev.plone.org/archetypes/ticket/645
  [nouri]

* Removed reST-test-kludge. reStructuredText of Zope < 2.8 is buggy,
  don't bother with test failures.
  [stefan]

* Fixed WebDAV MOVE breaking references and cleaned up flagging of
  reference copying for good measure.
  Fixes http://dev.plone.org/archetypes/ticket/642
  [sidnei]

* Fixed up some templates that were abusing tabindexes to get unique ids on
  form elements. Tabindexes can no longer be used for this reliably
  since Plone 2.1.3, and repeat/var/number is cleaner anyway.
  [optilude]

* fixed http://dev.plone.org/plone/ticket/5072
  [jensens]

* fixed #637: Schema.moveField( ... after ) does incorrect reordering.
  Needed fixing of a buggy doctest.
  [jensens]

* Removed some nonsense on PUT that would look at REQUEST._steps and
  try to catch a exception (which would never occur!). Made it use
  'PATH_INFO' instead, with a fallback to 'self.getId()' which
  should suffice (PATH_INFO is always available as long as the
  request came in through ZPublisher.Publish).
  [sidnei]

* PdataStreamIterator could potentially end up loading a persistent
  object after the ZODB connection had been closed. Made it use a
  temporary file to stream out the content so that large files don't
  end up using all the available memory.
  [sidnei]

* Changed sidneis last 'fix'. Dont raise an exception. This is changed
  behaviour and I cant accept this in a bugfix release. Prints out
  a deprecation message instead now, to not break Products relying on
  the old - odd - behaviour.
  [jensens]

* Added check for duplicate 'accessor', 'edit_accessor' and
  'mutator' method names on a schema's fields. Helps Joe Schmoe to
  get unstuck, hopefully.
  [sidnei]

* Backported fix for failing Windows mime types:
  Original fix: http://dev.plone.org/archetypes/changeset/6005
  Bug details here: http://dev.plone.org/plone/ticket/5109
  [limi]

* Cleanup of CatalogMultiplex: removed superfluos code, added docstring
  and comments.
  [jensens]

* Fixed missing import of PersistentMapping.
  Closes http://dev.plone.org/plone/ticket/5182
  [hannosch]

* Usability fix for file widget ( widgets/file.pt ) so that the
  radiobuttons with 'Keep existing file' and similar are no longer shown
  if there is no file uploaded.

* fixed bug in getBestIcon.py, use NotFound class but not 'NotFound'
  string in exception.
  [panjunyong]

* fixed bug in AllowedTypesByIface, prevented to copy, paste, rename
  objects using the mixin.
  [jensens]

* fixed problems introduced by last 'fix' of IdWidget zid.pt: Member
  and widget settings was ignored :-(
  [jensens]

1.3.7-final - 2006-01-16
------------------------

* fixed problems with IDWidget ignore_visible_ids in some setups.
  [sidnei, rafrombrc]

1.3.6-final - 2006-01-07
------------------------

* enable IDWidget to ignore global visible_ids setting and enable ids by
  adding a property ignore_visible_ids=False (default). If it is True
  the id (short name) is shown and the global or by-member setting is
  ignored. This is useful for types where control over the id is needed.
  [jensens]

* 'Renderer' is used to set locals to context of rendered widgets. added
  prefix support for fieldnames in widgets to enable archetypes for multi-
  object edit forms.
  [jensens]

* debug.ClassLog -> generateFrames calls pythons 'inspect' function. This
  breaks on at least one OS-X Tiger system with an IndexError (normal setup).
  Now IndexError is catched and ignored.
  [jensens]

* cleanup of install_indexes magic to add index and metadata-columns to
  a catalog. also added an alternative method than 'schema()' to use, for
  example if a CatalogTool itself is archetypes based. The alternative i
  method is 'zcschema' and does not conflict with Archetypes schema
  attribute.
  [jensens]

* Moved the byline to the header to be consistent with Plone 2.1.
  [limi]

1.3.6-RC1 - 2005-12-29
----------------------

* Make rename-after-creation resolve duplicates by appending -n, where n is
  a number, to the id when an existing object exists in the parent folder.
  This closes http://dev.plone.org/plone/ticket/4510.

* Return the new PdataStreamIterator when a Pdata-like chain is
  found (we always assume this if the marshaller didn't return a
  string). This way it works better with ExternalEditor.
  [dreamcatcher]

* PrimaryFieldMarshaller was overriding already computed 'length'
  with len(data). Yuck.
  [dreamcatcher]

* Fixed http://dev.plone.org/plone/ticket/4768 - wrong status message.
  [hannosch]

* Fixed typo in BaseBTreeFolder.__init__. Thanks jenner.
  [stefan]

* Fixed http://plone.org/collector/4840. Resync some texts with Plone.
  [hannosch]

* Fixed http://plone.org/collector/4981. BaseObject.__bobo_traverse__ now
  also handles HEAD requests.
  [stefan]

* Made basically compatible with Zope 2.9 by using a wrapper around the
  transaction module.
  [hannosch]

* Lower the bar for making folderish content implement WebDAV/FTP
  'PUT' and 'GET' by adding a new flag ``__dav_marshall__``  that
  just needs to be flipped to 'True' for folderish content.
  [dreamcatcher]

* Finally changing the last toPortalTime call to toLocalizedTime
  [hannosch]

* Permission for setting creation date and modification date: Portal
  Manager should it be allowed to set it manually!
  [yenzenz]

1.3.5-final - 2005-10-11
------------------------

* Fixed http://members.plone.org/collector/4709 __bobo_traverse__ calls
  will not be passing a RESPONSE argument.
  [alecm]

* Fixed filename detection for temporary files on Windows.
  [dreamcatcher]

* Fixed [ 1289596 ]. Field.ImageField.tag did not escape alt and title
  attributes.
  [elro] [stefan]

* Repaired ClassGen as to not stomp over declarePublic and
  declarePrivate security declarations. Patch by Jens Vagelpohl.
  [dreamcatcher]

* Fixed some places where a session was being created nedlessly. Now
  sessions will only be created when they are really used. I hope
  this is the last occurrence.
  [dreamcatcher]

* Fixed at_post_create_script hook to only be called once (was previously
  called after every edit) and added an at_post_edit_script hook to be
  called on every subsequent edit (but not the first create/edit).
  [elro]

1.3.4-final - 2005-08-30
------------------------

* added tests if the test engine i working fine, this shows the effect
  of http://plone.org/collector/4487 verbose.
  [yenzenz]

* applied patch to BaseObject.unmarkCreationFlag() with unwanted
  acquisition of at_post_create_script. thx Aparajita Fishman
  [yenzenz]

* enabled renaming of fields while copy them. it eases field recycling.
  [yenzenz]

* fixed [ 1265581 ] Deleting a file withn optional FileField/FielWidget
  breaks
  [yenzenz]

* Fixed a number of issues related to the oversimplicity of
  CatalogMultiplex.manage_after*.  Workflow state was not being reset on
  object copy, which is a minor security issue.  Discussions were not being
  removed from the catalog when the parent was deleted.  Copied discussions
  were not being added to the catalog.  The owner local role was not being
  set on copy.  CMFUid objects were not being removed on copy (critical for
  CMFEditions).  CatalogMultiplex now delegates manage_after* methods to
  CMFCatalogAware (except manage_afterClone which it overrides to do a full
  reindex before delegating).  Removed calls in BaseFolder to
  PortalFolder manage_after*, as those are just inherited directly from
  CMFCatalogAware whose methods are now used in CatalogMultiplex.
  [alecm]

* Fixed an issue where copying a BaseBTreeFolder resulted in references on
  subobjects of that folder being duplicated due to bad inheritance of
  _getCopy.
  [alecm]

* download of files from FileField: filenames where cutted at
  first space character in filename. report, fix/patch by
  LaurenceRowe, thx!
  [yenzenz]

1.3.4-rc3 - 2005-08-07
----------------------

* import of CMFBTreeFolder changed with CMF 1.5.3, kept it backward
  compatible. thx to TresEquis.
  [yenzenz]

* FileField: On download provide a filename. Patch form Tim Hicks
  applied. Needs optional UI to change filename, atm it uses the
  name of the uploaded file. thx tim2p.
  [yenzenz]

* theres no application/octet.  http://www.iana.org/assignments/
  thanks to lalo for this pick.
  [yenzenz]

1.3.4-rc2 - 2005-08-01
----------------------

* Skip image scales with a size of (0,0)
  [tiran]

* Fixed handling of boolean usage in allowDiscussion for the CMF 1.5
  DiscussionTool.
  [alecm]

* Fixed two Marshaller bugs. PrimaryFieldMarshaller wasn't using the mutator
  for a field and RFC822 marshaller was trying to add field, image and
  object fields to the header. Fields of these types contain binary data
  or instances of OFS.Image.Image and can't be marshalled as header.
  [tiran]

* Fixed [ 1209047 ] edit method broken on BaseBTreeFolder. Also added some
  im_func fu to BaseBTreeFolder.
  [tiran]

* Fixed [ 1236601 ] bug in method getAvailableSizes()
  [tiran]

* Fixed critical bug in RFC822 Marshaller w/ CMF 1.5 The
  CMFDefault.utils.parseHeadersBody function capitalizes the header names
  and breaks demarshalling. Marshall contains a light weight
  reimplementation.
  [tiran]

* Added ftests for id autogeneration.
  [alecm]

1.3.4-rc1 - 2005-07-17
----------------------

* Fixed http-etag test. It now 1) refreshs etag on reindexObject and 2) also
  must update etag on metadata modification (like Title).
  [yenzenz]

* Fixed bug when get full BaseUnit object from FileField
  [panjunyong]

* Fixed file edit widget to disable upload by default when javascript enabled
  [panjunyong]

* Fixed at_download to return values from field.download
  [panjunyong]

* Tiny change to image.pt widget template to render a link directly
  to the image object
  [rafrombrc]

* Added Five/Zope3 interface bridges
  [tiran]

* Fix http://plone.org/collector/4268 Type descriptions were not
  translated and fixed the usage of archetype_name in templates.
  [hannosch]

* Prefer isIDAutogenerated from plone_tool over the script if available.
  [alecm]

* some minor i18n tweaks
  [hannosch]

* Added options for PIL quality and resize algo to ImageField.
  [tiran]

* Fixed #1212048: ReferenceField "set" broken for
  BaseBTreeFolder-based objs.
  [dpunktnpunkt]

* Fixed #1230645: unnecessary call to str() method in SQLMethod.
  [dpunktnpunkt]

1.3.4-beta2 - 2005-07-06
------------------------

* Fixed outstanding errors with ImageField. ImageField is now using
  the same api and processing methods as FileField. Empty images are
  neither created nor returned by the accessor/mutator.
  [tiran]

* Added a wrapper for indexing object in the uid catalog to fix unicode
  issues.
  [tiran]

* Added AllowedTypesByIface, a mix-in that allows you to restrict
  allowed_content_types by interface.  We want a better way to do
  this for 1.4.  ArchGenXML support is under way.
  [dpunktnpunkt]

* Reworked ArchetypeTool.listPortalTypesWithInterfaces.  Note that
  the former version only returned AT types as well.
  [dpunktnpunkt]

* Moved mark creation flag code from ATContentTypes 1.0 to AT. This is the
  right place for the code. It requires Plone 2.1 but doesn't barf if no or
  and older version is installed.
  [tiran, alecm]

* As a part of the mark creation flag code the _renameAfterCreation()
  method is added. It can be turned on by setting _at_rename_after_creation
  to True. Thx to Alec Mitchell for his code!
  [tiran, alecm]

* Fixed issue with ImageField where an empty string was passed down to
  PIL resulting in an exception.
  [tiran]

* Updated the type registration code to be compatible with CMF 1.5 and to
  support method aliases and CMFDynamicViewFTI.
  [tiran]

* Made utils.filterTypes compatible with CMF 1.5
  [tiran]

* generalised the interface detetection for types and listings of it
  in archetypes_tool and adapted TemplateMixin lists and detection to
  use this code.
  [yenzenz]

* calendar_slot has been renamed to calendar_macros in Plone
  [hannosch]

* Fixed failed test in ISchema: removed 'self' in interface method.
  [yenzenz]

* Expose field creators of ExtensibleMetadata.
  [yenzenz, optilude, alecm]

* Make it easy to rename fields and keep its content. Introduced a property
  old_field_name. Patch from Kai Hoppert. Thx!
  [yenzenz]

* Merged madduck-refactor-content-edit-1_3 branch r4283:4363 into
  release-1_3-branch:
  content_edit.cpy cannot be called directly by other .cpy scripts,
  because FormController seems to bestow control upon content_edit.cpy on
  invocation. This patch moves the code (unchaned) to content_edit_impl.py
  and replaces content_edit.cpy with a simple call to this .py. As
  a result, SQLWindowStorage can use AT's content_edit and needs no code
  duplication, and AT continues to work as before.
  For reference, please see:
  http://thread.gmane.org/gmane.comp.web.zope.plone.archetypes.devel/4959
  http://thread.gmane.org/gmane.comp.web.zope.plone.user/35620
  [madduck]

* Merged madduck-renderingfixes-1_3 branch r3956:4361 into
  release-1_3-branch:
  Reworked base_{view,edit} wrt CSS and Javascript. previously, CSS and
  Javascript were both rendered into the javascript_head_slot and there
  was no way to influence it really, other than on a per-field basis with
  helper_css and helper_js. No way to do it per-type though. My patch
  splits CSS into the css_slot and makes both templates look in the user
  templates for optional CSS/Javascript macros ('css' and 'javascript')
  much in the same way that the header/typedescription/body/footer parts
  are acquired. For base_edit, this is trivial since edit_macros is
  defined inside the css and javascript macros provided by the user (they
  are evaluated in the context of base_edit itself, which defines
  edit_macros). For base_view, this is not possible. Thus there is code
  duplication, which I documented in the form of comments in the
  templates.
  Added a condition to the errors span for each field in widgets/field.pt
  such that in the absence of an error, no HTML is generated. This avoids
  some rendering problems when multiple widgets are to be rendered on the
  same HTML line.
  [madduck]

* Introduced manage_afterPUT and manage_afterMKCOL hooks that are called
  after a webdav or ftp PUT/MKCOL operation.
  [tiran]

* Fixed MKCOL of BaseBTreeFolder to call the right MKCOL method from
  BaseFolder resp. SkinnedFolder.
  [tiran]

* Moved document_actions above title on base.pt.
  [deo]

1.3.4-beta1 - 2005-05-20
------------------------

* Fixed [ 1192453 ] Typo in Extensions/utils.py on line 117. Thanks
  to salmacis.
  [yenzenz]

* Solved unicode encoding problem on set of textfield.
  [yenzenz]

* Unquoted filename when uploaded from ftp/webdav.
  [panjunyong]

* Fixed [ 1184475 ] Template Mixin UI still borked.
  Attention: All types are bound to portal_type know. If you're using
  a type where meta_type!=portal_type you have to rebind your templates
  to the type! This should affect not too many people.
  [yenzenz]

* Fix issue [ 1174598 ] default action title overrides custom title if
  set using 'name' instead of 'title'.
  [alecm]

* Made the show_hm flag for CalendarWidget work.
  [alecm]

* Added hidden macro to boolean widget fixes issue [ 1144139 ].
  [alecm]

1.3.3-final - 2005-04-22
------------------------

* Changed default for Language metadata field to empty string (''). Also
  removed the undesired fallback magic.
  [stefan]

* Fixed [ 1187630 ] AT rebuilds reference catalog by default on product
  install.
  [yenzenz]

1.3.3-rc3 - 2005-04-21
----------------------

* Added optional 'visible_only' argument to Schemata.editableFields();
  modified base_edit to use 'visible_only=True' so the edit form will
  not display schemata that contain no visibly editable fields.  Default
  behaviour for editableFields should remain the same.
  [rafrombrc]

* Applied two performance optimizations:
  BaseObject.getCharset() no longer calls the PythonScript of same name.
  This method is called bazillions of times and using a script here is
  enormously wasteful. The script has been kept as fallback.
  ExtensibleMetadata.listCreators() now calls getOwnerTuple() instead
  of getOwner() to avoid lookup of user folder and user.
  [stefan]

1.3.3-rc2 - 2005-04-01
----------------------

* Fixed plone bug #3959 (http://plone.org/collector/3959), made
  OrderedContainer.moveObjectsByDelta not throw an error when passed the id
  of a non-contentish object.
  [alecm]

* Fixed [ 1061971 ] maintain order in InAndOut and PickLists across edits.
  [alecm]

* Fixed hidden variant of MultiSelectionWidget.
  [tiran]

* Changed warnings.warn(...) to deprecated(..) from Archetypes.debug.
  [yenzenz]

* Fixed [ 1171059 ] Archetypes should not set language explicitly on content.
  Default is set to None by default. For backward compatibility reasons, I
  added a switch in config to enable old behaviour.
  [yenzenz]

* Added subject to SearchableText.
  [tiran]

* Added ComputedAttributes for effective_date and expiration_date.
  [tiran]

1.3.3-rc1 - 2005-03-25
----------------------

* Fixed [ 1163878 ] Field.toString() always return the same thing. Thanks
  to flacoste for the patch.
  [yenzenz]

* Fixed [ 1153525 ] zid.pt hidden mode hardcode field name. Thanks to
  flacoste for the patch.
  [yenzenz]

* Fixed Referencefield making it possible to completely avoid ugly paths in
  the selectionlist (set vocabulary_display_path_bound=-1 to never get the
  paths).
  [elvix]

* Fixed problem with encoding enforcement on TextField. Now has same behavior
  as StringField, but is neutral to old behaviour. If you call 'get' on a
  TextField and give a kwarg 'encoding' it has been ignored, now its used.
  It returns the encoding requested.
  [yenzenz]

* Fixed [ 1160362 ] AT 1.3.2-final bug on PrimaryFieldMarshaller by adding the
  missing import of shasattr in Marshall.
  [tiran]

* textarea.pt and image.pt were broken under 2.7.2 (newline in python
  expression).
  [gotcha]

* Correct getMsgId on DisplayList (when using int keys) and IntDisplayList
  Fixes [ 1159248 ] IntDisplayList.getValue triggers DeprecationWarning.
  [gotcha]

* Made ComputedFiled inherits from Field instead of ObjectField (which
  should only be used with fields that handle storages).
  [deo]

1.3.2-final - 2005-03-05
------------------------

* Made deprecation warnings less verbose. If someone wants them, switch
  DEBUG in config.py to True.
  [yenzenz]

* Added IntDisplayList to the public module.
  [tiran]

* Added Sidney's AttributeValidator to BaseObject. It's disabled for now
  because it might break third party software which relies on a broken
  behavior. You can enable it by setting ATTRIBUTE_SECURITY to True.
  [tiran]

1.3.2-rc1 - 2005-02-26
----------------------

* Using registerType without a package name is deprecated. Explict is better
  than implicit!
  [tiran]

* Fixed DisplayList for int keys. The warning module was missing *blush*
  [tiran]

* Added IntDisplayList to utils.py. Also I've coded some nice doc tests for
  DisplayList and IntDisplayList.
  [tiran]

* Fixed[ 1118780 ] Bad validation for required IntegerFields with value zero
  Also the default values for IntegerField and FloatField are None instead of
  0.
  [tiran]

* Applied patch from [ 1076738 ] PrimaryFieldMarshaller: wrong length.
  [dmaurer]

* Changed the reference tab permission to modify or review according to
  [ 1087990 ] 'References' action visible for everyone.
  [tiran]

* Fixed customizationpolicy.py not to break if CMFPlone isn't available.
  [tiran]

* Updated the requirements to Zope 2.7.4+. It may work with older versions of
  Zope 2.7.4 but due some serious memory leaks and some important bug fixes
  you should really use Zope 2.7.4!
  [tiran]

* Backported CMFTestCase/PloneTestCase based test suite from AT 1.4 branch to
  AT 1.3. The unit test suite of AT 1.3 was horrible. Yeah you are allowed to
  beat me up but in excuse I must say it was first try in using ZopeTestCase.
  I've learned my lessons. In order to run the unit tests you have to install
  either CMF 1.4.7 + CMFTestCase + ZopeTestCase or Plone 2.0.5 + PloneTestCase
  + ZopeTestCase. For now only the CVS versions from sf.net collective are
  working properly.
  To run the unit tests go into the root of your testing instance and run:
  ZOPE_HOME/bin/test.py -v -C etc/zope.conf --libdir Products/Archetypes/
  [tiran]

* Fixed [ 1103955 ] ObjectManager raises (usually) AttributeError.
  [dmaurer]

* Fixed [ 1074236 ] DDocument and Fact are broken in 1.3.1 final.
  [tiran]

* Fixed [ 1093042 ] log warning for int keys in DisplayList.
  [tiran]

* Fixed [ 1067212 ] missing security declaration for
  BaseFolder.manage_addFolder.
  [biza]

* Fixed [ 1114892 ] should set to field, not fieldname in
  ObjectField.getRaw().
  [madduck]

* More OrderedDict fixes... wasn't overriding 'pop' method from base class,
  causing keys list and data to get out of sync if it were ever called.
  [rafrombrc]

* Fixed broken implementation of moveObjectsByDelta in ordered base folder
  by copying my code from CMFPlone. I've fixed it in Plone over an year ago
  but I forgot to fix it in AT.
  [tiran]

* Fixed [ 1114362 ] use format name instaed that mime type inside RichWidget.
  [dan_t]

* Filtering schemata from showing up on base_edit unless user actually
  has edit privs to some of the fields.
  [rafrombrc]

* Fixed utils.OrderedDict problems:
  - constructor was failing w/ non-empty argument
  - infinite loop when copy() was called
  [rafrombrc]

* Changed UI for Image/File widgets. Should be a lot better now.
  [_ender_]

* BaseUnit backward compability on very old bad migrated Archetypes 1.0
  sites. Thanks to Brent M Hendricks <brentmh@rice.edu>.
  [yenzenz]

* Commented out the View/Edit links for ordinary display - feel free to
  enable these in your site, but they should definitely not be there by
  default.
  [limi]

* Added the last (and only) info that isn't being handled by AT for FTI:
  allow_discussion. Now you can define it at class level, as any other
  FTI property. The module level modify_fti method still exists for any
  advanced configuration.
  [deo]

* Improved test for [ 1003868 ] to demonstrate the real problem:
  default_charset isn't respected. Now when db_encoding isn't defined,
  we give precedence to site_encoding and then fallback to utf-8.
  Bonus: there's no more need to mess with 'sys.getdefaultencoding()'
  to make tests run... ;-)
  [deo]

* The subobject Wrapper class is now based on Acquisition.Explicit. And
  BaseObject's subobject works now.
  [panjunyong]

* Applied ApeSupport changes needed for APE 1.0. Thanks to Roch?ompaan.
  Changed comment to doc-string.
  [yenzenz, zwork]

* Added Italian translation. Thanks to Mirto Silvio Busico.
  [deo]

* Change permission of OrderedBaseFolder's manage_renameObject to make
  FTP works.
  [panjunyong]

* Fixedi [ 1053960 ] Cancel goes back to previous schemata page, thanks
  to Alec Mitchell.
  [yenzenz]

* Fix redirect of ZMI constructor, fix ZMI base_add and base_edit.
  [__gotcha]

* Fixed [ 1058669 ] Wrong i18n:translate in widgets/field.pt.
  [yenzenz]

* Use method getFilename in at_download.pt instead of direct attribute access,
  which ignores BaseUnit.
  [yenzenz]

* Fixed [ 1084278 ] In www/generateDebug.zpt error in *
  getTypeInfo(type['name']).
  [yenzenz]

* Applied patch in [ 1076864 ] schemata links need css declaration, thanks to
  David Convent.
  [yenzenz]

* Fixed [ 1067923 ] Field.py: ImageField.get_size does not work properly.
  [yenzenz]

* Fixed bugs in the reference graph feature that was broken for me.
  [yenzenz]

* Fixed [ 1066884 ] Field.py: getAvailableSizes 1.3.1-rc4. Thanks to Steve
  McMahon.
  [yenzenz]

* Fixed path to kernel uuid pseudo file.
  [tiran]

* Don't use the format selector from wysiwyg.
  [tiran]

* Fixed __pkginfo__.py: use version.txt instead of coping a string to
  several places; changed license to the current license "BSD-like".
  [yenzenz]

* Fixed reference cataloging when dealing with BTree folders.
  [brcwhit]

* Fixed [ 948385 ] Allow wysiwyg editors to override RichWidget format
  pulldown.
  [duncanb, ender]

* Fixed traversal/WebDAV for the nth time, now with tests.
  [dreamcatcher]

* Fixed a possible problem when installing uid_catalog.
  [zopezen]

* Added multi-field support to getFilename/setFilename and also
  getContentType/setContentType. Bonus: reformated ChangeLog... ;-)
  [deo]

* Updated Catalan translation. Thanks to Albert Lombarte.
  [deo]

1.3.1-final - 2004-11-15
------------------------

* Some visual fixes to RichWidget and Field code + removed stray comments.
  [limi]

* Fixed field tests.
  [yenzenz]

1.3.1-rc4 - 2004-11-06
----------------------

* reverted the patch from duncan because of too many bugs :(
  final decicion for 1.3.x: we keep the 1.3.0-final reference copy
  behaviour.
  [hazmat, geoffd, yenzenz]

* fixed reference_slot, wasnt adapted to the new style reference engine.
  [yenzenz]

1.3.1-rc3 - 2004-11-05
----------------------

* There where lots of discussions about the behaviour of references while
  copying. it ends up in 1.3.0-final with the default behaviour to do not
  copy references if a object is copied. now this is for several use-cases
  a great problem, and it's also difficult to copy them afterwards.
  finally we decided to make it configureable per reference in 1.4.x. A
  solution for 1.3 is provided by the patch from duncan booth we applied
  here. its transparent to the 1.3.0-final behaviour. you now can set
  in archetypes tool the copying behaviour. it defaults to not copy
  references.
  [duncanb, yenzenz]

* Changed boolean widget so that the checkbox is displayed before
  the label and not below the help text. Makes more sense UI wise.
  [_ender_]

* Fix manage_delObjects of BaseFolderMixin that did not return anything.
  [__gotcha]

* Allow comma as dezimal delimiter in FixedPointField and convert it
  immediatly to a point-delimited-value. The whole process needs a rewrite
  in 1.4, this here is only a quick non-immersive usability enhancement.
  [yenzenz]

1.3.1-rc1 - 2004-10-17
----------------------

* Fixed [ 1037265 ] Bug in ArchetypeTool:getWidgets(). Thanks to Tommy from
  IBAS for the catch.
  [deo]

* Fixed a bug with TemplateMixin on folderish types: in navtree and on view
  tab the choosen template has been ignored, cause it felt back to an action
  folderlisting, which now is set to view instead.
  [yenzenz]

* Applied patch contributed in [ 1038107 ] Problems with addable_types
  handling in ReferenceWidget. Thanks to Alec Mitchell for the patch.
  [yenzenz]

* Added Archetypes Site customization policy.
  [tiran]

* Changed it so that Title is not shown twice in view mode (once in the headline
  is fine, thank you ;)
  [limi]

* Fixed [ 1042076 ] missing import in SQLMethod.py: atoi and time were missing.
  [tiran]

* Fixed [ 1043114 ] WEBDAV folder creation broken.
  [tiran]

* Updated quickref. Thanks to Jean Jordaan for his great work!
  [neaj, tiran]

* Fixed [ 1037803 ] "AT Document Details" should be "Document Details" in edit
  Now Archetypes is using the portal type name by default instead of the
  archetype_name. You can change the new behavior by using a different
  type_name var in the templates.
  [tiran]

* Added some ugly hacks to ship around [ 1040623 ] FTP upload broken. You may
  say it's fixed for AT 1.3 but for AT 1.4 we will have a much better
  implementation.
  [tiran]

* Fixed [ 1038404 ] BaseFolder.mange_delObjects proteced by wrong permission.
  Now the method is protected by CMFCorePermissions.DeleteObjects instead of
  CMFCorePermissions.ModifyPortalContent which is exactly like Plone 2.x.
  [tiran]

* Fixed [ 1038428 ] Unicode string in Subjects break base_metadata page.
  [tiran]

* Partly fixed [ 1038450 ] Unauthorized due to BaseObject.__bobo_traverse__.
  Now __bobo_traverse__ is raising an AttributeError instead of returning None
  when the object can't be traversed.
  [dmauerer, tiran]

* Added workaround for [ 1040514 ] AttributeError on some types after migration
  1.2.4rc5->1.3.0 to BaseUnit. Somehow and sometimes the binary attribute gets
  lost magically.
  [tiran]

* Extensions/utils.py (install_additional_templates): Added a method to
  automagically register classes that inherit from TemplateMixin.
  [deo]

* Added Catalan translation file. Thanks to Albert Lombarte.
  [deo]

* Added viewableFields() and editableFields() to Schema. The methods are
  returning only those fields that the current user is allowed to see/edit in
  the current context.
  [tiran]

* Archetypes edit form is raising unauthorized if no editable fields are
  available.
  [tiran]

* BaseContent.PUT and BaseUnit.PUT is also trying to get the uploaded data from
  BODY if BODYFILE is empty.
  [tiran]

1.3.0 - 2004-09-30
------------------

* Fixed [ 1034649 ] Typo breaks catalog index creation: index_acessor ->
  index_accessori.
  [ronnix]

1.3.0-rc4 - 2004-09-25
----------------------

* Fixed [ 1032587 ] Error in field.Vocabulary. Thanks to Danny Bloemendaal
  for the catch.
  [deo]

* Disabled two unit tests in test_marshaller because they were causing a memory
  fault in glibc. It's probably the cause of either wvWare or the test doc
  file.
  [tiran]

* Added transaction_note to PloneCompat and use it instead of the one from
  Plone to keep backward comp. with CMF as requested on the mailing list.
  [tiran]

1.3.0-rc3 - 2004-09-18
----------------------

* Fixed misc unit tests that where broken or relied on a broken behavior.
  [dreamcatcher]

* Merged patch from [ 1026732 ] base_metadata can not use 'add $type' reference
  button.
  [tiran]

* Fixed [ 1029648 ] getBestIcon needs to be better.
  [tiran]

* Partly fixed [ 1024966 ] Reference migration problem: 1.3a2 --> 1.3rc2.
  References without a relationship name will get the relationship name
  EMPTY_RELATIONSHIP which is 'related' by default. That should be fine for all
  people.
  [tiran]

* Added 'swallowResizeExceptions' attribute to ImageField. When the property is
  set to True all exceptions raised by PIL are captured and the specified scale
  isn't created.
  Note: Some scales might be created when PIL fails only for some sizes.
  [tiran]

* Field.ReferenceField: Simplify code a bit. Fix a typo on exception name.
  [dreamcatcher]

* Fixed [ 1023153 ] isEmpty validator must return empty string by using the new
  isEmptyNoError validator.
  [tiran]

* Fixed [ 1029231 ] base_metadata doesn't use JS scripts properly, also cleaned
  up the base_metadata and added support for helper CSS.
  [tiran, kai]

* Fixed [ 1025842 ] Missing i18n:translate in widgets/field.pt <label>
  [tiran]

* Cleaned up and fixed ExtensibleMetadata class:
  no more direct attribute access or attribute storage, rearranged some lines,
  use 'date is None and fallback or date' because testing for is None is,
  much faster than testing a DateTime instance for not None.
  [tiran]

* Added SQL* and VariableSchemaSupport to public.py. Please import only from
  public!
  [tiran]

* Added class and id attributes to fields rendered in view-mode (field.pt).
  These had been accidentally left out.
  [elvix]

* Fixed problem with BaseBTreeFolder losing references. It was calling
  CMFBTreeFolder manage_* methods which would end calling
  PortalFolder.manage_* methods (as they are not overriden in the class
  hierarchy) twice. The second type it would remove the references as
  there's a monkeypatch on Archetypes/patches.py which sets _v_cp_refs to
  None when calling CMFCatalogAware.manage_beforeDelete.
  [dreamcatcher]

* Fixed copy problem with AggregatedStorage by added __getstate__ and
  __setstate__ methods. Before the chances copy.deepcopy was trying
  to copy a thread lock.
  [tiran]

* Finally removed markCreationFlag which was a bad hack to achieve the same
  effect as portal_factory but w/o using portal_factory. I had a problem with
  it again and I don't want to have more headache!
  [tiran]

* Changed BaseObject.initializeArchetype() to call edit() instead of update().
  edit() is an alias for update and it's also the standard method to edit a
  type in CMF. It makes customization like in ATContentTypes much easier.
  [tiran]

1.3.0-rc2 - 2004-09-04
----------------------

* Removed class="error" from field.pt error message. It caused some ui
  glitches.
  [tiran]

* Fixed [ 1011658 ] portal_skins/archetypes folder disappeared after AT
  reinstall. Under some circumstances the skins aren't properly registered.
  [tiran]

* Fixed [ 1011533 ] AT CEILING date for expires will break DateIndex. Changed
  CEILING_DATE from year 9999 to year 2500.
  [tiran]

* Fixed [ 1012238 ] Cannot set field using boolean widget under IE.
  [duncanb]

* Changed TemplateMixin.getDefaultLayout(): It first checks for an attribute
  'default_view' then for 'immediate_view' from the FTI and at last it's using
  'base_view' as fallback.
  [runyan, tiran]

* Removed warning when trying to apply an index on a reference field from
  install_indexes. Indexes on reference fields are fully supported again.
  [tiran]

* Changed permission of BaseObject.getField() and getWrappedField() from
  ModifyPortalContent to View. All mutators on fields are secured and it won't
  make any harm to get a field. Besides it is currently possible getting a
  field over archetype_tool.
  [tiran]

* Fixed [ 1012344 ] 'NoneType' not callable error on CMFMember prefs page. Also
  cleaned up the way how the value is calculated inside field.pt. Depending
  on widget.populate it's either assigning edit_accessor or accessor to a var
  and THEN it's calling the var (which is a method) when it's not None.
  Sounds complex? Well the former version was much complexer.
  [tiran]

* Subclasses TemplateMixin from ExtensionClass.Base, set default_view to None
  in order to enable the immediate_view magic and made the getDefaultView()
  method a little bit more efficient.
  [tiran]

* Added a test for unqualified references to Schema to prevent user errors. A
  relationship must be a non empty string. Also moved all field tests in Schema
  to a new method _validateOnAdd().
  [tiran]

* Added Danish translation. Thanks to stonor!
  [tiran]

* Added 'de-de' as fallback to the German translation.
  [tiran]

* Applied fix from [ 924832 ] Widget:isVisible always returns 'visible' for not
  DictType which is fixing a broken behavior for Widget.isVisible().
  [tiran]

* Fixed [ 1012570 ] Widget.py ReferenceField is horribly inefficient.
  [runyan]

* Temporary fix for [ 1012408 ] __getitem__ doesn't play nice which is backward
  compatible except of three broken behaviors:
  BaseObject.__getitem__ now throws an Unauthorized exception when trying to
  get an item starting with _ and it throws a KeyError when trying to access
  a nonexisting object. Also it's using explicit acquisition.
  [tiran]

* Fixed unicodeTestIn.py: return False immediately when the list is None or empty.
  [tiran]

* Widget.py: Changed some field.get(instance) calls to
  field.getEditAccessor(instance)() to get rid of some sort of infinite loop
  (in append_only code forTextAreaWidget).
  [rafrombrc]

* Readded Extensions/utils.py:install_tools for backward compat.
  [dreamcatcher]

* fixed edit view rendering of append_only textarea history in
  widgets/textarea.pt data so whitespace is correct.
  [rafrombrc]

* Fix a misbehavior on __bobo_traverse__ now that Tiran changed the __getitem__
  behavior. Before that, __getitem__ was taking precedence and acquiring the
  object itself, so never getting this far:
  Nothing has been found. Though it's not written anywere, from deep ZPublisher
  inspection it seems like we *SHOULD NOT* raise a notFoundError, but instead,
  return None and leave acquisition do it's job.
  [dreamcatcher]

* Fixed [ 1011111 ] mishandling of UID W.R.T layers.
  The reference engine is now using _getCopy() mark the copy of an object with
  a marker _v_is_cp so manage_afterAdd() can detect copies in order to reassign
  a new UUID and remove the reference annotations.
  [bcsaller, rochael]

* Fixed Alan's fix for [ 1012570 ] brains has no relative_url.
  (note to myself: addable option on ReferenceField still needs lots of tests)
  [deo]

* Fixed [ 1013265 ] last changes to Widget.py is highly inefficient.
  [deo]

* Fixed LinesWidget according to [ 1013379 ] LinesField/widget broken.
  [tiran]

* Fixed bug in VariableSchemaSupport.VarClassGen mentioned in the thread on the
  AT devel mailing list. See "Warning: avoid changing your AT class' meta_type
  when you have existing instances".
  [mitchel, dreamcatcher, tiran]

* Corrected icon in ZMI; Added some utils for ZMI setup.
  [__gotcha]

* Changed unit test to work with an unpatched version of getToolByName to get
  mimetyptes_registry and portal_transform.
  [tiran]

* Fixed [ 1015956 ] getBestIcon can fail.
  [ctheuni]

* Fixed [ 1015292 ] boolean widget error, [ 1015394 ] 1.3 branch field.pt sets
  value = None inappropriately and another problem with field.pt value.
  [tiran, alecacct]

* Fixed [ 1018821 ] _processInput in Field.py should rewind.
  [batlogg]

* Part fix [ 1013363 ] (renaming of folders nukes all references to AT
  objects inside them):
  It works now for AT folders, but renaming of non-AT folders stil breaks refs
  to their contained items so ATContentTypes based portals should be fine now
  (except you rename the portal itself).
  [zworkb]

* Added monkey patch for CMFCatalogAware, PortalContent and PortalFolder to
  fix the second part of [ 1013363 ].
  [tiran]

* Fixed [ 1019803 ] Bug in ArchetypeTool.py: getWidgets(), also renamed
  _is_fake_instance to _at_is_fake_instance.
  [johtha, tiran]

* Fixed [ 1018300 ] schema defined indexes are not set anymore.
  [deo]

* Added targetId index to reference_catalog. It was removed earlier to make
  the ref catalog more lightweight. However, it broke
  ReferenceCatalog._queryFor.
  [dpunktnpunkt]

* Explictly reinstall MimetypesRegistry, PortalTransforms and Archetypes when
  running the migration. Before MTR and PT weren't reinstalled ever and AT
  under some circumstances which were leading to annoying bug reports.
  [tiran]

* Added StdoutStringIO to migration.py which is printing the input to stdout,
  too. Also added some gimmicks to the migration: After 10 items a '.' is
  printed to stdout and after 250 items a '*' is printed to stdout so you can
  see how the migration is coming along.
  [tiran]

1.3.0-rc1 - 2004-08-16
----------------------

* Try to use BaseUnit for schema migration to keep the mimetype and the
  filename of a BaseUnit based field. Without the changes the mimetype of
  TextField got lost.
  This should fix [ 1001446 ] Content type lost in migration from pre 1.3b4 to
  1.3b4
  [tiran]

* Changed portal type of ComplexType to keep it compatible with AT 1.2
  [tiran]

* Fixed typo in Field.Field.getContentType
  [tiran]

* Fixed Field.ImageField.rescaleOriginal to always return a binary string. This
  fixes the problem with original_size: [ 1004323 ] "IOError: cannot identify
  image file" when uploading image
  [tiran]

* Fixed [ 1004510 ] folderlisting or plone_utils.browserDefault by adding an action
  'folderlisting' to folderish content types.
  [tiran]

* Use True and False in favor to 1 and 0 to make the code more readable.
  [tiran]

* Raise an error when trying to use an index on a reference field unless we
  have a good solution to avoid catalog corruption.
  [tiran]

* Use edit accessor instead of the accessor in Schema.BasicSchema.validate().
  [alecacct]

* Added a index_method property to Field.Field which may be either _at_accessor,
  _at_edit_accessor or the name of a method which is used as accessor for the
  index.
  [alecacct]

* Starting from NOW all attributes starting with '_at_' are reserved for
  internal usage. You MUST NEITHER add NOR access any attributes starting
  with '_at_' in your content types.
  [tiran]

* Fixed  FTP/WebDAV's PUT in BaseObject:If a new object should be created with
  an id that can be acquired, then the existing object is silently overwritten
  rather than a new one created
  [dm]

* Fixed with problem MKCOL/MKD used by FTP/WebDAV and
  BaseFolde.manage_addFolder. Now MKCOL/MKD are creating a sub folder with the
  type name of the current folder except when this behavior is overwritten
  by an attribute called _at_type_subfolder.
  [dm]

* Fixed [ 1006559 ] addReference allows adding garbage references. addReference
  is raising a ReferenceException when an invalid source or target was applied.
  [duncanb, tiran]

* Fixed [ 1006491 ] File widget makes useless str(value) conversion
  [tiran, lurker]

* Fixed possible issue inside ArchetypeTool.getWidgets() by calling
  initializeArchetype() on the wrapped dummy instance.
  [tiran]

* Update catalog on reference catalog has raised a KeyError when trying to
  access an object that was already removed. Now ReferenceResolver is fetching
  the KeyError in resolve_url() and returns None instead.
  [tiran]

* Added getRaw() method to LinesField which is returning the output of get().
  Before this change the edit accessor was using the accessor which might be an
  overwritten accessor. Thanks to Joel Burton who has figured out the problem.
  [tiran]

* Raise an ReferenceException inside Field.ReferenceField._Vocabulary when the
  brain doesn't have a valid uid.
  [tiran]

* Refresh the uid catalog and reference catalog after migration.
  [tiran]

* Don't commit full transactions inside migration. This may lead to database
  corruption.
  [tiran]

* General cleanup of imports and public.py. Also include Marshallers in public.
  [tiran]

* Fixed [ 1007850 ] Cancel content creation fails with portal factory tool
  Archetypes is playing nice again with portal factory
  [tiran]

* Raise SchemaException when trying to add two or more primary fields to one
  content type. Adding more than one primary field can lead to unexpected
  behaviors.
  [tiran]

* Don't store mimetype item instances in BaseUnit. Now BaseUnit is storing the
  mimetype and the binary flag as ordinary strings. Old BaseUnits are auto-
  magically altered using __setstate__().
  Storing mimetype item objects in BaseUnit seemed to lead to memory leaks.
  [tiran]

* Reenabled ints as DisplayList and Vocabulary keys.
  [tiran]

* Subclass InAndOutWidget from ReferenceWidget which adds the addable feature
  to InAndOutWidget.
  [ender]

* Removed old and deprecated old_OrderedBaseFolder implementation from
  Archetypes.
  [tiran]

* There is no need to subclass BaseFolder from Folder since SkinnedFolder is
  already subclasses from Folder (over PortalFolder).
  [tiran]

* Store subobjects inside a volatile attribute instead of using SESSION which
  1) was broken by design 2) was a possible memory eater.
  [tiran]

* Fixed [ 988948 ] Reference field: radio button "no reference" isn't checked
  [tiran]

* Added properties for [ 1008670 ] Feature request: specify year interval for
  the Calendar Widget
  Right now these properties are useless because the plone templates can't
  handle it but I got word from limi that we are allowed to add these features
  to the templates
  [tiran]

* Fixed [ 1005843 ] Stringfields should not default to '0' in search mode
  [tiran]

* Moved addable feature of reference.pt to a seperate file and added addable to
  inandout.pt
  [ender]

* Use manage_rebuildCatalog for refresh_references in installTypes()
  [tiran]

* Fixed [ 905677 ] manage_afterClone is a bit of a mess
  [dreamcatcher]

* Template cleanups
  [dreamcatcher]

* ImageField: Fixed problem with empty image field and calls to getScale,
  getSize and tag()
  [tiran]

* Cleaned up the Extensions/utils.py function which are installing AT and it's
  dependencies. Added a method setupArchetypes() which is setting up the internals.
  These fixes are fixing the problem that AT don't seemed to be installed when
  it's installed from an AT based product.
  [tiran]

* Schema: fixed a bug, it wasnt allowed to override a primary field by another
  primary field with the same name.
  [jensens]

* Added getWrappedField(key) to BaseObject which is returning the field
  instance explictly wrapped relative to the Archetype instance. This method is
  required for security reasons in order to allow Zope to find the acl_users.
  [tiran]

* Fixed [ 1009894 ] CSS class on validation error messages. It's using Plone's
  'error' class.
  [tiran]

* Fixed two bugs in ttw template registration. 1st the registration-tab was
  broken, and 2cd it can't deal with migrated ATCT.
  [jensens]

1.30beta5 - 2004-08-06
----------------------

* Fixed forbidden access to schema methods when the schema was
  acccessed using archetype_tool.lookupType().
  [tiran]

* Fixed typo in widgets/reference.pt
  [tiran]

* Do not depend on plone's document_byline template which is
  not available in CMF.
  [ajung, tiran]

* Applied patch from [ 997044 ] db_encoding parameter is lost
  in BaseSQLStorage.set
  [biza, tiran]

* Updated complex type to make it work inside Plone again. It's very
  usefull to test fields and widgets.
  [tiran]

* Applied [ 974846 ] Patch for bug #944343 inandout/picklist values
  not sticky to make picklist and inandout compatible with reference
  field again.
  [alecacct, tiran]

* Reenabled Ben's reference graph tool by removing some stalled testing code
  [tiran]

* Support unqualified references in reference graph tool
  [bcsaller]

* Added a test for mimetypes registry before adapter call in BaseUnit.update()
  with a more verbose error in the case the user hasn't updated MTR properly.
  [tiran]

* Fixed Find Objects of uid catalog and reference catalog: Use the relative
  path (relative to the portal) of the object as uid instead of the full
  physical path
  [tiran]

* Added Rebuild Catalog tab to uid catalog and reference catalog to make the
  life easier
  [tiran]

* Added context to the PortalTransform.convertTo() call in BaseUnit.transform()
  [tiran]

* Don't fail to install a product which doesn't have any types
  [spamsch]

* Catch Unauthorized exception in ExtensibleMetadata.allowDiscussion that could
  be raised by the discussion tool when the authenticated users hasn't
  ModifyPortalContent permissions.
  [tiran]

* Added IUIDCatalog and IReferenceCatalog interface. Test for interfaces in
  the installation process of Archetypes to remove invalid catalogs.
  [tiran]

* Added a check to Field._Vocabulary: A result from portal catalog must be a
  result from uid catalog, too.
  [ender]

* FileField/ImageField: Make sure we always get a wrapped object in content_class
  [tiran]

* ImageField: Fixed getScale/getSize methods, added tag() method
  [tiran]

* session_save_form was using direct attr access in UT
  code you must use Schema accessor so schema has a
  security context
  REMEMBER: <BradB> "Free as in Free Iraq"
  [runyaga]

* issue a warning if they register 2 classes with the
  same name in the same project.  this will happen on
  startup.
  [runyaga]

* do not assume templates have title_or_id attribute
  [runyaga]

* Added kernel_make_uuid which is using /proc/sys/kernel/random/uuids as source
  for unique ids. Thanks to Ben for this cool idea. :)
  The kernel uuid generator is actually a tiny bit slower than our uuid
  generator but it should be safer if you are worried about the uniqueness of
  uuids.
  [bcsaller, tiran]

* Fixed [ 1002481 ] Missing i18n: <any>, added at_search_any msgid.
  [tiran]

1.3.0-beta4 - 2004-07-09
------------------------

* Fix bug on image deletion [clebeaupin]

* Fixed [ 997899 ] 1.3b3 will ot startup on Zope 2.7, Windows.
  Removed api helper to avoid problem with windows [dreamcatcher, tiran]

* Small improvements on migration (using aq_base() instead of attribute, using
  is None test instead of simple bool test)
  [tiran]

* Get the first non None object instead of the first element of a list of
  brains to circumvent problems with stalled objects inside the uid catalog
  [tiran]

* Don't raise AttributeError when no reference can be found
  [__gotcha]

* Fixed a problem introduced by getRaw method on ReferenceField class.
  When using a field on 'hidden' mode, field.pt uses field.edit_acessor
  to get field value (and edit_accessor calls getRaw).
  The problem was related to ReferenceFields not multivalued where
  getRaw always returns a list, instead of the single UID.
  [deo]

* Added a flag refresh_references to Archetypes.Extensions.utils.installTypes
  (default False). When enabled it's using ZopeFindAndApply to find all
  objects of the given types and refreshes their references. This is a
  workaround but not a real fix for bug 997840.
  [tiran]

* Added a test for at_version information
  [tiran]

* Support Pdata (possible large data from OFS.Image) as type for FileField.
  This is required to load large images and files based on OFS.Image into a
  FileField.
  [tiran]

* Merged sid's security branch. DefaultLayer based classes (Field, Widget) and
  schema are now subclassed from ExtensionsClass.Base.
  [dreamcatcher, tiran]

* Fixed [ 994511 ] Field.py: Vocabulary cannot handle 2-tuple list
  [tiran]

* Fixed creation_date field to be metadata again
  [tiran]

* Fixed [ 944440 ] getMsgID method of DisplayList should be used
  [tiran]

* Fixed [ 972091 ] base widget doesn't support visble attribute for view
  [tiran]

* Added better traceback information to fixAfterRenameType
  [tiran]

* Fixed [ 988898 ] Don't swallow ConflictError (SQL missing)
  [tiran]


2005-01-22  Dorneles Treméa  <deo@plonesolutions.com>

	* SQLMethod.py (__call__): Fixed to, when db_encoding isn't defined,
	give precedence to site_encoding and then fallback to utf-8.

	* tests/test_sqlstorage.py (test_stringfield_bug1003868): Improved
	test to demonstrate the real problem: default_charset isn't respected.
	Bonus: there's no more need to mess with 'sys.getdefaultencoding()'
	to make tests run...  ;-)

2004-12-14  Dorneles Treméa  <deo@plonesolutions.com>

	* i18n/archetypes-it.po: Added italian translation file. Thanks	to
	Mirto Silvio Busico.

2005-01-02  Junyong Pan  <panjy@zopechina.com>

	* OrderedBaseFolder.py (manage_renameObject): Change permission to
	make FTP work.

2004-12-14  Dorneles Treméa  <deo@plonesolutions.com>

	* i18n/archetypes-ca.po: - Adapted to the standard form	(conforming
	with the organism in catalonia responsible for standarization of catalan
	software). Added the fallback for Catalan-Andorra, Catalan-Spain,
	catalan-France and Catalan-Italy (ca-ad ca-es ca-fr ca-it). Changed the
	codification to ISO Latin1. Thanks to Albert Lombarte.

2004-12-04  Cyrille Lebeaupin  <cyrille.lebeaupin@ingeniweb.com>

	* utils.py (getMsgId): Compare type to string, unicode and int types, not
	only StringType. Fix bug with interger keys in DisplayList.

2004-12-04  Dorneles Treméa  <deo@plonesolutions.com>

	* Field.py (getBaseUnit): Remove unnecessary code to give precedence
	to storage when getting filename/mimetype.

	* BaseUnit.py: Cleaned up code and reformated/added missing docstrings.

	* BaseObject.py, Field.py (setFilename, setContentType): Moved specific
	code from BaseObject.py to Field.py. Fixed to always save the new
	base unit.

	* tests/test_classgen.py: Added 'anotherfilefield' FileField.

	* tests/test_contenttype.py (SetContentTypeTest): Added SetContentType
	TestSuite for testing setContentType via Mutator/BaseObject/Field.

	* tests/test_filename.py (SetFilenameTest): Added Get/SetFilename
	TestSuite for testing get/setFilename via Mutator/BaseObject/Field.

2004-12-02  Dorneles Treméa  <deo@plonesolutions.com>

	* Field.py (getFilename): Fixed security declaration. Revised docstrings
	and coments.
	(getBaseUnit): Gave precedence to storage when getting filename/mimetype.

	* BaseObject.py (getFilename, setFilename): Added.
	(setContentType): Generalized to work with any field.
	(getContentType): Updated to use a better logic.
	(content_type): Added missing security declaration.

	* ChangeLog: Reformated. Now it looks more like a Changelog file... ;-)

2004-07-12  jensens  <jens.klein@jensquadrat.de>

	* Implemented migration from 1.2.x to 1.3 CVS

2004-07-02  clebeaupin  <cyrille.lebeaupin@ingeniweb.com>

	* Improve vocabulary. Now you can mix every types of keys in a DisplayList.

	* Add 18n msg ids in allow_discussion vocabulary.

2004-07-01  clebeaupin  <cyrille.lebeaupin@ingeniweb.com>

	* Fix bug 890592. Now DisplayList can have None as key. All keys are
	converted into string.

2004-07-01  Daniel Nouri  <dpunktnpunkt@web.de>

	* ArchetypeTool.py (ArchetypeTool.manage_migrate): Added very
	simple form that lets you migrate and update schemas without the hassle
	of creating an external method. (I believe the migration script is
	too easily overlooked.)

2004-07-01  Daniel Nouri  <dpunktnpunkt@web.de>

	* BaseObject.py (BaseObject._updateSchema): Moved call to
	field.getContentType() to the point after self.initializeArchetype(),
	which effectively fixes migration for me.

2004-06-30  clebeaupin  <cyrille.lebeaupin@ingeniweb.com>

	* Vocabulary supports i18n translation. It uses field or widget i18n_domain
	property

	* Improve template to be xhtml compliant: attribute 'for' from <label> is
	linked to an attribute 'id' from input field

2004-06-07  Spanky  SpankyFromBRC in #plone IRC

	* A while back I added a feature for textarea widgets called 'append_only'.
	This allows you to make a "permanent record"-type text area, where your
	entries are added to the top of a uneditable region.  I had to make a
	fix where if you were using default_output_type, it would continually
	apply the transformation.  Let me know if there are any problems with
	this code.

2004-05-28  Philipp Auersperg  <phil _at_ bluedynamics.com>

	* interfaces/referenceengine.py: Created interface definitions
	for IReference and IContentReference.

2004-05-27  Philipp Auersperg  <phil _at_ bluedynamics.com>

	Some changes after a discussion with ben and kapil:

	* Field.py (ReferenceField.get): if the ReferenceField is not
	multiValued, the accessor returns the object instance(or None
	for void reverences) and not an array with one object instance
	(attention, may break existing code, but not data).

	* Field.py (ReferenceField.set): accept uids or objects as
	arguments. For singlevalued reference fields, accept single
	uid or object as parameter.

	* Referenceable.py, interfaces/Referenceable.py (IReferenceable):
	I added .getReferenceImpl and .getBackReferenceImpl, returning
	the reference objects (e.g. for retrieving the metadata). Created
	.getReferences and .getBackReferences as alias to .getRefs and
	.getBRefs for future consistency (more expressive names).

2004-05-24  Christian Heimes <heimes@faho.rwth-aachen.de>

	* Fixed multiple small interfaces glitches

	* Subclass some fields from FileField and reworked FileField
	including interfaces

	* Now requires MimetypesRegistry as seperate product from
	http://sf.net/projects/archetypes

	* Fixed some unit tests

2004-05-09  Christian Heimes <heimes@faho.rwth-aachen.de>

	* Introduced new validators syntax (again). The {'strategy' : 'and',
	'handlers' : () } was removed and replaced by a ValidationChain.
	Right now the validators field option support different types:

	- The name of an registered validator
	- A registered or unregistered instance implementing IValidator
	- A validator chain object
	- A list or tuple of strings, validators or validator chains
	- Optional an argument for the validator or validator name. Required is
	the default value:

	validators = (('isEmpty', V_SUFFICIENT), 'isURL')

	The new implementation is adding a isEmpty validator as first validator
	in sufficient mode to a validator chain for an non required field.

2004-05-09  Christian Heimes <heimes@faho.rwth-aachen.de>

	* Added type description string to BaseObject and base_edit (Merge
	from AT Content Types).

2004-04-21  Christian Heimes <heimes@faho.rwth-aachen.de>

	* Changed syntax for Field.validators. It accepts a dict:

	{'strategy' : 'and', 'handlers' : () }

	Where strategy is 'and' or 'or' and handlers is a tuple of validators.
	With strategy 'and', every validator must succeed, with 'or' at least one
	validator must succeed.

2004-04-07  Sidnei da Silva  <sidnei@awkly.org>

	* Moved skins/zmi to www/zmi to avoid clash when installing skins.

	* ArchetypeTool.py (registerClasses): If the object looks
	folderish, add the 'Edit' tab after the 'Contents' tab. Also, use
	a folder icon for it, while other objects get a document icon.

	* Field.py (FileField._process_input): Return filename, to be
	stored on the File object.

	* Widget.py (InAndOutWidget._properties): Add 'InAndOut' and
	'Picklist' widgets, contributed by 'Spanky'!

2004-04-07  Daniel Nouri  <daniel.nouri@con-fuse.org>

	* BaseObject.py (BaseObject.validate): BaseObject.validate() needs
	explicit REQUEST argument now. (Sid made this change actually.)

2004-04-06  Sidnei da Silva  <sidnei@awkly.org>

	* ArchetypeTool.py (BoundPageTemplateFile.__init__): Created a
	'BoundPageTemplateFile', that is bound to an Archetype. This is
	used for the (experimental) zmi support.
	(registerClasses): A method to allow a set of classes to be
	registered for adding through the zmi. This registers the classes,
	and creates a BoundTemplateFile (which will use the archetypes
	widgets) that will be the add form. For now it uses the default
	constructor generated.

	(ArchetypeTool.getWidgets): Factored getSearchWidgets into the
	more generic getWidgets, while keeping backward
	compatibility. This allows for getting fields for any mode (for
	example 'edit'). Check the method signature for the exact options.
	Tried to normalize the use of klass.__name__, meta_type and
	portal_type. Installing types and binding templates uses
	portal_type. Registering classes uses meta_type. Constructors use
	class name. I hope this is a bit more clear now.

2004-03-26  Chris McDonough  <chrism@plope.com>

	* BaseContent.py (BaseContent.PUT): did not take into account that
	the body of a PUT is not MIME-encoded and thus does not itself
	contain the content-type of the thing being PUT.  Instead, we
	needed to look at the request's main content-type header.  The
	symptom of the bug was that items that were PUT did not have the
	correct content-type, and would be marked with the most generic of
	possible content-types (either application/octet-stream or
	text/plain).

	* Extensions/utils.py: Made it possible to install archetypes
	without installing dependencies (QuickInstallerTool,
	CMFFormController, PortalTransforms) by passing a (false)
	"require_dependencies" argument into either setupEnvironment or
	installTypes.

	* Field.py: If a user of a field widget typed a bogus filename into
	the field upload form element, a traceback was raised somewhere in
	the bowels of AT/Zope.  Now, we just assume he knows what he's
	doing and turn the upload into a blank string, for better or worse.

2004-03-02  Sidnei da Silva  <sidnei@awkly.org>

	* ArchetypeTool.py (ArchetypeTool.getSearchWidgets): field_name
	should be set to the accessor, because the index that is created
	is named after the accessor!

2004-02-12  Sidnei da Silva  <sidnei@awkly.org>

	* Make all imports absolute.

	* Schema.py: generator, validation should stay in Products.

	* BaseUnit.py: oldBaseUnit is now gone for good.

	* BaseBTreeFolder.py: BTreeFolder2 is now required.

	* content_types/*: content_types is now gone for
	good. PortalTransforms is required now.

2004-02-06  Sylvain Thénault  <syt@logilab.fr>

	* Extensions/utils.py (install_subskin):
	  do not fail if the default skins directory is missing (as in
	  CMFPloneTypes for instance)

	* skins/archetypes/reference_slot.pt:
	  fix the reference box for backward compat

2004-01-17  Sidnei da Silva  <sidnei@awkly.org>

	* ExtensibleMetadata.py (ExtensibleMetadata.isEffective):
	Copy/paste error. Was using effectiveDate for expirationDate when
	calculating isEffective.

	* ArchetypeTool.py (modify_fti): Allow overriding immediate_view
	from klass attribute.

	* Extensions/utils.py (install_subskin): Don't try to install .svn
	directory as a skin.

2003-12-30  Daniel Nouri  <daniel.nouri@con-fuse.org>

	* Field.py (ReferenceField.addableTypes): Renamed allowedTypesReadable
	to addableTypes. Added note for the use of addable feature of
	ReferenceField.

2003-12-19  Sidnei da Silva  <sidnei@awkly.org>

	* SQLStorage.py (SQLServerStorage.table_exists): Added
	SQLServerStorage, contributed by Dwight Lowry as per #862448.

	* SQLMethod.py: Missing import.

2003-12-16  Sidnei da Silva  <sidnei@awkly.org>

	* ClassGen.py (ClassGenerator.checkSchema): Return an acquisition
	wrapped Schema so that the security machinery can find it's way
	through. **WARNING**: Consumers of Schema() and Schemata() must
	make sure to remove acquisition wrappers when persisting the
	resultant object. Failure on doing so will bite your butt when you
	get to run Zope HEAD :)

	* Schema.py (getSchemata): Wrap schemata into an
	ImplicitAcquisitionWrapper, so that the security machinery can
	find it's way through.

2003-12-06  Sidnei da Silva  <sidnei@awkly.org>

	* BaseBTreeFolder.py (__getitem__): Title/Description should come
	from BaseFolder, not from SkinnedFolder.

	* OrderedBaseFolder.py (OrderedFolder._setObject): Added
	CatalogMultiplex as a base class for OrderedBaseFolder.

	* BaseObject.py (BaseObject.__bobo_traverse__): Should fix a bug
	with folderish content and WebDAV. WebDAV methods expect a
	NullResource when the object is not found, so a new one can be
	created.

2003-11-21  Daniel Nouri <daniel.nouri@con-fuse.org>

	* Field.py (ReferenceField): The Vocabulary method of ReferenceField
	searches by meta_type now, which I added to be an index of
	uuid_catalog.

	This means that the allowed_types property of ReferenceField is now a
	tuple of strings in the form of meta_type and not
	TypeInformation.Title() (i.e. human readable) as it used to be.

	(ReferenceField.allowedTypesReadable): Added this method that allows
	reference.pt to conveniently iterate over meta_types and their
	readable forms.

	* Extensions/utils.py: Added 'meta_type' as a FieldIndex of
	uid_catalog.

	* skins/archetypes/widgets/reference.pt: Fixed 'addable' feature.

2003-11-20  Sidnei da Silva  <sidnei@awkly.org>

	* BaseFolder.py (BaseFolderMixin.manage_beforeDelete): Bummer!
	PortalFolder also inherits from CMFCatalogAware. That's so stupid!
	Use Folder then, which is what we should have done from the start.

	* examples/ComplexType.py (schema): Fix for #843871

	* BaseFolder.py (BaseFolderMixin.manage_afterAdd):
	CatalogMultiplex inherits from CMFCatalogAware, which
	SkinnedFolder does as well. So, instead of calling
	SkinnedFolder.manage_after*/manage_before*, we just inherit from
	PortalFolder as well (stupid ExtensionClass) and call
	PortalFolder.manage_after*/manage_before* and let CatalogMultiplex
	call the methods from CMFCatalogAware.

	* BaseBTreeFolder.py (manage_afterAdd): CMFBTreeFolder seems to
	inherit from PortalFolder, which BaseFolder does as well (via
	SkinnedFolder), so we don't need to call
	manage_after*/manage_before* twice, because they are mostly the
	same method.

2003-11-18  Sidnei da Silva  <sidnei@awkly.org>

	* ExtensibleMetadata.py (ExtensibleMetadata.allowDiscussion): Take
	keyword arguments, even if we ignore them *wink*.

	* ArchTTWTool.py (ArchTTWTool.storages_xml): Added storages xml page.

	* Registry.py: Added storage registry.

	* Storage.py: Register storages.

	* BaseContent.py (BaseContentMixin.manage_FTPget): This may be
	called with no arguments (for example, by manage_DAVget). Fall
	back to self.REQUEST in this case.

2003-11-17  Jens Klein  <jens.klein@jensquadrat.de>

	* OrderderBaseFolder.py, interfaces/orderdfolder.py: adapted to
	 Zope 2.7 style interface and implementation. This is needed to
	 run with Plone 2.0. There's a backward compatibility mode: In
	 config.py you can set USE_OLD_ORDEREDFOLDER_IMPLEMENTATION to 1
	 for using the old style implementaion instead.

2003-11-14  Sidnei da Silva  <sidnei@plone.org>

	* Field.py (ImageField.scale): Mini-patch by Gabriel Wicke.
	- scaling is done with the ANTIALIAS filter instead of
	NEAREST. Disadvantage: slower.
	- jpg compression is 88 instead of the 75 default (maybe 85 would
	be enough, makes some difference for file size). Less Artifacts.
	(ImageField.scale): ANTIALIAS is only available on PIL 1.1.3

2003-11-13  Sylvain Thénault  <syt@logilab.fr>

	* BaseObject.py (BaseObject): added the Type method, copied from
	ExtensibleMetadata, to interact cleanly with the uid_catalog with
	or without metadata implementation

2003-11-12  Sylvain Thénault  <syt@logilab.fr>

	* BaseContent.py: BaseContentMixin without Extensible metadata

	* BaseFolder.py: BaseFolderMixin without Extensible metadata. Fix
	the Description method and add Title / setTitle

	* BaseObject.py (BaseObject.SearchableText): now use the
	getCharset script to be consistent

2003-11-11  Sylvain Thénault  <syt@logilab.fr>

	* BaseUnit.py (NewBaseUnit.portalEncoding): now use the getCharset
	script to be consistent

2003-11-10  Sidnei da Silva  <sidnei@plone.org>

	* BaseObject.py (BaseObject.get_size): Better get_size implementation.
	DateTime's raise an AttributeError when using len().

2003-11-10  Geoff Davis <geoff@geoffdavis.net>

	* BaseObject.py: Added optional values argument to processForm to allow one
	to massage incoming form values in a script before passing them along to
	processForm.  If values is set (should be a dict), processForm takes its
	values from the dict; otherwise it gets them from REQUEST.form.

2003-11-09  Geoff Davis <geoff@geoffdavis.net>

	* updateSchemaForm.pt: Let user choose which classes should be updated
	since automatic schema change detection loses change info when Archetypes
	is reinstalled.  Also let the user choose to update all classes or only
	classes with an old schema.

	* ArchetypeTool.py: getChangedSchema now returns a tuple consisting of
	type, changed_flag rather than just a list of changed types.
	If called from a REQUEST, manage_updateSchema checks to see which
	classes need to be updated.  Fixed catalog search for objects that need
	updating (was using incorrect metatype and searching the UID catalog).

	* BaseObject.py: Made automated migrations slightly more robust by handling
	AttributeErrors gracefully.

2003-11-07  Sylvain Thénault  <syt@logilab.fr>

	* BaseFolder.py: added the Description method to not fallback to
	the PortalFolder's one

	* __init__.py: make DisplayList public

	* Extensions/utils.py: don't try to add an index when we only want
	to add the field to metadata

2003-11-05  Sidnei da Silva  <sidnei@plone.org>

	* BaseObject.py (BaseObject.get_size): Fix for when the value is
	a BaseUnit. Also, use the 'standard' way to get the raw value.

2003-11-05  Sylvain Thénault  <syt@logilab.fr>

	* Extensions/utils.py: extends fields'index attribute syntax to
	support extra arguments. That allows for instance to add ZCTextIndex:
	index='ZCTextIndex, lexicon_id=lexicon, index_type=Okapi BM25 Rank'

	* __init__.py: make IndexIterator available even without Plone
	and use it in base_edit, base_metadata and reference_edit.

	* Field.py: use the new getCharset script to get the site
	charset. This is usefull for non plone site without
	site_properties.

	* skins/archetypes/unicodeEncode.py: use the new getCharset
	script to get the site charset.

	* Archetypes should now working as well with plain CMF site :)

2003-11-05  Sidnei da Silva  <sidnei@plone.org>

	* skins/archetypes/widgets/*: Removed cruft (onfocus/onblur from
	Plone 1.0.x).

	* Widget.py (RichWidget.process_form): Better handling of
	upload/content-type/typed-in text.

	* BaseObject.py (BaseObject._migrateGetValue): Tentatively fix
	migrateGetValue by using __getitem__ (which looks up
	getEditAccessor, then falls back to getAcessor.

	* Several fixes all over the place. Updated forms to Plone 2.0
	style. Fixed problem with setting an empty value to a field (needs
	a test). Moved test suite to use ZopeTestCase (thanks to
	Tiran). Fixed problem were if you registered two classes with the
	same meta_type, the latter would win and override the first. Fixed
	getContentType method of TextField to work with the new BaseUnit.

2003-10-09  Benjamin Saller  <bcsaller@yahoo.com>

	* Widget.py (RichWidget.process_form): I think we'd want to take
	the mime_type input incase we can't guess the file type down the
	line?  if I am outta line with this tell me, but on unix many
	files don't have extensions so this is a win.

	* BaseObject.py (BaseObject._processForm): MAJOR CHANGE, minor
	expected impact. Unless I missed something (and I might have)
	normal users should notice no changes, however form processing has
	been broken out and delegated to the widget. This has the cool
	effect that widgets can now easily present multiple UI elements so
	long as they can produce a single value (and optional kwargs) that
	would be passed to the fields mutator. This also greatly simplfies
	processForm.

	The base widgets should have been updated. As an example of this
	new extension point the newish plone keywords widget replaces the
	plone 1.0 keywords widget. Previously this would have required
	additional javascript or alteration to the procesForm loop. Now
	its the responcibility of the the widget author to make sure if
	you need funky processing it happens in your widget.

	(schema): marked ID as not required in keeping with the plonish
	way of presenting this now, however the widget must mask this as a
	function of the way its displayed or not. The new code handles
	this nicely. Also, ID is invis by default now on the view screen.

	* skins/archetypes/widgets/zid.pt: brought into line with plone
	policy for id display and made to work with portal_factory. This
	deprecates the widget.displayautogenerated stuff that was there
	before, but because we call a script in the skinpath for this
	people that used that may get things back?

	* skins/archetypes/widgets/keyword.pt: updated to plone 2.0 styled
	keyword widgets.

	* skins/archetypes/widgets/epoz.pt: fixed tabindex handling (at
	least with my version of epoz)

	* skins/archetypes/base_metadata.cpt: slightly modularized this so
	you can provide a different header per type or per skin and
	included default that mirrors plone's current metadata text as its
	a good default.

	* skins/archetypes/base_edit.cpt: slightly modularized this so you
	can provide a different header per type or per skin.

2003-10-08  Benjamin Saller  <bcsaller@yahoo.com>

	* TemplateMixin.py (getTemplateFor): Made registerTemplate less
	restrictive and TemplateMixin a bit more robust.

	* ArchetypeTool.py (fixActionsForType): Added CMF1.4 support for
	method aliases by defining an aliases dict on the class
	object. This is needed to make TemplateMixin work again as
	_guessMethodAliases would break the view delegate before.

	Refactored the actions code ever so slightly and moved it out of
	extensions and into the archetypes tool.

	Made the TTW type installer call process types and the actions
	code to be sure that modify_fti was called and the correct actions
	installed.

2003-10-03  Alan Runyan  <demo@bazil.runyaga.org>

	* BaseContent.py (BaseContent.PUT): Dont Trust Content-Type Sent
	By Client. We have the filename, so we can figure it out.

2003-10-03  Sidnei da Silva  <sidnei@dreamcatcher.homeunix.org>

	* BaseUnit.py (newBaseUnit.update): Go with defaults, as we may
	get a string on mimetype here, which is not what we want.
	(newBaseUnit.update): Simplified a bit by using hacked
	getToolByName from PortalTransforms.

2003-09-22  Sidnei da Silva  <sidnei@plone.org>

	* BaseObject.py (BaseObject.getPrimaryField): Moved
	getPrimaryField from BaseContent to BaseObject, so it is available
	to BaseFolder as well.

2003-09-19  Benjamin Saller  <bcsaller@yahoo.com>

	* ReferenceEngine.py: This is a BIG CHANGE. Using the
	multi-catalog code the reference engine is now tooled to use a
	uid_catalog (which is created by the install script). Archetypes
	should have uid_catalog listed in the archetypes_tool/catalogs tab
	in addition to portal_catalog or what ever other cataloging is
	arranged. This helps with the use-case that context is indexed in
	a catalog other than portal catalog for a specific data
	type. Previous to this portal_catalog was needed for UID support
	and hence references to work. This will no longer be the case.

2003-09-14  Sidnei da Silva  <sidnei@plone.org>

	* Registry.py (availableTypes): Created a property type registry.

2003-09-13  Sidnei da Silva  <sidnei@plone.org>

	* ArchTTWTool.py: Added TTW Tool, which will be responsible for
	exporting XML out of the registries, and handling the editing of
	existing content types and adding of new content types.

	* Validators.py: Changed registration to go through our new registry.

	* Widget.py: Registered default widgets.

	* Field.py: Registered default fields.

	* Registry.py: Added a registry, for registering widgets, fields,
	validators, types...

2003-09-06  Sidnei da Silva  <sidnei@plone.org>

	* skins/archetypes/widgets/field.pt: Edit accessor may be None in
	some cases.

2003-09-04  Sidnei da Silva  <sidnei@plone.org>

	* Marshall.py (RFC822Marshaller.marshall): And more marshalling fixes.
	(RFC822Marshaller.marshall): Dang. Missing a parameter to
	getContentType call.

	* BaseObject.py (BaseObject.__getitem__): Avoid breakage when
	fields dont take **kw.

	* Marshall.py (RFC822Marshaller.demarshall): A couple more
	marshalling fixes.

2003-09-05  Benjamin Saller  <bcsaller@yahoo.com>

	* CatalogMultiplex.py (CatalogMultiplex.reindexObjectSecurity):
	First pass at flexible multi-catalog support. This has a very
	simple UI and prolly some impl problems in that it might not be as
	flexible as needed from an extension POV, but it seems to work
	locally. Add a new ZCatalog with a unique id to your Plone site,
	then in the archetypes tool goto the catalogs tab and add the id
	of the catalog and it will start getting updates.

2003-09-04  Benjamin Saller  <bcsaller@yahoo.com>

	* skins/archetypes/widgets/field.pt: adding back visiblity handling to
	widgets widget=Foo(visible={'edit' : 'hidden'}, missing states default
	to visible states can be visible, hidden, invisible.

2003-09-04  Sidnei da Silva  <sidnei@plone.org>

	* Marshall.py (RFC822Marshaller.marshall): And more marshalling fixes.
	(RFC822Marshaller.marshall): Dang. Missing a parameter to
	getContentType call.

	* BaseObject.py (BaseObject.__getitem__): Avoid breakage when
	fields dont take **kw.

	* Marshall.py (RFC822Marshaller.demarshall): A couple more
	marshalling fixes.

2003-09-02  Sidnei da Silva  <sidnei@plone.org>

	* Field.py (Field.getAccessor): Be more robust about fields
	without accessor.

	* skins/archetypes/widgets/reference.pt: Provide a default value.

	* Field.py (ReferenceField.Vocabulary): Fixed typo in
	vocabylary. Patch by philiKON.

	* BaseUnit.py (newBaseUnit.content_type): Provide a content_type
	method to make ExternalEditor happy (oh, adapters...)

	* Marshall.py (PrimaryFieldMarshaller.marshall): Use __getitem__
	of BaseObject, so we get to use the same effect everywere (get a
	BaseUnit instead of a string).
	(RFC822Marshaller.marshall): Same thing here.

	* BaseUnit.py: Missing parameter on call to update on PUT.

2003-09-01  Sidnei da Silva  <sidnei@plone.org>

	* BaseObject.py (BaseObject.__getitem__): Fixed ExternalEditor
	with Archetypes, by passing maybe_baseunit, which triggers getRaw
	to return the BaseUnit instead of it's string value.

	* Marshall.py (PrimaryFieldMarshaller.marshall): Issue a log
	warning instead of cryptic error if no IBaseUnit returned.

	* BaseUnit.py (newBaseUnit.manage_FTPget): Typo.

2003-08-13  Sidnei da Silva  <sidnei@redesul.com.br>

	* utils.py (DisplayList.keys): Lookup keys/values as their string
	representation as well.

2003-08-08  Sylvain Thénault  <syt@logilab.fr>

	* BaseObject.py: fix addSubObjects, remove _datify and Date

	* ExtensibleMetada.py: remove inheritance of DefaultDublinCoreImpl:)
	not more use of the ObjectField.

	* I18NMixin.py: stop trying to del the title property. Need to
	find a clean way to do this

	* examples/ComplexType.py: remove the MetaDataField, use of
	BaseSchema to avoid buggy metadata. I think we should not make
	PortalContent and PortalFolder using ExtensibleMetaData

	* tests/: make tests working (fix some ones according to new
	implementation, code cleaning)

2003-08-07  Sylvain Thénault  <syt@logilab.fr>

	* config.py: make new base unit the default unit :)

	* Field.py: remove MetadataField, works on unicode for
	String, Lines and Text fields. Override setStorage in TextField
	and I18NMixin.

	* BaseUnit.py: works on unicode, more reliance on the mime types
	registry

	* tests/test_unicode.py: new unit tests testing unicode behaviour

2003-08-04  Sylvain Thénault  <syt@logilab.fr>

	* use generator and validation as Python package instead of zope
	products

2003-07-31  Sidnei da Silva  <sidnei@redesul.com.br>

	* Field.py (ReferenceField.Vocabulary): Log a warning instead of
	failing when the object cannot be found on the catalog.

2003-07-30  Sylvain Thénault  <syt@logilab.fr>

	* Extensions/utils.py: only run install_subskins if
	product_skins_dir is not None

	* TemplateMixin.py: use StringField instead of Objectfield

2003-07-30  Sidnei da Silva  <sidnei@redesul.com.br>

	* Field.py (FloatField.set): Bah, it was still broken

2003-07-30  Sidnei da Silva  <sidnei@redesul.com.br>

	* skins/archetypes/widgets/multiselection.pt: Fix the
	multiselection widget. It was broken with Zope 2.7.

2003-07-29  Sidnei da Silva  <sidnei@redesul.com.br>

	* tests/test_sqlstorage.py (DummyTool.getConnFor): Fix
	SQLStorageTests by adding the ReferenceEngine as Mixin to the DummyTool.

	* Field.py (ImageField.get): Bah, fixing last minute change that
	broke existing image fields.

	* skins/archetypes/widgets/multiselection.pt: Fix checkbox
	handling on multiselection widget.

2003-07-28  Sidnei da Silva  <sidnei@redesul.com.br>

	* skins/archetypes/displayValue.py: Whoa. A parentesis was out of order.
	Finish by filtering out empty values.

	* Marshall.py (RFC822Marshaller.marshall): Removed TODO
	DublinCoreMarshaller. The RFC822 one should do what the DublinCore
	one intended to do.
	(PrimaryFieldMarshaller.marshall): Make it just a little bit
	smarter. I don't see why this fails to George Pan :(

	* Field.py (Field.validate): Patch by Azazel. Allow passing kwargs
	to the validators, as they seem to already support kwargs in the
	method signatures.

	* BaseObject.py (BaseObject._processForm): As suggested by George
	Pan, have a REQUEST argument on the processForm method to allow
	passing in a REQUEST.

	* skins/archetypes/displayValue.py: Ok, don't join chars with a
	',' if its a not a list (eg: string or unicode) and convert to a
	string if anything else (eg: int, float)

	* Field.py (Image.isBinary): Use return wrapped image in the
	instance context, and use the instance Title where
	possible. Existing images must be re-saved to get this
	functionality. If you want a non-wrapped image, you must pass the
	keyword argument 'unwrapped=1'.

2003-07-26  Sidnei da Silva  <sidnei@redesul.com.br>

	* Extensions/utils.py (filterTypes): Also check base classes to
	see if they implement IBaseObject.

2003-07-23  Sidnei da Silva  <sidnei@redesul.com.br>

	* Field.py (Field.copy): Do a deepcopy, so we don't get references
	for stuff we don't want to change.

2003-07-18  Sidnei da Silva  <sidnei@redesul.com.br>

	* BaseObject.py (BaseObject.__getitem__): Backport slightly
	modified fix from Ben from head. Enables External Editor to work again.

	* Field.py (Field.getMutator): Aha! self.mutator may be None
	actually, with ComputedField.

2003-07-17  Sidnei da Silva  <sidnei@redesul.com.br>

	* skins/archetypes/content_edit.py (previous): Clearer schemata
	handling. Should fix #770953.

	* BaseObject.py (content_type): Make the RFC822Marshaller the
	default one. Pending tests.
	(BaseObject.SearchableText): Misplaced piece of code, for handling
	LinesField and SearchableText.

	* Marshall.py (RFC822Marshaller.marshall): Small fixes to deal
	with objects without PrimaryField set.

2003-07-16  Sidnei da Silva  <sidnei@redesul.com.br>

	* skins/archetypes/unicodeTestIn.py: Trying to fix current unicode
	state on archetypes. Needs a unicode guru.

	* Schema.py (Schema.validate): Filter empty values on vocabulary lookup.

	* skins/archetypes/widgets/string.pt: Whitespace.

	* skins/archetypes/widgets/keyword.pt: Fill from request if available.

	* skins/archetypes/widgets/multiselection.pt: Reverting Xiru's
	changes and fixing accordingly. Include the default hidden field
	if not required.

	* Validators.py: Zope-dependent validators goes here.

	* skins/archetypes/widgets/field.pt: Display content type if available.

2003-07-15  Sidnei da Silva  <sidnei@redesul.com.br>

	* BaseObject.py: Missing import.

2003-07-11  Sidnei da Silva  <sidnei@x3ng.com>

	* skins/archetypes/base_edit.pt: Show 'default' schemata when
	there is more than one.
	Ops. That wasn't quite it. Fixed accordingly now.

	* skins/archetypes/widgets/multiselection.pt: <input> can't have
	tal:content. I guess it should be value, so changed it to that. It
	is a 'singleton' (or something like that).

	* ArchetypeTool.py (process_types): I was missing this feature for
	a loooong time. Lookup modify_fti on the base classes's modules.

2003-07-10  Sidnei da Silva  <sidnei@x3ng.com>

	* Field.py (ImageField.set): Trying to fix 'imgdata referenced
	before assignment' for Lewellyn.
	(ImageField.set): Doh, now 'mimetype refereced before assignment'

	* tests/test_all.py (test_suite): Added test_fields to the
	suite. Added test_widgets, but commented out. It should be run
	standalone, and with caution! It may harm your database.

	* Extensions/utils.py (isPloneSite): More permissive detection of
	a Plone Site (for people using sites created with *REALLY* old
	versions).

	* ArchetypeTool.py (ArchetypeTool._genId): Replaced weak
	implementation by version suggested by Robert Rotterman.
	(TTWSchema.compileSchema): Tentative to fix 'module Form not
	found' messages for people trying to use TTW schema.

	* skins/archetypes/base_view.pt: Define 'errors' so you can use
	edit widgets on the 'view' customization if you want to.

	* skins/archetypes/widgets/selection.pt: Made selection widget
	work with LinesField. I know it wasn't supposed to be like this,
	but I supposed it should work and it didn't worked, so I ended up
	making it work, which is good in the end :)

2003-07-09  Sidnei da Silva  <sidnei@x3ng.com>

	* tests/test_fields.py: Simple tests for 'processForm'.

	* tests/test_widgets.py (WidgetTests.test_widgets): Kids, don't do
	that at home :) I know I warned you guys against using commit() on
	unittests, but theres *really* no easy way out of this. I have to
	get the site commited to be able to reach it through HTTP, and
	hence use ClientForm to test the forms.

2003-07-08  Sylvain Thénault  <syt@logilab.fr>

	* make subobjects working :))) You can access to subobjects
	generated by transformation of new base unit from the
	instance. For instance if there is a 'image.jpg' subobject on
	<yourobject>, you can get it by accessing yourobject_url/image.jpg
	(or yourobject.getSubObject('image.jpg') ).

	* BaseObject.py: new method isTransformable which return true if
	the field is transformable (i.e. TextField based). New methods to
	handle subobjects : addSubObjects and getSubObject (objects are
	stored in sessions). Automatic access to these subojects by
	overriding __bobo_traverse__.

	* BaseUnit.py: use the new idatastream api and the subobjects api
	of BaseObject. Move cache handling to the transforms tool.

	* I18NMixIn.py: docstring cleanup, fix to work with
	BaseObject.__bobo_traverse__.

	* skins/archetypes/widgets/rich.pt: use isTransformable instead
	of isBinary

2003-07-03  Sylvain Thénault  <syt@logilab.fr>

	* added some tests for i18n fields and a basic documentation

	* BaseObject.py: remove the getLanguage function to put it into an
	external python script (getContentLanguage).

	* Field.py: use the external python script to get the current
	language.

	* skins/i18n_content_scripts: some scripts / template to handle
	the current language selection.

	* Schema.py: add hasI18NContent method

	* Extensions/utils.py: add an additional script (change_lang) to
	navigation after content_edit.success to reset the content language

2003-06-25  Sidnei da Silva  <sidnei@x3ng.com>

	* skins/archetypes/widgets/calendar.pt: Updated macro location to
	the recommended new one, which is calendar_slot not calendar_support.

	* utils.py (OrderedDict.reverse): Implemented 'reverse' operation
	on OrderedDict. Returns a reversed copy of the items list without
	modifying the object. Fixes bug #755622 on sf.

2003-06-24  Sylvain Thénault  <syt@logilab.fr>

	* BaseContent.py: add I18NBaseContent

	* BaseFolder.py: add I18NBaseFolder

	* BaseObject.py: fix a bug related to translation state

	* public.py: export I18NBaseFolder and I18NBaseContent

	* skins/archetypes/base_translation.pt: add an hidden input field
	for required but no I18N fields

2003-06-23  Sylvain Thénault  <syt@logilab.fr>

	* BaseObject.py: add methods to handle a master translation and
	others translations states.

	* public.py: add i18N content related actions (not sure they are
	in the right place...)

	* skins/archetypes/base_translation.pt: template to edit a
	translation while viewing the master translation.

	* skins/archetypes/manage_translations_form.pt: form to delete
	existant translations or change the master translation.

2003-06-22  Geoff Davis <geoff@geoffdavis.net> (plonista)

	* ArchetypeTool.py: added mechanism for monitoring object schemae.
	Schema are signed at registration time, and when a schema
	signature changes, it is flagged in ArchetypeTool._types.  Added a
	new tab on the tool that lets you see which types have schema that
	have changed and lets you update all the schema in place.  You
	will need to reinstall Archetypes to make this work.

	* Schema.py: Added toString and signature methods for use with
	update detection.  The toString method could use some improving.
	Also made a minor fix for the case of validating objects in place.

	* Field.py: Added toString and signature methods for use with
	update detection.  The toString method could use some improving.

	* BaseObject.py: Added an automigration method for handling
	updated schema.  The migration method works fine as long as
	calling a mutator on the value returned by an object's accessor
	leaves the object unchanged.  If you have objects for which this
	simple migration mechanism won't work, you will need to override
	BaseObject._updateSchema.

	* tests/test_update_schema.py: A new test to make sure all the
	schema updates work.  The individual subtests all work when run
	individually, but something evil in Archetypes is causing
	POSKeyErrors to be raised when the suite is run.  You will need to
	download the test product ArchetypesTestUpdateSchema for this test
	to run.

	* skins/archetypes/widget/label.pt: Added a skin for a Label
	Widget (a widget used not for data storage, but rather as a kludge
	for displaying text on a form)

2003-06-19  Sylvain Thénault  <syt@logilab.fr>

	* Field.py: add the I18NMixin and create I18N fields for String,
	  Metadata, File, Text, Lines and Image.

	* interfaces/fields.py: added the hasI18NContent method

	* BaseObject.py: add a few methods for I18N content:
	hasI18NContent, getFilteredLanguages and getLanguage

	* skins/archetypes/base_view.py: add a language selector if object
	has I18N content

	* skins/archetypes/base_edit.py: add a language selector if object
	has I18N content

2003-06-18  Sylvain Thénault  <syt@logilab.fr>

	* always use mimetype (and not mime_type) as variable / argument,
	for consistency.

	* TransformTool.py: fix persistence bug in the transformations
	mapping , add support for list and dictionary in
	transforms'configuration.

	* www/configureTransform.pt: use some simple widgets according to
	config metadata.

2003-06-10  Geoff Davis <geoff@geoffdavis.net> (plonista)

	* Field.py: added max_size attribute to ImageField.  max_size is
	a 2-tuple that specifies the maximum width and height for an image.
	Images larger than max_size will be rescaled so that their dimensions
	are <= max_size.  Rescaling preserves the image's aspect ratio and
	requires PIL.

	* Schema.py: fixed a bug in validate when no REQUEST is passed in

	* Widget.py: added size and maxlength attributes to the StringWidget

	* widgets/string.pt: added support for size and maxlength widget
	attributes

	* widgets/zid.pt: allow a form to override member.visible_ids by
	defining a value for the variable visible_ids

2003-06-06  Sylvain Thénault  <syt@logilab.fr>

	* BaseUnit.py: make new base unit working with transforms /
	mimetypes tool.

	* ClassGen.py: add generation of the edit accessor for field with
	the 'w' mode. Edit accessor is like the standard accessor but is
	used before edition of the content. It has been introduced since
	accessor for TextField (i.e. wrapping a BU) return a html / plain
	text version of the content. The edit accessor return the BU
	instance in that case, the same thing as the standard accessor in
	other cases.

	* Field.py: add methods to handle the edit accessor. Add
	transformation in the TextField accessor.

	* Extensions/utils.py (install_tools): install the transforms tool
	and the mimetypes registry.

	* TransformTool.py: new TransformsChain classe, simple policy
	handling

2003-06-04  Sidnei da Silva  <sidnei@x3ng.com>

	* SQLStorage.py (BaseSQLStorage.unmap_fixedpoint): Was causing an
	error if not yet initialized. There is a deep problem in
	archetypes that we need to solve, which is to postpone
	initialization until the object is in the ZODB, currently it is
	being done on a not very friendly order.

	* ArchetypeTool.py (ArchetypeTool.lookupObject): Return None if an
	empty uid was passed.

2003-06-02  Sidnei da Silva  <sidnei@x3ng.com>

	* TransformTool.py (Transform.reload): Got TransformTool and
	MimeTypesTool into a working state, so we can start from
	something. Also, fixed reload method of TransformTool.

2003-05-16  Sidnei da Silva  <sidnei@x3ng.com>

	* utils.py (DisplayList.__add__): Typo. mgsids -> msgids.

	* Field.py (Field.checkExternalEditor): Add check for external
	editor plus permission. This is to make it display the external
	edit link only if it is enabled in plone site_properties (which
	usually means external editor is installed and setup).

	* TemplateMixin.py: Changed references from FieldList to Schema.

2003-05-15  Sidnei da Silva  <sidnei@x3ng.com>

	* Schema.py (Schema.validate): Dont fail if visible_ids is False
	and no id was sent in the request.
	Missing import :(

2003-05-14  Sidnei da Silva  <sidnei@x3ng.com>

	* interfaces/interface.py: Trying to normalize the way interfaces
	are imported in different versions of Zope.

2003-05-13  Sidnei da Silva  <sidnei@x3ng.com>

	* Extensions/utils.py (install_indexes): Changed behavior on index
	instantiation: now uses "TextIndex|FieldIndex:schema". The change
	is in that before this, schema was separated by a pipe, and now it
	uses ':'.

	* skins/archetypes/widgets/calendar.pt: Allow to override calendar
	default value on search widget from request.

	* Storage.py (AttributeStorage.get): Strip acquisition wrappers
	before doing getattr, and try to add them back before returning the value.

	* Field.py (FileField.set): Fixed problem with uploading
	files. Sometimes the mime_type was being wrongly set. Added a test
	to make sure it keeps working.
	(ObjectField.set): Remove acquisition wrappers before going into storage.

2003-05-12  Sidnei da Silva  <sidnei@x3ng.com>

	* ArchetypeTool.py (modify_fti): Get 'global_allow' from the class
	definition, if possible.

2003-05-08  Benjamin Saller  <bcsaller@yahoo.com>

	* Schema.py (Schema.setDefaults): ok, we really do need callable
	default methods but we not have the normal Field.default and the
	Field.default_method that is a name of a method on the instance,
	called with no args and returning the value to be used as the
	default.

2003-05-07  Sidnei da Silva  <sidnei@frodo.x3ng.intranet>

	* skins/archetypes/widgets/textarea.pt: Value is not a valid
	attribute for textareas.

	* Field.py (TextField.getContentType): Changed default to None, or
	else uploaded files of unknown type could end up as text/plain.

	* skins/archetypes/widgets/rich.pt: Display 'download or edit'
	widget.

	* Field.py (Field.getAccessor): Provide a common way for finding
	the accessor and mutator methods.

	* BaseObject.py (BaseObject.isBinary): Improve testing for
	'binaricity' of content.

	* skins/archetypes/widgets/rich.pt: Dont display binary content.

	* ArchetypeTool.py (modify_fti): Set filter_content_types
	accordingly with allowed_content_types or klass attribute.

	* BaseBTreeFolder.py (__getitem__): Cope with BaseBTreeFolder __getitem__.

	* Field.py (FileField.set): Should really store a file, if we want
	it to use external editor with it. This change should not break
	existing instances, but tell me if it does.

2003-05-05  Sidnei da Silva  <sidnei@x3ng.com>

	* BaseObject.py (BaseObject._processForm): Wrong property. Should
	be isMetadata, not metadata.

	* skins/archetypes/widgets/multiselection.pt: Add default value
	for when no option was selected.

2003-05-01  Benjamin Saller  <bcsaller@yahoo.com>

	* ReferenceEngine.py (ReferenceEngine._addBref): There was a
	problem with Brefs getting added more than once since an
	assumption was violated with the addition of relationships. Fixed.

2003-04-30  Benjamin Saller  <bcsaller@yahoo.com>

	* ReferenceEngine.py (ReferenceEngine.addReference): changed the
	before add/del hooks to get passed the name of the
	relationship. Made delete take the name of the relationship and
	introduced a slight policy change as seen in test_singleReference.
	We record a single reference for an (object, relationship) pair,
	but an object can keep many references to a single object with
	different relationships. The delete case was also broken by the
	introduction of relationship types, this has been fixed and a test
	added.

2003-04-30  Sidnei da Silva  <sidnei@x3ng.com>

	* BaseObject.py (BaseObject._processForm): Mispelling. metdata -> metadata.

2003-04-28  Benjamin Saller  <bcsaller@yahoo.com>

	* Referenceable changes: added before Add/Delete hooks for
	target. Added getRelationships which is a list of all types of
	relationships managed for this object.

2003-04-27  Sidnei da Silva  <sidnei@x3ng.com>

	* Marshall.py (RFC822Marshaller.demarshall): Use the mutator
	instead of field.set().
	(RFC822Marshaller.marshall): Add a new line.

2003-04-25  Sidnei da Silva  <sidnei@x3ng.com>

	* tests/test_all.py (test_suite): Was missing a test on the test suite.

2003-04-23  Sidnei da Silva  <sidnei@x3ng.com>

	* Schema.py (MetadataSchema.addField): Layer was not being
	registered, which caused it not to be initialized/cleaned.

	* Storage.py (Storage.__repr__): Uniquefy Storage. Storages dont
	have special attributes, so using two instances need to be like
	one to initializeLayers and cleanupLayers.

	* Marshall.py (Marshaller.cleanupInstance): Avoid trying to delete
	the hook twice. XXX Need to find out why it is being called twice.

	* Field.py (TextField.set): The the mime-type parameter is spelled
	mime_type, also, the new BaseUnit doesnt accepts an instance parameter.

2003-04-22  Benjamin Saller  <bcsaller@yahoo.com>

	* tests/test_referenceable.py
	(ReferenceableTests.test_relationships): Added tests for and the
	ability to define the relationship between references. Look at the
	test for details but know that we can say things like:
		a.addReference('Owns', b)
		a.getRefs() = [..all..]
		a.getRefs('Owns') [b]

	IMPORTANT: The old storage format for reference is no longer
	supported. It should possible to convert to the new model using a
	script and a default relationship type though

2003-04-22  Sidnei da Silva  <sidnei@x3ng.com>

	* Marshall.py (Marshaller.initializeInstance): Method was not
	matching the interface.
	(RFC822Marshaller.marshall): Check by interface, instead of attribute.
	(Marshaller.initializeInstance): Better initialization/cleanup.

	* interfaces/layer.py (ILayerRuntime.initializeLayers): Update
	interfaces to match the real implementation.

2003-04-21  Sidnei da Silva  <sidnei@x3ng.com>

	* BaseContent.py (BaseContent): No ObjectManager here please.

	* Field.py (ImageField): Theres no reason why this coudlnt use
	AttributeStorage by default. Using ObjectManagedStorage breaks it
	when using with BaseContent objects.

	* tests/test_baseunit.py (BaseUnitTest.testSame): Added the same
	tests here as on the transform package, to confirm it works with
	the new BaseUnit.

2003-04-20  Sidnei da Silva  <sidnei@x3ng.com>

	* content_driver/html4zope.py: Fixed Subtitle.

2003-04-19  Sidnei da Silva  <sidnei@x3ng.com>

	* Marshall.py (RFC822Marshaller.demarshall): Adding a bare RFC822
	Marshaller, and fixing lots of typoes :P
	(RFC822Marshaller.marshall): Should use instance['field_name'] to
	reliably access fields. BaseObject.__getitem__ does the right job
	at getting and calliing the accessor.

	* content_driver/reST.py (Converter.convertData): Rendering of
	reST was broken. It was not rendering references the right way,
	and it didnt seem like it was doing the right thing with
	titles. Updated to use docutils.core.publish_string.

	* tests/test_baseunit.py: Added minimal test for BaseUnit.

2003-04-18  Sidnei da Silva  <sidnei@x3ng.com>

	* public.py: Added BaseBTreeFolderSchema. Fixed BaseFolderSchema
	and BaseSchema, now that we have added ExtensibleMetadata in the classes.

2003-04-17  Benjamin Saller  <bcsaller@yahoo.com>

	* ArchetypeTool.py (listTypes): deprecated old listTypes, but keep
	the import working, this should avoid a class of errors coming
	from 'near misses' on the imports

2003-04-16  Sidnei da Silva  <sidnei@x3ng.com>

	* BaseFolder.py: Add ExtensibleMetadata.schema to the Folder
	schema. Otherwise, were dont really implement IExtensibleMetadata.

	* BaseFolder.py (BaseFolder.manage_afterAdd): SkinnedFolder
	subclasses CMFCatalogAware, so, now that Referenceable doenst
	subclasses it anymore, we call SkinnedFolder.manage_afterAdd.

	* BaseContent.py (BaseContent.manage_afterAdd): PortalContent
	subclasses CMFCatalogAware, so, now that Referenceable doenst
	subclasses it anymore, we call PortalContent.manage_afterAdd.

	* Referenceable.py (Referenceable.manage_afterAdd): Dont subclass
	CMFCatalogAware anymore. Some methods were being called twice,
	because of this, and some initialization couldnt be performed
	because it tried to catalog fields that were not being
	initialized, and you couldnt make initialization happen first
	because it could depend on UID being set.

	* ArchetypeTool.py (modify_fti): Setting category to Folder was
	causing bad things. We need to fix plone, because a portal_type
	that is marked as 'use_folder_tabs' dont get tabs of the object category.
	(modify_fti): Hide references if IReferenceable is not implemented
	by the class.
	(modify_fti): Hide metadata if IExtensibleMetadata is not
	implemented by the class.

	* BaseContent.py: Assert that we implement IReferenceable

	* BaseFolder.py: Assert that we implement IReferenceable

	* BaseObject.py: Assert that we implement IReferenceable

	* interfaces/referenceable.py (IReferenceable._verifyObjectPaste):
	Added IReferenceable interface.

2003-04-15  Benjamin Saller  <bcsaller@yahoo.com>

	* Made widget.Description more runtime callable by looking for an
	optional method on the class of its name and returning its value.

2003-04-15  Sidnei da Silva  <sidnei@x3ng.com>

	* skins/archetypes/widgets/lines.pt: Should be :lines, not
	:list. Textareas dont have a value attribute.

	* skins/archetypes/base_view.pt: Allow users to provide custom
	header, body and footer macros for the the autogenerated
	view. This happens by looking for a template named
	'${portal_type}_view' and inside this template, looking for macros
	named 'header', 'body' and 'footer'. The body macro overrides the
	generated field listing. The header macro is inserted at the top,
	replacing <h1>Title</h1> and the footer macro is inserted after
	the field listing.

	* SQLStorage.py: Forgot to import type_map from Storage.py

2003-04-14  Sidnei da Silva  <sidnei@x3ng.com>

	* BaseBTreeFolder.py: Declare the right interfaces we implement.

	* ArchetypeTool.py (modify_fti): Make folderish types actions have
	a category of 'folder', so it works correctly with Plone.

	* public.py: Make Storages and DisplayList available from public.

	* SQLStorage.py: Import only what is needed from Storage.

	* Storage.py (__all__): Restrict whats going to be imported so we
	dont pollute the namespace.

	* BaseObject.py (BaseObject.__getitem__): Was not playing nicely
	with acquisition.

2003-04-12  Sidnei da Silva  <sidnei@x3ng.com>

	* *.py: Removed trailing whitespace and rewrapped some long lines.

	* Marshall.py (PrimaryFieldMarshaller.marshall): Fixing a broken
	import plus moving interface declaration to interfaces subdir.

2003-04-08  Benjamin Saller  <bcsaller@yahoo.com>

	* ArchetypeTool.py (process_types): changed the module level fti
	hook to pass fti[0] as its simpler for the developer

2003-04-07 Sidnei da Silva <sidnei@x3ng.com>

	* Made possible to have multiple fieldsets (they are called
	schemata). Just add "schemata = 'your_fieldset_name' when
	declaring a field. It will show up as a link on your edit form.

	* Blown away validate_metadata.py and metadata_edit.py. You may
	need to fix your portal_properties/form_properties
	[validate_metadata -> validate_base] and
	portal_properties/navigation_properties [metadata_edit ->
	content_edit] on your existing sites.

2003-02-11  Benjamin Saller  <bcsaller@yahoo.com>

	* Field.py (FieldList.__init__): Added the ability for FieldList
	to hold properties itself and be a layer container. Added minimal
	support for the marshalling layer.

	* BaseObject.py (content_type): Makeing title's default='' makes
	this work with ZCTextIndex again on creation.

	* GeneratorTool.py (modify_fti): icon is a name used by the ZMI,
	we don't wanna play in that name space so to specify an icon use
	the content_icon name

	* Marshall.py (Marshaller.__init__): A default marshalling impl
	can store hooks that it will call on the instance that should take
	the data that comes out of the demarshall call and update the
	object as needed.

	* BaseContent.py (BaseContent.PUT): Notion of top level PUT/ftpGET
	handling that deligates to a plugable marshalling layer, this
	abstaction should get some testing at the sprint.

	* Merged some of VladDrak's patches. I am not going to include the
	metadata patch until I've had more time to look it over but I
	don't mind getting that in given a couple of days.

2003-02-03  Benjamin Saller  <bcsaller@yahoo.com>

	* Field.py (FieldList.__init__): Made FieldList take props, made
	fieldlist a layercontainer, added placeholder for marshalling layer

2003-01-30  Benjamin Saller  <bcsaller@yahoo.com>

	* BaseObject.py (BaseObject.__getitem__): Play nice with Aq again

	* GeneratorTool.py (getType): added introspect tab so when people
	as me what types got registered we can just look now.... This is a
	step towards exposing the schema on the web.

	* BaseUnit.py (BaseUnit.__str__): __call__ maps to str for the
	catalog to work.

2003-01-14  Benjamin Saller  <bcsaller@yahoo.com>

	* templates/singleselection_pulldown_body: use the str() to cmp
	the values. better for int keys

	* Field.py (DateTimeField.set): Don't cvt if if you don't need
	to... duh

	* Storage.py: removed deprecated method from iface

	* BaseUnit.py (BaseUnit.reConvert): docstring to publish

	* GeneratorTool.py (modify_fti): allowed_content_types on a klass
	now sets up the fti, yum.
	(listTypes): listTypes specific to a package with the new argument

2003-01-07  Benjamin Saller  <bcsaller@yahoo.com>

	* GeneratorTool.py (process_types): got rid of the old
	view/edit/script dirs in favor of a simple target_dir (its all
	generated code anyway). This should be honored now, with a default
	of the cmft skin directory.

	* Generator.py (Generator.__init__): All references to editable
	are removed from generator and the templates. The str method on
	BaseUnits mostly covers this as we always return the raw object.

	* ClassGen.py (Generator.makeMethod): Generate uniform lambda for
	the created methods, this works now that we delegate to the schema
	all the time. Also gets rid of the methods template directory as
	its not needed anymore.

	* Field.py (FieldList.initalizeLayers): Play nice with the layer
	code, I hope to bulid this out a little more in the future, but
	for now its very simple.

	* cmf_types/DDocument.py (content_type): Broke out the schema to
	the module level, types only keep a ref to it. Also see how the
	type is the composite of BaseContent.type and
	ExtensibleMetadata.type.

	* Extensions/utils.py (install_navigation): changes to all the
	external method calls to skip most of the special metadata
	handling.

	* ExtensibleMetadata.py: Its just called 'type' now, metadata type
	is deprecated and we have more uniform handling of data/metadata.

	* Generator.py (_modes): Generation modes, generate views takes a
	list of either keys to this dict or just new dicts in this format
	that are the modes to be generated. Have fun.

2003-01-05  Benjamin Saller  <bcsaller@yahoo.com>

	* Field.py (FieldList.initalizeLayers): Added Layers calls to
	FieldList and the base Field Object. We explicitly register layers
	and expect that they will get initalized. The idea is that
	subsystems may require particular initalization on the part of an
	instance or an instance's field. The current interfaces support
	this.

2003-01-04  Benjamin Saller  <bcsaller@yahoo.com>

	* ContentTool.py (ContentTool._genId): Mr.Topf caught a bug in id
	generation where I wasn't incrementing the counter
	properly. Patched in accordance with his idea.

	* Storage.py (MetadataStorage.get): Thinking it might make more
	sense to call out to the metadata interface for this, handing off
	the storage concern once again. This can change when storage can
	perform initalization on the object during construction via a
	callback into the schema. Thus each storage item might be able to
	modify the instance if need be.

2003-01-03  Benjamin Saller  <bcsaller@yahoo.com>

	* ExtensibleMetadata.py (metadatatype): Updated field to use
	MetadataField type (and the new Metadata Storage) and removed a
	number of fields that are in the DublinCore but were
	invisible. Trying to let CMFTypes manage these internal fields
	seems to be a mistake so I let the default impl handle it.

	* ClassGen.py (_modes): one more step towards removing editable. I
	will be happy when this is gone

	* BaseObject.py (BaseObject.__init__): Had to move id mgmt to
	later to avoid a special case in the default handling
	(BaseObject.get): delegate through schema

2003-01-02  Benjamin Saller  <bcsaller@yahoo.com>

	* BaseObject.py (BaseObject.Vocabulary): Still trying to figure
	out just what I want to bubble up to this level and what should
	remain in the schema.

	* skins/cmft/collectKeywords.py: use new BaseObject.Vocabulary
	method.

	* Field.py (FieldList._properties): Easier to read/manage way of
	setting Field defaults/properties. See how the other fields use
	the _properties to set defaults and attributes now.

	* debug.py (Log.log_exc): take msg='' and **kwargs now, like log

	* Field.py (ObjectField.get): changed get/set to drive through
	Field.storage (see below)

	* Storage.py: Provide sample storage interface. This layer of
	indirection can be overridden on a per field basis to alter the
	way storage is handled. With the right tool it should be a simple
	task to store large fields on the filesystem or in a RDB of some
	sort.

	* Field.py (FieldList.setDefaults): Simplfied setDefaults, but now
	it really only should be called when object is uninitalized (which
	I may want to track)

	* BaseUnit.py (BaseUnit.PUT): Fixed PUT to use new driver code

	* __init__.py (listTypes): Updated to use generatorTool, still
	generates on initalize though

	* GeneratorTool.py (modify_fti): new tool, moved fti stuff here as
	well as process_types and registerType. Also added "icon" as an
	attribute of your content class so you can override its icon
