Changelog for Plone

    (name of developer listed in brackets)

Plone 3.0.6 - released Febuary 15, 2008

    - Make @@plone_lock_info not required for object_cut, object_delete and
      delete_confirmation scripts (not all content is lockable.)
      [ldr]

    - Five.testbrowser tests could not log in via the login_form.
      [stefan]


Plone 3.0.5 - released January 5, 2008

    - Fixed issues when non-savepoint supporting connections are
      involved in a folder_delete, folder_publish, or folder_rename.
      [alecm]

    - Remove utility registration for portal_quickinstall and portal_setup:
      they may run arbitrary code that relies on having a full acquisition
      chain including a request container.
      [wichert]

    - Backported changeset 18612 and 18615 from trunk. This fixes some
      deprecation warnings.
      [hannosch]

    - If you are using the fullscreenmode.js script, you can now pass in a
      'minimal=1' argument in the URL to make a page start out in the minimal 
      mode.
      [fschulze] [limi]
      
    - Hiding page history, page navigation, and busy icon (spinner) in print.css
      Related to http://dev.plone.org/plone/ticket/7433
                 http://dev.plone.org/plone/ticket/7402
      [siebo]

    - Removed 'Groups' dropdown from Users tab, as it did not and could not
      work.
      Fixes http://dev.plone.org/plone/ticket/7260
      [derek_richardson]


Plone 3.0.4 - released December 7, 2007

    - Added migration to enable workaround for CMFEditions large file
      handling issue.
      Related to http://dev.plone.org/plone/ticket/7223
      [alecm]

    - In livesearch reply, html quote the description to disable the
      inclusion of arbitrary html and executing arbitrary javascript
      when the search result is displayed. 
      Fixes http://dev.plone.org/plone/ticket/7439
      [ree]

    - GenericSetup profile ids now have to have a prefix for certain calls.
      Fixes http://dev.plone.org/plone/ticket/7435
      [witsch]

    - Moved folder_rename logic into PloneTool and added
      savepoint+rollback there as well.  Additionally, folder_rename
      now requires POST requests.
      [alecm]

    - Moved most folder_publish and folder_delete logic into PloneTool
      methods.  Added savepoints and rollbacks for folder publish and
      delete actions, so that partial deletions/transitions are not
      committed.  Made folder_publish require POST. Thanks to rossp
      for finding this.
      [alecm]

    - Undeprecated fullscreen.js - it still exists in the actions, but is
      turned off by default. It shouldn't have been moved to the 
      plone_deprecated skin layer. If you want to use it, you'll need to
      add it to the JS registry manually, though - as we don't include it
      in the default JS setup, since it's not in use by default.
      [limi]

    - Remove duplicate calling of customization macros
      in personalize_form.cpt
      Fixes http://dev.plone.org/plone/ticket/7359
      [seletz on trunk (4.0), maurits on 3.0]

    - Complete support for show_ymd to the calendar widget template. This makes
      it possible to create time-only widgets.
      [wichert]

    - Allow non ascii characters in webstats_js code. 
      Fixes http://dev.plone.org/plone/ticket/7359
      [naro]

    - No longer require a _catalog property on portal_catalog for migration.
      This avoids migration errors on sites with e.g. QueueCatalog installed.
      [alecm]

    - Added diff tool entry for Folder type.
      Fixes http://dev.plone.org/plone/ticket/7253
      [alecm]

    - Fix for user titles on ownership_form, which were showing the
      currrent member title instead of prospective owners.  Thanks to
      younga for the fix.
      Fixes http://dev.plone.org/plone/ticket/7286
      [alecm]

    - Fix to the Table of Contents code generation, so it doesn't produce
      invalid HTML even if you feed it an invalid nesting structure.
      Fixes http://dev.plone.org/plone/ticket/6930
      Thanks to davisagli for the fix.
      [limi]

    - Avoid the unlock handler to act if we are submitting with ok button.
      (Fixes ConflictError-s in case of an object is created without
      the portal factory.)
      [ree]

    - Fix TypeError when an anonymous user locks content.  Fixes
      http://dev.plone.org/plone/ticket/7246
      [maurits]

    - Index interface.__identifier__ instead of interfaceToName(interface),
      a 5x speed improvement when reindexing.
      [mj]

Plone 3.0.3 - released November 9, 2007 

    - Allowed the abbr, acronym, var, dfn, samp, address, bdo, thead, tfoot,
      col, and colgroup tags by default, since they are harmless, valid XHTML
      and shouldn't be filtered. Fixes:
      http://dev.plone.org/plone/ticket/6712 and
      http://dev.plone.org/plone/ticket/7251
      No migration performed, as we don't want to adjust custom filtering - 
      if you want to update this in your existing site, go to the HTML
      Filtering control panel and remove these from being filtered.
      [limi]

    
Plone 3.0.2 - released October 10, 2007

    - Give 'Modify portal content' permission to the Owner role by default.
      This allows sane use of workflow-less content types. Fixes
      http://dev.plone.org/plone/ticket/7180
      [wichert]

    - Modify form_tabbing.js to not touch the edit form if there's no
      fieldsets.
      [nouri]

    - Set the media for ploneKss.css to screen so it can be merged with the
      other CSS files.
      [wichert]

    - Add the language control panel when migration from previous Plone
      versions.
      [wichert]

    - Fixed missing i18n markup in folder_constraintypes_form for portal types
      translation. This closes http://dev.plone.org/plone/ticket/7067.
      [hannosch, naro]

    - Add migration to set the default GS profile when upgrading from 2.1.
      [alecm]
 
    - Use a button/script combo for product reinstall from the control
      panel.  http://dev.plone.org/plone/ticket/6457
      [alecm]

    - Remove silly root check from stripGRUFLocalRolePrefix script to
      fix migration bug. http://dev.plone.org/plone/ticket/5817
      [alecm]

    - Made Plone use 1/10th of the memory on file uploads. Details in
      http://dev.plone.org/plone/ticket/7027
      (also backported to Plone 2.5.x)
      [zegor]

    - Reverted addition of the GenericSetup import and export steps from
      PloneLanguageTool.
      [hannosch, wichert]

Plone 3.0.1 - released September 13, 2007

    - Made default_error_message more robust when the NotFound path traverses
      a view.
      [ldr]

    - Let the Editor role get 'Delete objects' permission, making it easier
      to delegate content management in a folder.
      http://dev.plone.org/plone/ticket/7078

    - Added a wide range of proxy roles to check_id script, should allow it to
      work with all but the most unusual workflows.  Eventually this should
      be converted to trusted code.
      http://dev.plone.org/plone/ticket/6999
      [alecm]

    - Fixed all the default view templates to use Archetypes' view mode for
      the widgets instead of using a special KSS template. This means that
      it's now very easy to add inline editing to your custom types, look
      at document_view.pt for an example. You just call the widget in view
      mode, and Plone takes care of the rest.
      http://dev.plone.org/plone/ticket/6705
      [limi]

    - Added migration for view customization container and utility.
      [witsch]

    - NuPlone didn't set the background color explicitly on the body element,
      fixed.
      [limi]

    - Adjusted some deprecation warnings to a later Plone version, as we
      haven't removed all usage of the underlying functions from Plone itself.
      [hannosch]

Plone 3.0 - released August 17, 2007

    - Remove usage of login.js and Deprecate it.
      [ree, wichert]

    - Update migration code for final release.
      [wichert]

    - Remove keywords/category listing from document byline and
      instead render it as a viewlet right below that.
      [maurits]

    - Make workflow history visible again, as viewlet just below the
      body of the content.  Fixes
      http://dev.plone.org/plone/ticket/6933
      [maurits]

    - Let the "manage portlets" fallback link (for when no columns are shown)
      use the canonical object (i.e. object without default view), in the same
      way that the column would have done. Fixes
      http://dev.plone.org/plone/ticket/6927
      [optilude]

    - Sort the configlets in the control panel by their translated title
      instead of their English title.
      [hannosch]

    - Fixed erroneous message when publishing multiple items and a subfolder
      with no items was present. Also synced status message with the
      content_status_modify script, so only one message is shown.
      This closes http://dev.plone.org/plone/ticket/6553.
      [hannosch]

    - Fixed a few status messages to work with content item titles with
      non-ascii characters in them.
      [hannosch]

    - Plone 3.0 has an ID "content" that only includes the actual content,
      not everything in the content well. Adjusted the getContentArea()
      method in register_function.js to prefer this if it's present.
      This fixes http://dev.plone.org/plone/ticket/5701
      [limi]

    - Fixed incorrect redirect when pressing the cancel button on the
      sharing tab.  For Files it would cause you to download the file.
      This fixes http://dev.plone.org/plone/ticket/6874
      Fixed in plone.app.workflow.
      [maurits]

    - Fix incorrect use of getActionById that caused an error when
      sending someone a link to an item in the site.  This fixes
      http://dev.plone.org/plone/ticket/6857
      [maurits]

    - The wiki syntax support now supports both the [[link]] and ((link))
      syntax variations by default. Removed the preference for selecting
      between them, since it no longer does anything.
      [limi]

    - Adding a mini-login form to the login failure screen. This fixes
      http://dev.plone.org/plone/ticket/6776
      [limi]

    - Since the CSS isn't recalculated if you switch to https mid-flight,
      we need to add https version of portal_url to the blacklist to avoid
      getting the lock icon on local links. This fixes:
      http://dev.plone.org/plone/ticket/6821
      http://dev.plone.org/plone/ticket/6767
      [limi]

    - Fixed permissions for iterate check-in/check-out so that non-manager
      users can use it. Fixes http://dev.plone.org/plone/ticket/6645
      [optilude]

    - Corrected broken Javascript regular expression that caused almost
      arbitrary stuff in the query string to cause 'searchterm'-highlighting.
      Thanks to Claytron for patch.
      Fixes 
      http://dev.plone.org/plone/ticket/6824
      http://dev.plone.org/plone/ticket/6811
      [elvix]

    - Reformatted the workflow descriptions in order to prevent insane amount
      of whitespace to show up in the translations.
      [hannosch]

    - Added i18n markup to the workflow descriptions in GenericSetup profiles.
      [hannosch]

    - Remapping the "(Default)" workflow to No Workflow didn't work.
      Fixes http://dev.plone.org/plone/ticket/6818
      [optilude]

    - Remapping to "No Workflow" resulted in an error, fixed. Thanks to
      rsantos for the patch. Fixes http://dev.plone.org/plone/ticket/6819
      [limi]

    - Author profile template was showing left/right portlets, removed these.
      [limi]

    - Removed httpresponse patch, which is obsolete with Zope 2.10.4 which we
      do require now.
      [hannosch]

Plone 3.0-rc2 - released July 27, 2007

    - Added a description to the no-workflow information in the types
      control panel. This fixes http://dev.plone.org/plone/ticket/6812
      [wichert]

    - Added in markup for the IDs #contentTopLeft, #contentTopRight,
      #contentBottomLeft, #contentBottomRight to allow rounded corners on the
      content well using the same technique as the portlets.
      [limi]

    - Updated componentregisty.xml to new style. As the object handler only
      supports registering objects in the site itself now, we can remove all
      the slashes.
      [hannosch]

    - Updated the migration tool to use the "upgrade" terminology, to be
      consistent with the recent documentation. Also removed useless tab,
      all information is on one screen now.
      [limi]

    - Move login and logout-handling code into the membership tool and
      add sending of events when a user logs in or logs out. For Plone 3.5
      we can move most of the code into event handlers.
      [wichert]

    - Harmonized the link classes for wiki links with the Plone standard,
      made pages that haven't been created yet red, made the entire link 
      clickable, made the "+" superscript.
      [limi]

    - The protocol-specific links should only be applied inside the content
      area.
      [limi]

    - Fixed inline editing for dates in event_view
      [spliter]

    - Fullscreen view for images has a title of it's parent now
      [spliter]

Plone 3.0-rc1 - released July 13, 2007

    - CMF has renamed getToolByInterfaceName to getUtilityByInterfaceName.
      Update our scripts accordingly.
      [wichert]

    - validate_email is stored on the portal root, not in site_properties.
      Make all scripts and templates aware of that.
      [wichert]

    - No longer do portlet and action calculations on error pages.
      This will make them less resource intensive, and less likely to
      throw their own errors (which resulted in an XSS issue).
      Additionally, this means that there is now a means for any
      template to avoid portlet and action processing as needed.
      [alecm]

    - Remove hard-to-cache recent portlet from the default front page. It's
      on the default dashboard.
      [optilude]

    - Changed the behaviour of the "Allow comments" to be a checkbox instead
      of having three settings. It now respects the global setting unless you
      made a manual change on that particular document.
      This closes http://dev.plone.org/plone/ticket/5977
      [hannosch, limi]

    - Moved the login.js script to only trigger on the login_form page, since
      that's where the login portlet posts to anyway. Carrying it around on
      every page doesn't make sense.
      [limi]

    - The mark_special_links javascript is no longer hooked up, since we use
      CSS to do the various protocol-specific markers now.
      It's *not* removed from existing sites that use it, but new sites
      will not have it enabled. The CSS approach works in all modern browsers,
      but not Internet Explorer 6. It works fine in IE7, however.
      If you are upgrading from an earlier Plone release, you
      might want to remove the script manually to reduce page weight.
      [limi]

    - Moved several javascripts to be rendered for logged-in users only to 
      reduce the weight of the anonymous page load.
      [limi]

    - If we failed to send the user registration email but the user selected
      his own password to not remove the newly created user but just warn
      him that the email failed.
      [wichert]

    - Do not allow user registration if the site is configured to emai
      password but no mail configuration has been set.
      [wichert]

    - Escape userids and groupnames in all templates so we can handle ids with
      unfriendly characters.
      [wichert]

    - Cleanup handling of userids and loginnames: consistently use userids to
      key all user information. 
      [wichert]

    - Disable the mobile style sheet by default, since very few people use it,
      and we're planning to re-work this in 3.5 anyway. If you need it, simply
      turn it back on in portal_css.
      [limi]

    - Deprecated presentation.css since the presentation code uses the 
      dedicated S5 CSS files now.
      This closes http://dev.plone.org/plone/ticket/6304
      [limi]

    - Images and Files no longer have a workflow in the new default setup,
      making them always visible.
      This closes http://dev.plone.org/plone/ticket/6740
      [limi]

    - Workflow states now have a description. 
      This closes http://dev.plone.org/plone/ticket/6498
      [limi, hannosch]

    - Remove the community workflow and re-title the Plone workflow to
      "Community workflow".
      [wichert]

    - In the simple publication workflow, the author can now edit a published
      item. He cannot edit it while it is pending, though.
      [limi]

    - Blacklist the 'layout' id to prevent conflicts with the layout property
      on dynamic view capable content. This fixes
      http://dev.plone.org/plone/ticket/5970
      [wichert]

    - Allow form tabbing using other elements than forms. This allows tabbing
      between multiple forms, which is needed by the content rules config 
      panel.
      [wichert]

    - Factored most of the "add menu" functionality out of 
      plone.app.contentmenu into plone.app.content.browser.folderfactories.
      This contains a view which powers the folder_factories view. The old 
      template-based version is moved to plone_deprecated and is renamed
      old_folder_factories. Closes http://dev.plone.org/plone/ticket/6370.
      [optilude]

    - Made the home link on the login success page link to the navigation root
      rather than always linking to the site root. Fixes 
      http://dev.plone.org/plone/ticket/6001.
      [optilude]

    - Made all portlet management functions use explicit referer URLs, rather
      than relying on HTTP_REFERER. Hopefully this fixes problems with IE7
      not passing this value properly. Should fix 
      http://dev.plone.org/plone/ticket/6395 and 
      http://dev.plone.org/plone/ticket/6641.
      [optilude]

    - Added an event handler to create a default dashboard when a new user
      is created. This can be overridden using an adapter from IBasicUser to
      IDefaultDashboard from plone.app.portlets.
      Closes most of http://dev.plone.org/plone/ticket/6198.
      [optilude]

    - Added a message to the dashboard when it is empty, instructing users to
      add some portlets.
      Refers to http://dev.plone.org/plone/ticket/6198.
      [optilude]

    - Made the cut and delete items in the 'actions' menu fail with a status
      message explaining the error, rather than an exception, when the context
      is locked.
      [optilude]

    - Ensured that the 'rules' tab is not displayed if content rules are
      disabled globally. Fixes http://dev.plone.org/plone/ticket/6449.
      [optilude]
      
    - Show the locked icon to any user (including the one who holds the lock)
      so long as they would normally have the "Modify portal content"
      permission. This makes it easier to realise when you inadvertently
      locked an object.
      [optilude]

    - Fixed _at_creation_flag on initial content. This closes
      http://dev.plone.org/plone/ticket/6642.
      [hannosch]

    - Remove the properties action from all FTIs.
      [wichert]

    - Corrected status messages emitted by the join form and personalize
      validators. This closes http://dev.plone.org/plone/ticket/6518.
      [hannosch, wichert]

    - Unregister tools which are no longer action providers. This fixes
      http://dev.plone.org/plone/ticket/6730
      [wichert]

    - Added tests for sending mails via the contact form with Unicode input.
      The actual bug was fixed in SecureMailHost. This closes
      http://dev.plone.org/plone/ticket/6574.
      [hannosch]

    - Added migration to the new five.localsitemanager lookup class.
      [hannosch]

    - Added proper byline on search results, optimized layout.
      [limi]

    - Adding support for the rel="tag" microformat. 
      This closes http://dev.plone.org/plone/ticket/5351
      [limi]

    - Separate the kss resources to a development and production version,
      and change portal_javascript entries to switch to the new resources.
      Modes can be switched by setting portal_javascript to debug mode, or
      by visiting the view @@kss_devel_mode/ui (this works with client side
      cookies, and thus enables changing the development mode of kss
      without touching the server).
      [ree]

    - Use the PlonePAS way of setting member properties
      [wichert]

    - Removed utility registrations for tools that are not utilities anymore.
      [hannosch, wichert]

    - Updated the factory and migration_util code to use the new GenericSetup
      methods for directly loading profiles, without setting the context.
      [hannosch]

    - Small i18n markup fix in the control panel overview. Dynamic content
      inside a message has to be quoted by using i18n:name.
      [hannosch]

    - The persistent type information of the Topic type was not updated to its
      new name Collection. This closes http://dev.plone.org/plone/ticket/6546.
      [hannosch]

    - Reformatted the migration registrations for less excessive whitespace use.
      [hannosch]

    - Added migration registrations for the 2.5.3 rc1 and final releases.
      Corrected the history. This closes
      http://dev.plone.org/plone/ticket/6659.
      [hannosch]

    - Added the selected year to the options in the calendar date picker box
      if it was not in the available range, so you can always keep the year.
      This closes http://dev.plone.org/plone/ticket/5279.
      [hannosch]

    - No longer migrate the deprecated related and language portlets to 
      classic portlet assignments in the portal root. This closes
      http://dev.plone.org/plone/ticket/6545.
      [hannosch]

    - Made the user preference for which editor to use translatable. This
      closes http://dev.plone.org/plone/ticket/6386.
      [hannosch]

    - Consistently bicapitalized 'JavaScript'. This closes
      http://dev.plone.org/plone/ticket/6636.
      [hannosch]

    - Fixed explanation on the navigation control panel. This closes
      http://dev.plone.org/plone/ticket/6643.
      [hannosch]

    - Updated the language control panel to a new formlib-based version which
      shows all the language names localized to your language.
      This refs http://dev.plone.org/plone/ticket/5442.
      [hannosch]

    - Added migration to move the kupu (core) and CMFPlacefulWorkflow (add-on)
      control panels to the right categories. This closes
      http://dev.plone.org/plone/ticket/6547.
      [hannosch]

    - In plone.app.viewletmanager GenericSetup handler: Added support for
      'based-on' and 'make-default' parameters in <order /> and <hidden />
      nodes, value for 'skinname' can be "*" (means all). Added support for
      'insert-before', 'insert-after' (value can be "*") and 'remove'
      parameters in <viewlet /> node. Viewlets ordering and hiding are now
      additive. This closes http://dev.plone.org/plone/ticket/6649.
      [davconvent]

    - Made 'prefs_user_details' pull its form from 'personalize_form' to
      minimize duplicated code. If you have customized any of these templates,
      you should probably revisit them and update your templates accordingly.
      [limi]

    - Moved footer.pt, colophon.pt and global_contentviews.pt to viewlets,
      found in plone.app.layout.viewlets. The original templates are now in
      the plone_deprecated layer.
      [optilude]

    - Users aren't invited to contact the site admin anymore if mail settings
      are not set. This closes http://dev.plone.org/plone/ticket/6322.
      [hannosch]

    - Changed the global section (tab) navigation so that it shows non-
      folderish items as well as folderis ones by default (for migrated
      the sites, the default is not to display them). Also changed the 
      navigation tree so that it start at level 1, not the site root by
      default (again does not affect migrated sites). This makes it easier to
      have a separate front page, and lets the tabs act as first-order
      navigation with the navtree acting as second-order-and-below.
      [optilude, limi]

    - Added a persistent zope.app.cache based RAMCache, which is used for
      caching the portlets by default. Configuration is available via
      http://portal/@@ramcache-controlpanel.
      [hannosch]

    - Allow user ids that are substrings of existing user ids.  This
      fixes http://dev.plone.org/plone/ticket/6396
      [nouri]

    - Fix `RegistrationTool.mailPassword` by passing the results of
      `reset_tool.requestReset` to it, instead of having the template
      call the tool's function.  Also take care about encoding, since
      the template returns unicode now.  This makes e-mailing
      forgotten passwords work again, and fixes
      http://dev.plone.org/plone/ticket/6614
      [nouri]

    - Added an opt-out for multi-submit protection. Add a class to the input
      tag called "allowMultiSubmit".
      [optilude, ree, fschulze]

    - Adjusted our RegistrationTool's mailPassword method not to use the
      method from the base tool anymore, as that has changed in incompatible
      ways.
      Reverted the method to use the same logic as in CMF 1.6. This refs
      http://dev.plone.org/plone/ticket/6614.
      [hannosch]

    - Corrected inconsistent slashing of URLs in folder listings, fixes
      http://dev.plone.org/plone/ticket/4912

    - Fixed migration from Plone < 2.5. The portal_setup tool needs to be
      installed before installing CMFPlacefulWorkflow now. This closes
      http://dev.plone.org/plone/ticket/6610.
      [hannosch]

    - Added ZPT-like i18n markup to GenericSetup profiles, which is used for
      automatic message extraction by i18ndude.
      [hannosch]

    - Cleaned and speed up ulocalized_time functions. Added request to the
      method signature which was implicitly acquired so far. Now you can
      optionally provide it directly.
      [hannosch]

    - Corrected spelling error in validate_folder_constraintypes.vpy. This
      closes http://dev.plone.org/plone/ticket/6591.
      [hannosch]

    - Fixed duplicate class definitions in some templates.
      [hannosch]

    - Fixed lots of small i18n markup errors. Mostly using different message
      ids for messages whose text has changed significantly.
      [hannosch]

    - Link to the users dashboard from password_form and personalize_form,
      instead of to the plone_memberprefs_panel.
      [hannosch]

Plone 3.0-beta3 - released May 5, 2007

    - Allowed any non-structural folders and non-folderish items be eligible
      as default view types. Structural folders can still be listed if they
      are added to the default_page_types property. This closes
      http://dev.plone.org/plone/ticket/6118
      [optilude]

    - Gave the Editor role a few additional permissions: 
      "Modify view template", "Request review" and "Modify properties". This 
      closes http://dev.plone.org/plone/ticket/6530 
      [optilude]

    - Moved sharing action to a global action and removed from standard
      types. This closes http://dev.plone.org/plone/ticket/6335
      [optilude]

    - Fixed migration code for CMFEditions. This closes
      http://dev.plone.org/plone/ticket/6491
      [hannosch]

    - Fixed member_search_results to work for users without a fullname.
      [hannosch]

    - Added plone.app.viewletmanager. This allows you to hide and order the
      viewlets per skin via a GenericSetup profile.

Plone 3.0-beta2 - released May 2, 2007

    - Extended support for creation of translated initial content to include 
      all titles and descriptions of all initial content.
      [hannosch]

    - Add getChainFor method in WorkflowTool from CMFPlacefulWorkflow
      monkey-patch and disable this one.
      [encolpe]

    - Hide CMFPlone on the add-on product installation control panel.
      This fixes http://dev.plone.org/plone/ticket/6513.
      [hannosch]

    - Fix bad links between templates prefs_users_overview, prefs_user_details
      and prefs_user_membership (remove starting space and force portal_url)
      [encolpe]

    - Separated the Editor role into Editor and Contributor, the latter with
      responsibility for adding content. This is necessary in order to support
      the (most common?) use case of wanting to have a folder in which people
      can add content, but not edit the folder itself!
      [optilude]

    - Moved global_logo, global_pathbar, global_personalbar, global_searchbox,
      global_sections and global_siteactions to viewlets in plone.app.layout.
      [fschulze]

    - Add POST-only protections to security critical methods (see
      http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-0240).
      [mj, bloodbare, alecm]

    - Switched to the simple_publication_workflow as the default workflow.
      Note that the tests still assume plone_workflow is the default (see
      the previous change message below).
      [optilude]

    - Made an extension profile for the default Plone test fixture in
      profiles/testfixture. For now, this explicitly sets the test fixture
      workflow. This profile should be used with care - deviate too far from
      the base profile and tests become meaningless! However, some deviation
      may be inevitable in order to have sane and predictable tests.
      [optilude]

    - Deprecate Products.CMFPlone.utils.BrowserView. Its users should use
      Products.Five.BrowserView directly.
      [wichert]

    - Removed presentation.css, as the presentation mode has moved to use
      the S5 presentation mode.
      [limi]

    - Cleaned up the ID mess around which ID/class that wraps the actual
      content (without the UI elements in the content well). The official
      approach is now to use #content for the actual content, and to use
      #portal-column-content for the entire content region. Also made it
      possible to get rid of some !important statements.
      If you have CSS that depends on either of these two selectors, you might
      want to make sure that the output is still as expected. It should work
      the same way in most cases, but since the scope is narrower for #content
      now, you might need to update your styles (and main_template needs to
      be updated too, if you have customized that).
      Fixes http://dev.plone.org/plone/ticket/6465
      [limi]

    - Let users with the Editor local role add content in folders. Note that
      this will only work for third party content types and custom workflows
      if  they either use one of the standard "add content" permissions or
      explicitly give Editor the Add portal content role. Fixes
      http://dev.plone.org/plone/ticket/6265
      [optilude]

    - Deprecated ploneifyActions.py and moved the functionality to the
      @@plone view. As part of this, removed the use_folder_tabs property.
      All structural folders now use folder tabs; this property pre-dates
      the concept of non-structural folders.
      [optilude]

    - Reindex security recursively after group name update in
      stripGRUFLocalRolePrefix. Fixes
      http://dev.plone.org/plone/ticket/5817
      [alecm]

    - Add back user skin cookie deletion on logout.  Fixes
      http://dev.plone.org/plone/ticket/2563
      [alecm]

    - Added visual styles and updated markup for the new "Info", "Warning" and
      "Error" status message levels.
      [limi]

    - Made the error page much friendlier, it essentially just prints a log
      entry number now and explains that the error has been logged. If you are
      logged in as an administrator, you have access to the full error log.
      This fixes http://dev.plone.org/plone/ticket/6277
      [limi]

    - Ensured that templates missing the initial h1 class
      "documentFirstHeading" got it applied, since it makes a difference with
      the header styling. If you see additional space above your headlines in
      your own products or add-on products, please insert this class.
      It would have been nice if IE supported :first-child selectors, but
      since it doesn't, this is the workaround.
      [limi]

    - Add a migration utility function to load (parts of) GenericSetup
      profiles during migration. This allows us to write configuration changes
      in the form of GenericSetup extension profiles instead of python code. 
      Use this to load a new 3.0b1-3.0b2 migration profile. 
      [wichert]

    - 'News' and 'Events' are no longer "Smart Folders" (or "Collections") in
      new created portals. Instead, they are now "Large Folders" with a
      "Collection" default page named 'aggregator'.
      This closes http://dev.plone.org/plone/ticket/6218.
      [davconvent, nouri, optilude]

    - Remove the default_charset property on the portal object during
      migration if it is set to an empty string. This makes sure we do not try
      to use an invalid (ie empty) encoding when exporting GenericSetup
      profiles.
      [wichert]

    - Register the tool inteface for the membership and workflow tools
      using the CMFCore interface, overriding the CMFDefault registration.
      [wichert]

    - Enabled search-current-folder-only option for the quicksearch box.
      [optilude]

    - Make the navigation root affect searches (including live searches). 
      By default, you will not get search results from outside the navigation
      root.
      [optilude]

    - Merged patch from olivluca to properly support the uniqueItemIndex
      iterator.
      [optilude]

    - Set the current instance version on site creation so we can migrate
      properly.
      [wichert]

    - Added new arguments to the action tools API which allow querying for a
      specific action category or exclude certain action categories or action
      providers from the results in an efficient way.
      [hannosch]

      We exclude all actions from the workflow tool and those in the
      folder_buttons and object_buttons categories by default from the
      dictionary available from the ploneview.
      [hannosch]

    - Removed lots of unused actions and the entire object_tabs and global
      action categories. This closes http://dev.plone.org/plone/ticket/6336.
      [hannosch]

    - Cleaned up code in unicodehacks.py so we don't have a performance 
      penality for mixed unicode/non-unicode pages.
      [hannosch]

    - Micro optimization: Use a truly local variable for language lookup, 
      which is faster than getting the value from the globals.
      [hannosch]

    - Stop calculating the body text of a document twice in document_view.
      [hannosch]

    - Changed order of action providers to fit the way we want to see
      content tabs.
      [davconvent, nouri]

Plone 3.0-beta1 - released March 26, 2007

    - Use plone.session for authentication.
      [wichert]

    - Replaced getToolByName calls with getUtility/queryUtility for placeful
      workflow tool.
      [encolpe]

    - Changed all mail related templates and methods to use the email_charset
      property. This closes http://dev.plone.org/plone/ticket/5585.
      [hannosch]

    - Added email_charset property, which should be used as the charset to
      send mail, so you are not restricted to the default_charset which has to 
      be utf-8 right now. This refs http://dev.plone.org/plone/ticket/5585.
      [hannosch]

    - Opera 9 is now a supported browser for the rich text editor.
      [duncan]

    - Removed computeRoleMap.py, as it can't be deprecated in a safe manner.
      If your product depended on this, you need to update it.
      [limi]

    - id="relatedItems" is now a class="relatedItems".
      This closes http://dev.plone.org/plone/ticket/6229.
      [limi]

    - Removed references to specific workflow states from the publishing
      process explanation in content_status_history.cpt. This closes
      http://dev.plone.org/plone/ticket/4648.
      [hannosch]

    - Increased the calendar_starting_year property to 2001, so the available
      calendar range doesn't end in 2010, which is quite soon ;)
      [hannosch]

    - Made the content menu (in plone.app.contentmenu) only show up on the
      main view of an object; on other tabs, it makes less sense, especially
      on the edit tab where it may cause confusion and lead users to 
      accidentally cancel their edit operation by clicking a content menu
      link.
      [optilude]

    - Removed all mail templates which are part of PasswordResetTool and
      weren't used anymore.
      [hannosch]

    - Replaced a few last occurrences of the term member with user. This
      closes http://dev.plone.org/plone/ticket/5792.
      [hannosch]

    - Added temporary monkey-patch for GenericSetup's components handler. We
      need to ensure we store Acquisition free tools as utilities.
      [hannosch]

    - Properly install PloneLanguageTool during site setup and migrations.
      [hannosch]

    - Updated setup code. Archetypes and all its dependencies are installed
      based on GenericSetup extension profiles now.
      [hannosch]

    - Add migration code to remove the PlonePAS PloneTool from the site and
      replace it with a standard PloneTool.
      [wichert]

    - Improve the test for GRUF presence; it also considered a PlonePAS
      monkeyed PAS as GRUF.
      [wichert]

    - Remove GRUF usage for local role handling in PloneTool
      [wichert]

    - Updated language dependend portal creation step. We set the default
      language of the portal, the allowed languages and if necessary the
      combined languages support option. If we get a territory code in the
      locale we also set the visible_ids setting to true for non-latin-scripts,
      for which we don't have a IURLNormalizer registered. This closes
      http://dev.plone.org/plone/ticket/5971.
      [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.CMFPlone
      [stefan]

    - Added missing migration step addPortletManagers, to add the new portlet
      manager adapters.
      [hannosch]

    - Fixed various bugs in the migration code. We need to register additional
      GenericSetup import steps manually or the componentregistry step is not
      available, which new products like CMFEditions depend on. When add-ons
      use this step we need to make sure they are allowed to run all the
      dependent steps, so we needed to make the plone-site step available for
      all extension profiles, by not requiring a flag file anymore. We also
      need to call the enableZope3Site and registerToolsAsUtilities migration
      steps as the first step in every possible version migration, as the
      migration code itself depends on these to be present. Otherwise 
      migrating from older versions would fail with ComponentLookupErrors.
      [hannosch]

    - Location is now a standard metadata field available for categorizing 
      content. This means that you can geotag images, display content with
      location data on a map, etc.
      [limi, nouri]

    - Extended the timeout on password resets from 1 day to 1 week by default.
      [limi]

    - Fix bug #6227 : Batch-workflowing objects would erroneously give them 
      the effective date of the portal object or their container. 
      [elvix]

    - Registered all standard CMF and Plone tools as local utilities and
      replaced most getToolByName calls with getUtility/queryUtility.
      [hannosch]

    - Registered the portal itself as a utility providing IPloneSiteRoot and
      as one providing CMF's ISiteRoot.
      [hannosch]

    - Replaced our local component registry with one from 
      five.localsitemanager. There is no migration path for existing Plone 3.0
      alpha sites, so make sure to throw them away and recreate new ones.
      Migration from Plone < 3.0 is of course supported.
      [hannosch]

    - Optimized the calendar_macros template. Trying to translate integers
      like years or hours wasn't very helpful.
      [hannosch]

    - Optimized code in the translation service tool for the calendar_macros
      use case, so we can get rid of the explicit call of the deprecated
      utranslate script.
      [hannosch]

    - Added new user/group settings control panel.
      [hannosch]

    - Moved version overview and server debug mode to the maintenance control
      panel. Added warning message about missing mail host or email from 
      adress to the main control panel view.
      [hannosch]

    - Added external_links_open_new_window to site properties which controls
      the behavior of mark_special_links.js.
      [hannosch]

    - Only show the user friendly types on the navigation control panel.
      [hannosch]

    - Excluded x-web-intelligenttext from the list of activated mimetypes.
      [hannosch]

    - Remove the folder user action, and re-point the author profile user
      action to point to the users dashboard instead.
      [wichert]

    - Add an object_provides index to the catalog. This indexes all
      interfaces provided by an object with their dotted names.
      [wichert]

    - Made it possible to look up the ExtensibleIndexableObjectWrapper using
      a multi-adapter on (context, portal). The wrapper now has an additional
      method update() which can update with workflow variables and the like.
      This allows a particular wrapper to be registered for a particular type
      of object, allowing more careful control over the indexing process.
      [optilude] 

    - Removed ids from portlet templates and turned into classes. This makes
      sure we do not get duplicate ids in our html when multiple instances of
      the same portlet type are created, while still allowing different
      styling of different portlet types
      [wichert]

    - Undeprecated the toLocalizedTime script. We are probably going to change
      the approach to be based on Zope3 locales in the next release, so it
      doesn't make sense to force everybody to change their products now.
      [hannosch]

    - Renamed Keywords to Categories, and included tags/labels/keywords 
      explanation in the help text. User research showed that people 
      understand this term better than the other alternatives.
      [limi]

    - Make it easy to include javascript for trackers like Google Analytics
      via a new control panel-manageable webstats.js file.
      [mrtopf]

    - Added an RSS portlet.
      [mrtopf]

    - Removed the unsupported Plone Tableless skin.
      [wichert]

    - Added class to the navtree: "navTreeItemInPath", which exists on all
      nodes that are in the current path.
      [limi]

    - Added Google/MSN/Yahoo site map support as described on
      http://www.sitemaps.org
      It is disabled by default and can be retrieved via
      http://<portalroot>/sitemap.xml.gz 
      [mrtopf]

    - Add migration code for the enable_sitemap site property
      [wichert]

    - Removed the Undo action (since we have versioning now) - it's too
      complex to be useful for normal users, and admin users have the ZMI.
      Also renamed "Join" action to "Register" and removed the dedicated
      link to the personal Preferences pending addition of the Dashboard link.
      We do not migrate existing sites to these values on purpose - if you
      want these changes, it's easy to fix them in portal_actions on your
      site.
      [limi]

    - Set text-transform property to none, it's not 2001 anymore, and the mix
      of uppercase and lowercase was hurting me. Also fixed font size for the
      unreadably small text in Firefox on certain platforms.
      [limi]

    - Install kupu via its GenericSetup profile.
      [wichert]

    - Renamed the statusmessage of type stop to error and the CSS class from
      portalStopMessage to portalErrorMessage accordingly.
      [hannosch]

    - Removed the forms.txt and rendering.txt functional test - there are 
      covered by  AddMoveAndDeleteDocument.txt, which is more sane. Also 
      update the latter to reflect a label change from plone.app.contentmenu.
      [optilude]

    - Deprectated viewThreadsAtBottom and getReplyReplies in favour of a
      viewlet for IBelowContent, defined in plone.app.form.
      [optilude]

    - Added all currently used translation domains as PTSTranslationDomains.
      This makes them available as Zope3 translation domain as well, so they
      can be used in pure Zope3 page templates for example.
      [hannosch, philiKON]

    - Changed plone_control_panel overview to use a three column layout.
      [hannosch]

    - Added migration steps for new security and html filter control panels.
      [hannosch]

    - Sanitized control panel names. Removed the redundant settings in titles.
      [hannosch]

    - Converted site and skins control panels to be formlib based. Moved the
      Google sitemap option to the site control panel. Fixed migration code
      for maintenance control panel. This closes
      http://dev.plone.org/plone/ticket/6193.
      [hannosch]

    - Hide the PAS folder and its plugins from the breadcrumbs.
      [wichert]

    - Fixed cropping of utf8 encoded text. cropText script 
      is marked as deprecated now.
      This fixes http://dev.plone.org/plone/ticket/6190.
      [naro]

    - Remove the default language setting from the site control panel. This
      setting doesn't work anyways right now.
      [hannosch]

    - Split the dashboard into four columns. If you have run an earlier
      version of the alpha, you need to re-run the portlets.xml importhandler
      or re-create your portal to be able to use the dashboard.
      [optilude]

    - Change the default time and date format. This closes
      http://dev.plone.org/plone/ticket/6172.
      [hannosch]

    - On site setup the mail host and email address are left empty.
      This references http://dev.plone.org/plone/ticket/5881.
      [hannosch]

    - Renamed "Smart Folder" to "Collection" since it better describes the new
      functionality, made other things more consistent: "Comments" everywhere
      instead of "Discussion", "Publishing Date" instead of "Effective Date",
      better help text on these.
      [limi]

    - Ignore a bunch of more required products in the install/uninstall
      control panel form.
      [hannosch]

    - Removed last occurrences of portal_status_messages and removed the
      inclusion code in global_statusmessage. This closes
      http://dev.plone.org/plone/ticket/6131.
      [hannosch]

    - Removed the old CMF types from the GenericSetup profiles. This closes
      http://dev.plone.org/plone/ticket/6156.
      [hannosch]

    - Removed the news_listing template that hasn't been in use since Plone
      2.0 (it wasn't working anyway). It was replaced by the summary view in
      Plone 2.1, and deprecated then, which means it should be safe to remove.
      [limi]

    - Fixed encoding problem when sending out registration emails
      [jvloothuis, ender]

    - Deprecated relaxed mode of the normalizeString methods in favour of
      direct usage of the normalizers in plone.i18n.
      [hannosch]

    - Merged plip174-reusable-i18n branch. Normalization logic and language
      handling are based on plone.i18n / plone.app.i18n now.
      [hannosch]

Plone 3.0-alpha2 - released February 13, 2007

    - Deprecated the isRightToLeft method on the ploneview in favour of the
      is_rtl method on the plone_portal_state view.
      [hannosch]

    - Added Google-specific extensions to the robots.txt file to deny it from
      indexing a gazillion sendo_forms. The standard doesnt allow for
      wildcards boot Google does.
      [elvix]

    - Added robots.txt file. This should remove some unwanted not-found-errors
      and give fresh Plone-admins something to customise for robots if they 
      want it.
      more info about robots.txt here: 
      http://www.robotstxt.org/wc/norobots.html
      [elvix]

    - Commented out the IE-specific styling of textarea scrollbars from 
      IEFixes.css. Plone uses standard scrollbars from 3.0 onwards, but if you
      want them back, they can easily be uncommented.
      [limi]

    - Added some classes to document_byline.pt for more flexibility when
      styling this template. This closes
      http://dev.plone.org/plone/ticket/5025
      [spliter]

    - Deprecated skin related methods of the Plone tool. The functionality is
      provided by the skins tool itself for some time now.
      [hannosch]

    - Updated the various mixed Unicode/UTF-8 support patches to be compatible
      with Zope 2.10.2, which is required now as a minimum Zope version.
      [hannosch]

    - Did some minor import locations cleanup. Deprecated i18n related methods
      in utils.py and importing IndexIterator from ploneview.py.
      [hannosch]

    - Added simply optimization to the getReplyReplies script, avoiding some
      calculations when there are no replies and removed the custom
      getDiscussionFor method from CMFPlone's DiscussionTool, as it wasn't
      needed anymore.
      [hannosch]

    - Fixed an unsafe usage of hasattr in computeRelatedItems with 
      base_hasattr.
      [hannosch]

    - Removed obsolete factory type information for the Plone folder classes.
      [hannosch]

    - Deprecated the getOrderedUserActions script. It was only used in the
      global_personalbar to enforce a certain logical order of the actions,
      but action categories support ordering themselves now, so the script was
      obsolete.
      [hannosch]

    - Deleted folder_localrole_form and its scripts, since this is now 
      provided in the @@sharing view. That felt good. Added an alias with
      a deprecation warning in plone.app.layout so that old links still work.
      The alias will be gone in 3.5.
      [optilude]

    - Moved accessibility elements from base.css to invisibles.css, since they
      should remain even if you do a total customization.
      [limi]

    - Removed Five from the core versions overview in the plone control panel.
      Five will probably evolve as a set of independent packages rather than
      one monolithic package so its version isn't of any particular interest
      anymore.
      [hannosch]

    - Added Reader and Editor local roles, and merged in support for the new
      sharing page, at the @@sharing view.
      [optilude]

    - Add support for OpenID authentication.
      [wichert]

    - Make it possible to use the plone.session PAS plugin. This provides
      a scalable method to use session authentication in Plone sites.
      [wichert]

    - Converted PlonePAS installation to be GenericSetup based and moved all
      user/group related setup functions there as well. Also removed explicit
      GroupUserFolder installation as it isn't needed anymore.
      [hannosch]

    - Added new SiteManagerCreatedEvent that is called right after the portal
      is enabled as a site. We can use this to call the setHooks and setSite
      functions which are mandatory during test runs, before any other
      GenericSetup import step tries to call any local component.
      [hannosch]

    - Decoupled some more of the GenericSetup import steps. The plone-site 
      step only creates the local component registry and enables the portal 
      object as a site manager. This is needed as steps using local components 
      depend on this step while not much else in the site may have been 
      configured yet. 
      The plone-content step adjusts the initial content and is run last as it
      depends on everything else in the portal having been already set up.
      [hannosch]

    - Added an alias view 'login' (aka '@@login') to let people use /login
      to get to login_form (it perform a redirect). This is also now a
      reserved id.
      [optilude]
 
    - Merged plone.app.contentrules, your friendly content rules engine
      [wayworn, optilude]
            
    - Moved deprecated zcml declarations to its own file deprecated.zcml in
      order to make it easy to spot those or turn them off.
      [hannosch]

    - Add a new interface INonInstallable for which you can register named
      utilites that provide a list of profiles that should not be available as
      installable during site creation. We exclude certain products that are
      installed anyways by Plone from the config screen this way.
      [hannosch]

    - Use the INonInstallable interface in CMFQuickInstallerTool to exclude
      some products from the list of installable products in the ZMI and
      install/uninstall control panel screen. Otherwise CMFDefault, CMFUid,
      etc. would show up in the list.
      [hannosch]

    - Added support for plone.app.redirector to the 404 template. This enables
      automatic redirects when an objet has been moved or renamed, and offers
      suggested search results on the 404 page otherwise.
      [optilude]

    - Merged changes necessary to support PLIP125 Link Integrity, mostly found
      in the plone.app.linkintegrity package.
      [witsch, optilude]

    - Removed the setup tab from the migration tool. It wasn't working anymore
      and the functionality can be found on the controlpanel tool anyways.
      [hannosch]

    - Fixed a bug in the require_login script calling a non-existent method on
      the migration tool.
      [hannosch]

    - The controlpanel and migration tools are registered as local utilities
      now as well.
      [hannosch]

    - Merged in kss.
      [ree]

    - Finished multilingual front-page support code. The front page which is
      created at portal creation time is now localized to the browser language
      used while creating the portal, as long as there is a complete 
      translation of the page.
      [hannosch]

    - Merged generalised next/previous navigation into plone.app.layout
      (interfaces, viewlet), CMFPlone (rel links in header.pt, tests) and
      ATContentTypes (adapter for IATFolder).
      [henri, pelle_, trollfot, optilude]

    - The interface and translation service tools are registered as local
      utilities now.
      [hannosch]

    - Exposed the member preference panels in the prefs portlet. This closes
      http://dev.plone.org/plone/ticket/3083.
      [hannosch]

    - Added javascript and css to switch between schemas in edit page.
      [fschulze]

    - Removed properties tab for all ATCT types.
      [fschulze]

    - Moved Products.CMFPlone.browser.contentmenu to plone.app.contentmenu.
      Note that the tests remain in CMFPlone for now (so that they get run
      more often, and to avoid having to replicate dummies etc in the new
      location).
      [optilude]

    - Moved date/time formatting related messages to it's own domain called
      plonelocales. Message files in this domain are translated directly by 
      the Zope 3 translations service, which results in a major speed increase 
      for date/time formatting.
      [hannosch]

    - Moved new controlpanels to its own package (plone.app.controlpanel).
      [hannosch]

    - Moved various interfaces and utilities - IDefaultPage, INvigationRoot,
      INavtreeStrategy, INavigationQueryBuilder and the buildFolderTree()
      and getNavigationRoot() helper functions - to plone.app.layout. This
      reduces the dumping-ground feeling of CMFPlone.browser, leaving it
      free to focus on actual views that implement CMFPlone look-and-feel and
      policy, and provide a saner dependency/import location for third party
      components needing these tools.
      [optilude]

    - Gave IContentIcon a html_tag() helper method to make rendering the
      icon one line (<img tal:replace="structure item_icon/html_tag" />) 
      rather than ten or so. Also made the properties properties rather than
      functions.
      [optilude]

    - Removed outdated version of listFilteredActionsFor from the actions
      tool.
      [hannosch]

    - Deprecated cache_decorator in browser/ploneview.py (formerly plone.py),
      in favour of plone.memoize's instance.memoize decorator. Replaced all
      uses of cache_decorator in CMFPlone with plone.memoize.
      [optilude]

    - Renamed Products.CMFPlone.browser.plone (plone.py) to 
      Products.CMFPlone.browser.ploneview (ploneview.py). The naming
      was causing conflicts with the 'plone' namespace package. A
      module alias remains during the deprecation period (i.e.
      it will be removed in Plone 4.0).
      [optilude]

    - Use img tags instead of css classes for icons (PLIP 178).
      [fschulze]

    - Added missing ATRelativePathCriterion to the default profile.
      [stefan]

    - Some minor code modernizations in the FactoryTool.
      [hannosch]

    - Added formlib based mail and search control panels.
      [hannosch]

    - Removed the view alias of index.html for all standard content types. 
      This makes it possible to create and upload files called index.html to 
      the site, which is quite common when batch importing old sites into the 
      site.
      As someone might rely on the former behaviour, we do not migrate
      any existing type information. This closes
      http://dev.plone.org/plone/ticket/4837.
      [hannosch]

Plone 3.0-alpha1 - released November 24, 2006

    - Update installation instructions for the new Plone release.
      [wichert]

    - Added calendar control panel based on formlib. This is related to
      http://dev.plone.org/plone/ticket/5271.
      [hannosch]

    - Moved global_contentmenu to plone_deprecated
      [optilude]

    - Injected Plone 2.1.4 into the migration chain.
      [stefan]

    - Removed bogus scripts from workflow actions, and introduced some BBB
      code to ensure that if people are using those scripts and they don't
      exist, the old fallback (content_status_modify) is still used.
      [optilude]

    - Plone 3.5 will introduce the role "Power User" to make it possible to
      hide advanced functionality from casual users. It you have any
      deployments that use this role name, now would be a good time to rename
      that role and stop using it in product code.

    - Update migrations for portlets, and kick the meta.zcml in 
      plone.app.portlets.
      [optilude]

    - First day of week in the calendar is Monday now in Plone by default.
      This closes http://dev.plone.org/plone/ticket/5882.
      [hannosch]

    - Added option to choose different base profile while creating a new Plone
      site. This closes http://dev.plone.org/plone/ticket/5890.
      [hannosch]

    - Deal with CMFDefault renaming _checkEmail to checkEmailAddress.
      [wichert]

    - Removed unused scripts from the extensions folder.
      [hannosch]

    - Added some notes about CMFEditions and CMFDiffTool installation.
      [hannosch]

    - Added first part of multilingual front-page support code.
      [hannosch]

    - livesearch_reply.py wrote quotes (") in the title-attribute. misformed 
      XML was generated. replaced quotes by &quot;. 
      [jensens]

    - Merged plip142-componentised-content-menu
      http://plone.org/products/plone/roadmap/142.
      [optilude, hannosch]

    - Merged plip148-cmf21 bundle. This implements
      http://plone.org/products/plone/roadmap/148 and
      http://plone.org/products/plone/roadmap/161.
      [hannosch]

    - Merged PLIP 8 versioning bundle 
      http://plone.org/products/plone/roadmap/8.
      [wichert]

    - Converted some tests to inline doctests and some others to real unit 
      tests as opposed to integration tests.
      [hannosch]
      
    - Changed the logo template 'global_logo' to not use the image replacement
      approach, but use a straightforward link/image approach instead.
      Sometimes Plone tries to be too smart for its own good. ;)
      This also fixes the horizontal scrollbar problem in IE6 for RTL layouts.
      [limi]

    - Silenced the utf-8 / Unicode DeprecationWarning. We should only emit
      warnings once we fixed this in all standard cases ourselves.
      [hannosch]

    - Added migration for the css files added by limi in the previous entry.
      [jladage]

    - Split up the CSS into a couple of new modules to ease customization.
      [limi]

    - Added an optional keyword argument to the date_components_support script
      that allows to specify the minute steps. It still defaults to five.
      This closes http://dev.plone.org/plone/ticket/5178.
      [hannosch]

    - Deprecated some more unused skins scripts: extract_date_components,
      getPersonalFolderFor, navigationCurrent, navigationLocalRelated and
      rejectAnonymous.
      [hannosch]

    - Deprecated the never used nor functional prefs_workflow* control panels,
      we are better of with a fresh start on these anyways.
      [hannosch]

    - Do not set initial descriptions for the member folders, as these often
      ended up in a translation the user did not want or understand. We only
      use the simply username as a title now, which is language independent.
      This fixes http://dev.plone.org/plone/ticket/4214.
      [hannosch]

    - Updated the text on the member search form to be more user friendly.
      This closes http://dev.plone.org/plone/ticket/4675.
      [hannosch]

    - Deprecated our unmaintainable 'how-to enable cookie' instructions.
      This closes http://dev.plone.org/plone/ticket/4602.
      [hannosch]

    - Added error tolerant version of FasterStringIO to unicodeFallbackPatch.
      This is monkey patched into the Zope3 tal and pagetemplate modules and
      replaces the monkey patch found in PlacelessTranslationService so far.
      [ree, hannosch]

    - Deprecated PloneContent. Use (marker) interfaces instead to get a way to
      check for a functionality that is common to some types.
      [hannosch]

    - Deprecated the CMFPlone implementation of LargePloneFolder. Use
      ATBTreeFolder from ATContentTypes instead.
      [hannosch]

    - Added unicodeFallbackPatch that allows to use utf-8 encoded strings to 
      be used inside the Zope3 TAL engine.
      [ree, hannosch]

    - Fixed the 'Unauthorized: You are not allowed to access 'Creator' in this
      context' error that was raised in the testCookieAuth tests.
      [hannosch]

    - Using new 'visualIcon' css class to allow much smaller generated.css
      and RTL.css. When new content types are installed, then generated.css
      will grow much less then before and RTL.css will not grow at all
      anymore. The footprint of action icons is also smaller now.
      [fschulze]

    - The portal object is set up as a Zope3 site with a local site manager.
      [hannosch]

    - Removed CMFPlone.MemberData. This class is never used, and the future
      is with PAS-based objects instead of membership/memberdata tools.
      [wichert]

    - Fixed deprecation warnings for the ZCML content directive.
      [hannosch]

    - Removed deprecated createTopLevelTabs from PloneTool and utils. Use the
      topLevelTabs method of the INavigationTabs view instead.
      [hannosch]

    - Removed deprecated CustomizationPolicy and old site creation machinery.
      [hannosch]

    - Removed deprecated CSS styles from deprecated.css.
      [hannosch]

    - Removed deprecated scripts from the plone_deprecated skins layer.
      [hannosch]

    - Removed lots of deprecated values from the PloneView.
      [hannosch]

    - Removed deprecated FolderWorkflow, PloneWorkflow and PloneUtilities
      classes. Removed aliases for base_hasattr and transaction_note from
      CMFPlone. Import these from CMFPlone.utils. Removed security 
      declarations for zLOG levels. zLOG usage was replaced by Python's 
      logging module.
      [hannosch]

    - Removed five:traversable from configure.zcml as it is not needed anymore
      for Zope 2.10.
      [hannosch]

    - Removed bbb code for MessageIDFactory, queryMultiAdapter, transaction 
      and CatalogTool._initIndexes.
      [hannosch]

Plone 2.5.4 - Unreleased

    - No longer call invokeFactory twice when creating objects in
      portal_factory. Fixes http://dev.plone.org/plone/ticket/6595
      Nice catch nouri :-)
      [alecm]

Plone 2.5.3 - Final - released May 16, 2007

    - Further optimized the migrations from older Plone versions. We reindex
      the whole catalog once and only once, independent of the Plone version
      we start migrating from.
      [hannosch]

    - Made migration twice as fast, it was recataloging unnecessarily.
      [hazmat][limi]

    _ Add a new IHideFromBreadcrumbs interface. Items marked with this
      interface will not be shown in the breadcrumb trail. Mark the portal
      factory with this interface so it no longer polutes the breadcrumbs.
      [wichert]

    - Made CatalogTool.ExtensibleIndexableObjectWrapper a subclass of the
      CMFCore.CatalogTool.IndexableObjectWrapper class to ensure Plone
      doesn't miss on improvements made there. EIOW instances now proxy
      Zope3 interface declarations of the wrapped object.

Plone 2.5.2 - Orb - released January 16, 2007

    - Fix issue with drag and drop caused by changing of css ids in
      folder_contents.
      [alecm]

    - Added some classes to document_byline.pt for more flexibility when styling
      this template. This closes
      http://dev.plone.org/plone/ticket/5025
      [spliter]

Plone 2.5.2 - Release Candidate - released January 3, 2007

    - In livesearch results, don't append ... at the end, when the length of
      the title or description is exactly the limit. This closes
      http://dev.plone.org/plone/ticket/5989.
      [hannosch]

    - Do not display the right column on prefs_main_template anymore, as it
      was unneeded and could cause design problems. This closes
      http://dev.plone.org/plone/ticket/5803.
      [hannosch]

    - Moved the global_cache_settings call in main_template before the call to
      header.pt as otherwise the encoding in the header would not be defined
      and fall back to ZPublishers default_encoding. This closes
      http://dev.plone.org/plone/ticket/6013
      [hannosch]

    - Optimized the check_id.py uniqueness check to not use contentIds,
      fixes http://dev.plone.org/plone/ticket/5976
      [alecm]

    - Add search term highlighting to livesearch result links.
      [alecm]

    - links in Contents table behave as they should now - show the "pointer" 
      hand when hovering the mouse over them. It was broken due to ajax 
      sorting feature somehow
      [spliter]

    - event_view.pt has a better position for details table now, letting 
      byLine and Description info to be content-wide and not to be shifted to 
      the left, bacuse of Details table
      [spliter]

    - main table for columns (#portal-columns) should not have paddings or 
      spacings - they can confuse when styling. Fixed with CSS for the table 
      cells, thanks to deo ;)
      [spliter]

    - Make the parameters for member image scaling more easily configurable
      by putting them in a mutable data structure.  Eventually, we should
      provide a TTW configuration for this.
      [alecm]

    - Make hasIndexHtml script more efficient for BTreeFolders.  Fixes
      http://dev.plone.org/plone/ticket/5769
      [alecm]

    - Add event support to OrderedContainer so that moveObjectToPosition
      doesn't break on Zope 2.9.  Should fix
      http://dev.plone.org/plone/ticket/5961
      [alecm]

    - Make css ids for rows in folder_contents sane.  Fixes
      http://dev.plone.org/plone/ticket/5940
      [alecm]

    - Make various icons in folder_contents explicitly render alt tags, 
      because the rendering of those images magically picks up items named 
      'alt' in the context, which breaks the page. 
      Fixes  http://dev.plone.org/plone/ticket/5934
      [alecm]

    - Don't assume portal_catalog when reindexing during ownership change.
      Fixes http://dev.plone.org/plone/ticket/5063
      [alecm]

    - Ensure rss_template max items is an integer.  Should fix
      http://dev.plone.org/plone/ticket/5553
      [alecm]

    - Applied patch from aaronv to add includeTop setting to navigation
      prefs form.  Fixes http://dev.plone.org/plone/ticket/5519
      [alecm]

    - Made standard_error_message more tolerant of security issues and
      acquisition problems.  Fixes http://dev.plone.org/plone/ticket/5955
      [alecm]

    - Fixed issue with search for members of groups, using patch from
      derek_richardson.  Fixes http://dev.plone.org/plone/ticket/5902
      [alecm]

    - Use some url unquoting to ensure that the rename form redirects to the
      correct url after rename, even if quoted characters are involved.  Fixes
      http://dev.plone.org/plone/ticket/5843
      [alecm]

    - Use current_page_url instead of ACTUAL_URL for accessibility anchors.
      Fixes http://dev.plone.org/plone/ticket/5777
      [alecm]

    - Made the error displayed on SMTPRecipientsRefused during password reset
      not display the email address, as this is an undesirable privacy 
      leakage. Fixes http://dev.plone.org/plone/ticket/5962
      [alecm]

    - Applied the Hotfix for CVE-2006-4249, which also fixes
      http://dev.plone.org/plone/ticket/5906
      [wiggy, alecm]

    - Non-ascii characters in actions used in the portal tabs provoked an
      UnicodeDecodeError. This closes http://dev.plone.org/plone/ticket/5791.
      [hannosch]

    - Fixed another UnicodeDecodeError in livesearch_reply.
      This fixed http://dev.plone.org/plone/ticket/5828.
      [hannosch]

    - Added a general safe_unicode method to utils.py, which can be used to
      convert any Unicode, 'utf-8' or 'ascii' encoded string to Unicode.
      [hannosch]

    - Added button tag styling that conforms to the standard input button 
      look.
      [limi]

    - Added optgroup styling, since the default in Firefox looks like crap.
      [limi]

    - Fixed the Live search error: 0x80040111 (NS_ERROR_NOT_AVAILABLE). This
      closes http://dev.plone.org/plone/ticket/4519.
      [deo]

    - Injected Plone 2.1.4 into the migration chain.
      [stefan]

    - Lots of minor whitespace corrections, found by using the new i18ndude 
      3.0 which is based on zope.tal.talgettext for extraction of translation 
      files.
      [hannosch]

    - Fixed a minor spelling inconsistency in folder_localrole_form.
      [hannosch]

    - Fixed flawed lookup of email_from_address in send_feedback scripts. This
      closes http://dev.plone.org/plone/ticket/5839.
      [hannosch]

    - Added option to choose different base profile while creating a new Plone
      site. This closes http://dev.plone.org/plone/ticket/5890.
      [hannosch]

    - Removed redundant getToolByName call in send_feedback_site. This closes
      http://dev.plone.org/plone/ticket/5863.
      [hannosch]

    - Fixed the calendar portlet to display correctly in Internet Explorer 7.
      [limi]

    - Updated links in the automatically generated front-page.
      [hannosch]

    - Added a few macro hooks in personalize_form and prefs_user_details to 
      allow at least some form of easy customization without the need to 
      customize the entire forms. Now it looks for a file 
      'additional_memberdata' in your skin and uses the macros in there to 
      inject them into these forms.
      [ender]

    - livesearch_reply.py mixed up utf-8-encoded strings and unicode strings
      leading to unpredictable UnicodeDecodeErrors. This fixes
      http://dev.plone.org/plone/ticket/5828.
      [ajung]

    - livesearch_reply.py wrote quotes (") in the title-attribute. misformed
      XML was generated. replaced quotes by &quot;.
      [jensens]

Plone 2.5.1 - released September 28, 2006

    - The content tab selection logic now checks the request in addition
      to template_id when trying to determine which tab should be
      selected.
      [rocky]

    - Noted the new hard dependency on ElementTree that was introduced in the
      Marshall product as of Plone 2.5.1.
      [hannosch]

    - The plone_various and plone-final steps now honour
      GenericSetup conventions and only run when a config file is present for
      them. ExtensionProfiles no longer need to override these steps. Fixes
      http://dev.plone.org/plone/ticket/5823
      [mj]

Plone 2.5.1-rc1 - released September 11, 2006

    - Fixed an UnicodeDecodeError in enableSyndication script. This closes
      http://dev.plone.org/plone/ticket/5750.
      [hannosch]

    - Adjusted button CSS to have overflow: visible because Internet Explorer
      makes them very wide in foreign languages like Finnish. This fixes
      http://dev.plone.org/plone/ticket/5461 - thanks to Mikko.
      [limi]

    - Made login_form and default_error_message not invoke the portlets, since
      they are irrelevant and expensive in those forms. Also made the error
      template a valid HTML document.
      [limi]

    - Added description in the dict in WorkflowTool's getTransitionsFor.
      [ender]

    - Corrected the log_exc method in log.py to actually log the exception, as
      it was done before replacing zLOG with Python's logging module.
      [hannosch]

    - Make the object_delete and folder_delete methods require non-GET
      requests. This is a bit of a band-aid and it is likely we will want
      to do the same for other object actions which could be easily triggered
      by a crawler (a paste for instance, which may have been preceeded by a
      cut or copy). Related to http://dev.plone.org/plone/ticket/4886
      [alecm] [limi]

    - Make the syntool methods for enabling and disabling syndication check
      for the Manager properties permission on the object.
      [alecm]

    - Making text/* not render inline for security reasons (Internet Explorer
      renders these blindly, no matter that they are not text/html), and
      fixing inline rendering of Office documents and PDFs in the process.
      [limi]

    - Fix member portrait handling by automatically scaling all incoming
      images using PIL. This will throw an IOError on any invalid image and
      also save some bandwidth and space in the zodb.
      [alecm]

    - Added method and management template to membership tool to cleanup
      members with bad images.
      [alecm]

    - Made 'setuphandlers.PloneGenerator.setupPortalContent' more
      robust by checking if the Members folder is really there.
      [nouri]

    - Copied '_getSecurity' from Archetypes.utils to avoid a dependency.
      Plone should not import from Archetypes to minimize coupling.
      [stefan]

    - Added a Unicode and UTF-8 aware case normalizer to the plone_lexicon
      pipeline. Goes with the fix for http://dev.plone.org/plone/ticket/5231
      [stefan]

    - Circumvented a UnicodeDecodeError on smart folders editing view. This
      closes http://dev.plone.org/plone/ticket/5746.
      [hannosch]

    - Added new css class visualIcon. This will be used to make generated.css
      much smaller in Plone 3.0 and is introduced now, so people can see how
      this will affect templates. Only templates which use css to add icons
      for content types are affected.
      [fschulze]

    - DiscussionTool.cookReply needs to be available to anyone who can comment
      on an item, otherwise the comment will not be cooked and we get HTML
      injection.  This fixes http://dev.plone.org/plone/ticket/5718
      [alecm]

    - Made the code in utranslate more error resilient and added tests for it.
      [rafrombrc] [hannosch]

    - Enhanced accessibility of adjacent links in main_template. This fixes
      http://dev.plone.org/plone/ticket/5210.
      [hannosch]

    - Removed some unnecessary hyphens from date_components_support. This
      fixes http://dev.plone.org/plone/ticket/5711.
      [hannosch]

    - Added Five and CMF version to the control panel version overview. This
      closes http://dev.plone.org/plone/ticket/5345.
      [hannosch]

    - Made getInheritedLocalRoles in PloneTool more error resilient. This
      closes http://dev.plone.org/plone/ticket/5542.
      [hannosch]

    - Added some workaround code for the general misbehaving utranslate and
      uLocalizedTime methods. They should return Unicode now again, but right
      now they only work for the single supported site encoding of utf-8.
      This fixes http://dev.plone.org/plone/ticket/5609.
      [hannosch]

    - Synced table-less and table-based main_template again. This fixes
      http://dev.plone.org/plone/ticket/5696.
      [hannosch]

    - Fixed incorrect status message after bad login attempt. This closes
      http://dev.plone.org/plone/ticket/5695.
      [hannosch]

    - According to GenericSetup.interfaces.IProfileRegistry: when an extension
      profile is registered for 'None', it should be available in any type of
      site. Fixed CMFPlone.factory to include such profiles.
      [stefan]

    - Made PloneTool.browserDefault check if the default page it is trying to
      render is the folder itself, and prevent it from doing so (which would
      cause an endless loop). Fixes http://dev.plone.org/plone/ticket/5704.
      [alecm]

    - Applied patch from paregorius to add ids to all visualClear divs. Fixes
      http://dev.plone.org/plone/ticket/4145.
      [paregorius] [alecm]

    - Applied patch from paregorius to make the LiveSearch div vanish in IE
      as needed. Fixes http://dev.plone.org/plone/ticket/5705.
      [paregorius] [alecm]

    - Made PloneTool.browserDefault check for a result of None from getLayout
      and raise a sensible error.  Generally this means that the FTI is 
      missing or otherwise incorrect. 
      Fixes http://dev.plone.org/plone/ticket/5676.
      [alecm]

    - Added migration to reindex the catalog which is necessary for the 
      changes made for http://dev.plone.org/plone/ticket/5569 and
      http://dev.plone.org/plone/ticket/5231.
      [alecm]

    - Made is_folderish and isStructuralFolder respect the z2
      INonStructuralFolder interface as well as the z3 one. Fixes
      http://dev.plone.org/plone/ticket/5592 and
      http://dev.plone.org/plone/ticket/5569.
      [alecm]

    - Changed all of the action conditional expressions checking for
      the existence of 'member' to explicitly use 'member is None'
      or 'member is not None' rather than just using truth or falsehood
      of the member object.
      [rafrombrc]

    - Added a workaround for erroneous indexing behavior for words containing
      non-ascii characters. These were treated as word breaks so far. The code
      works for a site encoding of 'utf-8' now as well as proper unicode 
      usage. This closes http://dev.plone.org/plone/ticket/5231.
      [hannosch]

    - Added migration to remove plone.css from portal_css. Fixes
      http://dev.plone.org/plone/ticket/5614.
      [alecm]

    - Fixed wrong usage of label tag. Added one for attribute that was 
      missing. This closes http://dev.plone.org/plone/ticket/5539.
      [ender]

    - Added test that ensures the language is getting set in header.
      This is related to http://dev.plone.org/plone/ticket/5444 and
      http://dev.plone.org/plone/ticket/4770.
      [hannosch]

    - Fixed folder_summary_view ignored allowAnonymousViewAbout.
      http://dev.plone.org/plone/ticket/5678
      [ender]

    - Fixed language setting in the html page header. This closes
      http://dev.plone.org/plone/ticket/5444.
      [hannosch]

    - Added a few tests for the calendar view.
      [hannosch]

    - Fixed the problem where you cannot select items in folder_contents in
      Safari. All non-draggable elements must have the 'notDraggable' CSS
      class now. This closes http://dev.plone.org/plone/ticket/5586.
      [deo]

    - Fixed handling of login_time and last_login member properties:
      last_login_time is now the time of the previous login and login_time is
      the time of the current login. This fixes
      http://dev.plone.org/plone/ticket/5471.
      [wichert]

    - Ignored the ' character when normalizing strings. This implements part
      of http://dev.plone.org/plone/ticket/5664.
      [wichert]

    - Improved test for autogenerated ids to handle content types with an
      underscore in their id. This fixes
      http://dev.plone.org/plone/ticket/5560.
      [wichert]

    - Using 'indexObject' instead of 'reindexObject' for
      CatalogTool.clearFindAndRebuild works just as well, but does not
      touch every object and cause a monster transaction to be committed.
      [stefan]

    - The list of addable types in a folder is now ordered according to the
      translated title and not the English title anymore. This closes
      http://dev.plone.org/plone/ticket/1760.
      [hannosch]

    - Add GenericSetup import and export steps for the portal factory.
      [wichert]

    - Fixed a username vs userid confusion in the member search page and
      bring the implementation inline with the help text. This fixes
      http://dev.plone.org/plone/ticket/5657.
      [wichert]

    - Small spelling corrections in reconfig_form. This closes
      http://dev.plone.org/plone/ticket/5552.
      [hannosch]

    - Event time and location aren't considered byline information in
      folder_listing anymore and thus visible if allowAnonymousViewAbout is
      disabled. This closes http://dev.plone.org/plone/ticket/5573.
      [hannosch]

    - Corrected RSS search template to show correct numbers. This closes
      http://dev.plone.org/plone/ticket/5211.
      [hannosch]

    - Modified login logic to work for sites which do not use the cookie
      plugin or still use GRUF.
      [wichert]

    - Added support for the hCalendar/hCard standard for events. This closes
      http://dev.plone.org/plone/ticket/4102. Thanks, Nate.
      [hannosch]

    - Changed setupSite.py to import 'Zope2' instead of 'Zope'. Could
      cause confusion on case-insensitive filesystems with 'zope'.
      [sidnei]

    - Fixed bug in folder_contents causing all links to get /folder_contents
      appended as well.
      [optilude]

    - Changed all action conditions that were simply "member" or
      "not:member" to be "python:member" or "python:not member" to
      prevent member object from being called, leading to infinite
      recursion in certain cases.
      [rafrombrc]

    - Fixed 'reindexContentObject' in CatalogTool.py so that it doesn't
      set the modification date to now due to some AT "convenience".
      [nouri]

    - Cleaned up the localrole form to support searching for either a users
      full name or login name; both at once does not work.
      [wichert]

Plone 2.5 - released June 16, 2006

    - Officially deprecated portlet_related which was slated for removal since
      Plone 2.1.
      [hannosch]

    - Fixed invalid URL for events/previous link in events portlet. This
      closes http://dev.plone.org/plone/ticket/5582.
      [hannosch]

    - Added missing i18n magic to the dummy workflow transition labeled
      'No change' in content_status_history.cpt.
      [hannosch]

    - Fix rename from the action menu when using virtual hosting. Thanks to
      Daniel Nouri, Maurits van Rees, Alec Mitchell and Stefan Holek for
      pointers and code.
      [optilude]

    - Small fix to avoid an AttributeError in @@plone when viewing objects
      without isPrincipiaFolderish, in general uses of aq_explicit should be
      conditional.
      [alecm]

    Release candidate 3 - released June 13, 2006

    - Added missing nocall: for toLocalizedTime in mail_password_template.pt.
      Fixes http://dev.plone.org/plone/ticket/5568
      [alecm]

    - Added deprecation warnings for the old site creation machinery.
      [hannosch]

    - Fixed last deprecated occurrences of portal_object. Use portal instead.
      [hannosch]

    Release Candidate 2 - released June 8, 2006

    - Fixed issue with encoding of translated ui strings in javascript.
      [ree, nouri]

    Release Candidate 1 - released June 3, 2006

    - Deleting objects in the portal root now requires the user to have the
      'Delete objects' permission on both the portal and the objects to be
      deleted.  This makes the rules for object deletion consistent between
      the portal and all other folderish objects in the portal (at least those
      based on BasePloneFolder or AT's BaseFolder). This fixes
      http://dev.plone.org/plone/ticket/2925
      [alecm]

    - Don't propose local workflow policy configuration iw we aren't in a
      folderish type. We don't allow it on plone root too.
      [encolpe]

    - Finish worklists implementation with workflow id and complete guard
      filtering.
      [encolpe]

    - Polished HTML in livesearch_reply.py. It generated <LI> element
      without the <UL> when there are no livesearch results.
      [spliter]

    - Added missing 'Apply' button in group preferences again.
      This closes http://dev.plone.org/plone/ticket/5544.
      [hannosch]

    - Added a few functional tests using 'zope.testbrowser', see
      'AddMoveAndDeleteDocument.txt' and 'LoginAndLogout.txt'.  These
      should eventually replace the 'rendering.txt' and 'forms.txt'
      tests.

      All *.txt files in the tests/ directory are now picked up by
      'test_functional.py'.  I'm open to change here.

      Note that these tests are only run if you have Five >= 1.4
      [nouri]

    - Now that five:traversable handles multiple inheritance better, we can
      just make some common base classes traversable. Fixes issues with
      CompositePack.
      [alecm]

    - Fix several wrong usages of the 'label' tag.
      [nouri]

    - Added little spamProtect.py enhancement, to allow overwriting of the 
      name that should be shown. This closes
      http://dev.plone.org/plone/ticket/4868.
      [hannosch]

    - Use sort_limit in the search for portlet_recent. Fixes
      http://dev.plone.org/plone/ticket/5520
      [alecm]

    - Expose allowAnonymousViewAbout and allowRolesToAddKeywords in the
      site configuration configlet. Fixes 
      http://dev.plone.org/plone/ticket/5275
      [wichert]

    - Move the 'mail password' text and link on the login form so the tab
      order is more sane. Fixes http://dev.plone.org/plone/ticket/5516
      [wichert]

    - Rename 'large site' option to 'Many users/groups', which covers its
      meaning properly. If more similar options are added later we can group
      those in a new 'large site' option.
      fixes http://dev.plone.org/plone/ticket/5451
      [wichert]

    - When changing ownership of an object the new owner is identified by a
      userid, not the username. Adjust the implementation accordingly. This
      fixes http://dev.plone.org/plone/ticket/5535
      [wichert]

    - Fixed spelling error in livesearch. This closes
      http://dev.plone.org/plone/ticket/5425
      [hannosch]

    - Added workarounds so the rounded corners for portlets work in Internet
      Explorer too.
      [limi] [spliter]

    - Moved column padding to public.css to make sure it doesn't stick around
      when doing customizations of the site theme. It used to be in 
      columns.css.
      [limi]

    - Fixed private attribute access in PloneBaseTool createExprContext to use
      the API. This way it will also work with the Zope3 TAL engine.
      [hannosch]

    Beta 2 - released May 17, 2006

    - Added 'style_slot' to main_template for compatibility with newer CMF
      versions, and Five applications.
      [siebo]

    - Updated the GenericSetup profile format to CMF1.6-style. No 
      configuration changes were made, only format changes.
      [hannosch]

    - Various small i18n markup fixes. Updated folder_edit_form to conform to
      the same style as the Archetypes based edit forms, as it is still used
      for the Plone site object.
      [hannosch]

    - Added smart folder sub-topic listing to all available smart folder view
      templates. Fixes http://dev.plone.org/plone/ticket/5349.
      [alecm]

    - Added link to error reference on plone.org to error log form.
      Fixes http://dev.plone.org/plone/ticket/5478.
      [brcwhit]

    - Fixed showEditableBorder.py to check the following permission
      before checking whether a user is anonymous: Modify portal
      content, Add portal content, Review portal content.
      This closes http://dev.plone.org/plone/ticket/5117.
      [brcwhit]

    - Fixed livesearch issues.
      This closes http://dev.plone.org/plone/ticket/5204 .
      [ree]

    - Set access for all plone control panel forms to View =
      0:Manager. Closes http://dev.plone.org/plone/ticket/5434.
      [brcwhit]

    - Fixed extra space in changeSiteActions function in some migrations.
      This closes http://dev.plone.org/plone/ticket/5161.
      [hannosch]

    - Fixed the float bug on Events' view page
      This closes http://dev.plone.org/plone/ticket/5226
      [spliter]

    - Fixed bug in login_success. If you did not came_from somewhere, it would
      still offer you to go there. Changed this to portal_url instead.
      This closes http://dev.plone.org/plone/ticket/5496.
      [hannosch]

    - Added migrations to get rid of deprecation warnings due to actions which
      still use the old scripts.  Gave @@plone.isRightToLeft a sane default
      value.  Made the quoting conventions used in the XML profiles a bit more
      consistent.
      [alecm]

    - Simplified action url/condition expressions by using @@plone view
      methods.  There are now no more URL expressions that use 'python:'
      expressions.
      [alecm]

    - Readd folder_edit_form which is still used to edit the site root.
      This closes http://dev.plone.org/plone/ticket/5430.
      [hannosch]

    - Fixed some i18n markup problems revealed by the Zope 2.10 ZChecker 
      tests.
      [hannosch]

    - Moved css rules for the photo album view inside Plone's public.css,
      instead of having them inline in the template. This way they can be
      overridden. This closes http://dev.plone.org/plone/ticket/4765.
      [hannosch]

    - Repaired the portal logo appearance visual bug in IE 5, 5.5.
      This closes http://dev.plone.org/plone/ticket/5228.
      [wald]

    - Corrected the portlet_calendar view for tableless layout for Firefox.
      This closes http://dev.plone.org/plone/ticket/5467.
      [wald]

    - When setting some background to the top, Live Search did not look
      properly. Moreover in IE it had a bad visual behavior. Changed the 
      visual representation of the Live Search to repair the improper look.
      This closes http://dev.plone.org/plone/ticket/4313 and
      http.://dev.plone.org/plone/ticket/5005.
      [wald]

    - contentActions drop down menus were falling below the content area text
      in IE. This closes http://dev.plone.org/plone/ticket/4949,
      http://dev.plone.org/plone/ticket/4960 and
      http://dev.plone.org/plone/ticket/4961.
      [wald]

    - Updated tableless main_template.pt to get it in sync with the tablebased
      main_template.pt. This closes http://dev.plone.org/plone/ticket/5056.
      [hannosch]

    - A confirmation page is now displayed upon successful submission of the
      contact-info form. This fixes http://dev.plone.org/plone/ticket/5301.
      [rocky]

    - Added missing i18n translation in live search for 'Advanced search' and
      'Show all'. This closes http://dev.plone.org/plone/ticket/5425.
      [hannosch]

    - Fixed incorrect coloring of workflow states in content menu in some 
      cases, due to missing normalizeString call.
      This fixes http://dev.plone.org/plone/ticket/5078.
      [hannosch]

    - Fixed typo in image_view_fullscreen.pt.
      This closes http://dev.plone.org/plone/ticket/5469.
      [hannosch]

    - Fixed trivial error in validate_emailaddr.
      This closes http://dev.plone.org/plone/ticket/5249.
      [hannosch]

    - External editor link showed on temporary content.
      This closes http://dev.plone.org/plone/ticket/5250.
      [hannosch]

    - Calendar showed arrow when it's not clickable.
      This closes http://dev.plone.org/plone/ticket/5223.
      [hannosch]

    - Links in calendar portlet showed only "published" items, rather than all
      states set by calendar tool.
      This closes http://dev.plone.org/plone/ticket/5077.
      [hannosch]

    - OpenDocument files are no longer shown as garbage text. This fixes
      http://dev.plone.org/plone/ticket/5504
      [hannosch]

    - Readd a couple prematurely deleted scripts. Fixes #5482.
      [alecm]

    - Fixes #5487.  Changed 'orig_template' query value from context's
      URL to HTTP_REFERER in 'object_rename' so that we can really
      redirect to the original view and not only the default view in
      'folder_rename'.
      http://dev.plone.org/plone/ticket/5487
      [maurits, nouri]

    - Turn I(Selectable)ConstrainTypes and I(Selectable)Browser default into
      Zope 3 interface with reverse bridges. Depends on changes to
      ATContentTypes trunk and CMFDynamicViewFTI trunk as well!
      [optilude]

    - Various small fixes for support of future CMF versions.
      [hannosch]

    - Incorporate some fixes for Zope 2.10 support. Note that 2.10 is not
      officially supported for Plone 2.5.
      [hannosch]

    - Deprecate CatalogTool._initIndexes
      [wichert]

    - Add a category parameter to createToplevelTabs to allow skins to use a
      different action category.
      [wichert]

    - The padding on the documentEditable content area depends on the design
      in public.css, and was moved there to make CSS customization more
      predictable.
      [limi]

    - Fixed missing security declarations in MembershipTool.
      http://dev.plone.org/plone/ticket/5432
      [stefan]

    - Allow turning off PlonePAS installation during 2.1 -> 2.5 migration
      using an environment variable.  If 'SUPPRESS_PLONEPAS_INSTALLATION' is
      'YES', then the migrations will not install PlonePAS.  This is not a
      supported configuration, but it should allow CMFMember/Teamspace users
      to upgrade their 2.1 sites.
      [alecm]

    - No longer remove expires and effective parameters from catalog queries.
      The use of the DateRangeIndex is sufficient, no reason not to let users
      further restrict results.
      http://dev.plone.org/plone/ticket/4697
      [alecm]

    - Use portal_transforms to do stx -> html conversion instead of relying
      on ugly module import in the quickinstaller configlet.
      http://dev.plone.org/plone/ticket/5428
      [alecm]

    - Modify local role addition and removal scripts to only reindex object
      security once.
      http://dev.plone.org/plone/ticket/5352
      [wichert]

    - Remove never used use_portrait handling from folder_localrole_set
      [wichert]

    - Deprecate CMFPlone.MemberData. This class is never used, and the future
      is with PAS-based objects instead of membership/memberdata tools.
      [wichert]

    - Marked FolderWorkflow and PloneWorkflow as deprecated. Workflow setup is
      handled by the GS profile now.
      [hannosch]

    - Removed unused default configurations from PloneControlPanel and
      CatalogTool, which are handled by the GenericSetup profile now.
      [hannosch]

    - Force a catalog reindex on upgrade to get correct work boundaries on
      transformed html content.
      http://dev.plone.org/plone/ticket/5393
      [wichert]

    - Implemented displayContentsTab and getViewTemplateId in @@plone.
      The script getViewTemplateId is now deprecated, displayContentsTab
      will stick around for a while because people often override it in their
      content classes.
      [alecm]

    - Added another convenience method to @@plone to simplify template
      and action logic.  getCurrentFolder() returns the object if it is a
      not the default page for its container and is a structural folder
      otherwise it returns the object's container.  Simplified some template
      and action logic.
      [alecm]

    - Made all our deprecated scripts use the new views internally.
      [alecm]

    - fix strange English in site feedback mail template. Fixes
      http://dev.plone.org/plone/ticket/5346
      [wichert]

    - Added a cache decorator to the @@plone implementation so that multiple
      calls to expensive methods don't require multiple computations.
      [alecm]

    - Added three convenience methods to @@plone to simplify action and
      template logic.  'getParentObject()', which returns the container of the
      current context object.  'isFolderOrFolderDefaultPage()', which returns
      True if the current object is either a folder or the default page of
      a folder.  'isPortalOrPortalDefaultPage()', which returns True is the
      current object is either the portal, or the default page of the portal.
      [alecm]

    - Removed __getattr__ hack from the @@plone view.
      [alecm]

    - introduce a large_site site property, which can be used to tweak site
      behaviour. Modify the user and group management templates to show all
      users and groups on small sites and search for them on large sites.
      [wichert]

    - Fixed wrong html markup in events portlet.
      Closes http://dev.plone.org/plone/ticket/5407
      [hannosch]

    - Fixed dumb migration issue bug http://dev.plone.org/plone/ticket/5357
      [alecm]

    - Slightly optimized portlet events view for performance.
      [hannosch]

    - Refactored some more logic out of portlet_calendar into calendar view.
      [hannosch]

    - Removed vcXMLRPC.js.
      [fschulze]

    - Removed underline button from Kupu, you shouldn't use underline for
      web pages - as it's very hard to discern from a link.
      If you want it back, add the following to your CSS file:
      #kupu-underline-button { display: inline; }
      [limi]

    - Fixed up Summary View to show author/date on News Items and 
      location/time on Events.
      [limi]

    - Added condition so that you don't get the "send feedback to author" on
      yourself. If you don't know how to get in touch with yourself, seek
      professional help. ;)
      [limi]

    - Disabled the RichWidget file upload field using CSS. The reason is that
      it causes a lot of problems for naive users, who upload Word documents,
      images etc here. The content has to be in HTML or the selected text
      format for this to work. If you want to re-enable this in your site, add
      the following to your CSS file: .fieldUploadFile { display: block }
      [limi]

    - Removed inline styles on file upload field in RichWidget, added classes
      fieldUploadFile and fieldTextFormat so these elements can be styled
      using CSS.
      [limi]

    - Adjusted status message related methods of PloneTool to the new
      implementation of statusmessages as an adapter for the request rather 
      than a utility.
      [hannosch]

    - Added some missing .metadata file for images.
      [panjunyong]

    - Removed colophon.pt from the tableless skin - there's no need for it
      to have a separate file for this.
      [limi]

    - Use fullname but not username in viewThreadsAtBottom.
      [panjunyong]

    - Adding relaxed mode to PloneTool.normalizeString(). This will be used in
      ATContentTypes to avoid stripping too much from valid filenames being
      uploaded.
      [optilude]

    - Making links link directly to the target in the navtree. Fixes
      http://dev.plone.org/plone/ticket/5264.
      [optilude]

    - Making the user-name link in the personal-bar link to the author 
      profile.
      Fixes http://dev.plone.org/plone/ticket/5268.
      [optilude]

    - Added more insane TAL logic to portlets_fetcher.pt to actually show the
      error to the user, as opposed to simply logging it. If anyone has an 
      issue  with this, please just remove the tal:on-error. Fixes
      http://dev.plone.org/plone/ticket/5282 and
      http://dev.plone.org/plone/ticket/2850.
      [optilude]

    - Handle empty values for group properties of lines and ulines types
      correctly in the group details template.
      [wichert]

    - Removed 'input' from the print CSS blacklist; forms print properly now.
      [limi]

    - Moved the colophon icons into classes instead of using inline styles.
      [limi]

    - Lots of improvements to the visual editor [limi]:

      - Added "pullquote" and "callout" layout classes, renamed "formatted"
        label to "literal"

      - Updating icons to better match the Plone style

      - Improved tool ordering (growing elements like the text format selector
        should be at the end, since they displace all the other icons when 
        they change if not)

      - Fixed stupid bug in Mozilla by explicitly setting the link styling
        inside Kupu

      - Made all images load from an absolute URL to improve caching

    - Fixed CSS regression: the p tag would sometimes be a victim of the
      peekaboo bug after we removed it to work better with Kupu; put it
      back in with a position: relative hack instead. This should work better.
      This closes http://dev.plone.org/plone/ticket/5225
      [limi]

    - Made the file_view link directly to the file.
      This closes http://dev.plone.org/plone/ticket/5196
      [limi]

    - The Sharing page was showing mail addresses to easier be able to discern
      between users with similar user names; now it uses full name instead.
      This closes http://dev.plone.org/plone/ticket/5196
      [limi]

    - Move two IE hacks to IEFixes.css.dtml where there belong, as these had
      ugly side-effects when viewing a site with IE 7 beta2.
      [hannosch]

    - Renamed "discussion" to "comments" in the UI, made the labels more
      explicit about what they actually do.
      [limi]

    - Checkboxes got background in IE, this was fixed. Also moved the
      'noborder' class to public.css.
      [limi]

    - prefs_mailhost_form looked up "smtp_server" in a strange location.
      Removed some backwards compatibility code from PropertiesTool as well.
      Fixes http://dev.plone.org/plone/ticket/5174.
      [hannosch]

    - Clarify description for 'show short name' feature in the prefs panel.
      Closes http://dev.plone.org/plone/ticket/5112.
      [hannosch]

    - Added warning message to version overview in the control panel if PIL
      is not installed. Closes http://dev.plone.org/plone/ticket/5134.
      [hannosch]

    - Fixed inconsistencies where some 'Controller Python Script' were being
      declared as normal 'Script (Python)' and were missing the state 
      variable.
      [deo]

    - Fix confusion between user names and user ids in the membership tool.
      Fixes http://dev.plone.org/plone/ticket/5098
      [wichert]

    - Fixed bug: can't access content when the user have no permission to 
      access the acquired left_slots/right_slots properties.
      [panjunyong]

    - Introduced a new class "tile" to use in the portlets. The previous
      portlet code implicitly assumed that all links would be block-level,
      which is not a good thing. This should have minimal impact on old
      portlets, but if you want the block-level behaviour and stay compatible
      with older portlet code too, just add class="tile" to your links.
      [limi]

    Beta 1 - released March 31, 2006

    - Added "Extension profile" support to the addSite.zpt ZMI form to allow
      extension profiles to be applied to a site at site creation time,
      similar to how customization policies used to be available.
      [rafrombrc]

    - Removed nearly all instances of the "classImplements" idiom which
      dynamically creates Z3 interfaces from Z2 interfaces, replaced them
      with real Z3 interfaces, dynamically creating Z2 interfaces using
      "createZope3Bridge" calls.
      [rafrombrc]

    - Fixed up Summary View to show author/date on News Items and
      location/time on Events.
      [limi]

    - Incorporated various fixes for RTL support.
      http://dev.plone.org/plone/ticket/5299
      [fschulze]

    - Moved the hidden accessibility items from public.css to base.css.
      [limi]

    - Finally put back the native support for rounded corners that was pulled
      out right before the 2.1.0 release, you can now put rounded corners on
      portlets by using the portlet(Top|Bottom)(Left|Right) classes.
      [limi]

    - Fixed duplicate css definition for livesearch background. This fixes
      http://dev.plone.org/plone/ticket/5366.
      [hannosch]

    - Fixed erroneous form actions in prefs_error_log_form. Made it work even
      if the button labels were translated.
      [hannosch]

    - Tabindexes aren't as good for usability/accessibility as we once
      thought, and they wreak havoc with JavaScript/AJAX type code that
      dynamically inserts form elements. Instead, we should have the first
      element in the main body have tabindex="0" and the rest not have
      tabindexes, this making the cursor focus on that element first, and then
      follow normal ordering thereafter. Fixed IndexIterator to support just
      this - when mainSlot=False it always returns None; when mainSlot=True,
      it returns a number on the first iteration, and no number thereafter.
      Fixed up global_defines, the portlet fetcher and various templates that
      were abusing tabindexes to get a unique number for form elements to
      reflect this. Also added a new iterator called uniqueItemIndex in
      global_defines, which can be used when a page-unique number *is* needed,
      as it is in calendar_macros.pt.
      [optilude]

    - Replace &larr; with '-' in the breadcrumb trail for RTL environments. It
      seems that &larr; is not present in common RTL fontsets on Windows.
      Firefox can compensate for that, but IE can not.
      http://dev.plone.org/plone/ticket/4388

    - Re-added toPortalTime script which was accidentally removed earlier. It
      is deprecated though and won't be included in Plone 2.5. This closes
      http://dev.plone.org/plone/ticket/5326.
      [hannosch]

    - Added explanatory doctests for the translation service tool l10n
      methods.
      [hannosch]

    - Added some missing i18n statements for link related tags in the headed.
      This fixes http://dev.plone.org/plone/ticket/5289.
      [hannosch]

    - Fixed exception in getDefaultPage when the LinguaPlone-aware content
      type is not associated with a workflow chain.
      [panjunyong]

    - Added Turkish map for UnicodeNormalizer and consolidated the mappings.
      This fixes http://dev.plone.org/plone/ticket/5292.
      [hannosch]

    - Included e-mail address in mail_password_form into the i18n message.
      Fixes http://dev.plone.org/plone/ticket/5045.
      [hannosch]

    - Modified viewThreadsAtBottom to make it better work with css:
      div is not shown when no discussions exist or no discussions
      are allowed. Image icons in front of each reply is now a background
      image so that can also be styled by css alone. Added the style in
      authoring.css
      [ender]

    - Standardized how description fields are rendered in html among the
      various templates. document_view used a <p> while folder_listing
      used a <div> etc. They all use <p> now and omit the field completely
      when there is no description (all similar to document_view).
      [ender]

    - Re-added support for topLevel and bottomLevel navtree propreties, as
      well as the new name (of the navtree portlet) and root (of site
      navigation) properties, and added the Sprout navtree preference panel to
      let users manage these settings. Factored the navtree code out to
      .browser.navtree, which is TTW importable and contains a re-usable
      buildFolderTree() function that can be used to build navtree-like
      structures in custom code. See the docstrings in that module for more
      details.
      THIS REQUIRES THAT YOU RE-CUSTOMIZE YOUR NAVTREE IF YOU HAVE A CUSTOM
      VERSION IN YOUR SITE!
      Fixes http://dev.plone.org/plone/ticket/5265.
      [optilude]

    - Split the various navigation views into their respective parts, no more
      meta-navigation interface.
      [alecm]

    - Do no use javascript in failsafe_login_form - it is not safe
      [wichert]

    - Remove use of zLOG in favor of the python logger, add some content
      classes to five:deprecatedManageAddDelete to avoid some warinings.
      [alecm]

    - Added a BBB getMultiAdapter to lookup views for zope 2.8, which means
      fewer deprecation warnings and an easier migration path to zope 2.10.
      [alecm]

    - Added getEventType index for KeywordWidget in the ATCT event type.
      [fschulze]

    - Added method to Catalog Tool to fully rebuild the catalog by walking the
      tree and looking for content, as well as a ZMI button.
      Fixes http://dev.plone.org/plone/ticket/4438
      [alecm]

    - Removed code from Portal.py for default_frontpage. This is now handled 
      by the GenericSetup driven site creation. This fixes
      http://dev.plone.org/plone/ticket/5332
      [hannosch]

    - check_id error messages were not translated. This fixed
      http://dev.plone.org/plone/ticket/5012
      [hannosch]

    - Added view for sitemap, and made navtree use a recursive macro call,
      rather than recursively calling the template, as it should be faster.
      Fixes http://dev.plone.org/plone/ticket/5240
      [alecm]

    - Added drag'n'drop reordering of folder contents.
      [fschulze, alecm]

    - Fix PloneTool.changeOwnershipOf to not test for user existance by
      trying to find a user id in listMemberIds().
      [wichert]

    - Remove options to list all members and groups from the preference pages;
      this does not scale and may not be possible in PAS environments.
      [wichert]

    - Merge PlonePAS skin layer into CMFPlone skin
      [wichert]

    - Rewrite ownership_form to not list all users, but allow searching for
      possible new owners instead.
      [wichert]

    Alpha 2 - released February 23, 2006

    - Major refactoring of the entire PloneGenerator / portal creation
      framework; now using GenericSetup with XML-based setup profile to
      specify the initial site configuration state. (see
      CMFPlone/profiles/default directory)
      [rafrombrc]

    - Added ignoredSkinLayers option to zcheck.py to filter out certain 
      folders.
      [hannosch]

    - Removed default front-page from ./www. New location is:
      ./profiles/default/structure
      [hannosch]

    - Merged PlonePAS bundle. This implements the start of step 2 for PLIP 
      102.
      [wichert]

    - Do no list all groups in the sharing screen, but make it possible to
      search for them. Fixes (last) part of
      http://dev.plone.org/plone/ticket/2530
      [wichert]

    - Fix confusion between user names and user ids in the membership tool.
      Fixes http://dev.plone.org/plone/ticket/5098
      [wichert]

    - Converted unit tests to use the external PloneTestCase product instead 
      of a local modified copy.
      [hannosch]

    - Factored out 'default page'-related functionality into a view
      that provides IDefaultPage. Factored out createBreadCrumbs into
      a view that provides INavigationStructure. Started implementing
      soon-to-be-written PLIP for configurable navigation root.
      [sidnei]

    - Factored out most of the 'functions' in PloneTool.py into real
      functions that take a 'context' in utils.py. Later one, those
      will be used by the new adapters code.
      [sidnei]

    - Added helper functions for making 'zope.interface'-style
      declarations from Zope 2 interface declarations. Removed some
      BBB code. Make sure that for all interfaces declared, they are
      declared for both Zope 2 and 'zope.interface'-style.
      [sidnei]

    Alpha 1 - released January 29, 2006

    - Installed CMFPlacefulWorkflow during migrations.
      [encolpe]

    - Merged plip108-five-translationservice r8093:8841 into trunk.
      This implements PLIP 108 Zope3 MessageID's and PLIP 111 new portal 
      status message infrastructure.
      [hannosch]

    - Merged hannosch-cleanup branch. This removes a lot of unused files and
      moves some files to /portal_skins/plone_deprecated which will be removed
      in the next release.
      [hannosch]

Plone 2.1.5 - Fischerspooner - (Unreleased)

    - Fixed handling of login_time and last_login member properties:
      last_login_time is now the time of the previous login and login_time is
      the time of the current login. This fixes
      http://dev.plone.org/plone/ticket/5965.
      [hannosch]

    - Fixed the sharing page to handle groups which come from non-traditional
      PAS sources. This closes
      http://dev.plone.org/plone/ticket/5727.
      [hannosch]

    - Fixed the view of livesearch in fullscreen mode (contentActions were 
      overlapping the livesearch output).
      [spliter]

    - Enabled IEFixes.css for all IE's, not for <IE7 only
      [spliter]
   
    - Re-enabled livesearch back (removed overflow:hidden from 
      #portal-searchbox) and fixed horizontal scroll issue for IE's due to 
      floated searchbox.
      [spliter]
    
    - Removed www/main.dtml as it turns out we can use the default just fine.
      [stefan]

Plone 2.1.4 - Devo - Released September 19, 2006

    - No changes since RC1.

   RC1 - Released September 12, 2006

    - Made sure validate_email is turned on by default.
      [stefan]

    - Fixed a bug in the highlighting of selected tabs in an environment which
      uses Apache rewrite rules. This closes
      http://dev.plone.org/plone/ticket/5518.
      [hannosch]

    - Updated the CSS validation link to use the CSS 2.1 and CSS 3 compatible
      profile, which is what Plone uses.
      [limi]

    - Using 'indexObject' instead of 'reindexObject' for
      CatalogTool.clearFindAndRebuild works just as well, but does not
      touch every object and cause a monster transaction to be committed.
      Also improved the ZMI experience.
      [stefan]

    - Rearranged some of the nav tree CSS so it is easier to have proper
      padding when not using the icons.
      [limi]

    - Made the local nav tree functionality better, has correct indentation
      now.
      [limi]

    - Minor spelling fix in folder_localrole_form.
      [hannosch]

    - Removed OS notes for iCal and vCal on the event view. Meanwhile both
      standards are used on all OS'es. This closes
      http://dev.plone.org/plone/ticket/4113.
      [hannosch]

    - Fixed mysterious RuntimeError bug in rssAllowed.py.
      This closes http://dev.plone.org/plone/ticket/5611.
      [hannosch]

    - Use Fullname in recently_published and modified templates
      [jladage]

    - Cleaned up some messages that were only differing slightly.
      [hannosch]

    - Changed remaining blank 'a' styles to 'a:link' to make sure anchors aren't
      affected.
      [limi]

    - Fix rename from the action menu when using virtual hosting. Thanks to
      Daniel Nouri, Maurits van Rees, Alec Mitchell and Stefan Holek for
      pointers and code.
      [optilude]

    - Added plone.css Python Script that returns the rendered CSS for use when
      external tools need a static reference. Cached for one day.
      [fschulze][limi]

    - Added portal status message to author and personalize_form. Since Limi
      Added the tabs and switched to the content slot instead of main, the
      status message wasn't shown.
      [jladage]

    - Fixed Plone/Unknown in HTTP Server header. It now shows the correct
      Plone version (again).
      [stefan]

    - Changed the default background color to match the defined background
      color for better readability. If you want the old behaviour back, add
      'dl.portlet { background-color: transparent }' to your style sheet.
      [limi]

Plone 2.1.2 - Saint Etienne - Released January 20, 2006

    - Events portlet was not displayed when /events had been deleted.
      Closes http://dev.plone.org/plone/ticket/5143.
      [hannosch]

    - Reinstating the "Previous Events" link in the events portlet (was
      removed in r7864)
      [limi]

    - Removing hardcoded style attributes in folder_localrole_form.
      This fixes #5070.
      http://dev.plone.org/plone/ticket/5070
      [limi]

    - Removed useless CSS declaration in generated.css - the site map
      will never have a current item by its very nature. This fixes #5079.
      http://dev.plone.org/plone/ticket/5079
      [limi]

    - Made Plone notify you when you are trying to log out while being
      logged in via HTTP (you need to close your browser to log out when
      using HTTP auth). This also fixes #5083.
      http://dev.plone.org/plone/ticket/5083
      [limi]

    - Fixed the non-workflow-state-dependend coloring of items in the
      navigation portlet. Closes http://dev.plone.org/plone/ticket/5136.
      [hannosch]

    - Changed the last occurrences of transaction.commit(1) to new style
      transaction.savepoint(optimistic=True) calls.
      [hannosch]

    - Removed the last remaining occurrences of CMFCorePermissions.
      [hannosch]

    - Updated deprecation warnings to reflect new version numberings.
      [hannosch]

    - Fixed some minor spelling mistakes and i18n / xhtml format issues.
      [hannosch]

    - Added missing migration of PortalTransforms to activate the
      new, configurable safe_html transformation.
      [stefan]

    - Add a folderlistingFolderContents method to the PloneSite type. This
      allows getting folder contents with the AccessContentsInformation
      permission and is required by ATReferenceBrowserWidget since its
      changeset 5440. Fixes http://dev.plone.org/plone/ticket/5115
      [wichert]

    - Remove more uses of the name CMFCorePermissions by using
      CMFCore.permissions throughout the code.
      [wichert]

   RC2 - Released January 5, 2006

    - Error when trying to force migrate to 2.1.2 from 2.1.1 due to non-failsafe
      addition of memberdata property. http://dev.plone.org/plone/ticket/5064
      [hannosch]

   RC1 - Released January 4, 2006

    - Home page edit field was missing from the author edit screen, added.
      [limi]

    - Added missing class="documentContent" declarations in the user management
      screens.
      [limi]

    - Added View/Edit tabs to the author profile screen to make it easier to
      change your own details.
      [limi]

    - Changed the 'expired' color to be the same as the discreet/ghosted
      elements, since this is a marker to show content that is no longer
      active, not content that needs some sort of action.
      [limi]

    - Moved .visualClear to the base.css - even though it's not an actual tag,
      all layouts break without this present, so makes sense to have it as a
      base-level element.
      [limi]

    - Added link to "Advanced Search" in the LiveSearch pulldown.
      [limi]

    - Moved .documentContent to 'public.css', this fixes #5061.
      http://dev.plone.org/plone/ticket/5061
      [limi]

    - More CSS grouping fixes: the form elements are visible in the public
      view, and were moved to 'public.css' (were previously in 'authoring.css')
      [limi]

    - Moved the accessibility CSS classes from 'authoring.css' to 'public.css'
      (the hiddenStructure classes).
      [limi]

    - Moved the collapsible CSS class from 'public.css' to 'authoring.css',
      where it belongs.
      [limi]

    - Added background tint to inputs and textareas.
      [limi]

    - Fixed a bug in FactoryTool were objects weren't removed from the UID and
      refs catalogs after changes introduced in Archetypes 1.3.6.
      [hannosch]

    - Permission check had wrong spelling in prefs_groups_overview, this fixes
      #5055. Thanks to Bertrand Mathieu for the patch.
      http://dev.plone.org/plone/ticket/5055
      [limi]

    - Added feedButton class for RSS feed buttons. This will be used for e.g.
      the news portlet once limi bothers to put them back in.
      [optilude]

    - Escape the group name URLs generated in the group preferences screen.
      http://dev.plone.org/plone/ticket/5015
      [wichert]

    - Added some classes for the RTL versions of the summary view. Thanks,
      mohsen.
      http://dev.plone.org/plone/ticket/5047
      [limi]

    - Fixed #4976 - Added a must_change_password property to the
      member data (set to 0 for existing members).
      http://dev.plone.org/plone/ticket/4976
      [plonista]

    - Fixed various log-in problems, issues #4545, 4975, 4942, added workaround
      that should prevent problems in #4482 and #4688.
      [plonista]

    - Login UI cleanup. Now redirect directly to came_from page after login if
      we can verify that the user has cookies enabled via javascript. Added
      login_name to query string in a few places to save some typing. Only show
      the newbie text the first time somebody logs in.  Add a login shortcut
      link to the new user email. Tell people to enable javascript if they don't
      have it enabled.
      [plonista]

    - Update all skin form scripts to fetch transaction_note from the correct
      location (Products.CMFPlone.utils)
      [wichert]

    - Portlet CSS simplification - portletItemSingle and portletItemLast are
      no longer needed. They are still supported via the deprecated.css file,
      but we urge people to adopt the new style (which is much simpler and
      more flexible) - as the inclusion of the two above classes in the 2.1
      release was not intentional.
      http://dev.plone.org/plone/ticket/4430
      [spliter, limi]

    - Fixed #5041 - plone-site icon is generated again. Thanks, optilude ;)
      http://dev.plone.org/plone/ticket/5041
      [spliter]

    - Fixed #4961 - long Titles have been overlapping documentActions in IE.
      http://dev.plone.org/plone/ticket/4961
      [spliter]

    - Fixed #5020 - added wrapping SPAN's in portlets' portletHeaders to allow
      css designers to use rounded corners techniques.
      http://dev.plone.org/plone/ticket/5020
      [spliter]

    - Quote id in "Move item up" and "Move item down" links.
      http://dev.plone.org/plone/ticket/5014
      [nouri]

    - Removed leading whitespace in portlet_navtree_macro css class definitions.
      http://dev.plone.org/plone/ticket/5038
      [hannosch]

    - Fixed author.pt to respect search type blacklisting.
      http://dev.plone.org/plone/ticket/5034
      [hannosch]

    - Fixed 4876 by making Discussion Item not have a workflow, so that you
      won't get strange permission inconsistencies.
      http://dev.plone.org/plone/ticket/4876
      [optilude]

    - Fixed 3905 by making mergeResults() available TTW to allow python scripts
      to merge search results.
      http://dev.plone.org/plone/ticket/3905.
      [optilude]

    - All-new look for the photo album / thumbnail view.
      [limi]

    - Extended tests to ensure publishing of included folders is working.
      http://dev.plone.org/plone/ticket/4933
      [hannosch]

    - Fixed #5021 - 'History' beeing expanded was visible through the vertical
      table, containig event's summary
      http://dev.plone.org/plone/ticket/5021
      [spliter]

    - Fixed #4430 - now portlets have much more simple and straightforward
      structure and styles. From now we use only three classes for them -
      portletHeader, portletItem and portletFooter. Thanks to mroch for idea.
      http://dev.plone.org/plone/ticket/4430
      [spliter]

    - Backported some general code cleanup from the trunk.
      [hannosch]

    - Implemented new feature: Automatically highlight keywords when arriving
      from search engines.
      http://dev.plone.org/plone/ticket/2599
      [jenner] [hannosch]

    - Made prefs_mailhost_form compatible with regular mailhost objects from
      both Zope 2.7 and 2.8. Starting with 2.8 MailHost has user/pwd attributes
      as has SecureMailHost but named slightly different.
      http://dev.plone.org/plone/ticket/5000
      [hannosch]

    - LiveSearch did not match 8-bit search strings correctly.
      http://dev.plone.org/plone/ticket/4643
      [hannosch]

    - Added a customised testPropertiesValidity method to the RegistrationTool
      in preparation of PAS. This version only verifies the email property if
      it is writable.
      [wichert]

    - Fixed #5013 - accessibility-page had a problem in CSS validation due to
      doubled #portal-siteactions. Now it is the class because we have more than
      one place for siteactions on the pages.
      http://dev.plone.org/plone/ticket/5013
      [spliter]

    - Fixed #5017 - Unnecessary style in IEFixes.css that ruined NewsItem view
      in IE when having paragraph in text.
      http://dev.plone.org/plone/ticket/5017
      [spliter]

    - Fixed 'Livesearch can kill a server' problem by enabling livesearch only
      for two or more characters long search strings.
      http://dev.plone.org/plone/ticket/4890
      [hannosch]

    - Fixed two problems with delete action in global_contentmenu.
      'Cannot cancel deletes in IE 6' (#4772) and 'JS pop-up shows wrong type
      when deleting default view' (#4990).
      http://dev.plone.org/plone/ticket/4772
      http://dev.plone.org/plone/ticket/4990
      [hannosch]

    - Bug in portlet_navigation - navTreeLevel1 was never set.
      http://dev.plone.org/plone/ticket/4950
      [hannosch]

    - Group is confused with identical user when trying to add as a subgroup.
      http://dev.plone.org/plone/ticket/4947
      [hannosch] [csenger]

    - Fixed weak-ass tests that failed to catch broken action providers.
      Also fixed ActionsTool so it ignores broken providers.
      [stefan]

    - Icon for links was missing padding in folder_listing. Fixes #4721.
      http://dev.plone.org/plone/ticket/4721
      [limi]

    - Meta tags were not being emitted correctly. This fixes #4810.
      http://dev.plone.org/plone/ticket/4810
      [limi]

    - Changed all calls to getParentNode() to be aq_inner.getParentNode() to
      make it work better with Five. This fixes #4705.
      http://dev.plone.org/plone/ticket/4705
      [limi]

    - Review history was not valid XHTML, a block-level element was nested
      inside an inline element. This fixes #4926 and #4586 (hopefully, seems
      to work in my local testing).
      http://dev.plone.org/plone/ticket/4926
      http://dev.plone.org/plone/ticket/4586
      [limi]

    - Made the "click here to see full size image" and size text on images
      invisible when printing the image. This fixes #4698.
      http://dev.plone.org/plone/ticket/4698
      [limi]

    - Harmonized table-less and table-based skin, the former was using a special
      getBodyTagClass which has an existing equvalent in the normal skin anyway.
      Deprecated the special file used for this, it will disappear in Plone 2.5.
      This fixes #3915.
      http://dev.plone.org/plone/ticket/3915
      [limi]

    - Inserted missing conditional check for the location of an event - no
      longer shows the location field if it has no value.
      [limi]

    - Fixed #4695 - Comments were connected to the wrong object.
      http://dev.plone.org/plone/ticket/4695
      [morphex]

    - Fixed #4998 - Russian characters were not supported by normalizeUnicode.
      Thanks to Xenru.
      http://dev.plone.org/plone/ticket/4998
      [stefan]

    - Fixed the Internet Explorer visual bug where portlets would gradually
      lose their left margin and move further and further to the left the more
      elements were contained inside the portlet.
      http://dev.plone.org/plone/ticket/4874
      [limi]

    - Fixed #4996 - favorites_view.pt had duplicated calls for
      'document_actions' macros.
      http://dev.plone.org/plone/ticket/4996
      [spliter]

    - Plone was showing the editable border on all content items when you were
      logged in as a Member. This was fixed by removing the check for
      'Copy or Move' in the code that determines whether the editable border
      should be rendered.
      [limi]

    - Fixed #2295 - text on printing was cropped on the right in all browsers
      when the tableless layout is used.
      http://dev.plone.org/plone/ticket/2295
      [spliter]

    - 'external_edit' link wouldn't work for files with spaces in name due to
      use of 'url_quote_plus'. The correct function to use is 'url_quote'.
      [sidnei]

    - Fixed #4859 - strftime error in calendar_macros.pt.
      http://dev.plone.org/plone/ticket/4859
      [hannosch]

    - Fixed #3268 and #3746 - some status messages included all changed objects
      which could break IE as it supports only a limited URL length.
      http://dev.plone.org/plone/ticket/3268
      http://dev.plone.org/plone/ticket/3746
      [hannosch]

    - Replacing all references to "portal" in the UI with "site" with same
      consequences as outlined below.
      [limi]

    - Replacing "Member" with "User" everywhere in the UI (except in words like
      "membership"). Hanno has been notified, and this should not have any
      impact for i18n people, but they should be notified in case they made a
      distinction between member and user in their translations. I know most
      translations I have seen didn't.
      [limi]

    - Added CMFPlone.utils._unrestricted_rename() by copying from ATCT
      migrations. _unrestricted_rename() allows to rename objects without
      going through _verifyObjectPaste().
      [stefan]

    - Fixed #4657 and #4829 - wrong icon path in livesearch.
      http://dev.plone.org/plone/ticket/4657
      http://dev.plone.org/plone/ticket/4829
      [hannosch]

    - Added PIL version to control panel version overview as suggested in #4775.
      http://dev.plone.org/plone/ticket/4775
      [hannosch]

    - Fixed #4803 and #4943 by only deleting existing text indexes when the
      lexicon is missing (e.g. when we actually have a new catalog being
      created).
      http://dev.plone.org/plone/ticket/4803
      http://dev.plone.org/plone/ticket/4943
      [alecm]

    - Fixed #4898 - migrations would break if the Plone Site was configured to
      not allow all content types.
      http://dev.plone.org/plone/ticket/4898
      [stefan]

    - Fixed #4951 by overriding the 'sl' global define in prefs_main_template.pt
      http://dev.plone.org/plone/ticket/4951
      [alecm]

    - Updated favorites portlet to the new portlet style.
      [ctheune]

    - Fixed #4800 - hardcoded review_state variable breaks custom workflows.
      http://dev.plone.org/plone/ticket/4800
      [hannosch]

    - Fixed #4938 - member portraits were referenced using the username instead
      of the member id in a few places in the membership tool.
      http://dev.plone.org/plone/ticket/4938
      [wichert]

    - Combined the support for publishing subobjects in
      content_status_history.cpt with the support for bulk publishing. The old
      behaviour showed, but didn't use, the checkbox for publishing subobjects
      when you published a folder directly.
      [ctheune]

    - Send correct password in the registry notification mail even if the stored
      password are encrypted.
      [panjunyong]

    - Updated externalEditorEnabled.py to comply with WebDAV changes in
      Archetypes 1.3.6.
      [hannosch]

    - Fix unit test relying on user folder storing passwords in plain text. This
      isn't anymore the default for Zope 2.9. Changed to test authenticate.
      [hannosch]

    - Some code cleanup, mainly removal of unused imports.
      [hannosch]

    - Fixed #4894 - Missing closing quote in LiveSearch pop-up.
      http://dev.plone.org/plone/ticket/4894
      [stefan]

    - Send new generated plain password via email directly when reset password,
      but not the one stored in userfolder since it could be encypted. Also use
      getProperty to retrieve email address for better LDAP integration.
      [panjunyong]

    - Made plonifyAction be called with an existing default_tab parameter.
      [deo]

    - Changed selectedTabs.py to use full URL instead of content path when
      computing whether or not a portal_tab action is being viewed. This causes
      portal tabs to behave correctly when the action refers to a specific
      template.
      [rafrombrc]

    - Removed skins/plone_3rdParty/CMFTopic from filesystem and written
      migration to remove it from all skins.
      [hannosch] [limi]

    - Removed unused errorMessages.py script.
      [hannosch]

    - Removed some BBB code for Zope 2.6 (try/except on DateTimeError).
      [hannosch]

    - Added accessibility instructions for Konqueror.
      [limi]

    - Remove so called 'ie7' from third party skins and all references to it.
      [limi] [hannosch]

    - Make Plone 2.1 degrade more gracefully on a non-migrated 2.0 site
      (special fixes for plone.org).
      [sidnei]

    - Fixed #4788 - Missing i18n for livesearch 'no matching results found'.
      http://dev.plone.org/plone/ticket/4788
      [hannosch]

    - Fixed small bug in searching users from prefs_users_overview. In case of
      searchstring field contained something, click to 'Find all' does not find
      all users, but only users specified by the search string.
      [naro]

    - Changed folder_contents.pt so that it honors the
      'typesUseViewActionInListings' setting in site_properties for ALL types
      (was only working for non-folderish types before).
      [rafrombrc]


Plone 2.1.1 - Coloma - Released October 13, 2005

    - Made the ExtendedPathIndex migration apply to all EPI from any ZCatalog
      instance in the portal root.  Should fix issues with migrating CMFMember
      instances.
      [alecm]

    - Fixed #4587 - workflow history displays author's full name instead of
      author's id and link to author page instead of home folder (to be in sync
      with document byline). Added colored transition names as a free bonus.
      http://dev.plone.org/plone/ticket/4587
      [naro]

    - Fixed #4690 - user can't change password after initial login
      (with 'validate email' set).
      http://dev.plone.org/plone/ticket/4690
      [naro]

    - Fixed #4777 - 'portlet_navtree_macro_opt' call in sitemap.pt.
      http://dev.plone.org/plone/ticket/4777
      [hannosch]

    - Fixed #4722 the SecureMailHost migration was test-free and not very
      cautious.
      http://dev.plone.org/plone/ticket/4722
      [alecm]

    - Refixed #4639 by checking the presence of the property without acquisition
      and then using it only if it exists on the object, but allowing full
      acquisition if the property is there.
      http://dev.plone.org/plone/ticket/4639
      [alecm]

    - Added migration to the new ExtendedPathIndex structures.
      [alecm]

    - Fixed #4760 by making our GroupsTool reindex the group folder when it is
      newly created.
      http://dev.plone.org/plone/ticket/4760
      [alecm]

    - Fix DeprecationWarnings resulting from CMFCorePermissions imports by
      importing from new permissions modules instead.
      [hannosch]

    - Fixed #4766 - RSS feed in Firefox did not work properly.
      http://dev.plone.org/plone/ticket/4766
      [naro]

    - MimetypesRegistry wasn't correctly handling 'globs' from shared-mime-info
      database, resulting in failure from detect correct mimetype based on
      extension on Windows platform. A migration was added to fix existing
      MimetypesRegistry instances.
      [sidnei]

    - Added first migration to 2.1.1.
      [sidnei]

    - Fixed #4704 - string.whitespace is not ASCII only on OpenBSD, which
      resulted in problems in UnicodeNormalizer.
      http://dev.plone.org/plone/ticket/4704
      [hannosch]

    - Fixed #4708 - portlet_events "upcoming events" link broke if events folder
      was renamed or deleted.
      http://dev.plone.org/plone/ticket/4708
      [hannosch]

    - Fixed #4755 - folder_factories does not link to folder_constraintypes_form
      like add item menu does.
      http://dev.plone.org/plone/ticket/4755
      [hannosch]

    - Removed out-of-the-box TextIndexNG2 support from Plone. TextIndexNG V2 and
      V3 has explicit migration code to convert ZCTextIndexes to TextIndexNG
      V2|3 instances on request. This fix should resolve bug #4713.
      http://dev.plone.org/plone/ticket/4713
      [ajung]

    - Fix broken discussion_reply_form.cpt.
      [hannosch]

    - Reverted some non-literal msgids introduced in Python code to literal
      msgids as i18ndude is not capable of handling these right now. We'll have
      to wait for Zope3-style MessageID's.
      [hannosch]

    - A number of micro-optimizations.  The biggest winners are precompiling
      the regexes used in normalizeString at startup, and switching the
      navtree to use a recursive macro rather than recursively calling a
      page_template.  The rest of the changes involve making sure that the
      global_defines are used rather than being re-executed/acquired, and
      removing repeated attempts to acquire the same object in a tal:repeat.
      Added two new global defines, one for the normalizeString method, which
      is used very frequently (usually in loops) so that the method lookup is
      avoided, and another for isViewTemplate which uses an expensive script
      which was being called twice per page.
      [alecm]

    - Optimizing normalizeString slightly by moving a list concatenation out of
      the methods scope.
      [hannosch]

    - Significantly speed up toLocalizedTime calls. We try to get the needed
      format identifiers first and only calculate the real values for those
      instead of calculating all values on every call. This safes a lot of
      quite expensive DateTime.strftime() calls.
      [hannosch]

    - Corrected lots of conflicting (swallowed) default texts for i18n msgids.
      Found by new i18ndude feature.
      [hannosch]

    - Removed unnecessary use of 'SESSION' in 'folder_contents' and
      'logout_form'.
      [sidnei] [alecm]

    - Converted plone_javascript_variables.js from DTML to PageTemplate to make
      it better suited for i18n.
      [fschulze]

    - Cleaning up markup around i18n:name with tal:omit-tag="" to prevent
      double span tags and some general markup improvements.
      [hannosch]

    - Fixed calendar portlet to show abbreviated weekday names when no
      translation service is available.
      [alecm]


Plone 2.1 - Plaid - Released September 6, 2005

    - Added deprecation warning for DTML in CSS. We will most likely get rid
      of this in Plone 3.0 or 3.5 to reduce complexity. If we are going to
      support variables in CSS, ResourceRegistries should handle it, not DTML.
      [limi]

    - Fixed #4639 by using aq_explicit instead of aq_base when getting Title for
      pretty_title_or_id. This means that objects which rely on acquisition in
      their Title() methods will need to do so explicitly, though getToolByName
      and aq_parent will work without issue.
      http://dev.plone.org/plone/ticket/4639
      [alecm]

    - A bug that caused the month display to use the day number was fixed.
      Thanks to Mohsen Moeeni for finding this bug.
      [longsleep]

    - Fixed #4638 by making the workflow title methods more fault tolerant.
      http://dev.plone.org/plone/ticket/4638
      [alecm]

    - Fixed #4624 - document byline on events were not translated.
      http://dev.plone.org/plone/ticket/4624
      [hannosch]

    - Fixed #4635 - LiveSearch background did not apply the IE fix if there was
      no result set. Thanks Wichert.
      http://dev.plone.org/plone/ticket/4635
      [limi]

    - Fixed #4612 by granting the 'View Groups' permission to all Members at the
      portal root.
      http://dev.plone.org/plone/ticket/4612
      [alecm]

    - Fixed #4589 by adding some tal:conditions in a few templates.
      http://dev.plone.org/plone/ticket/4589
      [alecm]

    - Reordered the object button actions.
      [alecm]

    - Removed the printing of link addresses along with the link text since it
      triggers a lot of display-related bugs when printing certain types of
      documents. Left the code in there, so just uncomment it if you want the
      feature back. Too painful for the generic use case, though.
      [limi]

    - Removed the "blah's Home" title for the member folder default title. It
      doesn't make sense in multilingual sites, and doesn't add any useful
      information. The home folder now has a title that is simply the username.
      [limi]

    - Enabled editable border for the Members folder.
      [limi]

    - Provide compatibility with Five 1.1 regarding i18n. Five's
      TranslationService has no unicode aware utranslate method, so we have to
      force a fallback to PTS or everything using utranslate including
      ulocalized_time won't get translated.
      [hannosch]

    - Provided descriptive titles for translation_service, mimetypes_registry,
      and portal_transforms tools.
      [stefan]

    - Login and saving of login times now also works if members do not have the
      "Set own properties" permission.
      [stefan]

    - Made sure that if you have an INonStructuralFolder inside another, you
      don't get an add menu for the parent non-structural folder.
      [optilude]

    - Made sure the cmf_legacy skin layer comes last, after all the Plone
      layers.
      [stefan]

    - Added Kupu image alignment classes. Thanks, Nate.
      [limi]

    - Fixed various spacing issues in discussions rendering.
      [stefan]

    - In skins/plone_login/logout.cpy, $-quoted a string that was being taken
      from REQUEST and inserted into a TALES 'string:' expression. This REQUEST
      string could be manipulated by the browser.
      [rochael]

    - Fixed #4530 - type name not translated if only one type is shown in
      global_contentmenu.
      http://dev.plone.org/plone/ticket/4530
      [hannosch]

    - Adding some padding to the "display" menu header if the menu is disabled
      because of an index_html document. Closes #4534.
      http://dev.plone.org/plone/ticket/4534
      [optilude]

    - Made Summary View the default view for the news topic.
      [alecm]

    - Fixed #4499 - removed vestigial failsafe_login.pt.metadata.
      http://dev.plone.org/plone/ticket/4499
      [hannosch]

    - Fixed #4484 - 'My Preferences' action title is 'Preferences' in 2.1.
      http://dev.plone.org/plone/ticket/4484
      [hannosch]

   RC3 - Released August 18, 2005

    - Changed the copy action to be restricted by 'View' as 'Copy or Move' is
      generally available to anonymous even when 'View' is not.
      [alecm]

    - Fixed #4502 by reverting to the old nasty deprecated _usage method of
      doing things.  This should be cleaned up once zope 2.7.8/2.8.2 comes out
      and make_query is fixed. queryCatalog automatically converts the _usage
      style queries into proper dict based queries, but it's still bad form.
      http://dev.plone.org/plone/ticket/4502
      [alecm]

    - At the request of the i18n team I renamed Tile View to Summary View,
      since this is easier to translate.
      If you are running an SVN checkout between RC2 and RC3, please re-run
      migrations from RC2 to get the right template name and reference.
      [limi]

    - Added explicit permission checks to prefs_users_overview and
      prefs_groups_overview to prevent unnecessary exposure of sensitive
      roles and groups security information (see #4491).
      http://dev.plone.org/plone/ticket/4491
      [rafrombrc]

    - Added 'raiseUnauthorized' python script to plone_scripts as a
      convenience for Unauthorized exceptions to be raised from within
      page templates.
      [rafrombrc]

    - Fixed #4449 by removing direct attribute access from file_view template.
      http://dev.plone.org/plone/ticket/4449
      [alecm]

    - Made the navtree respect the new NonStructuralFolderInterface by
      checking is_folderish to determine if children should be shown.
      [alecm]

    - Moved concatenation of actions and content to createTopLevelTabs. The
      translation of action titles is done there as well now.
      [fschulze]

    - Fixed several problems in migration of ResourceRegistries.
      [fschulze]

    - Made news topic sort on effective date, reversed.
      [alecm]

    - Moved the news and events topics to the toplevel and removed the folders.
      If the folders had content they were renamed to old_news/events.
      [alecm]

    - Made all object_buttons act on parent folder when the current object is
      the default page. Made paste target respect the NonStructuralFolder
      declaration. Made the delete alert message stronger for folders and
      default pages in folders.
      [alecm]

    - Added marker interface INonStructuralFolder which allows a type to
      declare that it is a folder for implementation purposes only and should
      not be treated as such by Plone's tab generation and other is_folderish
      metadata. This is necessary to permit folderish-as-implementation types
      to not generate portal tabs at the portal root or link to folder_contents
      from a parent folder folder_contents, as well as ensure the correct
      functioning of the contents tab (displayContentsTab.py).
      [optilude]

    - Fixed #4361 - OverflowError when converting to Date(Range)Indexes.
      http://dev.plone.org/plone/ticket/4361
      [stefan]

    - Fixed #4366 - The envelope-from for send-to and comments is now set to the
      site admin's email ID rather than the apparent From ID entered on the form
      http://dev.plone.org/plone/ticket/4366
      [bitranch]

    - Fixed #4370 - duplicate 'sharing' tab on portal root.
      http://dev.plone.org/plone/ticket/4370
      [optilude]

    - Several fixes and workarounds for right to left rendering.
      [fschulze]

    - Fix #4433 Changing workflow state in review_history gives KeyError:
      'comments'.
      http://dev.plone.org/plone/ticket/4433
      [hannosch]

    - Fix #4456 wrong title on columns.css.
      http://dev.plone.org/plone/ticket/4456
      [hannosch]

    - Added past events sub-topic events_topic/previous, and restricted the
      primary events topic to show only upcoming events.
      [alecm]

    - re-added javascript_head_slot and css_head_slot to prefs_main_template,
      so that preference templates can add javascript and css like other
      templates can again.
      [elvix]

    - Uncluttered the 'language' mess in the templates define.
      [deo]

   RC2 - Released August 10, 2005

    - Renamed PloneTool.getOwnerId() to .getOwnerName, and made it return the
      username instead of the userid, which is importand for user sources
      where the username != userid.
      [rochael]

    - Removed empty div/li in navigation tree caused by parentMetaTypesNotToQuery
      [panjunyong]

    - Only show search syndication when site syndication is enabled.
      [alecm]

    - Optimize the portlet_calendar again for some speed.
      [hannosch]

    - Don't expand parentMetaTypesNotToQuery item in sitemap. Need more tuning.
      [panjunyong]

    - Enable syndication in new plone instances and all topics by default.
      Turn off syndication tab.  Rename rss action.
      [alecm]

    - Fixed #4407 by making folder_contents link to folder_contents for all
      folderish types.
      http://dev.plone.org/plone/ticket/4407
      [alecm]

    - Fixed #4376 untranslated 'add type' buttons.
      http://dev.plone.org/plone/ticket/4376
      [hannosch]

    - Don't clear css and javascript registries on migration from 2.0.5.
      [fschulze]

    - Evaluate queryCatalog in the catalog context in getFolderContents, so
      that Smart Folders (which override queryCatalog for some silly reason)
      can still use it.
      [alecm]

    - Added workaround for #4372 which is due to a strange behavior in the
      Firefox alpha. Thanks to jenner for hunting this down and contributing the
      fix.
      http://dev.plone.org/plone/ticket/4372
      [alecm]

    - Addresses #2029. Now support through UI for grouping groups. UI does not
      allow a group to be added to itself or for a member (group or user) of a
      subgroup to be added to a group. Some text changed to reflect changes.
      http://dev.plone.org/plone/ticket/2029
      [gerry_kirk]

    - Changed View permission restrictions on folder_constraintypes_form and
      ownership_form.  Requiring Owner restricts access to users with Owner
      role on the template itself, not the context it is called in.
      [alecm]

    - Made search.pt respect typesUseViewActionInListings. Fixes part of #4373.
      http://dev.plone.org/plone/ticket/4373
      [alecm]

    - Made syndication use the max_items property of the instance if set, not
      the tool.
      [alecm]

    - Added ITranslatable support to getDefaultPage.
      [deo]

    - Added testMissingPageIgnored to verify inexistent ids in default_page.
      Fixed a missing object in testFixFolderlistingActionNoTool.
      [deo]

    - Fixed #4382 by removing unnecessary getUser call.
      http://dev.plone.org/plone/ticket/4382
      [alecm]

    - Fixed #4381 by using getProperty to access listed and last_login_time
      properties in searchForMembers.
      http://dev.plone.org/plone/ticket/4381
      [alecm]

    - Fixed bug trigerred when reindexing order in a folder with improperly
      deleted content (i.e. when brain.getObject() returns None in
      plone_utils.reindexOnReorder(folder)).
      [alecm]

    - Readded current_page_url to global_defines for backwards compatibility.
      [alecm]

    - Removed unnecessary and lazy uses of global in tal expressions.
      [alecm]

    - Fixed bug: can't view a page with unauthoried related items.
      [panjunyong]

    - document_relateditems are sense of typesUseViewActionInListings now.
      [panjunyong]

    - Fixed bug: setting local role acquization works wrong with non-folderish
      content.
      [panjunyong]

    - Removed reindex method from CatalogTool.py since it is redundant and
      as of CMF 1.5.3 differs in signature from the base type's method.
      [geoffd]

    - Made language selector visible even if no document actions are defined
      for the current user
      [jok2]

    - Don't require a full name for the site feedback in the contact-info page,
      as the full name is not required for members.
      [jok2]

   RC1 - Released August 1, 2005

    - Added log.py module and made Plone use only one style of logging (zLOG).
      There is no logger named 'Plone' configured anywhere, so we better not
      pretend there was.
      [stefan]

    - Made history table use transition titles instead of ids (requires new
      portal_workflow method).  Also localized dates in that table, and
      removed duplication of history from content_status_history.
      [alecm]

    - Commented out markup code for rounded corners in the portlets. The
      tags like '<span class="portletTopLeft" />' inside the '<dl>' were
      destroying the XHTML validation because only '<dd>' and '<dt>' are
      allowed in a definition list.
      [tiran]

    - Fixed issue with dashed borders in IE, and applied IEFixes which was
      going unused.
      [alecm]

    - Simplified creator checking in folder_listing, as the usage of creators
      made no sense.  Let's just use Creator and be dones with it.
      [alecm]

    - Making the "display" menu display the default-page if you are looking
      directly at a folder that has a default-page (e.g. its contents view)
      [optilude]

    - Fixing content-type icon display in folder listing, recent portlet etc.
      [spliter]

    - Fixed bottom of selected tab in IE.
      [spliter]

    - Added new permission Allow Sendto to Plone. The sendto method, script
      and action are protected by the new permission. Change the permission
      in the portal root to prevent certain users like Anonymous to use or
      abuse the feature.
      [tiran]

    - Fixed issue that caused Plone/AT Folders contained in a BaseBTreeFolder
      subclass to inheirt the parent index_html ComputedAttribute and attempt
      to use that as the default view resulting in a 404. Thanks to tim2p
      for finding this.
      [alecm]

    - Fixed #4351 by not relying on getTypeInfo() being available on the object.
      http://dev.plone.org/plone/ticket/4351
      [optilude]

    - Fixed #3906 - header now shows correct mouse pointer cursor when table is
      sortable.
      http://dev.plone.org/plone/ticket/3906
      [hannosch]

    - Added migration to add new view templates to folderish types (including
      Smart Folders).
      [alecm] [limi]

    - Made folder_listing and folder_contents suitable for use as Smart Folder
      views.
      [alecm]

    - Fixed #2771 (#4350) using the new isURLInPortal method, which now also
      returns true on relative URLs.
      http://dev.plone.org/plone/ticket/2771
      http://dev.plone.org/plone/ticket/4350
      [alecm]

    - Added default_page_types and removed non_default_page_types.  This means
      That third party-content types that want to be used as default pages
      need to be added to the list, but it also means that folderish types
      which generally don't make any sense as default pages are not allowed by
      default.  Also, made the default page selection form show the currently
      selected item.
      [alecm]

    - Added CMF types to types_not_searched.
      [alecm]

    - Made portlet_recent use types_not_searched to limit returned types.
      [alecm]

    - Made search form use workflow state titles, and multiple columns for
      types list.
      [alecm]

    - Fixed #4345 by checking the flag.
      http://dev.plone.org/plone/ticket/4345
      [alecm]

    - .personal folders will no longer be created.  Fixed unit tests which
      assumed that .personal would be around.
      [alecm]

    - Closed bug #4344 by limiting the number of items that can be added to the
      portal status message string when deleting items. This is really more of a
      usability fix, since we don't actually check the length of the titles; the
      full fix for the issue will appear when we merge the improved status
      message handling.
      http://dev.plone.org/plone/ticket/4344
      [optilude]

    - Fixed #4346 by using the suggested fix. Thanks Tim Hicks.
      http://dev.plone.org/plone/ticket/4346
      [alecm]

    - Fixed plone_javascript_variables.dtml and plone_scripts/translate.py to
      cope with i18n strings including the ' char.
      [gotcha]

    - Added language to personalize form and put prefs_user_details back in
      sync with personalize.
      [alecm]

    - Fixed #1490 by ensuring that sendto only works when the action is visible.
      http://dev.plone.org/plone/ticket/1490
      [alecm]

    - Added an immediateLogout method to MembershipTool.py that resets the
      current security context and logs the current user out immediately.
      Used in logout.py
      [geoffd]

    - Added main macros to templates which may be used as default content
      views so that they play nicely with discussion_reply_form.
      [alecm]

    - Fixed #4333 prefs_user_manage now uses portal_membership.deleteMembers
      instead of acting directly on acl_users. On deletion local roles are now
      removed, but the member area is preserved.
      http://dev.plone.org/plone/ticket/4333
      [alecm]

    - Added the last missing accesskey to search_form and put in a link below
      the search box.
      [hannosch]

    - Reenabled visible_ids memberdata property.  This field will determine
      the visiblity of ids on a member by member basis, only if the sitewide
      property is enabled.
      [alecm]

    - Fixed author home page link in author.pt
      [panjunyong]

    - Change order of folderlisting/view default action determination to fix
      discussion visibility on folderish AT types.
      [alecm]

    - Added javascript handler to form submit buttons which warns when the
      button gets clicked more than once.
      [fschulze]

    - Fleshed out the contact-info page as a form controller page, making it
      possible to send feedback as anonymous user and as member (without
      filling e-mail address and fullname). Also displays the portal
      description.
      [jok2]

    - Fixed #4335 added a method to URLTool to determine whther a URL is local
      to the portal. This will be moved into CMFCore ASAP, pending write access.
      http://dev.plone.org/plone/ticket/4335
      [alecm]

    - Hooked up navtree wf config to the configlet, needs serious UI tweaking.
      Added a method to the WorkflowTool to list all wf states in the
      portal.  Added a python script that converts a list into a list of
      sublists for making columns.
      [alecm]

    - Added properties wf_states_to_show, and enable_wf_state_filtering to
      navtree_properties.  These filter the navtree/sitemap/portal tabs
      results by workflow state.
      [alecm]

    - Adding navigation control panel, and fixing a possible Search control
      panel migration problem in the process.
      [optilude] [limi]

    - Making the livesearch result truncate title and id, as offered by jeffk
      in #4329. Thanks for the patch!
      http://dev.plone.org/plone/ticket/4329
      [optilude]

    - Fixed #4324 need to ensure we are passing strings to utranslate.
      http://dev.plone.org/plone/ticket/4324
      [alecm]

    - Added CMFUid tools. CMF 1.5 has a new core product CMFUid which is
      used to assign and query uids mostly like Archetypes. Products designed
      for CMF 1.5 might depend on the tools.
      [tiran]

    - Fixed HEAD requests for folders. The browserDefault code mustn't look up
      the template for HEAD requests. Instead it should invoke the HEAD() api
      method defined in webdav.Collection. This fixes an ATCT bug and #4290.
      http://dev.plone.org/plone/ticket/4290
      [tiran]

    - Made check_id.py prevent method aliases like 'sharing' and 'edit' as
      object ids. This fixes #4331.
      http://dev.plone.org/plone/ticket/4331
      [optilude]

    - Implemented accesskeys as per accessibility-info page definition.
      [hannosch]

    - Made the portal root use the /edit and /sharing method aliases for its
      'edit' and 'sharing' tabs/actions.
      [optilude]

    - Made the 'view' method aliases point to '(selected layout)' instead of
      '(default view)'. This assures consistency with previous behaviour,
      so that /view at the end of a URL always gets the item itself, ignoring
      any default-page that may be set. Note that the 'view' *action* still
      points to 'string:${object_url}', so that the 'view' tab, as well as
      the '(Default)' target, still get '(dynamic view)' (and thus default
      pages) for types other than File and Image.
      [optilude]

    - Fixed #4327. The live search now honours typeUseViewActionInListings.
      http://dev.plone.org/plone/ticket/4327
      [optilude]

    - Fixed issue #2669. Also made the group prefs suck a bit less. These pages
      really have to be taken care of in the next release. I also disabled the
      group search feature in prefs_groups_overview because it made things much
      worse. It's no use to have a search box that doesn't search. So, now
      groups are shown using their title and descriptions for tooltips.
      folder_localrole_form also uses this info. This requires a GRUF update!!
      http://dev.plone.org/plone/ticket/2669
      [ender]

    - Changed add to favorites icon in document actions to the appropriate icon.
      Before it used the site icon while the portal_type uses a heart. They must
      match and now they do.
      [ender]

    - Applied patch from #4205. Better check for existance of member folders.
      Thanks to Tiran.
      http://dev.plone.org/plone/ticket/4205
      [ender]

    - Made the blacklisting control in the search control panel act as a
      whitelist. That is, new types appear as selected by default and the
      backing store is a blacklist, but the user selects which type to be
      searched, not which types not to be searched, which is easier on the mind.
      [optilude]

    - Created an Actions drop-down menu with cut, copy, paste and delete in
      there. I know the label is not optimal but I think this is nicer and
      cleaner.
      [ender]

    - Fixed #4083. <div class="visualClear"><!-- --></div> to remove whitespace
      in IE.
      http://dev.plone.org/plone/ticket/4083
      [ender]

    - Fixing #4300 by disabling the content menu when the object is in the
      factory. PLIP 24 form unload protection takes care of the other cases.
      http://dev.plone.org/plone/ticket/4300
      [optilude]

    - Added link to ownership_form on the sharing page. Changed
      warning text a bit for when you visit this page for non-contentish
      items so it shows the title of the portal_type and not the id.
      The sharing page really needs to be refactored in the next release.
      [ender]

    - Making prefs_group_members a form controller template, which should be
      somewhat safer from reported navigation and persistence problems, and
      makes it possible to replicate the no-search-on-page-load behaviour
      already added to prefs_users_overview. Group overview pages still not
      converted, mainly because these templates are a mess. :-(
      [optilude]

    - Making the images in document_actions.pt have their height and width set
      with CSS instead of attributes on the image tag. This closes #3823, which
      advocated using the image's own height and width. This approach was deemed
      unnecessary, since we probably want them all to be consistent, and having
      to traverse to each image is an unnecessary performance hit for something
      that'll stay 16x16 almost always. :)
      http://dev.plone.org/plone/ticket/3823
      [optilude]

    - Fixed #4302 using jenner's template with a few simplifications, and some
      changes to folder_contents to make reusability even easier.
      http://dev.plone.org/plone/ticket/4302
      [alecm]

    - Finished #1805 without any catalog metadata even. Added a method to
      WorkflowTool that retrieves a state title given a state id and a
      portal_type. As a result it can be used for brains and objects alike.
      http://dev.plone.org/plone/ticket/1805
      [alecm]

    - Making member overview preference page not perform a full member search
      by default, but adding a "Find all" button to find all members if you
      need this listing. This fixes #2530. The bug also mentions that we could
      have "Find all" the default behaviour when there are sufficiently few
      members. However, there has been no followup on how we can efficiently
      count the number of members, so this is still an open feature request.
      http://dev.plone.org/plone/ticket/2530
      [optilude]

    - Adding display of currently selected default-page to "display" menu and
      cleaning up markup a bit. Still some CSS work to be done before this is
      fully OK.
      [optilude]

    - All icons for content types are now displayed using CSS - closes #3138.
      http://dev.plone.org/plone/ticket/3138

    - Removed all references to getStateClassName() as this was just a
      makeshift solution that was used before we got the normalizeString()
      method in PloneTool.
      [limi]

    - Hooked up the new HTML-formatted and improved start page
      [limi]

    - Reverted change to normalizeString as Archetypes relied on it in the
      title to id autogeneration code.
      [hannosch]

    - Fixed #3242 added And/Or search option to Subject field on search_form.
      http://dev.plone.org/plone/ticket/3242
      [alecm]

    - Fixed #3211 by updating the permission on PloneTool.setMemberProperties,
      the other permissions are fixed in CMF 1.5.
      http://dev.plone.org/plone/ticket/3211
      [alecm]

    - Fixed #4242 by updating test.
      http://dev.plone.org/plone/ticket/4242
      [alecm]

    - Fixed inappropriate condition on folder_constraintypes_form.
      [alecm]

    - Made tableless skin use showEditableBorder, fixed #4291.
      http://dev.plone.org/plone/ticket/4291
      [alecm]

    - Fixed failing unit tests due to cleanupFilename removal. atct's base.py
      _setATCTFileContent method relied on getting a false value back from
      normalizeString when called with None.
      [hannosch]

    - Removed text size actions, moved Site Setup action to site_actions, and
      added contact and accessibility site_actions.
      [alecm]

    - Added in some more character mappings to UnicodeNormalizer that were
      definied in ATCT's now removed cleanupFilename method
      [hannosch]

    - Remove accesskeys as they are interfering with screen reader shortcuts.
      This fixes #3535.
      http://dev.plone.org/plone/ticket/3535
      [hannosch]

    - Migrated to some nicer workflow state titles.
      [alecm]

    - Fixed issues related to External Editor action (2939, 3008, 4176), using
      a script from glenfant.  The icon appears only when both 'Modify portal
      contents' and 'Use external editor' are available, the user has the a
      member property set, and the object supports WebDAV editing/locking, and
      isn't locked.
      http://dev.plone.org/plone/ticket/2939
      http://dev.plone.org/plone/ticket/3008
      http://dev.plone.org/plone/ticket/4176
      [alecm]

    - Partial fix for #4272 some missing i18n markup.
      http://dev.plone.org/plone/ticket/4272
      [hannosch]

    - Added 'Large Plone Folder' to parentMetaTypesNotToQuey navtree_property.
      This ensures that large folders will not display their contents in the
      navtree.
      [alecm]

    - Fixed #4251. ulocalized_time() fetches all DateTime errors and logs them.
      http://dev.plone.org/plone/ticket/4251
      [tiran]

    - Took care of #4224 by disabling the ZMI ordering interface for the
      Plone Site object.
      http://dev.plone.org/plone/ticket/4224
      [stefan]

    - Removed PropertyManagedBrowserDefault, and mane the portal root support
      BrowserDefaultMixin as implemented by CMFDynamicViewFTI.
      [alecm]

    - Fixed #4216 - migration would add 'contents' action more than once.
      http://dev.plone.org/plone/ticket/4216
      [stefan]

    - Changed category of 'view' and 'edit' actions on 'Plone Site' to
      'object'.
      [alecm]

    - Implemented limi's suggestion for contents tab.
      [alecm]

    - Fixed discussion_reply_form to work with CMFDynamicViewFTI stuff.
      [alecm]

    - Added dummy savepoint method to transaction_.py
      [tiran]

    - Resurrection of old edit template for CMF content types. It is possible
      to edit and view old style content types again. These templates should be
      removed in 2.5.
      [tiran]

    - Added pretty_title_or_id method to PloneTool which returns the Title
      or non-autogenerated id, otherwise it returns a translatable default
      string (or a given default parameter).  Made plone use this method
      (or the helper python script that points to it) everywhere.  Currently
      this incurrs a skin lookup and script call for nearly every content item
      listed (portlets, listings, etc.). This method could easily be added to
      catalog metadata if the penalty is too large, with no need to change the
      templates.  However, doing so would loose the translatability of the
      default string.  Something like 'here/pretty_title_or_id|empty_title'
      won't work as '|' only triggers on an exception, so a python expression
      would be needed to maintain translatability.
      [alecm]

    - Added isIDAutogenerated method to PloneTool and deprecated the python
      script. This method is normally used from FS code and so it belongs in
      FS code.
      [alecm]

   Beta1 - Released July 7, 2005

    - PloneFolderBase (and hence LargePloneFolder) no longer inherits
      SkinnedFolder, as SkinnedFolder has OrderSupport in CMF 1.5.
      [alecm]

    - Moved reindexOnReorder stuff into PloneTool, and use it from the
      folder_position script.  This way non-ATCT/PloneFolder types get proper
      reordering in the GUI.  Order reindex on rename is still not available
      for custom types.
      [alecm]

    - Added the phrase "Open Source" to the colophon to keep google happy
      [geoffd]

    - Fixed #4263 - method alias handling in portal_factory.
      http://dev.plone.org/plone/ticket/4263
      [geoffd]

    - Fixed #4258 - Added support for parentMetaTypesNotToQuery to the navtree.
      http://dev.plone.org/plone/ticket/4258
      [alecm]

    - Use the old fashioned (but badly named) metaTypesNotToList for the
      navtree blacklist, instead of reinventing the wheel, appending the
      necessary new values to that list in migration.
      [alecm]

    - Use a global define for visible_ids so that it is automatically used for
      custom types.
      [alecm]

    - Ceiling date patch is obsolete for CMF 1.5 - removed it.
      [hannosch]

    - Fixed #4247 - remove unused group_submit variable.
      http://dev.plone.org/plone/ticket/4247
      [hannosch]

    - Made it possible to show action icons in personal-bar.
      [fschulze]

    - Fixed #4229 - Error in sharing tab, roles.append changes a list inplace.
      http://dev.plone.org/plone/ticket/4229
      [hannosch]

    - Fixed #4241 - MembershipTool.py used _checkPermission without importing it
      http://dev.plone.org/plone/ticket/4241
      [hannosch]

    - Added is_default_page index to catalog, and made navtree no longer show
      objects which are the default page in a folder.
      [alecm]

    - Fixed a number of security related issues.  We cannot assume that we can
      access attributes of the parent object (this includes using 'folder' in
      actions and 'aq_parent' in skins).  This fixes viewing visible objects
      in private folders, and also some PLIP 16 issues.
      [alecm]

    - Made NavTree use a black list of portal_types not a white list.
      [alecm]

    - Removed data/navigation_properties that was deprecated in Plone 2.0, as
      well as the data/ directory. Migrations to remove the property sheet
      from ZODB has been added before.
      [vinsci]

    - Refactoring use of __browser_default__() to use CMF 1.5-style aliases
      and FTIs, with __browser_default__() still being the fallback for old
      classes. Some tests had to be fixed for this, too.

      Adding aliases for view, edit, properties, sharing. Fixing up some uses
      of getActionById() which were failing because of these aliases.

      Note that we now depend on fixes to CMFFormController, ATContentTypes and
      CMFDynamicViewFTI checked in alongside this commit.
      [optilude]

    - CMF 1.5 Cookie Crumbler distinguishes between login attempt and
      authorization failure, making require_login obsolete.
      [stefan]

    - Added a configlet for setting search options, to enable/disable LiveSearch
      and to set the types_not_searched property. This is requested in #4032.
      http://dev.plone.org/plone/ticket/4032
      [jok2]

    - Moved some interfaces to CMFDynamicViewFTI
      [tiran]

    - Changed unload protection, so only forms with
      class="enableUnloadProtection" are checked.
      [fschulze]

    - Slight change to navigationParent script so that it won't fail
      when a Z3 view is in the acquisition tree
      [rafrombrc]

    - Added recently_modified page to link to from the recent changes
      portlet.
      [ender]

    - Added state coloring in recent changes portlet and search results.
      [ender]

    - Total rewrite of portlet HTML and CSS. Will keep backwards compatibility
      until Plone 2.5 is released, though. The old div-based layout is
      deprecated in favor of a more light-weight markup using definition lists
      and allowing interesting skinning variations - round corners using CSS,
      for example. It also has bigger click areas, making it easier to navigate
      the portlets.
      [limi]

    - Changed dropdowns slightly, now the activated/deactivated class is set
      on the dl, not on the dd. When javascript is disabled, the dropdowns
      don't have an arrow anymore.
      [fschulze]

    - Simplified collapsibles, this involves new markup. This fixes #4035 -
      "Collapsible fieldsets take up too much space".
      http://dev.plone.org/plone/ticket/4035
      [fschulze]

    - Fixed PloneFolder.manage_delObjects() so it returns to the ZMI.
      Thanks to George Geller.
      [stefan]

    - Moved some interfaces to CMFDynamicViewFTI
      [tiran]

    - Removed plone prefix from stylesheets, only ploneCustom.css is kept.
      [fschulze]

    - Refactored the dropdown menu. It's using css classes for styling of
      visibility. This involves new markup for the menus.
      Fixes #2793 - ADD ITEM MENU cuts some entries.
      http://dev.plone.org/plone/ticket/2793
      [fschulze]

    - Tiny change to the nav tree code in PloneTool.py so the nav tree won't
      barf when there is a Z3-style view class in the acquisition hierarchy
      [rafrombrc]

    - Some i18n markup corrections after loginageddon and one metadata file
      in the wrong place, fixed #4197.
      http://dev.plone.org/plone/ticket/4197
      [hannosch]

    - Loginageddon!  Moved login, logout, and registration-related forms
      and scripts to the new plone_login skin.  Converted login forms and
      scripts to formcontroller forms and scripts.  Moved cookie testing
      and related javascript from login_form into login.js.  Made the
      cookie test messages internationalizable.  Made login sequence fail
      more gracefully when cookies are disabled.  Added nice error
      messages that explain why a login failed (e.g. no login name, no
      password, and (optionally) login name not found).  The login name
      not found test can be enabled/disabled via a new site_property,
      verify_login_name. Fixes 2408, 2458, 2250, and 3335.
      http://dev.plone.org/plone/ticket/2250
      http://dev.plone.org/plone/ticket/2408
      http://dev.plone.org/plone/ticket/2458
      http://dev.plone.org/plone/ticket/3335
      [geoffd]

    - Fixed #3018 - no duplicate id="portal-footer".
      http://dev.plone.org/plone/ticket/3018
      [hannosch]

    - Added filtering of tests to ECMAScript Unit Tests.
      [fschulze]

    - Add cssQuery.js to portal_javascripts when installing or migrating.
      [fschulze]

    - Moved 3rd party ecma scripts like sarissa, livesearch, ecmaunit and
      vcXMLRPC to plone_3rdParty. 3rd party code will be included by an
      svn:external rule soon.
      [tiran]

    - Reactivated alternate font size stylesheets.
      [fschulze]

    - Added some missing i18n markup. Fixed ZChecker error regarding '>'
      [hannosch]

    - Fixed migrations of older instances caused by the ResourceRegistries
      refactoring. If you updated and migrated while this was still broken,
      then you might have to force a migration from alpha2 or even alpha1.
      [fschulze]

    - Added framework for ECMAScript Unit Tests.
      [fschulze]

    - Partially fixed #4077 and #3535 accesskeys are properly definied now, but
      still need to be changed to numeric values.
      http://dev.plone.org/plone/ticket/3535
      http://dev.plone.org/plone/ticket/4077
      [hannosch]

    - Fixed #2414 all literal msgid's converted to non-literal.
      http://dev.plone.org/plone/ticket/2414
      [hannosch]

    - Merged plip83-kupu-integration r7083:7084 into 2.1 branch.
      [stefan]

    - Fixed #1382 - Redirection after login has been changed. Original behavior
      is to strip any query string passed before redirecting. Now, if query
      string exists (such as when coming from discussion_reply_form.pt), don't
      strip it off.
      http://dev.plone.org/plone/ticket/1382
      [briang]

    - Fixed #2756 - portlet_calendar localization is working now. had to
      introduce a new method on the calendar_tool to get the correct daynumbers.
      http://dev.plone.org/plone/ticket/2756
      [hannosch]

    - Fixed #3365 calendar_slot.pt has been moved to
      plone_templates/calendar_macros.pt and cleaned up.
      http://dev.plone.org/plone/ticket/3365
      [hannosch]

    - Fixed #4136 - you couldn't pick january or the first of a month with the
      js date picker, reflected changes in the tests.
      http://dev.plone.org/plone/ticket/4136
      [hannosch]

    - Fixed #3256 - Plone Config -> Add/Remove Products: Added
      "product filesystem version" in the message displayed for products that
      need updating.
      http://dev.plone.org/plone/ticket/3256
      [briang]

    - Fixed #4164 the getIcon and getTypeInfo calls were no longer needed.
      http://dev.plone.org/plone/ticket/4164
      [alecm]

    - Fixed #4055 by returning an empty list in getAddableTypesInMenu if the
      View permission is not available.
      http://dev.plone.org/plone/ticket/4055
      [alecm]

    - Fixed #4114 by adding new criteria to the news and events topics.
      http://dev.plone.org/plone/ticket/4114
      [alecm]

    - Fixed #4149 - incorrect tal:define for locked items in the byline.
      Thanks to Raphael Ritz for the fix.
      http://dev.plone.org/plone/ticket/4149
      [optilude]

    - Removed review_state='published' from the query for author page and
      navigationLocalRelated. Catalog deals with permissions already.
      http://dev.plone.org/plone/ticket/2304
      [ender]

    - Fixed #3714. Use ACTUAL_URL to skip to content.
      http://dev.plone.org/plone/ticket/3714
      [ender] [neaj]

    - Fixed #4137 by introducing a keyword argument 'show_inactive'to
      CatalogTool.searchResults and queryCatalog which disables expiry
      filtering.  Also granted the 'Access inactive portal contents' permission
      to Owner in migration, and made getFolderContents to pass the
      'show_inactive' parameter when the current user has that permission on the
      relevant folder.
      http://dev.plone.org/plone/ticket/4137
      [alecm]

    - Introduced a Zope 2.8-style transaction module. Plone code should now use
      'from Products.CMFPlone import transaction' which will work in Zope 2.7
      and Zope 2.8.
      [stefan]

    - Moved transaction_note, base_hasattr, safe_hasattr, and safe_callable
      to the utils module. Got rid of AT-style shasattr. Fixed safe_callable
      and made sure we use our version of safe_callable throughout.
      [stefan]

    - Fixed #3410 by declaring enumConfliglets public. The method does its own
      security checks for each configlet action.
      http://dev.plone.org/plone/ticket/3410
      [alecm]

    - Fixed index_html hack to return 404 for requests other than
      (PUT, HEAD, GET, POST).
      [sidnei]

    - Updated "my folder" action to point straight to folder, not to
      folder_contents
      [optilude]

    - Changed 'batch' action which was previously hidden by a condition in
      global_contentmenus to use a pair of actions, batch and nobatch, with
      mutually exclusive conditions. This effectively creates a toggle, which
      is much more sensible than having to click the 'view' tab to get back.
      [optilude]

    - Fixed #3688 and added a test. Also added a test to ensure that
      portal_factory respects PLIP 16 local role inheritance.
      http://dev.plone.org/plone/ticket/3688
      [geoffd]

    - Fixing markup to make zchecker happy and changed table summaries to use
      non-literal msgids, plus some minor i18n changes.
      [hannosch]

    - Fixing #4106 - arrow is in wrong direction in breadcrumbs when using RTL
      sites. When using mixed RTL and LTR content, the order is jumbled, though
      - not sure if this is common in those languages.
      http://dev.plone.org/plone/ticket/4106
      [limi]

    - Fixed #4089 - fix some i18n markup.
      http://dev.plone.org/plone/ticket/4089
      [hannosch]

    - Fixed #2659 - using patch by fschulze.
      http://dev.plone.org/plone/ticket/2659
      [alecm]

    - Fixed #4049 - the template showing the discussion threads at the bottom of
      an item's view template now has a more sensible check to make sure it
      picks the correct view template.
      http://dev.plone.org/plone/ticket/4049
      [optilude]

    - Fixed #3279 integrate new jscalendar 1.0.
      http://dev.plone.org/plone/ticket/3279
      [hannosch]

    - Overrode listTypeInfo from CMFCore.TypesTool.  The original method was
      doing security checks on the TypeInformation objects themselves in
      addtion to the isConstructionAllowed test.  This was very expensive and
      only useful if someone had set custom security restrictions on some
      TypeInformation objects in the types tool through the ZMI.  I cannot see
      a reasonable reason for someone to do such a thing.  Also, removed a
      check for null TypeInfo.getId(), as this will never happen, if it
      does it's a bug in and of itself and shouldn't be ignored.  Also,
      changed the check shich ensures that our objectValues() are TypeInfoish
      to use the clear and sane interface.isImplementedBy(obj) instead of the
      getattr(aq_base(type),'_isTypeInformation',0) it was using before.
      [alecm]

    - Fix browserDefault() in PloneTool so that images and files work, and there
      are less wtf moments. Look at

      http://plone.org/documentation/manual/plone-developer-reference/
        specific-areas/content-types/zope-to-browser

      for details on how the implementation works.

    - Make object paste button act on parent folder for folderish default
      pages.
      [alecm]

    - Fixed folder_contents listing table in RTL stylesheet (#4155).
      http://dev.plone.org/plone/ticket/4155
      [andrewb]

   Alpha2 - Released May 25, 2005

    - Fixed the way newsitem_view.pt tests for the (optional) image thumbnail.
      [tiran]

    - Disabled HTTP compression for .css and .js files by default. You can turn
      it on by editing skins/plone_scripts/enableHTTPCompression.py.
      [stefan]

    - urlquote the external_edit path to make exteranl editor work with
      Chinese id better
      [panjunyong]

    - Fixed some syndication breakages, and added unit tests for
      portal_syndication.
      [alecm]

    - Fixed #4081 changed 'Plone Setup' to 'Site Setup'.
      http://dev.plone.org/plone/ticket/4081
      [limi] [alecm]

    - Fixed #2850 added on-error handler to portlet_fetcher, currently provides
      no traceback as tracebacks are not accessible from untrusted code.
      http://dev.plone.org/plone/ticket/2850
      [alecm]

    - Fixed #2586 changed MembershipTool.getCandidateLocalRoles() to use
      member.getRolesInContext(obj) instead of member.getRoles(), and to use
      obj.valid_roles() instead of MembershipTool.getPortalRoles(). This
      allows loal managers to assign any role, and allows all managers to
      assign roles that exist only locally and not at the plone root. A side-
      effect is that roles defined in the zope root and other folders beneath
      the portal root will be available as well, just as they are in the ZMI.
      http://dev.plone.org/plone/ticket/2586
      [alecm]

    - Merged PLIP 98 - Scripted Translation Service Interface. This adds a
      'translation_service' tool to Plone which replaces the not-quite-sane
      methods in CMFPlone.utils. UnicodeDecodeErrors should now crop up significantly
      less often.
      [longsleep] [stefan]

    - Fixed #3267 removed invalid transition validity test using the fix by
      blueszhao in the issue.
      http://dev.plone.org/plone/ticket/3267
      [alecm]

    - Applied #4052 titleToNormalizedId (normalizeString) improvement. Object
      id from title generation should now work with most accented characters.
      It is possible to define custom normalizations in UnicodeNormalizer.py.
      http://dev.plone.org/plone/ticket/4052
      [naro]

    - Added styles that make the editing widgets look more like their view
      counterparts.
      [limi]

    - Make portlet_favorites work again and use the catalog like everything
      else. Also, use the addable types restrictions in users' Favorites
      folders.
      [alecm]

    - Fixed an obvious issue at global_defines when there's no portal_tabs
      actions.
      [deo]

    - Made external editing a user preference. It defaults to the setting in the
      memberdata tool. Migrations should work as well.
      [ender]

    - Showed icon in byline to change ownership.
      [ender]

    - Added jscript that hides traditional add items pull-down in
      folder_contents.
      [ender]

    - Major refactoring of the CSS, removed all the old navtree classes,
      made most of the templates use the new auto-generated 'contenttype-*'
      classes, and lots of other CSS fixes and tweaks.
      Described the pitfalls for Internet Explorer
      "here":http://plone.org/documentation/how-to/flickering-background-images-internet-explorer
      [limi]

    - Disabled 'Add to favorites' action until favorites are refactored
      in future plone versions.
      [ender]

    - Modified labels in personal bar. Removed 'my this' and 'my that'.
      It's already a personal bar.
      [ender]

    - Renamed titleToNormalizedId to the variation prefered by limi
      normalizeString()
      [alecm]

    - Fixed #4062 - made history_form show true causes for an empty page, rather
      than always assuming that the error is due to missing Historical interface
      http://dev.plone.org/plone/ticket/4062
      [alecm]

    - Added automatically generated classes for content types. You can now
      always get a class "contenttype-news-item" for every content type
      installed. It is normalized according to the same rules as IDs.
      [limi]

    - Replaced registered_notify_template and mail_password_template
      DTMLs with page templates. See #3483.
      http://dev.plone.org/plone/ticket/3483
      [dpunktnpunkt]

    - More spring cleaning: Removed the implicit removal of underlining links -
      Plone now specifies explicitly when it wants the link to not have an
      underline, and defaults to having it, like the good HTML citizen it is.
      Some products may get underlines on links that didn't have them before,
      but this should be trivial to fix, and is worth it in the long run.
      [limi]

    - Finally removed all implicit margins from Plone's input elements - if
      this leads to some slight disturbances in the force (ie. some of your
      form elements have explicit margins added to compensate for the old
      behaviour), I apologize - but this has been around since Plone 1.0, and
      is just very confusing when you use the form elements. Should be easy
      to adjust in your Product - just remove the margins you added to the
      input tags.
      [limi]

    - The tag rendering the description attribute is left out if there's no
      description, it also uses a paragraph tag instead of a div now.
      Resolves #3841.
      http://dev.plone.org/plone/ticket/3841
      [limi]

    - Added icons for feed:// and webcal:// links.
      [limi] [elvix]

    - Fixed #2844 - made WorkflowTool.getTransitionsFor return the action_url.
      This is not currently used for the content menu, but it does allow
      developers to access this information for tighter control over transitions
      for custom workflows. Added new testWorkflowToool.py with one lonely test.
      http://dev.plone.org/plone/ticket/2844
      [alecm]

    - Fixed #2867 put the list reversal in content_status_history in the proper
      place.
      http://dev.plone.org/plone/ticket/2867
      [alecm]

    - Fixed #2416 by updating document_byline to use the portal script. Changed
      the isExpired script to prefer the DC Metadata accessor 'ExpirationDate',
      but fall back on 'expires'. Also, it now uses safe_callable to determine
      whether we have an accessor or catalog metadata, rather than strange
      looking exception handling.
      http://dev.plone.org/plone/ticket/2416
      [alecm]

    - Changed the bogus 'ExipresDate' metadata from CMFCore to the DC
      'ExpirationDate' during migration.
      [alecm]

    - Added safe_callable method to __init__.py.  This is acquisition and
      ConfilctError safe (it uses shasattr), and should be used in place of
      callable() when possible.
      [alecm]

    - Add 'shasattr' from Archetypes.utils to __init__.py, make the existing
      'base_hasattr' a wrapper around this safer more flexible method.
      Please use this in python scripts and elsewhere in place of 'hasattr'
      which has serious potential issues.  Can be imported with
      'from Products.CMFPlone import shasattr'.
      [alecm]

    - Fix livesearch_reply and queryCatalog so that they quote parentheses.
      Otherwise a parse error is thrown. Fixes #3067 the other listed characters
      from the Silva bug report don't appear to cause problems.  Also, apply
      quote_logic if enabled to Title and Description text searches, not just
      SearchableText by default.
      http://dev.plone.org/plone/ticket/3067
      [alecm]

    - Made the livesearch_reply query a little less strange.  It used to turn
      'my dumb query' into 'my* and dumb* and query*' which is strange, now it
      just does 'my AND dumb AND query*'.  Also, the more link was just doing
      'my+dumb+query', which results in an entirely different set of results
      than shown in the dropdown, now it uses the same query as the dropdown.
      [alecm]

    - Use plone_utils.getUserFriendlyTypes() to do type restriction on
      LiveSearch just like everywhere else.
      [alecm]

    - Remove permission check in search_form, there's no reason to disallow
      review_state seraches to users that are not granted 'Review portal
      contents' on the portal root.  The catalog enforces 'View' security
      just fine. Resolves #2175.
      http://dev.plone.org/plone/ticket/2175
      [alecm]

    - PloneTool._makeTransactionNote() now uses the site encoding not UTF-8.
      [alecm]

    - Made folder_cut, folder_copy, folder_paste, and folder_position redirect
      to the originating template not hardcoded folder_contents.
      [alecm]

    - Fixed #850: Allow discussions to be closed.  I changed
      viewThreadsAtBottom to list existing discussion items even if
      discussion is disabled.  This requires our own
      portal_discussion.getDiscussionFor, because CMFDefault's raises
      DiscussionNotAllowed on this get operation.

      I also added a check for
      portal_discussion.isDiscussionAllowedFor in validate_talkback
      because, funnily enough, DiscussionNotAllowed isn't raised on
      createReply in DiscussionItem when it's turned off.
      http://dev.plone.org/plone/ticket/850
      [dpunktnpunkt]

    - Added a getGroupInfo() public method to the portal_groups tool, like
      getMemberInfo() in portal_membership tool.
      [gerry_kirk]

    - Made the navTree breadcrumbs and folder based portal tabs use the new,
      typesUseViewActionInListings property to determine the appropriate url.
      Also, added some extra unit tests for the above PloneTool methods.
      This and the previous entry should resolve issues #928 and #2373.
      http://dev.plone.org/plone/ticket/928
      http://dev.plone.org/plone/ticket/2373
      [alecm]

    - Added a new typesUseViewActionInListings property in site_properties
      which can be used for types whose immediate view is not desirable to
      link to from folder_contents or folder_listing (currently Image and
      File). Also, typesLinkToFolderContentsInFC is no longer used, and
      listing templates have been simplified a bit.
      [alecm]

    - Gave a title to the Favorites folder.
      [alecm]

    - Refactored the way portal discussions are displayed. They are now shown
      in an expanded way so no more clicking is needed to read the entire
      discussion.
      [ender]

    - Added methods for retrieving version tuples to utils module (FS
      version only) and to MigrationTool (both FS and instance versions)
      [rafrombrc]

    - Added charset to the Content-type header when use RSS to fixed some
      encoding problem.
      [panjunyong]

    - Added [duncanb]'s update for bug #3294. Tables no longer need an id
      attribute to be sorted.
      http://dev.plone.org/plone/ticket/3294
      [elvix]

    - Added fix for bug #4027. feed:// and webcal:// links now get special
      css-classes so that they may be styled appropriately.
      http://dev.plone.org/plone/ticket/4027
      [elvix]

    - Changed the 2.1 migrations so that they make sure the MemberDataTool is
      the default (i.e. not CMFMember) before trying to manipulate the
      properties on the tool, since a) modifying the properties on CMFMember's
      MemberDataContainer doesn't accomplish anything and b) property
      name conflicts were causing the Plone migrations to fail in sites
      w/ CMFMember installed
      [rafrombrc]

    - Changed the global_defines attribute 'isFolder' to 'isFolderish' - it
      was only used in one location in the Collective projects I checked, and
      one location in Plone itself - and didn't really test the right thing.
      It was also expensive. If you have a third-party product that was using
      'isFolder' for anything, you should update your code.
      Removed redundant check in content_status_history as a result.
      [limi]

    - Updated 'ownership_form' to not display the subobjects checkbox if the
      item is not folderish.
      [limi]

    - Added rel="nofollow" attribute to calendar links. Should ultimately
      be restricted by a year range, but this is a quick workaround.
      Closes http://plone.org/development/teams/ui/tasks/89
      [limi]

    - Added support for searching for members who have NOT logged in
      since the specified last_login_time.
      [rafrombrc]

    - Added Description, Location, Language and Home Page to Author page.
      [limi]

    - Fixed permissions and conditions on folder 'cut' and 'copy' actions
      previously they used 'View management screens' and 'Modify portal
      contents'. Removed action creation from setup/ConfigurationMethods.py for
      these and change_state.
      [alecm]

    - Fixed #2836 - Review portal contents or Modify portal contents is
      sufficient to show the change_state action.
      http://dev.plone.org/plone/ticket/2836
      [alecm]

    - Changed member_search_form.pt so that it submits last_login_time as
      a plain DateTime object rather than a catalog style query dictionary.
      [rafrombrc]

    - Exposing 'language', 'home_page', 'location' and 'description' in
      getMemberInfo() in the MembershipTool. These are used in author.pt.
      [limi]

    - Added ploneGenerated.css for programmatically generated classes, and
      ploneMember.css for logged in users (for state coloring etc).
      Cleaned up the configuration a bit (added media declarations), updated
      tests.
      [limi]

    - Changed 'news' and 'Members' portal tabs migration so that it disables,
      rather than deletes the actions.  No need to be destructive.
      [alecm]

    - Added new portal_memberdata properties 'home_page', 'language',
      'location', 'description' (text) at limi's request.
      [alecm]

    - Fixed #3095 - You can now use actions to create tabs for folders not at
      the portal root and the tab highlighting will work correctly. This is done
      by comparing the current object path to the actions url (i.e. the id of
      the action no longer has to be related to the resulting url).
      http://dev.plone.org/plone/ticket/3095
      [alecm]

    - Fixed #3681 - No longer allow to add content with ids of skin scripts.
      http://dev.plone.org/plone/ticket/3681
      [whit537]

    - Fixed #3999 - check_id now gives better error messages.
      http://dev.plone.org/plone/ticket/3999
      [whit537]

    - Fixed #1987 - 'batch' mode now enabled whenever the List folder contents
      property is available and one or more of the modification permissions is
      available (Delete, Copy, Add, Modify). These checks apply to the current
      object if it is folderish and not set as the Default Page for its parent;
      otherwise, the checks are made on the parent.
      http://dev.plone.org/plone/ticket/1987
      [alecm]

    - Fixed #2912 - "Format" renamed to "MIME type" in metadata form to avoid
      confusion with the text format selector.
      http://dev.plone.org/plone/ticket/2912
      [limi]

    - Fixed #3938 - duplicate class definitions for .even and .odd.
      http://dev.plone.org/plone/ticket/3938
      [limi]

    - Manually merged Duncan's plip24-form-unload-branch.
      Plone will now present a warning message if the user tries to navigate
      away from a page with a changed form.
      [duncanb][elvix]

    - Changed encoding to utf-8 on javascript files to stay in sync with the
      rest of Plone.
      [elvix]

    - Enabled the "display" menu on the portal root. You can set the templates
      to be available there using the property "selectable_views" at the root
      portal object. Also renamed the front page from index_html to front-page
      and set is as the default page during portal creation, in order to make
      the "display" menu work as expected immediately after portal creation.
      [optilude]

    - Made sure PloneTool.changeOwnershipOf() works recursively.
      [stefan]

    - Fixed user and group name/id fuzzyness in PloneTool.changeOwnershipOf()
      and folder_localrole_form.pt.
      [stefan]

    - Reworked prefs_users_overview to use CMFForumController and to
      simplify prefs_user_manage.cpy.
      [bmh]

    - Fixed #3931 - add 'more ...' link to events portlet, also added new events
      tab/folder and topic to match the news folder/tab and topic.
      http://dev.plone.org/plone/ticket/3931
      [lucas]

    - Fixed #3752 - return rss search results in effective date order
      (reversed), unless another order is explicitly given.
      http://dev.plone.org/plone/ticket/3752
      [alecm]

    - Changed portlet_news.pt and news_listing.pt to do the right
      thing if the 'news' folder at the root of the site isn't
      there.
      [rafrombrc]

    - Added some argument type sanity checking to queryCatalog.py;
      it was failing on valid queries b/c it was making assumptions
      about the types that it was receiving.
      [rafrombrc]

    - Add charset info for ZMI pages like addSite.zpt and addPropertySheet.zpt
      for better Chinese support.
      [panjunyong]

    - Fixed #3901 - applied the PloneTool.py patch by F Bennett (bierce), which
      shows full listing of inherited roles.
      http://dev.plone.org/plone/ticket/3901
      [alecm]

    - Fixed #3819/ - applied the utils.py patch provided by gkirk.
      http://dev.plone.org/plone/ticket/3819
      [rafrombrc]

    - Fixed prefs_user_details to only display user roles and not
      roles inherited via groups since those can't be edited on this
      form.
      [bmh]

    - Fixed #3848/ - changed prefs_error_log_update.py to match the button
      submit values on prefs_error_log_form.
      http://dev.plone.org/plone/ticket/3848
      [rafrombrc]

    - Minimally reworked user/group control panel pages to plone2.X
      style fixing #2204 and possibly others.
      http://dev.plone.org/plone/ticket/2204
      [bmh]

    - Updated all references to CSSRegistry to the new, renamed,
      ResourceRegistries. Migrations, tests. Instead of name-confusion, there is
      now the product ResourceRegistries containing the two tools CSSRegistry
      and JSregistry.
      [elvix]

    - Fixed #3835 - Changed .metadata file of prefs_user_manage.cpy script to
      redirect instead of traverse on success.
      http://dev.plone.org/plone/ticket/3835
      [gkirk]

    - Fixed #3903 - Removed hardcoded references to logo.jpg in favor of the
      logoName variable defined in base_properties.
      http://dev.plone.org/plone/ticket/3903
      [bmh]

    - Fixed #3544 - Use password_confirm as the name of the password
      confirmation field so it doesn't show up in error logs.
      http://dev.plone.org/plone/ticket/3544
      [bmh]

    - Fixed #3811 - Start and end times of same-day events now respect AM/PM
      settings (event_view).
      http://dev.plone.org/plone/ticket/3811
      [naro]

    - Made folder actions (cut, copy, rename, delete, publish) give nice
      message instead of error when the selected item is no longer available.
      Fixes issue #3911.
      http://dev.plone.org/plone/ticket/3911
      [alecm]

    - Made sortable_title use the site-encoding to store the final value (not
      direct unicode). Also, made sortObjects.py case insensitive.
      [alecm]

    - Fixed #3866 - Improved performance of sortObjects helper script by a
      factor of 3.
      http://dev.plone.org/plone/ticket/3866
      [axa]

    - Fixed #2791 - Timestamps in recently_published and folder_contents now use
      the configured long format.
      http://dev.plone.org/plone/ticket/2791
      [naro]

    - Add a hook to call a method or script 'getCustomNavQuery' to createNavTree
      and createTopLevelTabs.  This method should return a dict to augment the
      catalog query (i.e. require specific workflow state or custom property),
      the parameters will not override any of the default parameters.
      [alecm]

    - Add a disable_folder_sections to site_properties so that people who don't
      want to use top-level folders for tabs can just use the actions in the
      original manner.
      [alecm]

    - Made the default news folder view a Topic at limi's request.  Made
      changes to the way folderish default documents are handled to make the
      UI for this sensible.  Folderish default pages now act entirely
      non-folderish as far as global_contentmenu is concerned.  If such an object
      wants to have a batch view, add buttons, view control, etc. it must
      implement them as object actions (like the sub-topic form).  Also, fixed
      a bug which caused folderish types that had no preset template views
      to not show their selectable default view menu, leaving a non-working
      display menu.
      [alecm]

    - Add support for the 'pghandler' argument added in Zope 2.8
      (though we don't officially support Zope 2.8 yet).
      [sidnei]

    - Changed the order of the documentActions in the default view templates.
      If you have customized your view templates, you need to move these
      above the headline tag. Sorry about the inconvenience, but the existing
      positioning was triggering too many browser bugs. This keeps it simple.
      Look at 'document_view' if you need an example.
      [limi]

    - Publishing the default document in a folder now publishes the folder as
      well, if possible (and similarly, making the default page visible or
      private will make the folder visible or private as well)
      [optilude]

    - content_status_history (Change state button from folder_contents or
      'advanced' item in state drop-down) is now more consistent, showing
      the items being affected in both cases, and permits the publishing of
      folder contents along with a folder no matter which method is used.
      [optilude]

    - Default content types are now in portal_factory
      [optilude]

    - registered_notify_template now honours the 'email' parameter passed in
      instead of using 'member.email', and in the process no longer breaks
      CMFMember
      [optilude]

    - Merged (some variation of) madduck's member area type selection branch.
      This allows to configure the portal type used for home folders in the
      membership tool.
      [stefan] [madduck]

    - Fixed non-ASCII character issue in sortable_title method.
      [alecm]

    - Fixed up permissions on new cut/copy/delete actions.
      [bmh]

    - Fixed #3384 by catching CopyError so users don't get dumped into the ZMI.
      http://dev.plone.org/plone/ticket/3384
      [bmh]

    - Made sortable_title do useful numerical sorting, and truncate values
      longer than 30 chars to prevent bloat.
      [alecm]

    - is_folderish metadata added. It contains bool(isPrincipiaFolderish)
      [tiran]

    - sortable_title FieldIndex added by popular demand.
      [alecm]

    - Made folder_contents useful for viewing and altering non-local content
      (try folder_contents?path=/).  Changed folder_delete, folder_publish,
      and folder_rename to work with paths instead of ids (and altered
      corresponding forms).  Added new method to workflow tool to get workflow
      transitions for objects given by path rather than id.  Made the
      aforementioned scripts redrect to the originating form instead of
      hard-coded folder_contents (uses request variable 'orig_template').
      Removed copy, cut, paste buttons when the folder_contents view isn't
      local, as those actions won't work properly in that circumstance (copy
      can probably be implemented, but will need to use some OFS internals).
      Added tests for folder_delete, folder_publish, and folder_rename. These
      changes fix issue #216.
      http://dev.plone.org/plone/ticket/216
      [alecm]

    - Added Topics to the default NavTree listing.
      [alecm]

    - Made migration work from 2.0 svn, and not fail if SUPPRESS_ATCT_INSTALLATION
      is set.
      [alecm]

    - Added RTL support (separate CSS is included for this, is only activated
      when the language is an RTL language).
      [limi] [mohsen]

    - Added Mobile device support (handheld CSS profile).
      [limi]

    - Fixed #2959 with a minor change to check_id to account for portal_factory
      weirdness. Also required an update to ATCT to do proper id checking on
      auto-rename.
      http://dev.plone.org/plone/ticket/2959
      [alecm]

    - Re-did the fix for disappearing text in Internet Explorer, added special
      class 'visualIEFloatFix' that can be used for these, also adding a how-to
      with examples to plone.org.
      [limi]

    - Added a reference rendering document to show all the user interface elements
      to ease cross-browser testing of third-party skins. Template name is
      'test_rendering'.
      [limi]

    - Added ECMAUnit JavaScript testing framework to skins in anticipation of
      a real testSuite for the Plone JavaScripts.
      Pasted the license and credit files into the top of the library to keep
      them contained.
      [elvix]

    - Made 'title' attribute on add-new-item drop down items display item
      description, as per bug #2938.
      http://dev.plone.org/plone/ticket/2938
      [optilude]

    - Introduced the ExtensibleIndexableObjectWrapper. It's a wrapper based on
      the IndexableObjectWrapper for the catalog tool that can easily be
      extented by registering methods.
      [tiran]

    - Renamed ugly 'PloneUtilities.py' module to 'utils.py'. The former is
      still around but issues a deprecation warning.
      [stefan]

    - Fixed bug #3647 to allow removing all roles from a group.
      http://dev.plone.org/plone/ticket/3647
      [optilude]

    - Fixed bug #3386. Modified folder_rename_form.pt to reflect user
      authorisations on each item.
      http://dev.plone.org/plone/ticket/3386
      [davconvent]

    - Implemented fix for #3522 to add default groups "Reviewers" and
      "Administrators" to Plone, with the appropriate roles.
      http://dev.plone.org/plone/ticket/3522
      [dpunktnpunkt] [optilude]

    - Made PloneFolder.moveObjectsByDelta not throw an error when passed a non
      contentish object id (apparently this happens during some migrations).
      Fixes #3959. Requires a small fix in AT done on 1.3 branch.
      http://dev.plone.org/plone/ticket/3959
      [alecm]

    - Fixed computeRoleMap.py so that it stores the role information by
      user/group id not name, as a user and group may have the same name and
      it would be wrong to combine them.  This is related to issue #3711 which
      is itself a GRUF issue fixed in GRUF svn. Also implemented a faster sort
      algorithm in the above script.
      http://dev.plone.org/plone/ticket/3711
      [alecm]

    - Made prev/next links in calendar portlet respect current query parameters.
      Fixes bug #3949.
      http://dev.plone.org/plone/ticket/3949
      [alecm]

    - Added id="breadcrumbs-you-are-here" to the <span> tag where "you are
      here" is printed in global_pathbar.pt. It is now possible to remove
      cleanly that message, applying a CSS rule.
      [davconvent]

    - Removed obsolete formtooltips member property.
      [stefan]

    - Made all portal_status_messages with dynamic parts translatable.
      http://dev.plone.org/plone/ticket/2532
      [dpunktnpunkt]

    - Included code from the CatalogOptimizer product, i.e. PLIP 89. This
      gives us DateIndexes and DateRangeIndexes instead of slow FieldIndexes.
      [stefan]

    - Fixed bug in logged_in.py where login_password would not have been
      triggered even when appropriate on first login; fixed related issue in
      login_password.pt.
      [rafrombrc]

    - Fixed problem where navtree was duplicate highlighting when user
      viewed home page, where folder default pages were showing up when
      'showAllParents' is True, general default page navtree fixes.
      [rafrombrc]

    - Changed content_status_history to work w/ the new catalog-based
      folder contents code.
      [rafrombrc]

    - Restored batchedFolderContents for backwards compatibility, and moved
      batching into the python script getFolderContents (which takes optional
      'batch' and 'b_size' parameters).  Marked batchedFolderContents and
      getFolderListingFolderContents as deprecated, both just call
      getFolderContents now.
      [alecm]

    - queryCatalog was altering the queries passed to it to filter out types.
      This is unnecessary; it should only filter when no explicit types list is
      passed.  Also, queryCatalog is uesful in places other than the search
      (folder_contents) where the filtering may be undesirable.  As a result
      the filtering is now optional and enabled by a parameter use_types_blacklist,
      which is used by default in search.pt and search_rss.dtml.
      [alecm]

    - Added unit tests for folder based portal tabs and catalog based
      breadcrumbs.  Fixed bug in portal tab ordering.
      [alecm]

    - Updated and enhanced the dependency checks to check for the right versions
      of Python, Zope and CMF.
      [tiran]

    - Merged PLIP 74 - Cut/copy/paste actions on objects + Batch mode. The
      'contents' tab is now removed, though folder_contents can be accessed
      via the 'batch' button. It's importance is greatly reduced, because the
      most common operations it was being used for (cut/copy/paste and object)
      are now available directly as actions on the object.
      [davconvent] [optilude]

    - Made sure migration catalogs the Members folder. This is required for the
      catalog-based navigation stuff.
      [stefan]

    - Merged PLIP 76 - author feedback. A new link appears when viewing content
      created by portal members, taking the viewer to an author profile page.
      This page permits logged in users to send feedback via email (without
      exposing the author's email address) using a feedback form. It also shows
      the most recent publications by this member.
      [VladDrac] [optilude]

    - Fixed link to CMF website on welcome page.
      [stefan]

    - Merged plip91-folder-based-sections r6405:HEAD into 2.1 branch.
      [stefan]

    - Implemented PLIP 91: Made sections (global tabs) render the top level
      folders in the portal root.  Removed existing actions for news and Members
      and added a news folder with default view set to news_listing.pt (formerly
      news.pt).  Added support for the property 'idsNotToList' from
      navtree_properties, so that the navtree and section tabs don't show the
      listed ids.  Added a catalog metadata column 'exclude_from_nav', so that
      when a boolean property of that name is set on an object it and it's
      children will be excluded from the navtree and section tabs.
      [alecm]

    - Do not display "Forgot your password?" when user doesn't have
      "Mail forgotten password" permission.  Added a security check to
      RegistrationTool.mailPassword().
      http://dev.plone.org/plone/ticket/3338
      [dpunktnpunkt]

    - Merged PLIP 75 - blacklisting of types. The types_not_searched property in
      site_properties can now be used to give a list of types which will be
      ignored for search purposes (via queryCatalog; the getUserFriendlyTypes()
      method in plone_utils can be used to get the same filtering elsewhere).
      [optilude] [jjmurre]

    - Add new method to PloneTool getOwnerId, which gets the id of the owner
      of an object.  It's protected by the view permission on the object, and
      used in ownership_form in place of Creator, which may no be the same as
      owner for AT types.  Also modified ownership_form to use form controller.
      http://dev.plone.org/plone/ticket/3662
      [alecm]

    - Set Title and description on member folders and personal folder.  Was
      broken due to permissions improvements in AT.
      [alecm]

    - Merged plip93-optimize-templates r6360:HEAD into 2.1 branch.
      [stefan]

    - Fixed #3779 - Removed worklist query from listFilteredActionsFor.
      http://dev.plone.org/plone/ticket/3779
      [alecm]

    - Removed useless check for duplicate actions from listFilteredActionsFor.
      Gives a big speed improvement thanks to Dieter.
      [alecm]

    - Minor refactoring of the calendar portlet to avoid unnecessary duplicate
      method calls.  Removed getBeginAndEndTimes.
      [alecm]

    - Replaced breadcrumbs implementation with a faster simpler one based on
      ExtendedPathIndex.
      [alecm]

    - Turned off DC MetaTags by default, added a global config to
      site_properties so that they can be reenabled if desired.
      [alecm]

    - Made the calendar portlet HTML output Not Suck. The code, however
      still does. ;)
      [limi]

    - Fixed #3924 - eradicated all string exceptions.
      http://dev.plone.org/plone/ticket/3924
      [alecm]

    - Fixed #3910 isValidEmail now uses the _checkEmail function from CMFDefault
      to avoid ValueErrors.
      http://dev.plone.org/plone/ticket/3910
      [alecm]

    - Added empty fill-slot="sub" to discussion_reply_form to get rid of
      the second, broken 'add comment' button showing up on that form
      for top level comments, fixed #3845.
      http://dev.plone.org/plone/ticket/3845
      [rafrombrc]

    - Moved retrieval of Zope system information out of
      plone_control_panel.pt and into proxied script getZopeInfo.py so
      that plone Managers who are not also Zope top-level Managers can
      view the page.
      [bmh]

    - Added installation of default CSS and JavaScripts.
      [elvix]

    - Added CSSRegistry and JSRegistry dependencies. All stylesheets and
      javascripts are now registered with these tools instead of hardlinked
      into header.pt.
      [elvix]

    - Cut the default Styleesheets and Javascripts into smaller pieces to be
      served up by the CSS- and JS-Registries
      [elvix] [limi]

    - Added showAllParents property to navtree_properties and to appropriate
      portal migration, added implementation to navtree code in PloneTool.
      [rafrombrc]

    - Because normalizeISO() only deals with Unicode strings
      titleToNormalizedId() must make sure to pass it only Unicode. Added a
      check and a conversion from the site's default encoding.
      [stefan]

    - Fixed UI task #21: renamed "Name" to "Login Name" in login form and
      portlet
      [mrtopf]

    - Fixed UI task #19: default homepage for new members is not created
      anymore by default
      [mrtopf]

    - Fixed UI task #5: Status message should show the name instead of
      title of a portal type on add. Now shows the title.
      [mrtopf]

    - Fixed UI task #79: removed "you are logged in" message
      [mrtopf]

    - Fixed UI task #73: added display of plone, zope and python version to
      the ControlPanel
      [mrtopf]

    - Merged plip81-BylineHistory r6154:HEAD into 2.1 branch. This adds
      workflow history to the document byline.
      [stefan] [ender] [limi]

    - Manually merged new css files from uiteam-plip85-componentized-css
      r6361:HEAD into 2.1 branch. These are not hooked up to anything just
      yet, but will be used by the CSSRegistry.
      [elvix]

    - Split plone_javascripts.js into small components in preparation of the
      JSRegistry tool.
      [elvix]

    - Merged uiteam-plip86-catalog-based-folder-listings r5865:HEAD into 2.1
      branch. Plone's folder_contents and folder_listing templates now use
      catalog results instead of traversal.
      [stefan] [alecm] [_ender_] [whit537]

    - Added macros to folder_contents that allow reuse of the entire content
      area, including the definition of the content list.  Added slots and
      variables that allow macro users to change the title of the page, the
      columns displayed, and the type of content filtering and sorting
      performed.
      [alecm]

    - Added slot to folder_listing that allows macro users to add custom
      bylines for specific types.  Also, added the ability to set a limit (in
      the request or containing template) on the number of items shown in a
      listing, along with a customizable link to see more contents which
      defaults to 'folder_contents'.
      [alecm]

    - Merged uiteam-plip77-78-content-menu-browser-default-refactoring
      r6317:HEAD into 2.1 branch.
      [tiran]

      PLIP 77: Constrain addable types on a per-folder basis
      - New menu item "settings" on "add new item" drop-down to select
        which items to display, and how.
      [optilude]

      PLIP 78: "Display" menu to select default view of a folder
      - Enable TemplateMixin and fix its UI (in ATContentTypes)
      - Add a "display" drop-down where these can be chosen
      - On folderish items, an option "select item" - shows browser, select
        default_page.
      [optilude] [davconvent]

    - Cleaned up listMetaTypes by moving the payload into PloneTool and
      cleaning up the code.
      [tiran]

    - Added PIL to dependencies to be able to close PLIP 82.
      [stefan]

    - Changed 'context.aq_explicit.getObjectPosition' to
      'context.aq_inner.aq_explicit.getObjectPosition' in
      getObjPositionInParent.py to guarantee that we don't acquire
      getObjectPosition.
      [rafrombrc]

    - Merged plip-80-navtree r6183:HEAD into 2.1 branch. This adds the new
      catalog-based navigation tree and sitemap. Plone now depends on the
      ExtendedPathIndex product.
      [stefan] [jladage] [tesdal] [elvix]

    - Merged plip79-RelatedItems r6128:HEAD into 2.1 branch. Adds a macro to
      display related items in all content templates.
      [stefan] [_ender_] [mrtopf]

    - Merged uiteam-plip73-sanitize-short-names r6113:HEAD into 2.1 branch.
      This removes "Allow editing of Short Names" from personal prefs and
      makes it a site-wide property.
      [stefan] [alecm]

    - Merged plip72-LiveSearch r6110:HEAD into 2.1 branch. Adds LiveSearch by
      ObjectRealms to the search box.
      [stefan] [_ender_] [mrtopf]

    - Merged plip71-full-screen-mode r6124:HEAD into 2.1 branch. This adds a
      document_action to enter full screen mode.
      [stefan] [arjen] [elvix]

    - Use 'structure' in sendto_template.pt. Email text doesn't need any
      transforms.
      [panjunyong]

    - Added some knobs to jscalendar:

      - show_hm: show hour and minute dropbox or not

      - show_jscalendar: show the jscalendar icon or not. If you hate the fat
        javascript, you can turn it off.

      - starting_year: starting year

      - ending_year: ending year

      - future_year: future years after this year

      - show_single_year: when year is fixed (min_year==max_year), sometimes
        we don't need to show the single year.
        [panjunyong]

    - Old popup calender (Plone 1.x) works again.
      [panjunyong]

    - Don't install SecureMailHost if already installed.
      [tiran]

    - Added 'SUPPRESS_ATCT_INSTALLATION' environment var check before ATCT
      installation. It can be set to 'YES' in order to suppress the
      installation of ATContentTypes at portal creation time for e.g.
      migration tests.
      [tiran]

    - Use images in plone_tableless/colophon.pt just like the one in
      plone_templates.
      [panjunyong]

    - Fixed ATContentTypes bug [ 1158950 ] ATTopic default view wrong.
      PloneUtils.browseDefault wasn't playing nice with folders and template
      mixin.
      [tiran]

   Alpha1 - Released March 12, 2005

    - No longer uncatalog the Members folder on installation so that the new
      NavTreePortlet (not included) works out of the box.
      [stefan]

    - Changed PloneTool.availableMIMETypes to use the MimetypesRegistry to
      return a list of mimetype names.
      [tiran]

    - Fixed discussion_reply.cpy to use
      portal_discussion.getDiscussionFor(obj)
      instead of accessing the talkback object directly.
      [tiran]

    - Now using CookedBody instead of EditableBody in news.pt
      [tiran]

    - Merged Plone 2.1-atct branch. Plone now uses and requires
      Archetypes 1.3 and ATContentTypes.
      [stefan]

    - Removed the debian directory.
      [stefan]

    - Slight text edits in content_status_history template to more
      accurately reflect the influence of the effective and expiration
      dates.
      [rafrombrc]

    - Added support for Firefox Live RSS Bookmark. RSS enabled objects
      will show the RSS button in firefox. Search results too.
      [batlogg]

    - Fixed wrong i18n output encoding when create member area. We must set
      correct 'content-type' header to make PTS work when call translate.
      [panjunyong]

    - Fixed PLIP16 integration to make it works with all content types, not
      limited to Plone Folder.
      [panjunyong]

    - Added a charset header in sendto_template to make it work with
      PlasslessTranslationService. Previous sento_template didn't work with
      Chinese at least.
      [panjunyong]

    - Members can be searched by group in folder_local_role and
      member_search_form now.
      [panjunyong]

    - Moved the setting of login_time and last_login_time out of the
      (not always reached) login_success.pt and login_password.pt templates
      and into the (always executed) logged_in.py script.
      [rafrombrc]

    - Permission settings were not being correctly copied to temp
      folder because we were using 'self' instead of 'intended_parent'
      for looking up permission roles, thus looking them in the factory
      tool instead of the target container.
      [sidnei]

    - Fixed a long-standing visual styling bug of the 'hr' element, it used
      to only work properly with regards to colors/size in IE, now it works
      in standards-compliant browsers too.
      [limi]

    - Added convenience ID for use in CSS - #portal-header - useful for background
      images in the portal header, for instance.
      [limi]

    - Removed deprecated generateId script. We use generateUniqueId.
      [stefan]

    - Added isRightToLeft utility Python Script which provides a fallback value if
      PTS is not installed or of the wrong version.
      [stefan]

    - Merged in RTL support - Plone now correctly flips all the graphic
      elements and CSS declarations when using a right-to-left language like
      Arabic or Hebrew.
      [limi]

    - Undid Jim's earlier change to the way the body tag is computed. It's
      now back to the original behaviour, with section-<section> class on
      the body tag.
      [limi]

    - Fixed several potentially unsafe uses of acl_users.getUserById().
      [stefan]

    - Intergrated PLIP16. It is now possible to stop acquisition of local roles
      in a Plone Folder and change the roles of already assigned users/groups.
      Many thanks to: ender, MrTopf, hazmat and pjgrizel.
      [jladage]

    - Plone now supports/requires GRUF 3.1.1. Thanks to pjgrizel for the patches.
      [jladage]

    - Fixed #3641 - validate_start_end_date chopped off the AM/PM value when
      saving Events.
      http://dev.plone.org/plone/ticket/3641
      [stefan]

    - Removed the dependency on Formulator as well as FormTool and NavigationTool.
      [stefan]

    - It was impossible to create an item named 'index_html' in the portal
      root or inside a folder via WebDAV. Added a functional doctest for it.
      [sidnei]

    - Removed headingFontBaseSize from base_properties and plone.css.dtml
      because it doesn't actually work and cost/benefit of implementation is too
      high.
      [whit537]

    - Added utility javascript "nodeContained" to check if a node is contained
      in another node
      [elvix]

    - Added Collapse/Expand-form-section javascript for future
      use. Usage described in plone_javascripts.js
      [elvix]

    - check_id now accepts an additional 'contained_by' argument, allowing to
      disambiguate the target folder in cases where using the acquisition
      parent would yield the wrong results.
      [gkirk]

    - Consolidated all monkey patches in the 'patches' sub-package.
      [stefan]

    - Changed CatalogTool.catalog_object() and CatalogTool.reindexObject() to
      support the new update_metadata protocol (Zope > 2.6.2). An optional
      'update_metadata' argument controls whether the object's metadata record
      is updated while cataloging. It defaults to yes.
      [stefan]

    - Plone now uses SecureMailHost instead of plain old MailHost.
      [tiran]

    - SearchableText, Title, and Description now use TextIndexNG2 if installed.
      All three indexes fall back to ZCTextIndex if the TextIndexNG2 product is
      not installed. Note that in Plone 2.0 Title and Description used to be
      plain TextIndexes.
      [ajung]

    - Plone now uses DateIndexes for created, modified, effective, and Date.
      Note that we do not yet use DateIndexes for expires (CEILING issues) and
      start/end dates of Events.
      [ajung]

    - toLocalizedTime() replaced toPortalTime(). However this is NOT the way it
      should be and will be revised.
      http://dev.plone.org/plone/ticket/2461
      [db] [batlogg]

    - getObjSize() now accepts second (optional) size argument to
      allow formatting of arbitrary sizes.
      [andym]


Plone 2.0.5 - Backed Up Willie - Released December 1, 2004

    - Allow migrations to and from release candidates to finish. This was
      borked in RC2.
      [stefan]

    - Fixed #3629 - Migration failed if 'Topic' portal type was missing or
      otherwise broken.
      http://dev.plone.org/plone/ticket/3629
      [stefan]

   RC2 - Released November 26, 2004

    - Fixed #3612 - listFilteredActionsFor of ActionsTool now ignores missing or
      broken action providers.
      http://dev.plone.org/plone/ticket/3612
      [stefan]

    - Fixed #3611 - Migration failed if the 'Folder' portal type did not have
      both 'edit' and 'local_roles' actions.
      http://dev.plone.org/plone/ticket/3611
      [stefan]

    - Restored overridablity of left_slots/right_slots in folders by reverting
      the patch applied to fix #3472.
      http://dev.plone.org/plone/ticket/3472
      [stefan]

   RC1 - Released November 22, 2004

    - Fixed it so the .error class no longer causes compression of items in
      forms.
      [limi]

    - Fixed #3601 - Cancel in password_form redirected to the wrong page.
      Thanks to Varun for the patch.
      http://dev.plone.org/plone/ticket/3601
      [stefan]

    - Fixed #3599 - Cancel in personalize_form redirected to the wrong page.
      Thanks to Varun for the patch.
      http://dev.plone.org/plone/ticket/3599
      [stefan]

    - Fixed #3577 - Interchanged 'Edit' and 'Sharing' tab on folder. Thanks to
      Vamsi for the patch.
      http://dev.plone.org/plone/ticket/3577
      [jladage]

    - Made prefs_error_log_form a tad safer in the face of weird upgrade issues.
      Also see #3435.
      http://dev.plone.org/plone/ticket/3435
      [stefan]

    - Changed localLongTimeFormat to '%Y-%m-%d %H:%M'. Note: there is no migration,
      only new sites will be affected.
      [stefan]

    - Fixed #3557 - Lines properties may still be lists if an old ZODB is
      upraded to newer Zopes. Catching such a case in migrations. Thanks to
      Xenru for the patch.
      http://dev.plone.org/plone/ticket/3557
      [stefan]

    - Fixed #2960 - The "Send this page to somebody" feature now uses the URL of
      the object including the view template. This avoids nasty login
      interactions when sending links to protected content.
      http://dev.plone.org/plone/ticket/2960
      [stefan] [sidnei]

    - Made the column style sheet only apply to Screen, not Print/Presentation/
      Handheld.
      [limi]

    - Massively simplified the print style sheet, should work much better in all
      browsers now.
      [limi]

    - Moved ploneCustom to be the last of the CSS declarations, so you can easily
      do Print/Presentation/Handheld customizations in the ploneCustom.css now.
      [limi]

    - Fixed Presentation stryle sheet to not show the site actions.
      [limi]

    - More Google tweaking. Factored out the page title to a separate
      script and switched the order of the elements.
      [limi] [tesdal]

    - Did a few things to improve the Google ranking of all Plone sites:
      Put all the style sheet declarations inside HTML comments, so Google
      doesn't try to interpret them as text, and removed the non-working
      meta links for author and copyright (scheduled for 2.1). Also
      changed the rel link for up to not show up if you are at the portal
      root.
      [limi]

    - Plone was not showing the correct language in the header for an
      object, it was always using the site default, even if you had specified
      language on an object. Fixed.
      **NOTE:** This is a change to main_template, so if you have customized,
      you will probably want to copy in lines 8-9 from the new main_template.
      [limi] [tesdal]

    - Caught additional IndexError/SyntaxError exceptions on
      isIDAutoGenerated.py to fix the case where a non-autogenerated-id
      starts with a valid portal_type name.
      [deo]

    - Added i18n markup to global_siteactions.pt. Now those 'Small, Normal,
      Large Text' site actions can be translated.
      [deo]

    - Changed imagePatch to use hasattr(aq_base(ob)...) and then
      getattr(ob, ...) in order to fix a problem with Archetypes
      ImageField which have a ComputedAttribute for
      title/alt. ComputedAttributes don't get computed on the
      absence of an acquisition wrapper.
      [sidnei]

    - Fixed #3542 - queryCatalog script ignored 'sort_limit' argument. Thanks to
      kaib for the patch!
      http://dev.plone.org/plone/ticket/3542
      [stefan]

    - Fixed #3541 - folder rename gave wrong error message. Thanks to Varun for
      the patch!
      http://dev.plone.org/plone/ticket/3541
      [stefan]

    - Greatly improved the handling of DateTimeErrors in event_edit_form
      and metadata_edit_form + validators. No more traceback on Feb 31!
      [stefan]

    - Fixed #2982 - the CMF does not allow to register with a user name that
      equals the name of a content object on the acquisition path. Provide a
      sane error message until this is resolved in CMF.
      http://dev.plone.org/plone/ticket/2982
      [rohrer]

    - Fixed #3091 - new SetupWidgets can now work without cut/pasting the
      existing code, and use inheritance instead. Thanks to jccooper!
      http://dev.plone.org/plone/ticket/3091
      [limi]

    - Implemented AM/PM support for the datetime-picker widget. Now, if
      your site_properties/localLongTimeFormat property contains the '%p'
      format specifier, the widget will display 12 hours and an additional
      AM/PM dropdown. Resolves #3264. Thanks to alecm for the patch.
      http://dev.plone.org/plone/ticket/3264
      [stefan]

    - Fixed #3417 - because of acquisition, a user's name can not be the same as
      the portal name - this is now caught in the user registration validation
      instead of giving an error message. Thanks to kuru for the patch!
      http://dev.plone.org/plone/ticket/3417
      [limi]

    - Fixed #2855 - Folders have "Properties" instead of "Edit" as title for
      the edit form.
      http://dev.plone.org/plone/ticket/2855
      [jladage]

    - Fixed #2512 - folder_localrole_form role assignment pulldowns should be
      multiple select. Thanks to teix.
      http://dev.plone.org/plone/ticket/2512
      [deo]

    - Fixed #2386 - Misc political incorrectness for msgid
      'help_search_keywords'.
      http://dev.plone.org/plone/ticket/2386
      [deo]

    - Fixed #3142 - Swedish translation in search page translates "by" into
      "efter".
      http://dev.plone.org/plone/ticket/3142
      [deo]

    - Fixed issues #3495, #3508 and #3509 - french translation errors.
      http://dev.plone.org/plone/ticket/3495
      http://dev.plone.org/plone/ticket/3508
      http://dev.plone.org/plone/ticket/3509
      [deo]

    - Fixed #2171 - accessibility headers for the document actions were missing.
      http://dev.plone.org/plone/ticket/2171
      [limi]

    - Removed the Add to Favorites icon from the breadcrumbs, since it is
      already in the document actions area. Favorites still suck, but will
      hopefully get some love in 2.1. ;)
      [limi]

    - 'prefs_user_details' is now a Controller Page Template, and has better
      validation. Don't forget to re-customize if you have customized the
      old, non-cpt version.
      [geoffd]

    - Fixed #3385 - tableless skin wasn't updated to the new header structure,
      causing the site actions to be positioned wrongly. This is an update to
      main_template for the people using tableless, please update your sites
      accordingly. Full explanation in the URL above.
      http://dev.plone.org/plone/ticket/3385
      [limi]

    - Fixed #3429 - the section class was missing from the tableless skin.
      http://dev.plone.org/plone/ticket/3429
      [limi]

    - Fixed #3086 - there is now an unRegisterPloneFunction in the
      plone_javascripts that allows you to unregister an onload event. Thanks to
      acamargo for the patch!
      http://dev.plone.org/plone/ticket/3086
      [limi]

    - Fixed #3518 - Same issue as before, but for Images this time. Thanks to
      Varun for the patch.
      http://dev.plone.org/plone/ticket/3518
      [stefan]

    - Fixed #3416 - Uploading a File with a bad name, without specifying an id
      in the form, caused validators to complain about 'id' instead of 'file'.
      This was especially bad as the current file_edit form does not show the
      'id' field at all :-P
      http://dev.plone.org/plone/ticket/3416
      [stefan]

    - Fixed a usability bug where clicking the "Add default document"
      button would only generate a blank Document with the ID index_html
      - it now sends you to the edit form of said document instead.
      [limi]

    - Fixed #3500 - Modified .metadata files to make FormController do something
      appropriate when someone submits a for using the return key in IE.
      http://dev.plone.org/plone/ticket/3500
      [geoffd]

    - Fixed #3406 - Did a big makeover of FactoryTool.py that fixes a lot of
      permissions problems. Objects are now created after traversal so their
      owner and creator are set correctly. Parent folder permissions are copied
      to the TempFolder in which temporary objects are created, so temp object
      creation should behave the same way as regular object creation.
      ExternalMethods and scripts called with relative links are handed off to
      during traversal, so mapply headaches don't occur anymore. doCreate method
      now checks for and calls if present an object method called
      'manage_afterPortalFactoryCreate' so any extra post-instantiation
      initialization can take place.
      http://dev.plone.org/plone/ticket/3406
      [geoffd]

    - Fixed #3458 - Images in folder_contents and navtree have wrong paths in
      VirtualHosted sites. It worked anyway because of acquisition, but is
      correct now. Thanks to mjm for the patch.
      http://dev.plone.org/plone/ticket/3458
      [limi]

    - Fixed #3472 - you can now declare portlets on a template. Thanks to
      acamargo for the patch.
      http://dev.plone.org/plone/ticket/3472
      [limi]

    - Fixed #3030 - content_status_modify.py now assembles the transaction note
      before performing the transaction. Thanks to raphael (Ritz?).
      http://dev.plone.org/plone/ticket/3030
      [stefan]

    - Fixed #3457 - review portlet was not showing ID for items without Title.
      Thanks to Sjors for the patch.
      http://dev.plone.org/plone/ticket/3457
      [limi]

    - Fixed #2857 - changed show_id.py to accomodate postback of a submitted id
      in the case where validation fails on the first edit of a newly created
      content object. Thanks to zenwryly.
      http://dev.plone.org/plone/ticket/2857
      [stefan]

    - Fixed #3457 - review portlet was not showing ID for items without Title.
      Thanks to Sjors for the patch.
      http://dev.plone.org/plone/ticket/3457
      [limi]

    - Fixed #3494. Description was used with 'structure' in some templates,
      notably news.pt and folder_listing. Note that Dublin Core defines this
      element as plain text. If your site relies on the old behavior refer to
      the patch in the issue. Patch by mathie, thanks.
      http://dev.plone.org/plone/ticket/3494
      [stefan]

    - Fixed #2931. News items displayed "Read More" link even if there was
      nothing more to read. Thanks to mathie for the patch.
      http://dev.plone.org/plone/ticket/2931
      [stefan]

    - Fixed #3457 - review portlet was not showing ID for items without Title.
      Thanks to Sjors for the patch.
      http://dev.plone.org/plone/ticket/3457
      [limi]

    - Fixed #3038. Search terms "and", "or", and "not" are no longer highlighted
      in documents.
      http://dev.plone.org/plone/ticket/3038
      [rohrer]

    - Made RegistrationTool reuse the EMAIL_RE regex from PloneTool instead of
      duplicating it.
      [stefan]

    - Fixed #3447. Email address validation failed for upper-case characters.
      http://dev.plone.org/plone/ticket/3447
      [rohrer]

    - Added border-collapse to the columns, so pixel/bitmap layouts that
      depend on the columns having 0 margin will work automatically. This
      is cleaner than the cellspacing="0" cellpadding="0" HTML approach
      that people seem to use. Fixes #3511.
      http://dev.plone.org/plone/ticket/3511
      [limi]

    - Fixed HTML escape codes in password for special characters in
      registered_notify_template (#3499).
      http://dev.plone.org/plone/ticket/3499
      [jladage]

    - Polished up the datetime-picker widget.  Now provides default values
      for month ('01') and day ('01').  Also new is the option to unset a
      date by deselecting the year ('----'). Fixes #2291.
      http://dev.plone.org/plone/ticket/2291
      [stefan]

    - Made it so that headlines can't be obscured by the document action
      icons anymore.
      [limi]

    - Made the check_id script work in the presence of incomplete
      Plone sites and missing permissions.
      [stefan]

    - Fixed ownership on objects created by portal_factory.  The
      changes to portal_factory in 2.0.4 fix problems with mapply, but
      they mess up object ownership and potentially have side effects
      if an object tries to look up its owner during initialization.
      The pre-2.0.4 portal_factory breaks Epoz; the 2.0.4 portal_factory
      breaks PloneHelpCenter.  The current fix should enable both to
      work.  The Right Way to fix this would be to perform object
      construction in a post-traversal hook (pre-2.0.4 object construction
      happened at publication time; 2.0.4 constructs during traversal),
      but that means abandoning support for Zope 2.6.x.
      [geoffd]

    - Added title attribute to links in action menus.
      [gotcha]

    - Fixed transaction_notes overflowing struct size in ZODB.
      Also made there be 1 entry point into transaction_note instead
      of stray in PloneTool. Publishing hundreds of thousands of items
      would cause the trnx.description string to get larger than 65535
      which would cause FileStorage to fail on _notify
      [runyaga]


Plone 2.0.4 - Warp - Released August 16, 2004

    - Fixed #3329. Results of breadcrumbs.py are no longer translated in
      global_pathbar.pt.
      http://dev.plone.org/plone/ticket/3329
      [stefan]

    - Fixed #3332: hide the portal_siteactions from the print stylesheet.
      http://dev.plone.org/plone/ticket/3332
      [bmh]

    - Fixed #3334. Added a break statement to the javascript for checking link
      protocols.
      http://dev.plone.org/plone/ticket/3334
      [bmh]

    - Fixed #3325 and related. Plone calendar got confused when "datetime-format
      international" was set in zope.conf.
      http://dev.plone.org/plone/ticket/3325
      [stefan]

    - login_form broke with Zope 2.7.2 because of stricter XHMTL parsing.
      [stefan]

    - Fixed came_from testing when there is a query string (logged_in.py).
      [geoffd]

    - Corrected some margins and padding, the content views and headline
      was very asymmetrical. Thanks to Brent for notifying me about this.
      She blinded me with science! ;)
      [limi]

    - check_id script now rejects ids that are also catalog indices.
      [geoffd]

    - Fixed portal_factory passthrough problem reported in #3243. Also
      portal_factory now logs exceptions during object creation (some were being
      swallowed higher up) (fix for #3148).
      http://dev.plone.org/plone/ticket/3148
      http://dev.plone.org/plone/ticket/3243
      [geoffd]

    - Added enableHTTPCompression script and enabled HTTP compression for
      HTML, CSS, and JavaScript.
      [tiran]

    - Fixed #3240 and related issues. Metadata elements like description and
      keywords (subject) could not be cleared.
      http://dev.plone.org/plone/ticket/3240
      [stefan]

    - Merged fixes from tiran-plip30 branch. Changed PloneGenerator and
      MembershipTool.createMemberarea() to always use portal-aware factory
      methods for creating content. Prerequesite for future integration
      with ATContentTypes.
      [tiran]

    - Changed the visual rendering of the nav tree. It now uses CSS instead
      of fixed values wherever possible.
      [limi]

      If you want the old look back, put the following in your
      ploneCustom.css::

        .currentNavItem,
        #portlet-navigation-tree a:hover {
        background-color: transparent;
        border: &dtml-borderWidth; &dtml-borderStyle; &dtml-backgroundColor;;
        }

        .currentNavItem {
        font-weight: bold;
        color: &dtml-fontColor;;
        }

        .navItem {
        padding: 0 0 0 20px;
        }

    - Nav tree now displays Description for its items as a tooltip.
      [limi]

    - Changed the behaviour of the site-wide actions (currently
      only used for text size) - so if you use or have a custom
      variant of this, you will need to re-customize this part.
      It was just too broken to not require template
      modification. It changed position in main_template, and
      produces more sane HTML now. Site actions have IDs now too.
      [limi]

    - Changed the search box behaviour too - it shouldn't be
      absolutely positioned. If you have customized, you will need
      to move the main_template invocation of the search box, plus
      re-do the CSS, if any. Sanity was needed, sorry for the
      invonvenience.
      [limi]

    - Added 'navtreeItem' and 'navLevelX' classes to the navigation
      tree, so it's possible to do funky stuff using only CSS to
      customizing the nav tree - for example make the only the
      top-level folders have bold text and dividers.
      [limi]

    - Added 'navRootItem' and 'navItem' classes to facilitate better
      skinning of the nav tree.
      [limi]

    - The body tag now has an HTML 'class'
      attribute, so you can skin different sections of the site
      with different styles. Prefix is "section-" and then the
      Short Name (partial URL) of the item in the root folder.
      This can easily be customized if you want this to
      work on all levels instead of just the root level, or to
      return multiple classes.
      [limi]

    - Applied patch from #3159. Missing form fields should not cause user prefs
      to be set to None.
      http://dev.plone.org/plone/ticket/3159
      [stefan]

    - Added a simple check for the existence of the template
      'global_languageselector' - this will allow the different
      multilingual implementations to hook into the area just below
      the documentActions to display language switchers. Macro name
      should be 'language' inside the template. See PloneLanguageTool
      for an example. This is the recommended location for language
      switchers.
      [limi]


Plone 2.0.3 - Noname - Released May 20, 2004

    - Login portlet wasn't using the 'label' tag, corrected.
      [limi]

    - Added id="portlet-related" in the Related portlet (was missing),
      and renamed 'portlet-recent-items' to 'portlet-recent' to make
      the name consistent with the other portlets.
      [limi]

    - Hardened any send mail sending utilities and readying CMF 1.4.4.
      [andym]

    - Fixed a small bug in plone_javascripts.js that prevents the highlight
      of the search term in simple searchs.
      [azy]


Plone 2.0.2 - Hicks - Released May 13, 2004

    - Added the 'listingNext' and 'listingPrevious' class for the batch
      navigator. The old span.next/previous will still work, but are
      deprecated. Please update any batch listings to the new format.
      [limi]

    - Added a email address validator to the Plone tool and validate the email
      addresses for the send to feature, fix for #2975.
      http://dev.plone.org/plone/ticket/2975
      [tiran]

    - Some templates were broken with Zope 2.6. Fixed by adding a
      surrounding metal:block with i18n:domain='plone' around colophon
      and footer.
      [sidnei]

    - Moving definitions (webdav-locking) from edit-templates to
      global_defines, where they belong.
      [limi]

    - Added missing definition of filterOut.
      [ajung]

    - Removed unnecessary hook in FactoryTool that is handled by Archetypes
      itself now.
      [deo]

    - Default position of the "Recent" portlet is now on the left.
      [limi]

    - Added a new variable 'current_page_url' to 'global_defines'. Since it's
      pretty much impossible to get the correct URL to the current page once
      you're inside CMF, the base tag and Zope and a VHM, I added this
      convenience variable. For those who are curious, here's how it looks:
      'current_page_url request/VIRTUAL_URL|string:${request/SERVER_URL}${request/PATH_TRANSLATED}'
      Easy, eh? Updated the Plone templates to use this variable instead. Use
      this if you need a variable to use with HTML anchors, it will give you
      the actual URL that is currently being displayed in your browser.
      [limi]

    - Default text on member pages are now disabled, since it just pollutes the
      search results. You can insert the default text in 'homePageText.pt' like
      before, the only difference is that it's disabled by default, and uses
      Plone's built-in mechanism to show relevant help text if you're the owner
      of the document instead.
      [limi]

    - Added scoring details + i18n information in the search results. Thanks
      to Andrew Veitch for the suggestion.
      [limi]

    - Renamed METAL macro "list-item" to "listitem" in news.pt and folder_listing.pt
      to fix Zope 2.6 compatibility.
      [limi]

    - Commented out the javascript that auto-focuses on the first field in a form.
      There are too many places that causes a lot of trouble by moving focus away from
      a field in which the user is actually typing.
      [elvix]


Plone 2.0.1 - Jello - Released May 4, 2004

    - Backported fix for #2183 from HEAD. _verifyObjectPaste() should deny
      pasting if the content type is not allowed in the target container.
      http://dev.plone.org/plone/ticket/2183
      [stefan]

    - Improvement to Customization policy:
      In a customization policy class you can now provide an optional method
      'getPloneGenerator',
      where you can return a different PloneGenerator than the default one
      Affected files: Portal.py, CustomizationPolicy.py,
      interfaces/CustomizationPolicy.py
      [zwork]

    - Fixed #2973. Try to avoid brain.getObject() to speed up plone.
      http://dev.plone.org/plone/ticket/2973
      [tiran]

    - Fixed #2795. Replaced aq_explicit by aq_inner in batchedFolderContents.py.
      http://dev.plone.org/plone/ticket/2795
      [tiran]

    - Fixed #472. Discussion now uses CMFFormController and subject/body are
      required fields now.
      http://dev.plone.org/plone/ticket/472
      [mrtopf]

    - Portal.py/SkinsTool.py: Removed monkey patch that renamed the skin request var to
      plone_skin and moved request_varname to our SkinsTool
      [tiran]

    - Fixed #2583. Disable submit button when item is locked and add a locked
      icon next to the disabled submit button.
      http://dev.plone.org/plone/ticket/2583
      [tiran]

    - Fixed #2826. searchterm-highlighting now functions correctly, it
      highlights text in the fuill content-area, but only highlights the parts
      it is supposed to highlight.
      http://dev.plone.org/plone/ticket/2826
      [elvix]

    - Fixed #2691 - External-link-detector javascript is now case-insensitive.
      http://dev.plone.org/plone/ticket/2691
      [elvix]

    - Fixed #3001 - Fallback handling to avoid javascript-error-messages in IE5.
      http://dev.plone.org/plone/ticket/3001
      [elvix]

    - Fixed #2859 - plonifyActions accepts javascript urls.
      http://dev.plone.org/plone/ticket/2859
      [tiran]

    - Fixed #2948 - Auto generated ids are now lower case and the number is more
      random.
      http://dev.plone.org/plone/ticket/2948
      [tiran]

    - Fixed #2990 - Nested groups don't break the prefs_group_members template
      any more.
      http://dev.plone.org/plone/ticket/2990
      [tiran]

    - Fixed #3005 by catching non existing home folder.
      http://dev.plone.org/plone/ticket/3005
      [tiran]

    - Fixed #2963 - Allow access to Products.ZCTextIndex.ParseTree.ParseError
      and catch it in the queryCatalog script.
      http://dev.plone.org/plone/ticket/2963
      [tiran]

    - Fixed #2862 - Added a listMetaTags script to skins/plone_scripts to add
      automagically generated meta tags in the '<head>' tag.
      http://dev.plone.org/plone/ticket/2862
      [tiran]

    - Fixed #2821 - The user doesn't show up as a member of that group after
      adding because the template was returned in the same transaction. Now the
      add/delete script is using a redirect.
      http://dev.plone.org/plone/ticket/2821
      [tiran]

    - Fixed #2876 - Folder rename does not reindex title. Added a explict
      reindex if only the title has been changed.
      http://dev.plone.org/plone/ticket/2876
      [tiran]

    - Fixed #2892 by using global_defines in the calendar_popup template.
      http://dev.plone.org/plone/ticket/2892
      [tiran]

    - Fixed #2749 - 'groups' wasn't initialized as an instance variable, so any
      changes to it would vanish on restart.
      http://dev.plone.org/plone/ticket/2749
      [sidnei]

    - Fixed #2671 - default_page as a string property would not work. Fixed this
      and added tests for basic behavior. More tests are needed IMHO.
      http://dev.plone.org/plone/ticket/2671
      [sidnei]

    - Fixes for #2914. Although I could not reproduce. We now have a unit test
      showing that this behavior should not regress. Some logic in PloneTool
      was changed.
      http://dev.plone.org/plone/ticket/2914
      [runyaga]

    - Fixed #2814 - 'Document' was being checked against a list of
      FactoryTypeInformation, which would never work. Changed to check against
      the list of portal_types generated by '<FTI>.getId()'.
      http://dev.plone.org/plone/ticket/2814
      [sidnei]

    - Fixed #2907 - 'get_size' can return long. Also, improved the script a bit
      to be more correct with regard to sizes, include GB, use 'kB' instead of
      'K' (which stands for Kelvin), return '0 kb' if size is null or 0, and add
      tests for all of this.
      http://dev.plone.org/plone/ticket/2907
      [sidnei]

    - Fixed #2998 - The types tool has a getTypeInfo method, but with different
      signature.
      http://dev.plone.org/plone/ticket/2998
      [stefan]

    - If toolicon can't be found, it may be because a tool is
      inheriting from a Plone tool, so the icon path (which defaults
      to relative to CMFPlone's dir) is invalid. We fallback to
      resolving the CMFPlone dir and join the path.
      [sidnei]

    - added a PloneBaseTool that all other tools inherit
      from. Currently this does absolutely nothing, just a placeholder.
      [tiran]

    - changed the registration of tools to provide different images in the ZMI
      [tesdal] [limi]

    - validate_document_edit assumed the Content-Type header is always
      present. This is not the case.
      [stefan]

    - Fixed #2980 - Handle dates between PLONE_CEILING and CMF_CEILING.
      http://dev.plone.org/plone/ticket/2980
      [tesdal]

    - Added two classes to allow list without markers:
      'ul.visualNoMarker' and 'ol.visualNoMarker'.
      [limi]

    - Added Full Screen view for images.
      [limi]

    - Implemented 'management_page_charset' as ComputedAttribute returning the
      value of portal_properties/site_properties/default_charset. Also see #2778
      This means Unicode characters are shown correctly in the ZMI too.
      http://dev.plone.org/plone/ticket/2778
      [stefan]

    - Added years range properties in site_properties:
      [deo]

      - calendar_starting_year: (default: 1999), the fixed minimum year
        displayed on calendar widgets

      - calendar_future_years_available: (default: 5), how many years
        (from current year) are displayed on calendar widgets

    - Added a 'portlet_prefs' that displays the different prefs panels
      available once you're inside the prefs area. This uses the portlet
      slots introduced below.
      [limi]

    - Added 'portlets_one_slot' and 'portlets_two_slot' to make it
      possible to fill the portlets areas with content. This way, you
      don't have to know what kind of layout you are in.
      [limi]

    - Plone now supports translation of keywords and other metadata.
      There is a separate i18n:domain for this - 'plone-metadata'.
      Anything added into a (for example) 'plone-metadata-fr.po' file
      with the 'plone-metadata' domain will
      be parsed on the metadata_edit_form in French, and replaced with the
      translated strings from the po-file. Please note that this usually
      requires adding new metadata in a default language to avoid
      a mess when translating. Plone does nothing to enforce this at the
      moment. Currently supported fields are Keywords (aka. Subject) and
      Copyright (aka. Rights). The 'search_form' was also updated.
      [limi]

    - Added a define-macro "list-item" to news.pt and folder_listing.pt, so
      they can be reused in other templates. You have to define a repeat
      statement outside it similar to the template in
      'plone_templates/news.pt'. The macro itself renders one item.
      [limi]

    - Added icons for left/leftmost/right/rightmost. Removed unused icons.
      Fixed alt-representations of images.
      [limi]

    - Fixed bare 'except:' statements in Plone so we don't swallow
      ZODB ConflictErrors. Mostly by adding 'except ConflictError: raise'.
      [stefan]

    - Inserted a metal definition that enables the folder_listing to be
      used from other templates. [limi]
      Example:

      '<div metal:use-macro="here/folder_listing/macros/listing">
      The folder listing of the current folder
      </div>'


Plone 2.0 - Fyuti - Released March 23, 2004

   Final

    - Fixed #2852.
      http://dev.plone.org/plone/ticket/2852
      [geoffd]

    - Added cleanupSkinPath method to migration_util, used to remove
      bad skin layers when adding the Plone Tableless skin in the RC5-RC6
      migration.
      [geoffd] [tiran]

    - Updated link in footer.pt to Alan's new company.
      [andym]

    - Added 'domain' parameter to translate.py. Defaults to 'plone'.
      [deo]

    - Updated isExpired.py to take the case that datetime instances
      are not callable.  It looks a bit strange.  But its fixed.
      Future versions should use ExpirationDate accessor.
      [runyaga]

    - The tableless skin didn't have the top_slot defined.
      [limi]

    - Fix WebDAV for the nth time. browserDefault was using the
      portal_utils tool as the context for all DAV requests, instead
      of the real object.
      [sidnei]

    - Fixed #2808 - metadata_edit form was broken when the date format was set
      to international (zope 2.7). Fixed date_components_support.py
      http://dev.plone.org/plone/ticket/2808
      [tiran]

    - Fixed #2804 - plone_memberprefs_panel.pt ignored the 'visible' of
      configlet actions. thats corrected now.
      http://dev.plone.org/plone/ticket/2804
      [zworkb]

    - breadcrumbs.py had bugs in which (1) a terminal object was sometimes
      displayed twice, and (2) terminal non-content non-view objects (e.g. page
      templates) were not displayed at all.  The bugs have been fixed and
      breadcrumbs.py has been refactored a bit to make the source easier to
      understand and maintain.
      [geoffd]

    - Fixed some instances of 'disable_border' being written as 'disable_border1'
      [limi]

   RC6

    - Make portal more tolerant if admin removes cookie_authentication
      object which enables form-based logins.  This is a response to
      http://article.gmane.org/gmane.comp.web.zope.plone.user/13868
      It does not full fix, just a hold over until it is addressed
      properly.
      [runyaga]

    - Fix for #2769 - You could not enable/disable green 'editable border'
      because this was being done in the 'head_slot' which corresponds to
      '<head>' in the document. Control of the border is computed in
      global_defines.pt which is the first macro used in main_template.
      Introduced another slot in main_template called 'top_slot' which occurs
      before global_defines. *All third-party products will have to fill
      'top_slot' instead of the 'head_slot' to disable the borders, the syntax
      apart from that is identical.*
      http://dev.plone.org/plone/ticket/2769
      [runyaga]

    - Fixed #2744 - Large Plone Folders should use folder_workflow. Fixed
      PortalGenerator and added migration and tests.
      http://dev.plone.org/plone/ticket/2744
      [stefan]

    - Fixed and re-fixed #2246 - Short name should be editable without
      specifying a file.
      http://dev.plone.org/plone/ticket/2246
      [achilles] [stefan]

    - Added a monkey-patch workaround for #1323. This *may* be considered a CMF
      bug. See setFormatPatch.py.
      http://dev.plone.org/plone/ticket/1323
      [stefan]

    - Moved 'document_byline' and 'document_actions' to the
      'plone_content' folder - as they belong to the content templates.
      [limi]

    - Checked in fix for 2600: group names and user names were not
      shown correctly in the Group Memberships form and the Members of
      Group from, if viewed not in english. Fix Suggested by ozone.
      [jok2]

    - Fix for 2704: added manager proxy role to register.cpy to avoid
      error if mail could not be sent to new member. Fix suggested by
      Seb Potter
      [jok2]

    - Fix for 2462: change default value of ids to empty list instead
      of None (folder_delete.cpy). Done to avoid error about iteration
      over non-sequence, if no item is selected for deletion. Fix
      suggested by Seb Potter
      [jok2]

    - Merge the fix for portlet_related over from the microoptimisations
      branch and fix for 2293 and 1920
      [andym]

    - Split 'use_folder_contents' site property into two different
      properties: typesLinkToFolderContents (a navtree prop for
      how nav tree behaves) and typesLinkToFolderContentsInFC
      (a site-wide prop, for how folder_contents page should
      behave). Added migration to create these two and to remove
      the old use_folder_contents.
      [pupq]

    - Diet Plone - an initial page load of Plone was reduced from
      150K to 75K, and HTTP requests from 30 to 15 by performing
      the following tweaks:
      [limi]

      - Calendar JS only included on pages that use it

      - Deprecated pop-up tool tips JS code commented out
        (easy to re-enable if you need it for legacy sites)

      - Made the colophon buttons with CSS instead of using images

      - Pulldown menu only available to logged-in users
        (although it can be enabled for anonymous too, if you need it)


    - Added fix for the bug reported by Edward Muller (skin setting
      and login problems). Don't clear the name of the skin cookie
      in the prefs_portal_skiset.py. [jok2]

    - Added fix for breadcrumbs so that the parent folder is shown when
      you are looking at folder_contents.  [pupq]

    - Fix bug 2373 so folder_contents items goto
      getTypeInfo.getActionById('view')
      [runyaga]

    - Removed the ability to edit short names while adding a file,
      since users have problems remembering that the extension has to be
      included. They are also very surprised when the file they uploaded
      has a different file name. Removing this will give them a sensible
      default. If you want to re-enable short names for files for your
      site, remove the comments around the code.
      [limi]

    - Added the Creator/Modified indicator to the edit forms too.
      [limi]

    - Added security checks for viewing the view forms. There was no
      security problem, since you couldn't save the document, but now we
      also check that you are logged in, so you can't invoke the URL
      directly to look at the edit form anymore either.

    - Added getAllowedTypes for use in folder_contents and global_contentmenu
      to check for getNotAddableTypes and when to show a single item instead
      of a dropdown. ( fixes bug )

    - If a content type is listed in
      portal_properties/site_properties/use_folder_contents then use
      'folder_contents' to display it, not ''. Removed the migration
      that initialized this value to ['Folder']
      [pupq]

   RC5

    - Removed false 'required' indicators for Title attribute on file/image
      edit forms.  You simply need to upload a file.  Thats it.
      [runyaga]

    - Added extra check for dictionary-based actions. Will work better
      with old sites being migrated.
      [tesdal]

    - The base slots were being filled in the wrong order, causing it to
      not work as expected. Fixed.
      [tesdal]

    - Added macro names for the left/right slots, so you can override them
      by filling the slots from a template. Example:

      '<metal:override fill-slot="column_one_slot" />'
      '<metal:override fill-slot="column_two_slot" />'

      This enables you to "turn off" the slots from a template, thus
      eliminating the need to create a folder to do it.
      [limi] [tesdal]

   RC4

    - CMFPlone.FormTool.BasicForm.get_field signature has changed.
      def get_field(self, id):
      to
      def get_field(self, id, include_disabled=0):
      FormTool is deprecated or will be deprecated in 2.0. Bug #2498
      http://dev.plone.org/plone/ticket/2498

    - For those of you who were running tableless designs in the RC3
      and earlier releases and want to keep it that way - simply add
      a DirectoryView for 'plone_tableless' in 'portal_skins', and
      add it to the skinpath. This will activate the tableless versions
      of:

      - main_template

      - ploneColumns.css

      Apart from adding these two, no other changes are needed. The reason for
      this change were numerous, the most important ones being crash bugs in IE
      and bugs in Safari. Tableless will probably return as the default if we can
      get it stable enough, but it wasn't good enough for 2.0.
      [limi]

    - Made sure there are no naked mailto: links for spambots, all mail addresses
      are now using the spamProtect script. Syntax:
      '<a tal:replace="structure python: here.spamProtect(Person.email)" />'
      - this will return a complete a href tag with the mail address spam-
      protected. [limi]

   RC3

    - WARNING: Some changes had to be made permission-wise to make the default
      behaviour make sense. It was very inconsistent in 1.0, and we decided to do
      a partial clean-up so it behaves better in 2.0. Read this and make the
      necessary changes to your application, especially if you use the List Folder
      Contents permission in special ways. The following changes were made:

      - 'folder_listing' is not governed by the List Folder Contents permission
        anymore, which is the correct behaviour. The best way to think of
        'folder_listing' is as an alternative 'View', *not* as an alternative
        'folder_contents'. 'folder_contents' is for editing and manipulating the
        contents of a folder, not for viewing.

      - 'folder_listing' is now always available, *but* checks for permissions,
        and hides content you don't have the permissions to see.

      - You still can't access a 'private' object, so it's still protected, no
        change there.

      - The one potential problem is that it's possible to see the ID of an object
        - this is because of the way CMF and Zope does it however - and you have
        to know the exact method call to do this. It will never give you anything
        but the ID though, so we don't view this as a big problem.

      - 'visible' content is also visible to anonymous users. This was the
        original intent of the state, but was broken in 1.0. However, if you
        depend on this behaviour, you should note that it has changes, and make
        your own custom workflow for this.

      - Finally, this thing needs to be tested properly, so please help out by
        installing third-party applications and see if they are affected in a
        negative way by this change.

    - checkPermission is exposed in global_defines.  We check to see if you
      can Modify portal content in folder_contents to determine whether or not
      to show the external editor icon.  Changes references to
      portal_membship.checkPermission to use the global checkPermission reference

    - Do not show order column if you can not Modify portal content for
      folder.

    - [FEATURE] Added 'sharing' action for all nonFolderish types in portal_types
      If you have a problem with this bring it up w/ alex or dannyb

    - If you have any object actions besides 'view' you will not get the
      greenborder.  before we suppressed if it was 'view' or 'folderContents'

    - Permissions changes.  The folder_buttons, copy,paste,rename,delete,cut
      were protected by CMFCorePermission.ModifyPortalContent which is
      incorrect.  Moved it to AccessControl.Permissions.copy_or_move.  I am
      not sure that is correct either because all permissions checking for
      folder_buttons is done at the folder level.  If we want to be more
      fine grain (show a delete button if we have access to any content to
      delete) we will need to execute a condition (script) for all content.
      This could be prohibitively expensive.  Changes made in
      CMFPlone/setup/ConfigurationMethods.py

      - It was possible to delete something out of a folder even if you
      did not have 'Delete objects' permission.  If you 'cut' a object
      from one folder and pasted it into another.  So we put an extra
      condition on 'cut', python:portal.portal_membership.checkPermission(
      'Delete objects', object)

      - We should wipe out all actions and reinstall them that are
      regarding the 'folder_buttons' category

      - This is in regards to issue, #1985

      - Declared manage_copyObjects on PloneFolder.PloneFolder protected
      by 'Copy or Move' instead of 'Modify portal content'

    - moved CMFPlone/migrations files into CMFPlone/migrations/v1 or v2
    modules.   Although this is not a permenant solution.  It will work
    well enough.

    - allowedContentTypes is a expensive call.  made this global inside of
      plone_templates/global_contentviews.pt and its reused throughout the
      global_contentmenu, global_contentviews and folder_contents. This
      should make the experience a tad snappier

   RC2

    - Renamed portal_control_panel_actions to 'portal_controlpanel' and made
      it use ToolNames instead of hardcoded strings.
      This will break RC1 sites, so here's how to update your existing site:

      - Delete all ActionIcons with category "controlpanel"

      - Delete the portal_control_panel_actions tool

      - Add Plone Tool - Plone Control Panel Tool

      - Invoke the following URL:
        http://mysite/portal_controlpanel/registerDefaultConfiglets

    - Now comments in Plone are text/plain.  No longer using structured-text.
      DiscussionTool has grown a method, cookReply.  This is temp fix.
      CMFDefault.Document should have a cook method which can 'recook' its
      body text.  This is something Archetypes should implement.  Being able
      to recook without passing in the values.
      Modified CMFDefault to accept a text-format in createReply.

    - Add 'site_actions' category to portal_actions.  This includes:
      Small, Normal, Large text links.  This was added in
      setup/ConfigurationMethods.py addSiteActions.  We add 3 actions to
      portal_actions and 3 icons to portal_actionicons.  NOTE:  We want
      to cache the icons in the plone_utils.getIconFor -- this is a problem.
      If you change an icon it will not take effect until you restart zope.

    - Now in setup/ConfigurationMethods.py where the left/right_slots for the
      portal root are created have been changed.  It is quite sensible.  We
      are removing the terminology of 'slots'.  We are moving towards the
      prefered naming, 'portlets'.  Macro paths are sensible:
      here/portlet_foo/macros/portlet
      This means that all slots are now renamed portlet_$name and all macro have
      been renamed to 'portlet'.  The old slot code still exists and has
      deprecation comments in the PageTemplates.

   RC1

    - PrivatePloneWorkflow and PrivateFolderWorkflow no longer register their
      workflow factories. They will disappear from Plone core.
      [stefan]

    - Fixed PloneWorkflow's mapping of ChangeEvents permission to follow the
      mappings for ModifyPortalContent.
      [stefan]

    - Made ListFolderContents unavailable to Members when a folder is in the
      private state (FolderWorkflow).
      [stefan]

   Beta 3

    - WARNING! If you attempt to add several Plone sites back-to-back you will
      encounter some problems.  The system works fine for adding a single
      Plone site.  If you want to add more you will have to restart your Zope.
      We have worked out the problem and its not too difficult we just need
      to put a solution in place.  Thanks to Steve Alexander and Tres Seaver
      for helping out. In summary, we know there is a problem.  Please do
      not bug us.  We are attempting to adhere to the mantra,
      'release early, release often.'

    - Deprecated stylesheet_properties for the new base_properties in the CSS.
      This one is much more flexible, clean and reusable, but note that if your
      site relied a lot on the old stylesheet_properties file, you will have to
      move the attributes to the new file. The reason for renaming it was to not
      cause errors when upgrading. It will reset your color choices, though.
      The new properties are documented in ploneCustom.css.
      [limi]

    - Removed the CMFWiki and CMFCollector skins from Plone core.
      **NOTE:** You need to add the correct skin paths if you are using
      these products, they are no longer installed by default. The skins
      are now located inside the Products themselves.
      [limi]

    - Added version checking of Products, and easy reinstall from Add/Remove
      Products panel.
      [zwork] [limi]

    - Hooked up the plone_memberprefs_panel for easy adding of user-specific
      control panels.
      [ronnix] [andym] [limi]

    - Portlets overhaul and renaming, in separate directory now.
      [limi]

    - Removed XML-RPC from Add Comment form.
      [limi]

    - Renamed "Name" to "Short Name" in the edit forms.
      [limi]

    - Moved all the skins to PloneSkins in the Collective.
      [limi]

    - got rid of the ancient, nasty FormulatorTool. [geoffd]

    - fixed portal_factory so that the folder and folder_url values provided to
      actions are correct for temporary objects, made content_status_modify and
      metadata_edit portal_factory aware.  objects created with portal_factory
      should now behave just like normal objects. [geoffd]

    - renamed plone_debug script to plone_log.  if you want to log out to zLOG
      simply context.plone_log('this should be in the log')

    - removed 'portal_workflow' from list of portal_actions' Action Providers.
      Sites with large worklists would benefit most from this.  We no longer
      put worklist states in the 'personalBar'.  We use the 'review_slot'.

   Beta 2

    - now shipping with Formulator 1.5

    - add portal_actionicons.renderActionIcon(category, iconid, default)
      which returns back the actual object instance instead of a path.
      Now you can put icon and action in the bar left of the 'add new item'
      in the green bar by:

          - creating an action who's category is: object_actions

          - create an action_icon whos category is: object_actions
          and icon_id is the same as the 'id' above

      this potentially invokes lots of calls down to portal_actionicons
      but its the only way to actually get the icons with all the attributes.
      We could cache the icons in the renderActionIcon method.  Also added
      unit tests.

    - add PloneContent.py base class that inherients from PortalContent
      we could use this in the future to hook the reference engine in
      archetypes (or rather the reference engine that should move out
      of archetypes *wink*)

    - added 'enable_border' to folder_localrole_form, folder_edit_form,
      content_status_history so that the greenborder will show up when
      you are performing these actions at the root of the Plone site.
      this should be done in python instead of in the templates.  2.1 ;-)

    - added 'unwrapobjects' property to the CatalogTool PropertyManager
      if this is True the catalog will unwrap the AcquisitionWrapper from
      the object before indexing.  This was done because you could get
      unexpected results if you had content with the same ID as a Index.
      [stefan removed this because runyaga sucks but we need this w/ tests]

    - added a Plone Site portal_type.  This portal_type is what the root
      of the Plone Site's _setPortalTypeName is set to.  This way the
      Folder permissions are manipulated separately from the root of
      the Portal.  What became a major problem in "private" sites was
      having a different policy set in the Permissions tab but then
      someone "Updating Permissions" from the workflow tool which would
      reset the permission on the root of your site!  This is added to
      migrations.

        - If you only allow 'Authenticated' to 'View' the portal root
        when you login you authenticate but get a 'Insufficient Privs'
        page.

        - It seems you can not logout ;-( -- maybe you logout but
        before redirection you dont have 'View' permissions and the
        exception rollsback the logout?


    - personalBar (mystuff, preferences, undo, logout) now no longer uses
      'global' actions.  This was causing worklist 'pending <foo> (N)' in
      the personalBar.  Which is not i18nable and breaks semantics of
      the personalBar (which are user-centric actions).  Two things were
      introduced:

        - keyFilteredActions which will return a two dimensional dictionary
        keyed_actions=[category][action_id] so you can easily pick out actions
        using its category and id.

        - getOrderedUserActions which given a two dimensional dictionary
        keyed like keyFilteredActions and a ordering dictionary will return
        'in order' the user actions.  If you add more actions using tools
        they will show up in between the 'pre','post' ordering lists (which
        can be passed ala ordering dictionary)

      NOTE:

        - portal_undo actions 'undo' category should be 'user' not 'global'
          this goes the same for portal_properties' 'configPortal' action

        - plone should not ship with 'default_workflow' which injects
          hardcoded information into the listFilteredActionsFor.

        - all worklists in plone workflows should not use 'global' category
          but should use the 'workflow' or 'worklist' category.  Up to whoever
          gets to it first 8-).

    - Presentation mode now renders paragraph tags invisible, which means
      you can create a richer document for web and/or print, but keep the
      presentations without the additional comments. If you want the old
      behaviour, just uncomment the relevant p {} section in the
      plonePresentation.css style sheet.

    - CMFPlone.Portal.Site now uses the OrderedContainer mixin.
      __implements__ the OrderContainer and DefaultDublinCoreImpl xface.

   Beta 1

    - Content types in Plone now have the notion of both Views and
      Actions. Actions are show on the content bar, views are tabs, as
      earlier.
      [limi]

    - Reworked the way Content Views are constructed - now you can have
      multiple content areas with tabs on one page. Idea by [arnia],
      implementation by [limi].

    - Reworked the default content views, they look much better now.
      [limi]

    - Moved the byline to a separate template in plone_contents.
      [limi]

    - Cache headers were moved to a separate file in plone_templates called
      global_cache_settings to make it easier to customize the caching options
      without changing main_template.
      [limi]

    - GroupUserFolders' GroupsTool and GroupDataTool are now subclassed in
      CMFPlone [runyaga]

    - QuickInstallerTool is now installed in
      CMFPlone/Portal/PortalGenerator.setupTools()
      In the migrations for 1.1 QuickInstaller is notified that are installing
      CMFActionIcons and CMFCalendar outside the framework.  Now they show
      installed.  QuickInstaller is now subclassed in Plone and has a test
      that installs/uninstalls a product.  [runyaga]

    - CatalogTool's searchResults takes Permission settings aquired trough
      local groups into acount. Permission local roles assigned to users
      is still not honoured.
      [_robert_]

    - MembershipTool's listMembers and listMemberIds now only return real users
      (not groups) when GRUF is employed. The MembershipTool comes with tests!
      [_robert_] [stefan]

    - Added a ZopeTestCase based test framework developed at the Castle Sprint.
      Nuked the old tests (with Sidnei's permission).
      [stefan]

    - Removed Domains from the user preferences - this field makes it very easy
      to lock yourself out of your account, and should therefore only be
      available to administrators.
      [limi]

    - Bug fix for #1154 - SearchableText should be ZCTextIndex.
      http://dev.plone.org/plone/ticket/1154
      [kapil]

    - Added unicode splitter for zctextindex element pipeline from silva
      (w/ license).
      [kapil]

    - Added lexicon addition to migration.
      [kapil]

    - Added lexicon addition and recreation of searchabletext index as zctext to catalog
      tool's manage_afterAdd.
      [kapil]

    - Added new directories: 'plone_portlets' (formerly 'plone_templates/ui_slots'),
      'plone_form_scripts' (formerly 'plone_scripts/form_scripts') - these two to
      avoid having skin paths two levels deep - 'cmf_legacy'
      (contains the few CMF scripts we still depend on), and 'plone_prefs' (contains
      the new Plone Control Panel). Skin paths updated.
      [limi] [runyaga]

    - Location is now shown in the events box.
      [limi]

    - External Links in the default folder view now go directly to the URL specified.
      [limi]

    - Events now show location and from/to-date in the default folder view.
      [limi]

    - Changed the behaviour of deleting objects in PloneFolder, so the object is
      checked for the Delete Object permission instead of the folder. This means
      that the workflow can restrict the Owner from deleting an object (for example
      in a published state).
      [sidnei]

    - Subclassed all CMFCore and CMFDefault tools for easier extension in the future.
      [sidnei]

    - generateUniqueId and isIDUnique now are a bit more unique (with regards to
      randomness) and we now suffix generated ID's with .html - issue #1343
      http://dev.plone.org/plone/ticket/1343
      [runyaga]

    - Added Recently Published slot, and a complimentary Archive page.
      [limi]

    - Changed the comment structure and layout - it's much moresimple and
      elegant now.
      [limi]

    - Added permanent CSS fix for the Internet Explorer 6 Disappearing Elements
      bug.
      [limi]

    - Removed superfluous page refresh for IE6 disappearing text bug
      [limi]

    - Renamed all JS files to .js instead of js.dtml
      [limi]

    - Removed Javascript header declarations
      [limi]

    - added .metadata to associate Javascripts with HTTP cache manager
      [limi]

    - SiteErrorLog is now created in the Plone site.  This will be easier for
      people to provide us with 'traceback' information.  Before it was created
      at the root of the Zope instance.
      [runyaga]

    - **REMOVED** portal_form_validation (which has been deprecated in 1.0) is
      no longer added to your Plone site on construction. the .py file still
      ships with Plone and will be removed in 1.2
      [runyaga]

    - Changing your password now requires you enter your current password.
      Also changed the 'change_password' script id to 'plone_change_password'
      to lessen likelihood of clash (we clashed with gruf).  We now override
      MembershipTool.setPassword to call underlying acl_users._doChangeUser
      this way we can pass domain information as well from preferences form.
      [runyaga]

    - all the previous migrations have been rolled into 1 migration method
      make_plone and removed ancient cruft (alpha/early betas)
      [runyaga]

    - Password generation code now eliminates characters that look alike from
      passwords (e.g. 0 and O, 1 and l, etc).  This should reduce the number of
      user complaints about their initial passwords.
      [geoffd]

    - Cookie testing now works for IE 5.0.
      [geoffd]

    - Added ExternalEditor as an action in the documentActions area.
      [limi]

    - Added support for defining your own default pages in any
      folder. Implemented via browserDefault. The way it works is:

      - if there's a property 'default_page' (must be lines) on
        the folder will use that (normal acquistion applies)

      - if not found, use site_properties

      - if not found, use index_html

      - if not found, use default action
        [andym] [sidnei] [limi] [philikon]

    - Added support for FrontPage as a default page in a folder via
      browserDefault.
      This is added to support ZWiki and other Wiki implementations.
      [limi]

    - The Presentation/Slide CSS is now optimized for 1024x768,
      which is the most common projector resolution. Too bad
      it's not possible to specify font size relative to the
      screen size.
      [limi]

    - Added new Plone Powered icon and a few RSS ones. I don't
      know who the original author of the Powered button is,
      but thanks! :)
      [limi]

    - Removed CustomizationPolicy pulldown from ZMI. You can
      still enable it by uncommenting the code if you are
      developing CustomizationPolicies.
      [limi]

    - There is a new version of portal_factory in 1.1.
      It lets you create objects which, if you don't save them,
      don't get created in the ZODB. If you want a type to be
      created with portal_factory, add the object's type
      to site_properties/portal_factory_types, and then all
      calls to createObject will use portal_factory.
      [geoffd]

    - Removed the CMFWeblog templates and put them in the CMFWeblog
      product instead. Located in the Collective.
      [limi]

    - Migration Tool overhaul

      - trimmed down plone initialize

      - added seperate setup widgets for languages, skins etc

      - added needUpdating and needRecataloguing

      - added visual notification in the ZMI that the instance
        is out of date

      - added improved log results

      - other improvements
        [andym]

    - Added Plone trashcan on behalf of Maik Jablonski
      [andym]

    - Fixed Plone Print style sheet - finally prints well in all browsers
      that know how to do printing. Which unfortunately excludes Mozilla
      in its current state. IE and Opera print perfectly, Mozilla prints
      *way* too big.
      [limi]

    - Added current time to the standard error message. Useful when your
      users report errors and you want to locate the incident in the
      error logs.
      [limi]

    - User Management Screens were added:

      - Users overview - prefs_users_overview - batch user maintenance

      - User details - prefs_user_details - editing attributes of a member

      - User Memberships - prefs_user_memberships - add/remove group
        membership for a user

      - Groups overview - prefs_groups_overview - batch group maintenance

      - Group details - prefs_group_details - editing settings for a group

      - Group Members - prefs_group_members - add/remove members of a group

      - User/Group selection form - prefs_user_group_search_form - a screen
        to select users/groups and feed them back to the other screens

      [limi] [runyaga]

      Note: **Requires**
      "GroupUserFolder from Collective":http://sf.net/projects/collective

    - PloneTool.editMetadata made a really bad asssumption.  We now use
      interface packages to assert that a object implements the interfaces
      before attempting to set DublinCore attributes *or* Discussable
      attributes.
      [runyaga]

    - Now require CMFActionIcons Product from cvs.zope.org.  We register
      document_action icons for such actions as: Send to friend, Print
      this page, and RSS.  Please use the putils (in global_defines.pt)
      getIconFor which will return the id of the icon.
      [runyaga]

    - Groups support via GRUF
      [runyaga]

    - Removed the Filter pulldown. It doesn't work well, and is not the way to
      cope with the problem of many objects anyway.
      [limi]

    - Made it possible to use quoted variable contents in the font selection.
      [limi]

    - removed all use of getAuthenticatedMember() in templates -
      now references global 'member' variable:
      'plone_templates/global_defines.pt'
      [runyaga]

    - Doesn't show id's if they are autogenerated anymore - context.show_id()
      [runyaga]

    - Got rid of getAuthenticatedMember which is deprecated. In main_template
      there is a member variable which does this only once.
      [runyaga]

    - Added news slot and event slot to the default slots when a new Plone site
      is created.
      [limi]

    - Changed "Welcome" tab to "Home" to be more consistent.
      [limi]

    - Changed the events slot, so it shows events that are currently in
      progress. Earlier it didn't display the event when it
      had reached the start date.
      [limi]

    - Moved contentEdit before edit (so when you call edit the file knows
      what its new id is)
      [runyaga]

    - You can now edit Files from within Plone if they are text/* MIME type.
      [runyaga]

    - Several updates to conform to WAI-A and Section 508 accessibility
      guidelines. [sh1mmer]

    - Major template clean-up:

        - Separated the global defines into own template
          [limi] [elvix]

        - Separated 'base' calculation into own method, removed slot
          [limi] [elvix]

        - Added global DOCTYPE declaration. This means that no templates should
          have its own declaration.
          [limi] [elvix]

        - Removed all references to the base slot from existing templates, they
          were all just using it to set the noborder variable anyway.
          [limi] [elvix]

        - Refactored main_template **heavily**, it contains no logic anymore,
          only structure.
          [limi] [elvix]

        - Moved all the different parts into scripts or templates outside
          main_template
          [limi] [elvix]

        - Generic cleanup of a lot of bad templates
          [limi] [elvix]

    - Added link rel tags for better accessibility, Plone now outputs rel links
      for:

        - Home

        - Contents

        - Search

        - Help

        - Copyright

        - Author

      [limi]

    - Plone doesn't use *any* tables for layout anymore. And it works perfectly
      in Netscape 4 too. Amazing, but true ;)
      (Tested in IE, Moz, Opera and NS4, needs Mac IE testing)
      [limi] [elvix]

    - Major refactoring of the main_template, it's now squeaky clean.
      [limi] [elvix]

    - Lots of cleaning done in the CSS.
      [limi] [elvix]

    - DOCTYPE is correctly positioned
      [limi] [elvix]

    - All templates have been correctly formatted with regard to this.
      IMPORTANT: All templates should start with an html tag on the first
      line, if you don't put it on the first line, the DOCTYPE will not
      be on the very first line, as Zope renders whitespace before filling
      a slot.
      [limi] [elvix]

    - Added 'document_actions' category in portal_actions [runyaga]

    - Added check on advanced search form, it now shows a pulldown for authors
      if there are less than 30, and a text input field if there are more.
      [limi]

    - The search results page now has a link to the advanced search page.
      Search tab removed when generating new site.
      [limi]

    - Content now gets an effective date of "now" if it doesn't have one on a
      state change. Also news now get sorted by effective date. Fixes #1051.
      http://dev.plone.org/plone/ticket/1051
      [ronnix]

    - Removed the About slot from site generation. This is not in migrations, as
      it's bad form to mess with people's existing slots - however, new sites
      created with 1.1 shuld not have it, sinc it is now integrated into the
      documents themselves. [limi]

    - removed all .properties files and made them .metadata files
      tal:define="here/rejectAnonymous" and made [ 'security' ] assertions in
      .metadata    [runyaga]

    - there is now a folder in the root of the Plone site called 'help' which is
      bootstrapped with 'Document' objects located in CMFPlone/docs. Thus, we
      have inline docs now. [runyaga] [limi]

    - ownership_form now reindexes objects when they change ownership. This
      exposes a ugly bug in CMF where Creator=Owner *sigh* [runyaga]

    - Made the default content for a homepage called homePageText (was
      originally a PythonScript - sidnei) a PageTemplate.  The biggest problem
      is the first time throw creating an account wrapUser() is called and you
      get a Memberarea created (and your member object has not has
      setMemberProperties called yet) so you dont have access to the
      member properties ;-( [runyaga]

    - IDs are now generated using a FSPythonScript, generateUniqueId [runyaga]

    - We now require BTreeFolder2, created a 'Large Plone Folder'
      If you have a folder, such as Members who has over a few hundred items
      you should consider using a 'Large Plone Folder'. [runyaga]

    - Fixed permissions on PloneFolder methods set in CopySupport.py (1195)
      [runyaga]

    - Fixed behaviour of the definition list and pre tags in presentation
      mode. [limi]

    - made discussion item preview on the same page using vcXMLRPC, would like
      to do for all content types [andym]

    - tabindex can now be used in left/right_slot too. [magnus]

    - Breadcrumbs and form validation error messages are now translated [magnus]

    - Moved folder_listing into plone_templates [limi]

    - New layout for folder_listing, just lists the items with description now,
      is better as a default view [limi]

    - Moved the "create default document" to the management side
      (folder_contents) where it belongs [limi]

    - CMF from HEAD has version 'Unreleased'. Registered a
      Configuration for it while the apb-redux branch lands. [runyaga]

    - Instance version was set to 1.0beta2 on Portal.py

    - Removed "(No Description)" string from news.pt

    - creates an object to hold customization policy output, if any.

    - Added translation to field 'type' in folder_listing table. Replaced
      'n/a' with '&nbsp' to work like folder_contents

    - Only show "Add Comment" button if discussion is allowed, and user
      has permission to reply to item.

    - integrated browser_default, the default_page variable can be set in site
      properties
      and can be a list of pages to look up in order to find the default:
      eg index.html, index.htm, index_html

    - added migration to future to add in default_page

    - changed meta_type for portal to be 'Plone Site'

    - content_status_history (state tab) form now displays
      the current state in the state list.  This is a usability
      decision. All options should have a default state. Now
      the default is a NOOP, but will not error.  Exposed
      WorkflowException to PythonScripts.

    - folder_contents will show lock if portal_lock isLockedOut returns True
      also removed unnecessary traversal

    - moved the navigation_tree_builder.py into StatelessTree.py; not sure
      if profiling is correct (or I am reading it) but it said its faster.
      the navigation_tree_slot now uses plone_utils.createNavigationTreeBuilder

    - moved documentActions ('print this page', 'send to friend') into a slot
      called item_action_slots which is a proper slot.  Also added a syndication
      widget and all of these are held in plone_templates/ui_slots/actions_slot.pt

    - imported nested_scopes in Portal.py and made pre-beta migrations possible

    - main_template and header cleanup (needs to be re-aligned with CMFDefault)

    - added CMFDefault variables to main_template.pt and moving to use alot of
      the variables declared in main_template else where in PageTemplates

    - items listed in folder_contents generatd urls pointing to immediate_view
      (type information)

    - not addable portal types are returned by the getNotAddableTypes
      script which can be customized to filter out types based on user
      or context. [philikon]


Plone 1.0.5 - Breakbeat Era - Released September 9, 2003

    - Security fix in CMF made us issue a new release with the updated CMF 1.3.2.

    - Workaround for the disappearing text bug in Internet Explorer 6 on Windows.


Plone 1.0.4 - Zita Swoon - Released August 14, 2003

    - Plone is now compliant with the two most widely-used accessibility
      standards in the world - Level A Conformance to the W3C's Web
      Content Accessibility Guidelines (WAI-A) and US Government
      Section 508 compliant.  The law applies to all US Federal agencies
      when they develop, procure, maintain, or use electronic and
      information technology. Under Section 508 (29 U.S.C.  794d),
      agencies must give disabled employees and members of the public
      access to information that is comparable to the access available
      to others. Plone is now able to be used in these agencies.
      [sh1mmer] [limi]

    - Removed code that appeared to be causing login problems with IE 5.0.
      To enable testing to see if cookies are enabled when a user logs in,
      you will need to set the property 'test_cookie_name' to some non-empty
      string in portal_properties/site_properties and make sure that your
      main_template actually sets a cookie with the name you have specified.
      See the standard main_template for some sample code.
      [geoffd]

    - Backported Print CSS fixes from HEAD. All browsers now print properly,
      apart from Mozilla, which still has some way to go before it understands
      print CSS properly, it seems. Tested in IE and Opera 7.
      [limi]

    - PloneFolder.contentValues has grown two args: sort_on and reverse.
      sort_on is a attribute or a callable method on the objects.
      reverse is 0 by default
      [runyaga]


Plone 1.0.3 - Brazil - Released June 19, 2003

    - Fixed ERRATA in 1.0.2

    - various bug fixes such as favorites_slot, discussion edit problems

    - WorkflowTool.doActionFor was not returning objects if they were moved

    - DTML support is now working again (NOTE: deprecated in Plone 1.1)

    - added a property in portal_properties/site_properties called invalid_ids
    which will not be allowed to be used in the CMF/Plone site.


Plone 1.0.2 - Vert - Released June 3, 2003

    - Fixed permissions on PloneFolder methods set in CopySupport.py (1195)

    - 'local roles' tab is now determined by 'Change Permissions' permission.

    - If you dont have access to a object you no longer get a login_form but
      a "permission denied" view [gdavis]

    - added vcXMLRPC lib

    - Fixed behaviour of the definition list and pre tags in presentation
      mode. [limi]

    - tabindex can now be used in left/right_slot too.

    - Breadcrumbs and form validation error messages are now translated

    - Added javascript to warn people that they have cookies disabled before
      they try to log in.

    - Added a page that walks people through the process of enabling cookies.

    - Fixed up the code that sends users on to their destination when they log
      in.

    - When you are logged in and visit a page for which you don't have
      sufficient privileges, you now get a message that says "you have
      insufficient privileges to view this page" rather than a login
      prompt.

    - Removed "(No Description)" string in news.pt

    - creates an object to hold customization policy results, if any.

    - The IE6 fix for invisible text was broken, should work now.

    - Added translation to field 'type' in folder_listing table. Replaced
      'n/a' with '&nbsp' to work like folder_contents

    - Only show "Add Comment" button if discussion is allowed, and user
      has permission to reply to item.

    - added on-error for search results when path('here/%s'%result.getIcon)
      raises a AttributeError

    - making less assumptions in Portal/Customization Policy for migrations of
      very old Plones and imported nested_scopes in Portal.py

    - visual tidy up of main_template and header and try to see if variables
      have been declared before blindly re-initing them.

    - removed the setHeader() in header


Plone 1.0.1 - Mira Calix - Released February 19, 2003

    - Added "Dry run" option to portal_migration

    - Syndication is now using portal_form.

    - calendarDatePickerBox used tabindex instead of tabindex/next

    - validation of expiration_date and effective_date in content_status_history was broken

    - checkPermission was being traversed to in breadcrumbs, navigation*, and
      my_worklist.

    - file/image_edit_form had unexpected behavior.  If you had uploaded
      content (without a Name) it would generate the name.  But if you uploaded
      new content it would rename the object to the new id ;'(.  Thanks to
      Robert Rotterdam for pointing it out and to Limi for having patience ;-).
      we now check isIDAutoGenerated() and if not then we keep the old id.

    - added member and portal global variables in main_template for backwards
      compatability

    - fixed bug in new issue formPlone 1.0


Plone 1.0 - Released February 6, 2003

    - calendar_slot now uses absolute_url() and template.getId() (so you can stay on templates)

    - modified condition of 'state' action in portal_actions so that DTML objects work

    - Removed old Xopus files

    - Removed XSDHTML editor, all editors should be add-ons and not in core
      Plone

    - Added more flexibility for add-on editors by moving format selector into
      wysiwyg_support.pt

    - Netscape 4 support is back.

    - Fixed IE6's bad handling of floating elements - no more invisible text
      on the pages that triggered this bug. This is done with a couple of lines
      in Javascript - no HTML changes.

    - fixed the content_status_modify.failure navigation to goto
      content_status_history instead of old action:publishing thanks to Robert
      Rotterman. NOTE: please do not submit bugs to sourceforge tracker.


Plone 1.0 rc2

    - removed the properties in site_properties that belong in the root
      validate_email, email_from_name/addr

    - added geoff davis's tidy_up.py and tidied up most PageTemplates

    - Issue 787 submitted by Ronnix. Fixes the appropriate place of
      email_from_address

    - now on a portal_workflow.doActionFor() we reindexObjectSecurity()! I think
      this is already done since we are using DCWorkflow! Specifically this was
      addressed by vlado Issue #442. When a folder has changed its permissions
      and should affect the security for its children.
      http://dev.plone.org/plone/ticket/442

    - migration machinery to add skins, change personalize_form to go back to
      personalize_form

    - typo in portal_navigation default.folder_rename_form.success should be
      script:folder_rename this typo was propagated throughout previous
      migration scripts and was also fixed. thanks to flacoste for pointing
      this out.

    - Rewrote the box code, thanks to interra for help with troubleshooting
      browser bugs. Any customized boxes will need a small update, essentially
      you need to do the following to make a box::

        <div class="box">
          <h5>Title</h5>
          <div class="body">
           Then it's just the usual:
           <div class="even content">

      etc.
      (Remember that you will need to do a Ctrl-F5 (force refresh) to make use
       of the new CSS file - normally it is cached for a day or two)

    - Added skin variable to end of CSS file name, avoids caching problems when
      switching skins on the fly.

    - Added several new skins. Plone now contains the skins:

        - Plone Autumn

        - Plone Core

        - Plone Core Inverted

        - Plone Corporate

        - Plone Default

        - Plone Greensleeves

        - Plone Kitty

        - Plone Mozilla

        - Plone Mozilla New

        - Plone Prime

        - Plone Zed

    - Fix for the printing problems which caused some text to disappear along the right edge.

    - Added more i18n stuff, the calendar is now fully localized.
      **Remember that you need to run Zope without any special language
        settings for this to work**

    - Search results now use the defined time format

    - Added CSS workaround for STX tables, they now look like real
      Plone Tables(tm ;)

    - Lots and lots of i18n updates


Plone 1.0 rc1

    - added 'fullname' to portal_memberdata

    - 'properties' forms (metadata_edit_form) no longer allows anyone to add keywords.  this is now
      controlled in portal_properties/site_properties/allowRolesToAddKeywords

    - Added code to ensure that content object ids do not collide with skin names or reserved ids.

    - Added protocol parameter to portal_form_url script.  Fixes issue 593

    - Made sure that the main portal types (file, image, document, event, link, newsitem, folder) all
      work with portal_factory.  Cleaned up some minor edit form bugs and added some form titles where
      they were missing.

    - Fixed a bug in which uploading two files with the same name in the same folder caused an id
      collision and dumped you into the ZMI.

    - Made ids optional for the main portal types (file, image, document, event, link, newsitem, folder).
      If no id is specified, uses the object's current id.  Fixes issue 66.

    - Per the request of our usability guru, for items that can have their id set from a file name
      (file, image, document) we show a blank id when the item is first created.

    - add_ext_editor script was added.  If you have ExternalEditor installed and
      you run this script; it should configure your system to use it.

    - tiny feature.. the filename will remain if your validation fails (not in IE)
      Issue 597

    - folder_publish now applied effective/expiration dates and will do so recurssively.
      Fixes Issue 605.

    - Added site_properties into beta2-beta3 migration script. Thanks interra Issue #659

    - Added some navigation properties into the beta2-beta3 migration script that were missing.
      Also put them into the newly created beta3-rc1 migration script for people who migrated
      using the existing script.  Fixes Issue 600.

    - Added a fallback for createObject navigation when the new object has no 'edit' action.
      Fixes problems with installing CMFWiki and possibly other packages.

    - refactored (only slightly) folder_contents.  Think I may have solved some leakage.
      In previous versions we got a reference to allowedContentTypes and then did a .sort()
      and it seemed ZPT was not cleaning up after itself. ;'( introduced sortObjects (was
      sortObjectValues) and I think its "Doing The Right Thing"

    - added lock icon to folder_contents (which automatically will show up in content_status_history)
      and about_slot

    - minor optimizations of folder_contents and folder_listing.
      lookup references to objects and then use them instead of repeating lookups.  its pretty
      obvious looking at the table tag what has been defined before being used.  Just Good Practice(tm)


Plone 1.0 beta3

    - Added all missing i18n strings, merged some strings to better facilitate translations to
      Japanese, Chinese and Korean.

    - Renamed Plone XP skin to Plone Corporate to avoid confusion with a certain operating system ;)
      This will break your skinpath if you have it pointing to plone_styles/winxp, change it to
      plone_styles/corporate instead.

    - Workflow modification so that Owners can see folder_buttons in Folders that they own.
      Also moved over hardcoded Permissions to constants found in CMFCore.CMFCorePermissions
      fixes Issue 557

    - misspell in PloneWorkflow.py found by dc0e - thanks! fixes Issue 579

    - the Portal object needs to be 'publicized'.  fixes Issue 569

    - if form validaton fails for content_status_history keep dates and comments

    - since CMFCalendar/Event.py uses a different set of Permissions, 'Change portal events'
      we need to add this permission to the Workflow definitions and set the permissions
      appropriately. fixes Issue 575

    - removed a useless conditional check on search_form.pt thanks sspickle!

    - Xopus technology preview has been checked in.  It only works on document_edit_forms currently.
      Thanks to q42.nl for the revolutionary technology.  http://xopus.org/
      !!WARNING!!: Careful if you use Mozilla, it swallows the first paragraph when you save at
      the moment. Will be fixed in a later release, this is just to get a feel of how things will
      work.

    - turned on the 'SuppressHiddenFiles' in folder_contents and folder_listing.
      Now folders that begin with a . will not show up.  Ideally we would want this turned
      off if we were a Manager.  This is something people can customize themself.
      .personal should be for: Portrait, Personal Events, etc.

    - added getFolderContents which wraps listFolderContents for backwards compatibility
      with PortalFolder.  Since it does not provide a suppressHiddenFiles arg we will
      manually apply the suppression in the script.
      navtree_builder has been modified as well so that we will not show these in the navigation tree

    - added verifyPermission argument in MembershipTool.py according to Issue 551 thanks to mitja

    - in PrivatePlonePolicy made Members folder 'published' so that navigation slot works for Members
      I believe this resolves Issue 489

    *NOTE*
    We released a beta3 tarball and then decided to fix the above before a final beta3 tarball release


    - whether or not /folder_contents is appended to the url in folder_contents is now determined by site_properties/use_folder_contents

    - Issue #458 - portal_properties.site_properties is where all Plone/site-wide configuration data is now held

    - Moved changes from 1.2 to Portal.py to the migration

    - Added the migration tool

    - Added PloneInitialize which loads up the ZODB with a Plone instance and some goodies, if and only if the write type of config file that the installer writes is found.

    - CustomizationPolicy made the 'folder contents' tab on object un-visible.
      Also changed the name of 'folder contents' for folder category to 'contents'
      Changes 'Publishing' tab title to 'Workflow'

    - Added "Print this page" option.

    - Reworked the CSS for forms. Should look good in all browsers now, and the
      wrapping problem should be resolved.

    - Made all fonts use percentage values, untangled nesting, made textareas use
      non-proportional fonts. Fixed several other visual bugs.

    - NavigationExceptions now dump stack traces to the event log rather than including
      them in the error message.

    - Object IDs are checked for collision with skin files when renaming objects.  This
      prevents a stack overflow in BSD.

    - createObject now uses portal navigation (default is action:edit)

    - Added getId and meta_type to the catalog metadata

    - Added support for CMFBTreeFolder if it is installed.

    - Added a script, portal_form_url.py, that adds portal_form to a URL in the appropriate
      spot.  If you set your form's action to python:here.portal_form_url(template.id), the
      portal_form machinery will kick in upon submission even if the form's URL doesn't have
      portal_form in it initially.

    - Added validation for folder_rename and changed the navigation properties accordingly.

    - Added "New items since last login" to the logged_in page.

    - You can now set the length of the authorization cookie in portal_properties.site_properties

    - Added portal_properties.site_properties property sheet for portal wide properties

    - Issue 478, folder contents 'add new item' list is now sorted in alphabetical order

    - If a member has defined a portrait it will now show up in 'local roles' form
      also the defaultUser.gif portrait will show up in your preferences unless you
      personalize the portrait

    - Major CSS update:

    - added new box class

    - rewrote all boxes (everything in ui_slots)  to use the new code

    - made News use the new code

    - made Collector use the new code

    - made viewThreadsAtBottom use the new code

    - moved viewThreadsAtBottom to templates dir

    - IMPORTANT: if you have customized your stylesheet properties, you need to add the
      new destructiveButton properties to yours, have a look in stylesheet_properties.props

    - All CSS2 style sheets are now contained in plone.css. This causes fewer requests, and a general
      speedup both in rendering and transfer.

    - Changed the person icon and name in personal bar to link to page of self, not folder_contents.
      This is more consistent with the use of the person icon elsewhere, and you now have both view
      and folder contents link in personal bar.

    - All Netscape4 style sheets were collapsed into on, and re-built. Plone is *much* faster and looks
      much better in Netscape 4.x now.

    - fixed ISSUES: 327, 363, 445 (thanks interra!), 485, 60, 491, 495, 364 (CustomizationPolicy), 494,
      488 (more logic in showEditableBorder *sigh*), 452 (gdavis), 349, 437 (Private Policy, thanks
      mitja!), 471 (thanks SDuncan)

    - Issue 473 - we now have a standard_error_message python script that
      calls the default_error_message PageTemplate.  Its possible for you to customize this script
      and dispatch to an appropriate PageTemplate depending on the error that was raised.  Thanks
      to Tino Wildenhain for providing insight.  #zope is such a great resource.

    - factored out logged_in.pt into 4 entities: logged_in.py (dispatches to appopriate view),
      login_success.pt, login_failed.pt, login_password.pt

    - fixed workflow permissions so that:
      if the Manager 'publishes' the root Folder object (so that Members can 'List folder contents')
      that Members can still 'List folder contents' and get the folder_buttons (portal_actions)
      displayed in their home folder.
      NOTE: at the end of CustomizationPolicies both catalog and workflow tool will be 'reindexed'

    - file_view uses a href now instead of a input button


Plone 1.0 Beta 2

    - navigation slot/tree was made more resilient to exceptions thrown while traversing child nodes

    - migration script has been updated to transfer portal_memberdata over in a more sane way

    - if you only have 1 item you can add dont show drop down list in folder_contents
      just show 'Add New $contenttype' and insert a hidden form variable

    - PrivateCustomizationPolicy had *no way* to let anonymous users view content.  This is
      debatable feature but 99% end users will want a tranistion that allows content to
      be visible by a Anonymous user.  Thus introduced the public state and publicize tranistion

    - PloneFolder mixes in DefaultDublinCoreImpl and declares the DublinCore interface
      also it maps manage_addFolder to manage_addPloneFolder

    - By default only Subject keywords assigned in the portal_metadata show up in metadata_edit_form
      instead of the default CMF policy of all Keywords ever assigned + the allowed ones. Also
      alphabetized Keywords and Languages.  Also removed 'None' from dates.

    - reconfig_form didn't use the postback value of default language, if the form had errors.

    - Bugs fixed 373, 383, 316, 433, 329, 441

    - metadate_edit_form added a '\n' in Contrbutors field, everytime it was saved.

    - Issue 403 - added '<meta>' tags to header, not really used by modern search engines
      need script listMetaTags.py

    - reintroduced getPersonalFolder/getPersonalPortrait python scripts for backwards compatibility

    - Topics use folder_workflow now

    - added titles for *_edit_forms (breadcrumbs seemingly have changed)

    - Issue 300 - Standardized batch navigation. Batching now uses PloneBatch and its macro.

    - Issue 440 - Forms automatically focus on input element with tabindex=1

    - main_template now uses prepare_slots.py

    - added structure here/title_or_id to plone_contents and other views.
      Thanks to 'DZ' on plone.org for noticing

    - dont show a select box, "Show all items" in folder_contents unless there are types

    - gave Manager 'Modify portal content' permission in folder_workflow.published

    - closed out Issue 457.  now ppl can define a ploneCustom.css and it will be included in the header

    - zwork and limi have worked out quite a few issues regarding the new tree maker


Plone 1.0 Beta 1

    - Added tree navigation from Philipp Auersperg and made it the default
      navigation device. Thanks!

    - Fixed #245, there can now be more than one sortable table on a page.
      Use class listing to make it sortable, class nosort to avoid sorting.

    - CustomizationPolicy was not saving changes to personal_form/addtofavorites
      in new_actions now things work as Expected

    - moved getPersonalFolder/getPersonalPortrait to portal_membership tool
      instead of FSPythonScripts

    - Cleaned out all old javascript, consolidated everything into one file,
      this makes the whole thing more caching-friendly. You can also sort
      any table on any page by putting id="sortable" in the table tag.

    - Moved all javascript/ECMAscript into the plone_ecmascript folder. This
      will require earlier instances of Plone to have plone_ecmascript added
      to their skinpath. New sites will work fine.

    - The *big* i18n branch was merged into main Plone, breaks the existing
      translation files, (none of who are complete at the moment anyway)
      but is much more future-proof. We have this change in as early as
      possible, and it makes everything much easier to manage from here on.
      to have a much better control over i18n in the future.

    - subjects(keywords) in metadata tool were being saved with null property..
      automatically relating items

    - filtering was broke changed folder_contents had filter_by_Type where
      CMF1.3 now uses filter_by_portal_type   this required changed to
      folder_contents and filterTypes - only 2 lines of code to change ;) -
      thanks Florrent!

    - topic has been changed to to make the icon clickable, it now uses title or
      id of the catalog brain

    - related box now has '<br />' seperating elements and will not show related
      items that dont have a title - thanks kpm!
      added icons, sort by Type and changed up navigationLocal and only shows
      published items - thanks Raphael Volz!

    - MembershipTool.changeMemberPortrait() method added and removed from
      personalize_form

    - added MIGRATION documentation

    - calendar_slot will only search for items with review_state=published

    - width/height are correctly being calculated for all icons (limi fixed)

    - added validator for content_status_modify and if folder_publish
      is used for mass publishing it will redirect back to folder_contents
      asking for publishing action if none is supplied

    - also fixed the mass publishing which was borked.  now we pass around
      the container

    - Issue 266 fixed - topic_view now says 'no results found'

    - Issue 288 fixed - favorites slot needed '<br />'

    - removed CSSImports and inlined @imports into style tal:content="string"

    - put Content-Language to use here.Language() or

    - portal_properties.default_language

    - changed 'My Stuff' to 'My Folder'

    - moved edit_forms in with content

    - moved event_* into plone_3rdParty/CMFCalendar for consitency

    - Issue 204 fixed

    - Sigve Tjora fixed the migration machinery - incredible job!
      CMFPlone/Extensions/migration.py
      Ownership is carried over properly and reindexes newsite
      after migration

    - portal_status_message is shown when a object is created, type_name has
      been created.

    - Ownership form is wired up but is not visible by default

    - added quick_undo script, one step undo.  not visible by default

    - removed the download tab on File view since we have a button

    - fixed Issue 242, if portal_title==here/title_or_id
      (in a pagetemplate) search for template/id in header -
      thanks ronnix for pointing this out.
      We do this by adding properties on the filesystem i.e.
      search.pt.properties to give search the title=Search results

    - '<shiver>' added more logic to breadcrumbs so you can see templates i.e.
      search tab will show
      home >> search form - fixes issue 211 '</shiver>'

    - content_status_history.pt now uses Effective/Expiration data accessors

    - Andy McKay added nested discussions.

    - You can now delete discussions (need to put security check)


Plone 1.0 alpha4

    - publishing now works without javascript. #202

    - moved plone_calendar to plone_3rdParty/CMFCalendar (your skinpath will
      need updating if migrate)

    - add ownership_form (so you can change ownership)

    - Private plone sites now keep their portal_registration tool, resolving #
      243, #250.

    - Anonymous users do not have Add portal member permission in private plone
      sites anymore.

    - Members folder is no longer cataloged upon reincarnation as a Plone Folder

    - formtooltips for anonymous user are defaulted to portal_memberdata setting

    - fixed FreeBSD segfault problem in forms caused by IndexIterator inheriting
      from ZTUtils.Iterator

    - Issue 236 resolves - verified by Michael Dietrich

    - search_form changed to use portal_type instead of Type thanks to Buehlmann
      and JeffK

    - moved all content forms to portal_form machinery

    - 'editor view' wasnt going to the parent to list folder_contents

    - added personazlie_form/reconfig_form to portal_from machinery

    - when you changed password it was forwarding rather than redirecting to
      personalize_form and losing the portal_form proxy

    - portal_status_messages have been added for all the validate_* and
      *_edit forms

    - news form now has links to Creators homepage

    - first cut at a migration script look Extensions/migration.py

    - many more changes

    - made a second release of alpha4 with input from Jon Lim - thanks!

    - FormTool had typo

    - removed old CMF skins in portal_skins

    - if your object didnt have a title in a topic it wouldnt show the id

    - Issue 345 - content_status_modify wasnt using editMetadata and wasnt guaranteed to
      set the effective/expiration date - FIXED.  and minor aethetic cleanups to boot

    - since we got rid of 'index_html' as a PageTemplate and its a Document.  there
      was no flexible way to assign left/right columns easily.  so we now can use
      Folder properties, left_slots and right_slots to put the Path expressions to
      the slots.  These properties are acquired but Membes.right_slots is empty.


Plone 1.0 alpha3

    - removed tabs, request.set('disable_border',1) from: news, roster, search,
      and search_form

    - reconfig_form for site wide configuraiton has form validation, and exposes
      loads of configuration options

    - change in main_template for portal_types to get object_tabs from
      folder/object has been pushed into a property on portal

    - added 'use_folder_tabs' property on portal object.  portal_type ids that
      are listed will get folder_actions instead of
      object_actions in main_template.

    - fixed edit_topicCriteria (has debug code in it) added navprops entry and
      modified script to use getNextRequestFor

    - Members now have default Title/Description Issue 206

    - if Casey's incredible ExternalEditor application is installed in ZOPE the
      CustomizationPolicy will integrate it into Plone
      this is the ext_editor boolean property on the Portal Object

    - portal_factory tool has been added - Geoff Davis (freakin brilliant)
      this exists to smooth over the fact that you can have empty orphaned
      objects if someone leaves after they
      create a object but before they 'save' changes.  this tool will create a
      proxy object that does not exist
      in the ZODB and the form will be rendered against this proxy object.

    - portal_form tool has been added - Geoff Davis (what a great idea!)
      this co-ordinates the instance, portal_navigation and the edit forms and
      acts like a 'Controller'

    - portal_properties has been extended to now be a container - Alan and Geoff
      Davis

    - tabindex is now being used to generate the tabindex numbers for all fields

    - thanks to Helge!!

    - Topic interface has been completely skinned - cheers to Helge/Alex duo!

    - if event data isnt set it now shows back up in the form - helge

    - integrated XSDHTMLEditor and a way to add other "popup" editor boxes

    - publishing tab will not show up for anonymous #224

    - added more options in 'plone setup' form

    - new Portal wide Property, 'use_folder_tabs' needs to know what Types are
      considered 'Folders' so it shows
      folder tabs and not object tabs.  Wiki/Collector are examples of folderish
      objects that we dont want to see
      folder tabs for.

    - Issues resolves: 206, 214, 173, 229, 106, 180 (removed CANCEL for now),
      198, 233 and others

    - 'select all' column has been added to folder_contents and general
      folder_contents refactoring

    - you can now specify a Default Language for the Portal


Plone 1.0alpha2

    - Added localLongTimeFormat, set to '%Y-%m-%d %I:%M %p' by default. Used by
      Events.

    - Publish tabs now appear on all content types if they have available
      tranistions

    - configurable tabs and buttons have change:

    - local_buttons (in folder_contents form) is now folder_buttons

    - local_tabs (on all pages that showborder) are now object_tabs

    - global_tabs (at the top of the page) are now portal_tabs

    - change status ('mass publishing') now works as expected

    - personalize_form was reseting values on form validation failure

    - on the rename form you can now change the id and title (maybe the id
      should be optional)

    - the way forms interacted with editing scripts has changed:

    - form validation has been refactored (basiclly the only thing you need
      in validate_*.py)

    - the actual editing scripts call plone_utils.getNext???For() to get the
      next screen to goto

    - look at plone_scripts/form_scripts/navigation_properties.props if you want
      to change this.

    - bad id's will not escape the validation machinery

    - if you want to disable registration, unregister the registration tool from
      portal_actions and then remove it

    - added small IndexIterator utility class (PloneUtilities.IndexIterator), we
      should use this for tabindexs

    - metadata_edit_form now has mimetypes/languages boxes that work, also popup
      calendar works now as well

    - some python scripts did not have context namespaces bound to them (on the
      filesystem)

    -  __init__.py files that declard modules in folders if had 0 bytes made
      winzip unhappy

    - folder_contents will no longer show empty dropdown/add new item button or
      (up one level) if they are not usable

    - on Plone site creation we now add another workflow defnition,
      folder_workflow which is bound to Folder types.

    - instead of having a Document as index_html, we use a PageTemplate that
      fills out the master macro and renders
      the CookedBody() of the old index_html, now affectionally called
      'frontpage'

    - added a Navigator Controller.  navigational_properties.props is how you
      customize the various page transitions

    - everything has been (should be) wired up to the new machinery

    - view_source.py has been added to Extensions. use it by
      http://site/object/view_source?template_id=$id

    - create external method, id=view_source, module=CMFPlone.view_source,
        function=getObjectSource

    - topics have been skinned.  subtopics now share their listing/management of
      subtopics with folder_contents

    - removed 'my workspace' (not visible action) until CMFWorkspaces and
      friends land

    - undo form now will return you to where you were when you went to the undo
      form

    - added a PrivateSiteCustomizationPolicy that makes a plone site "private"
      (preconfigures workflow's) -- you will still need to
      customize the header to get rid of the search_form
      tal:condition="not: here/portal_membership/isAnonymousUser"

    - added metadata tab to Event contentType in DefaultCustomizationPolicy

    - fixed issue 163

    - metadata tab is now labeled Properties

    - added XSDHTMLEditor to document form for trial before 1.0


Plone 1.0alpha - Boards of Canada Release:

    - refactored how edit scripts work.  lots of heavy lifting is now done in
      plone_utils.editContent()

    - specialized WorkflowTool and got rid of sloppy External Methods,
      getWorklists and getAvailableTransitions

    - added a Utility object, plone_utils

    - tooltips and ID boxes in edit_forms can be turned off in personal settings

    - Tres added _cloneActions to ActionProviderBase and co. API  and gave diff
      to CustomizationPolicy. All hail Tres!

    - created a CustomizationPolicy for alternate Customizations to be applied
      to Plone on site creation
      these can be seperate products that register with the Portal.addPolicy()

    - all forms were majorly refactored: popup help boxes were added, i18n
      namespaces were used, general html cleanup

    - license changed to GPL, companies can get Plone licensed under BSD - they
      will need to contact Plone Industries

    - added transaction notes (exposed on the undo form)

    - added form validation to password_form

    - renamed recent_news to news

    - removed duplicate content_*_forms (publishing forms)

    - consolidated the content_status_history and content_publishing_history
      into content_status_history (bad name)
      which can publish 1 object or multiple objects.

    - folder_contents now uses actions whose cataegories are local_buttons

    - fullname was not being used.  we took it out on personalize form and
      register form (you can add this back)

    - metadata_edit_form Discussionabiltiy is now radio boxes not dropdown

    - issue #30 - autogenerated passwords only partially being honored

    - issue #58 resolved

    - issue #52 resolved

    - issue #47 resolved

    - issue #51 resolved


Plone 0.9.9 - Bola - Released May 25, 2002

    - Replaced all references to TextColor with FontColor, added
      headingFontColor property

    - New undo page

    - New search results page

    - All CSS and most HTML validate according to W3C's validators

    - fixed up MembershipTool which will add a homepage which will partcipate
      in workflow

    - added a FormulatorTool (portal_form_validation) which is a *thin* wrapper
      around Formulator and exposes
      minimal amounts of functionality.  I didnt know about CMFFormsTool when I
      did this (cmf.zope.org not doing its job)
      so I will have to take another look at whether or not we should go with
      this more advanced component.

    - in CSS we have: class="label required" now, and "field error" if a error
      has occurred.

    - added validation for all *_edit_forms, look in
      plone_scripts/validate_*

    - removed plone_images/img, all images are now in plone_images
        WARNING: you should always specify the full url to the image or caching
        will not occur. ${here/portal_url}/image.gif
        You want to cache as many images on the client side (or in caches in
        front of your ZOPE) as possible.

    - navigate* scripts were fixed (thanks to AndyD) which were causing some
      authentication errors

    - seperated form specific scripts into plone_form_scripts (this includes
      validation scripts)

    - file_view when you download no longers puts trailing 0's and uploaded file
      and image views

    - file and images will change id's to the uploaded file (strip extension).
      if you -specify- an id, like all other objects the file will be renamed to
      this id regardless of uploaded file
      there is no validation on file and images

    - fixed folder_edit (renaming was broke) also added validation - if you
      specify a id, the title is not mandatory.
      we dont want people to have autogenerated ID's in the folder_contents
      listing

    - plone_calendar added - thanks to AndyD
        calendar now works out of the box (after running installation script)

    - fixed ordinary view and 'up one level'.

    - ability to remove MyPortrait

    - put absolute paths in for stylehseets (in the @imports we do that in a
      script, CSSImports.py)

    - all stylesheets now send back RESPONSE headers that promote caching on
      clients

    - in Install/Upgrade we set a property, allowAnonymousViewAbout which
      toggles whether or not anonymous users
      should see a content's about box.  by default it is turned off.
      content_template was impacted

    - navigation works nicely if you are logged in. you can 'go up one level'
      to the root URL and then gets it folder_contents
      should promote people to put content in-place.

    - join_form is now validated using portal_form_validation, we need people
      to review this code!

    - Plone Folder is now the default Folder type inside a portal.

    - if there is no index_html defined it will display Directory Listing
          (like Apache)

    - folder_listing.pt uses Access Contents Information permission

    - if index_html it renders that

    - currently old folders are not converted to the Plone Folders in a
          website.  we need to migration script to do this.

    - CSS can now be manipulated by CSSValues.py, dont need to customize to the
      CSS themselves. This means you can keep your colors even if we change the
      CSS files.

    - individual objects can be toggled discussionable in their metadata edit
      forms (taken from CMF1.2 metadata form)

    - discussions attached to a object use structured-text

    - from folder_contents you can now publish multiple objects if you have
      permission

    - join_box doesnt show up if anonymous doenst have access to add portal
      member

    - Netscape 4.x graceful degrading added. It has its own CSS files.

    - review_box shows all content that matches any worklist where you qualify
      NOTE: this means DCWorkflow has now become -required- and you should use
      worklists to assign items to people.

    - if you are in multiple worklists, you will not get duplicate entries in
      review list in your UI ;)

    - took out unused getObject() calls in search.pt

    - Changed ALL pages to use main_template as their template, instead of the
      previous two portal_template and content_template.
      This means we are compatible with all existing CMF Products, although
      they can break our look a wee bit if they are coded
      badly, which a lot of Products unfortunately are.

    - Added new method to deal with CSS values - stylesheet_properties.props

    - standard_html_header/footer are now in place for backwards compatibility.
      thanks Evan Simpson!

    - Collector and Wiki have been minimally skinned (plone_3rdParty)

    - added default content to the root of Plone, index_html

    - moved most of the boxes into plone_ui_slots (trying to lighten
      portal_boxes), added FSDirectoryView for ui_slots

    - you can now create a Plone site by simply 'Add Plone Site' from inside
      the ZMI (thanks Lalo!)

    - suppressed empty comment history in content_status_history

    - Calendar slot works as Expected (only published events show up)

    - rejected content status no longer redirects to a search page

    - if you upload a binary into a Document object, form validation gripes
      [useability issue]

    - CMFTopics pretty much work, there is a bit more work to do.

    - personalize.py and other CMF1.3 issues have been resolved (setting a
      member properties API has changed in 1.2->1.3)

    - showEditableBorder has gone through quite a bit of changes.. still is
      wrong

    - Comments have been modified - they are still unuseable ;(

    - Lucas Marshall pointed out a javascript error in the calendar slot on
      MacOS and a fix 8)

    - News items can now use structured-text in the edit_form

    - my_worklist works correctly and sorts in ascending order for modified

    - you can now edit text of File objects who has text content_type

    - added StringIO string access

    - added 'change status' button that allows mass publishing of folder
      contents

    - refactored filesystem directory view skin structure

    - plone_scripts contains scrips and supporting form_scripts

    - plone_templates containers site wide templates and supporting ui_slots

    - plone_styles container default style and optional plone_themes

    - base href is now compatible with how other CMF Products work.  This
      means you can use other CMFProducts out of hte box (hopefully ;)

    - beginnings of workspace

    - moved back to 2 column layout (CMFPlone/Extensions/Upgrade.py
      migrate2ColumnLayout function)

    - no longer have to go to folder_factories to create a certain type,
      can do it from folder_contents

    - many more changes and cleanups


Plone 0.9.8 - Ulrich Schnauss - Released March 19, 2002

    - renaming of objects

    - more mozilla enhancements

    - calendar support code was optimized (AndyD)

    - on Memberarea creation creates a .personal folder for Portrait and
      future private items (by convention)

    - fixed it so that http:// isnt always added to link's remote_url

    - other things I forgot ;'(


Plone 0.9.5 - Released January 31, 2002

    - enormous overhaul of entire UI.  UI now works with Mozilla.
      Install script installs skins
      navigation boxes work (left hand side)

    - worked out most deadends

    - some security calls have been put in place

    - navigation is much nicer and lends itself to more real-world use of CMF as
      filesystem/document sharing

    - some cleaning up of code, lots of inefficiencies remaining (
      like listFolderContents)
      breadcrumbs overhauled

    - comments have been changed, still more to go before 1.0

    - some visual queues exist for users (green border around objects which
      can be edited)

    - plone can now be skinned *entirely* using CSS and overriding the /img
      folder
      NOTE: you will need to have copies of all the images in your /img folder

    - system should never prompt someone for Username/password if they are
      logged in all *_edit scripts return back to objects view

    - changing ID works in *_edit_form

    - you can now customize your 'portrait' in /Members/roster by doing the
      following:

    - create a folder, .personal in your home folder

    - create a image in .personal called MyPortrait

    - publishing your /Members/*/.personal/MyPortrait image

    - folder_contents now sort (case insensitive) alphabetically by default,
      no more 'pagination' in batches of 10

    - added current server time in the top right corner ;)

    - content_status_history has been simplified -- still hardcoded
      transitions ;(

    - BSD license added (not final license, as will require some non-visual (?)
      attribution)


Plone 0.9 - Released January 20th, 2002

    - load of fixes, too many to even attempt to keep track of ;)


Plone 0.7 - Released December 12th, 2001

    - folder_edit_form id is editable (not so if its your own member folder id ;)

    - new Install.py

    - new folder structure (makes more sense)

    - new look (content tabs)


Plone 0.6

    - so fast didnt have time to catch 'em


Plone 0.5 - Released December 3rd, 2001

    - fixed search form up

    - fixed folder_contents (not have an extended_edit, since we muck w/
      metadata alot)


Plone 0.4 - Released October 23rd, 2001

    - Various improvements


Plone 0.1 - Released October 4th, 2001

    - Initial release
