.. This file should contain the changes for the last release only, which
   will be included on the package's page on pypi. All older entries are
   kept in HISTORY.txt

Changelog
=========

4.0.9 - 2011-07-19
------------------

- Release Plone 4.0.9
  [esteele]

4.0.8 - 2011-07-05
------------------

- Use ``transaction.savepoint`` instead of ``transaction.begin`` in
  ``isLinked``; 
  closes #7784;
  does not reopen #6666 probably because we use fixed version of ZEO
  [gotcha]

- Optimized: Huge optimization of calendar_formfield.js under ie8 and lower.
  Gain of 50% on js execution on a large page.
  [thomasdesvenain]


4.0.7 - 2011-06-02
------------------

- Apply patches to prevent exploitation of CVE-2011-1948 (Hotfix 20110531.)
  [elro]

- Set Language to 'all' to list content in all languages when listing a
  worklist's contents (workflow) to support LinguaPlone better.
  [mj]


4.0.6 - 2011-05-20
------------------

- Backport set appropriate cache headers on createObject redirects to prevent
  caching by proxy servers.
  [elro]

- Fix form tab navigation when it has more than 6 tabs under ie, chrome, safari.
  This fixes http://dev.plone.org/plone/ticket/11815.
  [thomasdesvenain]

- Let the content import step (importing the site structure) not
  depend on plone-final but on typeinfo.  Solves circular dependency.
  Refs http://dev.plone.org/plone/ticket/8350
  [maurits]

- Backport fix zope.sendmail patch to raise errors for immediate sending
  failures. Relates to http://dev.plone.org/plone/ticket/10675.
  [elro]

- Fix form submission when it has more than 5 tabs.
  This fixes http://dev.plone.org/plone/ticket/10868.
  [thomasdesvenain]

- Fix cicular dependency in import steps.
  This partially fixes http://dev.plone.org/plone/ticket/8350
  [kiorky]

4.0.5 - 2011-04-06
------------------

- Fixed: "showing field with error is broken in edit view"
  This fixes http://dev.plone.orgplone/ticket/11686.
  [gotcha]

- Fixed: "missing required icon in tabs in edit view"
  This fixes http://dev.plone.orgplone/ticket/11685.
  [gotcha]

- Added "rss" alias to "RSS".
  This fixes http://dev.plone.orgplone/ticket/11638.
  [gotcha]

- Fixed: "Show all" livesearch link manages "current folder only" option.
  This fixes http://dev.plone.orgplone/ticket/11414.
  [thomasdesvenain]

- Fixed: "Show all" was not displayed in live search
  when limit result was exceeded.
  This fixes http://dev.plone.orgplone/ticket/11628.
  [thomasdesvenain]

4.0.4 - 2011-02-26
------------------

- Remove useless trailing slash in 404.
  This fixes http://dev.plone.org/plone/ticket/11550
  [gotcha]

- Use correct argument order in utranslate.py script.
  This fixes http://dev.plone.org/plone/ticket/10395
  [fRiSi]

- Add missing security declarations on PropertiesTool.
  [davisagli]

- Add fallback icon for control panels with no icon, in the portlet_prefs
  portlet. This fixes http://dev.plone.org/plone/tickets/11112.
  [topherh, davisagli]

- Remove js-generated inline style from searchbox. Same CSS is in public.css.
  See http://dev.plone.org/plone/changeset/40654,
  Fixes http://dev.plone.org/plone/ticket/11186
  [msmith64]

- Fixed handling of relative links used as default pages
  This fixes http://dev.plone.org/plone/ticket/11340
  [fRiSi]

- Re-instate spinner.gif (animation), lost in the move to PNGs. The static
  spinner.png has been deprecated.
  Fixes http://dev.plone.org/plone/ticket/11504
  [mj]

4.0.3 - 2011-01-18
------------------

- Change PloneBatch class to work with actual_result_count alone instead of
  calculating the length of the provided sequence.
  [hannosch]

- Pass on batching hints to the catalog query in `getFolderContents`.
  [hannosch]

- Make role/permission settings consistent in Plone root
  http://dev.plone.org/plone/ticket/7922
  [tom_gross]

- Added some css ids on login form.
  [thomasdesvenain]

- Fixed possible Unauthorized error when registering a user when using
  the email address as login name.
  [maurits]

- Fixed errors on kss update in portal factory.
  This fixes http://dev.plone.org/plone/ticket/11311.
  [thomasdesvenain]

- In the registration tool strip the mail text before passing it
  through message_from_string.  A leading white line would prevent
  getting Subject, To and From headers from the generated message.
  [maurits]

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

4.0.2 - 2010-11-15
------------------

- Added fill-slot to events_listing.pt that was not showing any events.
  This fixes http://dev.plone.org/plone/ticket/11216.
  [jmansilla, WouterVH]

- Fixed ``factory.addPloneSite`` so extension profiles have a chance of
  specifying site properties in a ``properties.xml`` file.
  [hannosch]

- Edit tab on Author page pointed to personal preferences page instead of
  personal information.
  This fixes http://dev.plone.org/plone/ticket/11141.
  [piv]

- Fixed http://dev.plone.org/plone/ticket/11160,
  first level of Table of Contents is a level with at least two entries.
  [thomasdesvenain]

- Fixed: http://dev.plone.org/plone/ticket/11177, some formselector
  specifications for popups were too vague.
  [smcmahon]

- Fixed: http://dev.plone.org/plone/ticket/11187, Better message when
  you cannot delete a locked item
  [kiorky]

4.0.1 - 2010-09-28
-------------------

- Fixed : 'listing' class table sort of first column failed (at third click).
  [thomasdesvenain]

- Re-add suggestions for 404 pages that were missing in 4.0.
  [MatthewWilkes]

- Block picking a username already in use by a parent PAS to prevent potential
  security issues due to collisions.
  [MatthewWilkes]

- Successful completion of contact form ended in redirect to 'undefined'
  when using popups. Fixed by just closing.
  Fixes http://dev.plone.org/plone/ticket/11090
  [smcmahon]

- Fixed i18n of the Upgrade hellip button in plone-overview.pt.
  [vincentfretin]

- Fix a malformed list comprehension in failsafe_login_form.cpt
  [esteele]

- Modified plone.css.py script to correctly show contents for z3 style resources, by
  using portal_css.getInlineResource.
  This fixes http://dev.plone.org/plone/ticket/10864
  [mr_savage]

- Fixed http://dev.plone.org/plone/ticket/10956 - prevent content of the
  types listed in typesUseViewActionInListings from being selected as default
  pages.
  [elro]

- Validate new group names using the isMemberIdAllowed method of the
  registration tool. This fixes http://dev.plone.org/plone/ticket/10897.
  [davisagli]

- Add a default icon when there is no icon defined in a configlet.
  This prevent broken images on IE. This fixes http://dev.plone.org/plone/ticket/11112.
  [kiorky]

4.0 - 2010-08-28
----------------

- Tag 4.0 final.
  [esteele]

4.0rc1 - 2010-08-05
-------------------

- Fixed http://dev.plone.org/plone/ticket/10790
  "popupforms.js causes javascript error on IE7"
  [smcmahon]

- Limit number of matches looked up during live search for speedier replies.
  [witsch]

- Use the standard libraries doctest module.
  [hannosch]

- Don't open content_status_history in a popup, it requires template specific
  JS and CSS to be loaded. This refs http://dev.plone.org/plone/ticket/10726.
  [hannosch]

- No longer mention `textile` as a supported markup style. We don't ship with
  the required Python packages by default. This closes
  http://dev.plone.org/plone/ticket/10690.
  [hannosch]

- Fix the table of contents generation script to include h1 tags from the
  content body. Fixes http://dev.plone.org/plone/ticket/10755
  [davisagli]

- Update `plone-upgrade.pt` to explicitly check if a Plone instance has
  been downgraded since the database was created. This fixes:
  http://dev.plone.org/plone/ticket/10220
  Thanks to davidblewett for the patch.
  [claytron, davisagli]

- Update license to GPL version 2 only.
  [hannosch]

- Use Unicode characters instead of HTML entities in the default front page
  text. This closes http://dev.plone.org/plone/ticket/10084.
  [hannosch]

- Replace the `manage_zmi_logout` link and page with a nicer Plone specific
  implementation.
  [hannosch]

- Fixed the visual appearance of the `logged_out` page.
  [hannosch]

- Stop issuing deprecation warnings about action icons in our default install.
  [hannosch]

- Silence the ISO8601 warning until we fixed all of Plone Core. This refs
  http://dev.plone.org/plone/ticket/10322.
  [hannosch]

- Avoid deprecation warning in sendmail patch and require at least Zope 2.12.9.
  [hannosch]

- Removed long unused ``ie5fixes.js``. This refs
  http://dev.plone.org/plone/ticket/10287.
  [hannosch]

- Be a bit less noisy in GenericSetup handlers and don't log a
  ``Nothing to import`` message for our own handlers.
  [hannosch]

- Fix broken userid/login name in the password reset code. Fixes
  http://dev.plone.org/plone/ticket/10767
  [wichert]

4.0b5 - 2010-07-07
------------------

- Don't show the site's logo on the upgrade screen. Trying to render it can
  cause problems on not yet upgraded sites.
  [hannosch]

- No longer show relevance percentage numbers in search results. What matters
  to users is the search results order; the numbers are meaningless.
  [hannosch]

- No longer include a searchterm parameter in the query string when linking
  from the search results page, as it will be picked up from the referer.
  [davisagli]

- Fix the highlightsearchterms script to not apply highlighting within
  textareas, to avoid data loss. Fixes http://dev.plone.org/plone/ticket/10573
  [davisagli]

- Improved comment display and behavior: Now opens "Add comment" in an
  overlay, no longer insists on a Subject for every comment, and more readable
  layout. Also improved the error messages.
  [limi]

- Switching the default modal window effect to be a white-out instead of a
  darkened effect. With large windows, the darkening is very distracting, and
  it also reminds people of the UAC prompts from Windows Vista/7, which is not
  a good thing. ;)
  [limi]

- Removing action links from Events, since they are in the template (and were
  never supposed to have actions in the first place). This fixes
  http://dev.plone.org/plone/ticket/10540.
  [limi]

- Better icon for the theme control panel. (Thanks, Tango!)
  [limi]

- Added normalizeString to the Plone view interface, where the declaration was
  missing.
  [davisagli]

- Add a contenttype class to the items listed in select_default_page.cpt, so
  they can get sprited icons. Fixes http://dev.plone.org/plone/ticket/10577.
  [davisagli]

- Add a contenttype class to the links in the livesearch results, so that
  they can get sprited icons. Fixes http://dev.plone.org/plone/ticket/10512.
  [davisagli]

- Avoid using the deprecated five:implements directive.
  [hannosch]

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

- No longer use the extra argument to the functional tests publish method.
  [hannosch]

- Make the jQueryTools overlay configuration options in popupforms.js be
  the default overlay configuration for jQueryTools so that popup forms in
  other add ons look similar.
  [smcmahon]

4.0b4 - 2010-06-03
------------------

- Fix FactoryTool to mangle REQUEST.BASEn correctly.
  [elro]

- Updated the description_user_management default message in
  plone_deprecated/prefs_users_overview.cpt to be the same as
  plone/app/controlpanel/usergroups_usersoverview.pt
  [vincentfretin]

- Ensure text is shown for the various Collection views. This fixes
  http://dev.plone.org/plone/ticket/10226
  [pelle]

- Set the correct meta_type for files and images.
  [hannosch]

- Removed the Large Plone Folder portal_type and LargePloneFolder class.
  Instead, use a normal ATFolder from plone.app.folder, with its ``ordering``
  attribute set to u'unordered'. Existing Large Plone Folders will get
  migrated when upgrading from older versions of Plone.
  [davisagli]

- Removed empty HTML tags from listings when an item in the listing has no
  description.
  [spliter]

- Fix bad test for valid paste data in object_paste.
  [wichert]

- Remove deprecated IndexIterator class and tabindex html attribute
  [edegoute]

- Use a mask to visually highlight modal overlays. Configurable in
  popupforms.js. Set a common set of configuration options, defaulting
  to overlays that use absolute positioning.
  [smcmahon]

- Update the ZMI security tab warning so it doesn't display outside of a Plone
  site.  This fixes http://dev.plone.org/plone/ticket/10521.
  [davisagli]

- Get configlet icons directly from the action, rather than using the
  getIconFor helper.  This breaks the backwards-compatible fallback to the
  action icons tool, but avoids re-evaluating all action conditions for each
  configlet.
  [davisagli]

- Report expiration of password resets for registration as an absolute time,
  rather than a number of hours.
  [davisagli]

4.0b3 - 2010-05-03
------------------

- "(Requires Javascript)" is now translatable in accessibility-info.pt.
  This closes http://dev.plone.org/plone/ticket/10475
  [vincentfretin]

- Revert changes from changeset 34269, which prevented the calendar widget
  from properly saving results. Add another hidden field for the purposes
  of handling the label's for attribute.
  Fixes http://dev.plone.org/plone/ticket/10450
  [esteele]

- Update capitalization of i18n:translate-d tags in deprecated templates to
  avoid i18ndude warnings on new templates.
  [esteele]

- Updated default_error_message.pt to provide a better 404 Error page as per
  http://dev.plone.org/plone/ticket/8667
  [cwainwright, dunlapm]

- Fixed newsitem_view to not render the caption if the field is empty.
  [limi]

- Moved old GIF variants of the icons to plone_deprecated, since Plone itself
  uses the PNG variants now.
  [limi]

- Added touch_icon.png for iPhone/iPad home screen support.
  [limi]

- Fixed clipped icons for most of the content type sprites by centralizing the
  definitions and setting line-height to 2em. There's still an issue where
  tal:replace="structure item_icon/html_tag" renders an img tag without src or
  points to the root, which makes the layout have an empty element. Probably
  needs to be fixed in the html_tag expression (e.g. if there isn't anything
  there, don't render). Should be good enough for beta3, but needs to be fixed
  before RC. See LiveSearch results + Advanced Workflow + Collection view
  (e.g. "Events") for examples of this. References
  http://dev.plone.org/plone/ticket/10409,
  http://dev.plone.org/plone/ticket/10466
  [limi]

- Don't take values directly from the request in ``getFolderContents``.
  request.form can include arbitrary data and request.other contains a whole
  lot of data, which isn't valid catalog indexes.
  [hannosch]

- Don't send Bcc header with Mailhost.secureSend. Renamed CC header to Cc.
  [vincentfretin]

- Fixed folder_listing.pt so it doesn't stringify and then reparse the start
  and end dates of events (this also fixes a timezone issue,
  http://dev.plone.org/plone/ticket/10445)
  [davisagli]

- Fixed folder_listing.pt so that it shows event dates in a cleaner way
  (no more redundant listing of times + dates when and event is on one day
  has same start + end time)
  [jonstahl]

- Change the title of the Users folder to be more in line with its actual
  function.
  Fixes: http://dev.plone.org/plone/ticket/9693
  [cwainwright]

- Inject contentFilter as `**kw` params to topic's queryCatalog and not as first
  argument which should be the REQUEST, if given. With that in place, batching
  on contentFiltered topics works again.
  Fixes: http://dev.plone.org/plone/ticket/10428
  [thet]

- Template for editing user preferences (prefs_user_details) is replaced by
  personal information and preferences forms from plone.app.users. Moved
  prefs_user_details and prefs_user_edit to deprecated skins.
  http://dev.plone.org/plone/ticket/10327
  [kcleong]

4.0b2 - 2010-03-09
------------------

- Explicitly check that a searchterm was provided before adding it to the
  query string.
  Fixes http://dev.plone.org/plone/ticket/9025
  (Port of [35909])
  [blueaidan]

- Batch folderContents in folder_listing's listing macro if it's not already
  batched when passed in. This closes http://dev.plone.org/plone/ticket/10401
  [davisagli]

- Added overlays for Rename and selecting default folder views.
  [limi]

- Made the core content types use CSS sprites instead of individual images,
  which cuts down the number of image HTTP requests from 11 to 2.
  This fixes http://dev.plone.org/plone/ticket/10403
  [limi]

- Cleaned up the type descriptions, and removed the ones where that are
  self-evident or redundant.
  [limi]

- Fix several issues in the RSS template: don't get the logo name from
  base_properties, correctly fetch the full text and last modified date, and
  only specify the publishing date in the output.
  [davisagli]

- Add and adapt tests for moving dates bug which was caused by date
  conversion without respect to Daylight Saving Times.
  Fix for http://dev.plone.org/plone/ticket/10141
  [thet]

- Removed msgid for "Site Setup" message in portlet_prefs.pt
  and plone_control_panel.pt.
  [vincentfretin]

- Added in support WebKit- and Gecko-based small-screen devices
  (iPhone, Android, Firefox Mobile)
  [limi]

- Make prefs_main_template fill portlets_one_slot instead of column_one_slot
  to add its portlet, for compatibility with Sunburst.  Also make it
  unnecessary for custom configlet templates to set display_border.
  [davisagli]

- Adjusted viewlet configuration so that the Sunburst theme uses the viewlets
  defined in plone.app.layout, and the Classic theme overrides that
  configuration to achieve the old viewlet positions.
  [davisagli]

- batch_macros.pt: Use request/ACTUAL_URL instead of context/absolute_url as
  batching base url so that batching works for diffent views and FSPageTemplates
  appended to context/absolute_url.
  The approach ${context/absolute_url}/${template/getId} didn't work for views.
  [thet]

- Fix columns in prefs_main_template.
  [davisagli]

- Use zope.app.locales >= 3.6.0, this package have now a configure.zcml
  which register the translations, we use it now.
  A new version of zope.app.locales is needed to fix
  http://dev.plone.org/plone/ticket/10105
  [vincentfretin]

- Fix argument order in translate Python script.
  [davisagli]

- Simplify folder_tabular_view to use the folder_listing macros.
  [elro]

- folder_listing should batch for collections, like folder_tabular_view.
  This was introduced to fix #7937 but it no longer seems to be a problem.
  [elro]

- Simplified the "Event when" i18n introduced in 4.0b1.
  [vincentfretin]

- Fixed DYNAMIC_CONTENT in heading_prefs_user_details message.
  [vincentfretin]

- Updated the table_sorter.js to use Unicode for its arrows instead of images.
  Also made it more robust, so it doesn't fail if you have two columns with
  the same name. This refs http://dev.plone.org/plone/ticket/10352
  [davisagli, limi]

- Stop removing the $ alias for jQuery, since many plugins rely on it. Users
  worried about conflicts with other libraries can customize
  jquery-integration.js and set jq = jQuery.noConflict() again, instead of
  jq = jQuery
  [davisagli, limi]

- For Managers, make default_error_message display tracebacks inline rather
  than linking to them.
  [davisagli, limi]

- Fixed livesearch_reply.py to give the context to ts.translate method.
  [vincentfretin]

- Fixed plone_scripts/translate.py to use translation_service.translate
  method. translation_service.utranslate was removed in recent version of
  PlacelessTranslationService.
  [vincentfretin]

- Reverted default message for description_group_members_of in
  plone_deprecated/prefs_group_members.cpt
  [vincentfretin]

- Fixed help_biography message.
  [vincentfretin]

- Internationalized the backup-warning message in plone-upgrade.pt.
  [vincentfretin]

- Removed template_id from batch_base_url in batch_macros.pt because it breaks
  when overloading the folder_listing template via zcml.
  [thet]

- Convert limit_display to int in folder_tabular_view.pt and folder_listing.pt
  so that it can be fed in via request parameters.
  [thet]

4.0b1 - 2010-03-08
------------------

- "Event when" improved for better i18n.
  This closes http://dev.plone.org/plone/ticket/10196
  [gotcha]

- Adjust the tests now that `DateTime` objects are stored with a time zone.
  Refs http://dev.plone.org/plone/ticket/10141
  [witsch]

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

- Set the 'context' context on Plone expression contexts, which is needed for
  resolving UnicodeDecodeErrors when evaluating expressions.
  [davisagli]

- Added optional batchformkeys parameter to batch_macros.pt to restrict which
  form fields will be included in batch navigation links (for immediate use
  in plone.app.controlpanel's user and groups listsings).
  [cah190]

- Added markup to give styling to document ByLine in folder_summary_view.
  This fixes http://dev.plone.org/plone/ticket/6094
  [dunlapm]

- Add an HTML id to the "add group" form.
  [stuttle]

- Moved the tal:condition from the <img> tag to <a> tag in folder_summary_view,
  to remove unnecessary empty <a> tags when no image exists.
  References http://dev.plone.org/plone/ticket/10251
  [miguelitosm]

- Removed the 'ListFolderContents' permission from all workflows and limit the
  default permission to Manager, Owner, Reviewer, Editor and Contributor.
  It should not change with workflow state, it's an edit/admin view that you
  either should have or not.
  References http://dev.plone.org/plone/ticket/10236
  [tomster]

- Switched plone.kss from relying on redundant #region-content to #content.
  References http://dev.plone.org/plone/ticket/#10231
  [spliter]

- Hide the Kupu and placeful workflow add-ons at normal site creation time.
  [hannosch]

- Ensure that implicitly selected profiles are installed first, so themes
  depending on them are installed correctly. This closes
  http://dev.plone.org/plone/ticket/10223.
  [hannosch]

- Cleaned plone_control_panel.pt and fixed it's validation.
  [spliter]

- Moved portalStatusMessage in author.pt above #content for case when the
  user is not found. References
  http://dev.plone.org/plone/ticket/10231
  http://dev.plone.org/plone/ticket/9981
  [spliter]

- Upgraded to jQuery 1.4.2.
  [mj]

4.0a5 - 2010-02-19
------------------

- Replace `getObjPositionInParent` with stub index capable of sorting search
  results according to their position in the container, a.k.a. "nogopip".
  [witsch]

- Move `isExpiry` into `CMFPlone.utils` so it can be called directly,
  i.e. without searching the skin.
  [witsch]

- Removed redundant 'configlet' class from prefs_group_details.pt and
  prefs_user_details.pt
  [spliter]

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

- Removed deprecated 'sub' slot from discussionitem_view.pt.
  [spliter]

- Added a condition to the automatic loading of ZCML configuration (via the
  ``[z3c.autoinclude.plugin]`` ``target = plone`` entry point), so that it
  is possible to disable automatic loading. This is particularly useful in
  tests, where automatically included packages can cause leakage of state or
  unrelated errors if Plone's ZCML is loaded. To disable auto-inclusion,
  you can add a ZCML statement like the following::

    <configure xmlns="http://namespaces.zope.org/zope"
               xmlns:meta="http://namespaces.zope.org/meta">
        <meta:provides feature="no-autoinclude" />
    </configure>

  You need to do this "early", i.e. before Plone's ZCML is loaded.
  [optilude]

- Fix a test regression in discussion_reply_form if the layout for the
  item being discussed has no content-core macro.  (Such as the
  link_redirect_view.py script for a Link item).
  [davisagli]

- Wrapped .contentViews and .contentActions with <div id="edit-bar"> in views.
  [spliter]

- Wrapped .contentViews and .contentActions with <div id="edit-bar"> in order
  to have consistent markup between classic and Sunburst themes.
  [spliter]

- Cleaned up some markup mess, #region-content, .documentContent were redundant,
  and were reduced to #content instead, to reduce confusion.
  Full explanation here: http://dev.plone.org/plone/ticket/10231, and
  instructions for theme authors here:
  http://plone.org/documentation/kb/how-to-write-templates-for-plone-4
  [limi]

- Moved the prepareObjectTabs method from the @@plone view to the
  ``plone.contentviews`` viewlet.
  [hannosch]

- Moved layout related methods from the @@plone view to a new @@plone_layout
  view found in plone.app.layout.globals.
  [hannosch]

- Add a `meta:provides` directive to `meta.zcml` that provides the feature
  `plone-4`. To load Plone-4 specific ZCML, you can use something like this::

    <configure xmlns="http://namespaces.zope.org/zope"
               xmlns:zcml="http://namespaces.zope.org/zcml">
        <include zcml:condition="have plone-4"
                 file="plone-4-specific-stuff.zcml" />
    </configure>

  [optilude]

- Add new editing control panel.
  [hannosch]

- Hide the rss and print document actions for new sites. Both are consistently
  supported by browsers today and don't need site specific actions anymore.
  [hannosch]

- We need to include ZCML from `plone.app.folder`, not just `plone.folder`.
  This refs http://dev.plone.org/plone/ticket/10127.
  [witsch, hannosch]

- Removed the no longer needed history viewlet. This refs
  http://dev.plone.org/plone/ticket/10102.
  [hannosch]

- Made history act as an ajax popup rather than an inline collapsible. The
  goal is to reduce rendering time when history isn't needed.
  [smcmahon]

- Updated author.pt to follow general markup conventions.
  References http://dev.plone.org/plone/ticket/9981
  [spliter]

- Updated templates to fill 'main' slot with <metal:main fill-slot='main'>
  construction instead of <div metal:fill-slot="main" tal:omit-tag="">
  [spliter]

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

- Added 'All content' blog like view for folderish types.
  [elro]

- Re-factored folder listing and summary view.
  [elro]

- Updated templates to disable the columns with 'disable_MANAGER_NAME'
  pattern.
  [spliter]

- Add current portal type to the body css class like the section
  and template css class's.
  Refs http://dev.plone.org/plone/ticket/8777.
  [pelle]

- Deprecate the portlets_fetcher and macro_renderer templates.
  [davisagli]

- Clean up various HTML comments that were being emitted unnecessarily.
  [davisagli]

- On the Zope overview screen, make sure the user is authenticated at
  the Zope root before sending them to the upgrade view for a Plone
  site, when the Upgrade button is clicked.  This closes
  http://dev.plone.org/plone/ticket/10154.
  [davisagli]

- Increased maximum length of the sortable_title index from 40 to 70 characters
  to match truncation rules of most search engines. This closes
  http://dev.plone.org/plone/ticket/10170.
  [hannosch]

- Restrict manage_options on the catalog to supported and useful options.
  [hannosch]

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

- Register common CSS resources as blank files here. Other themes are
  supposed to override them to style the site appropiately.
  Refs http://dev.plone.org/plone/ticket/9988.
  [dukebody]

- Updated markup for kss_generic_macros and made main_template to use that
  as the default generator for titles and descriptions.
  [spliter]

- Cache the Plone expression context in the _plone_ec_cache attribute of the
  request, rather than _ec_cache, to avoid accidentally getting a plain CMF
  expression context if that's the first sort that was fetched.
  [davisagli]

- Update profile version, so we can register new upgrade steps.
  [hannosch]

- Fix portal_factory to not destroy sub-path traversal. For example, a view
  that implements IPublishTraverse would previously not see the traversal
  sub-path if invoked on an item being edited in the portal_factory.
  [optilude]

4.0a4 - 2010-02-01
------------------

- Define a "content-core" macro for each content view template to make blog
  like listings possible.
  [elro]

- Make sure the default content folders (news, events, and Members) are
  not explicitly ordered (e.g., equivalent to the old Large Plone Folder
  type).
  [davisagli]

- Show user's fullname in form header in prefs_user_details
  [esteele]

- Deprecated plone_prefs/prefs_search_macros.pt
  [esteele]

- Deprecated plone_prefs/prefs_user_memberships.pt,
  plone_prefs/prefs_user_memberships.pt.metadata,
  plone_prefs/prefs_user_membership_edit.py,
  plone_prefs/prefs_user_group_search.py. Functionality is now handled by
  @@usergroup-usermembership.
  [esteele]

- Overlay form on @@usergroup-groupprefs and @@usergroup-userprefs now
  redirects to the current page instead of reloading it. Reloading caused a
  resubmission of the last form action (such as "delete") which threw an
  error.
  [esteele]

- Deprecated plone_deprecated/prefs_group_members.cpt,
  prefs_group_members.cpt.metadata, prefs_group_members_add.cpy,
  prefs_group_members_add.cpy.metadata, prefs_group_members_delete.cpy,
  prefs_group_members_delete.cpy.metadata. These are now handled by
  @@usergroup-groupmembership in plone.app.controlpanel
  [esteele]

- In the tests, patch the MockMailHost to give it a secureSend method,
  just like we already patch the real MailHost.
  [maurits]

- Make QuickInstallerTool.upgradeProduct() able to handle upgradeSteps
  directive.
  Closes http://dev.plone.org/plone/ticket/9455
  [cah190]

- Update jquery.js to use jquery-1.4.min.js. The change is in
  Plone3rdParty/branches/4.0/skins/plone_3rdParty
  [smcmahon]

- Remove explicit iefixes (css and js) from the main_template, which
  will be pulled now from the ResourceRegistries, using the
  conditionalcomments property.
  Refs http://dev.plone.org/plone/ticket/9278.
  [dukebody]

- Move iefixes.js to the ploneclassic.theme package, since we agreed
  upon that every theme should be responsible of its own fixes for IE.
  Refs http://dev.plone.org/plone/ticket/9278.
  [dukebody]

- Make global_cache_settings responsible for deciding to switch on gzip
  compression instead of doing it in the enableHTTPCompression script. This
  avoids another costly Python script call.
  [hannosch]

- Avoid the test function in the main_template. It doesn't exist in view page
  template files.
  [hannosch]

- Avoid the getSectionFromURL method completely and merge functionality into
  the bodyClass method.
  [hannosch]

- Display logoIcon.png instead of favicon.ico on the Zope root overview screen,
  for compatibility with IE which refuses to render X-ICON format images in the
  document body.
  [davisagli]

- Avoid yet another mindless Python script and deprecate renderBase.
  [hannosch]

- Simplify the charset handling, by moving the actual setting into the
  global_cache_headers macro.
  [hannosch]

- Replaced the getSectionFromURL Python script with a view method.
  [hannosch]

- Deprecated the computeRelatedItems script in favor of a method on the
  related items viewlet.
  [hannosch]

- Hide plonetheme.classic from the list of uninstallable products to reduce
  confusion, as at this point it can't be uninstalled without breaking
  sunburst as well when the Quick Installer unregisters its CSS.
  [davisagli]

- Altered table of contents javascript so that comments are not displayed.
  Refs. #8621.
  [dbfrombrc]

- Added back INavigationRoot to CMFPlone.browsers. We need to provide an
  upgrade step for persistent marker interfaces before removing it.
  This refs http://dev.plone.org/plone/ticket/10072.
  [hannosch]

- Updated markup of document_view and event_view to follow conventions
  in main_template.
  References http://dev.plone.org/plone/ticket/9981
  [spliter]

- Just a markup polishing - <metal> tags don't need explicit "metal" for
  defining slots.
  [spliter]

- plone.belowcontent should not replace div#viewlet-below-content but
  rather add content into it
  [spliter]

- Moves plone.abovecontent and plone.belowcontent viewlet managers actually
  above and below content respectively.
  Closes http://dev.plone.org/plone/ticket/10081
  [spliter]

- Put the preferred markup for content area in main_template. References #9981
  [spliter]

- Remove prefs_group_modify.cpy as we no longer use it. Adjust tests accordingly.
  [esteele]

- Rework the prefs_group_details form to properly redirect back to the new
  @@usergroup-groupprefs page when creating a new groups, and postback to
  itself when modifying existing groups.
  [esteele]

- Add popup for add group form.
  [smcmahon]

- Pass group title and description through to the editGroups request, to
  ensure the those properties on the groups are updated. Allows the display of
  titles in @@usergroup-groupprefs
  Closes http://dev.plone.org/plone/ticket/7277
  Closes http://dev.plone.org/plone/ticket/9828
  [esteele, erikrose]

- User-add dialog will no longer hide errors (e.g., inability to mail).
  fixes http://dev.plone.org/plone/ticket/9964
  [smcmahon]

- Changed noform action for user add ajax overlay form to "reload" to
  fix http://dev.plone.org/plone/ticket/9957
  [smcmahon]

- Changed login form overlay handling to deal with the need for a redirect
  if logging in from pwreset_finish.
  Closes http://dev.plone.org/plone/ticket/5548
  [smcmahon]

- Changed the ``Add Plone site`` link in the ZMI to use the basic form. Too
  many regular users are still using the ZMI.
  [hannosch]

- Fix template errors in author_feedback_template.pt which prevented author
  feedback from being sent.
  Closes http://dev.plone.org/plone/ticket/9730
  [esteele]

- Update prefs_user_details.cpt and prefs_user_memberships.cpt templates to
  fit the current styling of other configuration screens.
  Closes http://dev.plone.org/plone/ticket/9660
  [esteele]

- Avoid leading spaces in the class attribute of the body element.
  Refs http://dev.plone.org/plone/ticket/9489.
  [dukebody]

- Removed explicit macros calls for related items from templates.
  Closes http://dev.plone.org/plone/ticket/9985
  [spliter]

- Deprecated document_relateditems.pt template - we are using viewlet instead.
  Refs http://dev.plone.org/plone/ticket/9985
  [spliter]

- Introduced order of viewlets for plone.belowcontentbody viewlet manager.
  Refs http://dev.plone.org/plone/ticket/9985
  [spliter]

- No longer show the ``Send this`` action by default. This refs
  http://dev.plone.org/plone/ticket/8800.
  [hannosch]

- Adjust login overlay position and width. Closes
  http://dev.plone.org/plone/ticket/9869.
  [dukebody]

- Adjust wording for user group membership removal. This fixes
  http://dev.plone.org/plone/ticket/9961.
  [dukebody]

- Make the ISiteRoot a INavigationRoot by default. This simplifies registering
  many views aimed at the nav root.
  [mj]

4.0a3 - 2009-12-21
------------------

- Updated statusmessages code to more modern API.
  [hannosch]

- Updated add-on configuration section. Clarified terminology to refer to
  de/activation and interpret product readme files as restructered text.
  [hannosch]

- Adjusted control panel and upgrade screens to show software instead of
  profile version and removed dependency on the persistent product registry.
  [hannosch]

- Changed the default profile metadata version to 4003, to follow our own best
  practices of distinguishing between profile and software versions.
  [hannosch]

- Added ``Plone site`` back to the all_meta_types list and revert change that
  made the site object not copyable. These prevented Plone sites from being
  imported from zexp files.
  [hannosch]

- Do not display the author contact form when the author has no email
  (for example for openid users).  Refs #8707.
  [maurits]

- Only specify icon_expr in factory type info; not also content_icon which
  has been deprecated in CMF 2.2.
  [davisagli]

- Optimize RSS template and make it work for items without a getText method.
  This closes http://dev.plone.org/plone/ticket/9696.
  [hannosch]

- Define encoding for RSS feeds. This closes
  http://dev.plone.org/plone/ticket/3506.
  [hannosch]

- On author.cpt, only display the "log in to add comments" button if mailhost
  is defined. Only show the mailhost warning if user is authenticated.
  [esteele]

- Adjusted rss_template to work for content items without an effective date
  and include issued and modified tags. Thanks for the patch anthonygerrard.
  This closes http://dev.plone.org/plone/ticket/7952.
  [hannosch]

4.0a2 - 2009-12-03
------------------

- Restore the ability to add Plone sites within ZODB mountpoints (and other
  OFS folders).
  [davisagli]

- Move prefs_navigation_form to plone.app.controlpanel as
  @@navigation-controlpanel. The form and its cpy script have been deprecated.
  [esteele]

- Use the @@plone-upgrade view as the default management screen for the
  migration tool.
  [davisagli]

- Respect multibyte language delimiter in search field. This closes
  http://dev.plone.org/plone/ticket/9422.
  [hannosch]

- RegistrationTool's registeredNotify now sends mail immediately instead of
  waiting until the end of the transaction. This puts the function back in
  line with the way the method worked in previous versions of Plone.
  http://dev.plone.org/plone/ticket/9871
  [esteele]

- Create normal folders instead of Large Folders (which are deprecated)
  for the initial example content.  All folders are now BTree-based.
  [davisagli]

- fixed validation of prefs_main_template for plonetheme.classic
  [spliter]

- re-applied fix for plone.css by aaronv. Fixes #9366 and #9761
  [spliter]

- moved plone.css.py to CMFPlone in order to share it among all themes
  http://dev.plone.org/plone/ticket/9366
  [spliter]

- moved "Manage portlets" fallback link out of main_template to
  plone.manage_portlets_fallback viewlet
  http://dev.plone.org/plone/ticket/9808
  [spliter]

- Point the "Join" action the newly-renamed @@register view.
  [esteele]

- Remove ``calendarpopup.js`` from jsregistry.xml. It no longer exists.
  [hannosch]

- Depend on ``plone.app.upgrade`` so it gets installed by default. Keeping
  the upgrade package separate only made sense when it had massively more
  dependencies than Plone itself. That cleanup isn't part of Plone 4.0.
  [hannosch]

- Added back an ``utranslate`` function to the i18nl10n module that retains the
  old call signature.
  [hannosch]

4.0a1 - 2009-11-19
------------------

- Moved ``Image Handling`` control panel into the main Plone category. It's not
  an add-on anymore.
  [hannosch]

- Clarified the default labels shown on the site setup overview page.
  [hannosch]

- Adjust tests to new Archetypes behavior, which respects the default language
  of the portal_languages tool.
  [hannosch]

- Adjust the _createObjectByType functions in utils and FactoryTool to use the
  _constructInstance method of the FTI instead of duplicating pieces of its
  logic.
  [davisagli]

- By default hide the "Subfolders" tab on collections. They don't behave in a
  way understandable to users. Existing sites aren't changed.
  [hannosch]

- Converted ``plone_javascript_variables.js`` to a browser page. Dynamically
  generating JS using a page template was too cumbersome. This also avoids the
  special ``escape_for_js`` handling of the translate script.
  [hannosch]

- "Relevance" was not internationalized in search_form.pt. This closes
  http://dev.plone.org/plone/ticket/9747
  [vincentfretin]

- "Your Plone site is up to date" was not internationalized in plone-upgrade.pt.
  This closes http://dev.plone.org/plone/ticket/9746
  [vincentfretin]

- "Preferences" link should go directly to the personal prefs, the memberprefs
  panel is an unnecessary abstraction here. Add-on products can easily add new
  links to the personal menu now, so that's the pattern we want to encourage.

- Removed the login portlet from the default setup now that the login link opens
  an inline window.
  [limi]

- Fixed a DYNAMIC_CONTENT in site_feedback_template.pt
  [vincentfretin]

- Make sure the 'Portlets: View dashboard' permission is set for Members.
  [davisagli]

- Make sure the mock MailHost used in tests is registered as a local utility
  so that it can be found via getToolByName.
  [davisagli]

- Moved all CSS styles to plonetheme.classic package. plonetheme.sunburst is
  now default theme, both are installed by default, classic theme may be
  uninstalled, sunburst theme can't be uninstalled.
  [limi, naro]

- Added site_encoding and bodyClass methods to the @@plone view. These should
  simplify main template a bit.
  [naro]

- Avoid AttributeError while getting the CMF version for the
  plone_control_panel when enable-product-installation is off in
  zope.conf.
  [maurits]

- Fixed bad internationalized messages in logged_out.pt
  [vincentfretin]

- Changed default message for label_show_all msgid from "Show all..." to
  "Show all items" in livesearch_reply.py to be the same as in folder_contents
  view which use the same msgid.
  [vincentfretin]

- Use the new ``pas_member`` view in the overview templates. This avoids
  getting the member info for each item in the listing from the PAS internals.
  [hannosch]

- registerNotify and mailPassword now send properly encoded emails.
  Fixes http://dev.plone.org/old/plone/ticket/9659
  [alecm]

- Deprecated register.py and join_form.cpt. This functionality has been moved
  to plone.app.users.
  [esteele]

- Changed ``listActions`` on the workflow tool to no longer call the
  ``listGlobalActions`` method on every installed workflow. This method would
  internally call and calculate the worklist (reviewer_queue) for every
  workflow. The listActions method is called by the workflow menu to show the
  state drop down menu on almost all pages.
  [hannosch]

- Deprecated the ``selectedTabs`` script in favor of a method on the
  GlobalSectionsViewlet.
  [hannosch]

- Micro-optimize the CatalogNavigationTabs view.
  [hannosch]

- Added a more prominent upgrade warning to the top of the ZMI screen, instead
  of the old tiny note on the portal migration tool.
  [hannosch]

- Added a new ``@@plone-upgrade`` view, which replaces the old migration tool
  DTML ZMI screens.
  [hannosch]

- Added a simple ``advanced`` mode to the add site form. If advanced is passed
  as a query argument to the ``@@plone-addsite`` more options are available.
  The button in the ZMI uses the advanced mode by default. Currently the choice
  of omitting the default content and deselecting any of the default extension
  profiles are limited to the advanced mode.
  [hannosch]

- Expose the site language in the add site form and refactor the language
  guessing based on the browser language into that view. The addPloneSite
  function takes an explicit argument for the language now.
  [hannosch]

- Hardcode utf-8 for UnicodeSplitter, since Hanno says that's all we
  can accept and there's no way to use getSiteEncoding from the splitter.
  [alecm]

- Added option to skip the creation of the default example content in the new
  add site form. Grouped the add-ons selection via a fieldset.
  [hannosch]

- Refactored the old factory dispatcher / addPloneSiteForm to use a modern
  browser page instead.
  [hannosch]

- Removed the special default page and translation handling. LinguaPlone uses
  a content language negotiator per default instead.
  [hannosch]

- Replaced highlightsearchterms.js with the Plone trunk
  jquery.highlightsearchterms.js plugin. This removes the need to add
  searchterm= query parameters to search.pt results.
  Refs. http://dev.plone.org/plone/ticket/8770
  [mj]

- Add a link to log out from the logged_out template if logged in as a Zope
  user via basic HTTP Authentication and the standard logout failed.
  [davisagli]

- Removed the cut/copy/paste icons from the action menu in new sites, as they
  just add noise + more HTTP requests.
  [limi]

- Moved happytalk in site_feedback_template.pt and author_feedback_template.pt
  to bottom of emails, per http://dev.plone.org/plone/ticket/7001
  [jonstahl]

- Added precedence: bulk header to several PasswordReset's
  mail_password_template, per http://dev.plone.org/plone/ticket/7000 - still
  haven't added this header to CMFPlone templates.
  [jonstahl]

- Added the upgrade warning to the main control panel screen. This is the same
  as found on the new overview page.
  [hannosch]

- Changed the new default overview page to be a normal browser page and made
  it aware of multiple Plone sites in the root or in ZODB mountpoints.
  [hannosch, davisagli]

- Overwrote the Zope quick start page, with a more helpful Plone specific
  version as already found in the unified installer.
  [hannosch]

- Turned the new add Plone site button in the ZMI into a link. This allows us
  to get out of the frameset to the top.
  [hannosch]

- Add jQueryTools integration, using plone.app.jquerytools.
  [smcmahon]

- Updated our add site ZMI screen.
  [hannosch]

- Changed search.pt (plone_forms) and rss_template.pt (plone_templates) so they
  display fullname instead of creator.
  [ralphjacobs]

- Cleaned up old an unused scripts to edit the plone site object itself. This
  is done via the site control panel now.
  [hannosch]

- Hide the TinyMCE profiles hidden from the Plone site add form.
  [robgietema]

- Added 'Use site default' to the wysiwyg_editor field in the Personal
  Preferences view.
  [robgietema]

- Set default value of wysiwyg_editor to blank (use site default).
  [robgietema]

- Added default editor property to the site properties.
  [robgietema]

- Added TinyMCE and set TinyMCE as default visual editor.
  [robgietema]

- Removed getProductInfo method from the migration tool. It wasn't used
  anymore and depended on the persistent product registry.
  [hannosch]

- Inlined the enableSyndication function into importFinalSteps in
  setuphandlers. Avoid an unneeded catalog search.
  [hannosch]

- Simplified portal creation code and got rid of the PloneGenerator class in
  setuphandlers. It was a useless closure for independent functions.
  [hannosch]

- Removed the `plone-site` import step and stop overriding the
  `componentregistry` step. The portal object directly implements the
  IObjectManagerSite interface, so we don't need to activate it as a site
  manager in an extra step anymore.
  [hannosch]

- Updated and added various ZMI-visible tool titles.
  [hannosch]

- Removed the `plone-archetypes` import step. This is handled via a normal
  GenericSetup dependency in metadata.xml.
  [hannosch]

- Merged the `plone_various` import step into the `plone-final` step and
  install more packages directly by their profiles.
  [hannosch]

- Removed the zserverPatch. There's not many people running ZServer as the
  front-end web server anymore, so this isn't particular useful.
  [hannosch]

- Fixed the default portlet blacklisting for the `Members` folder.
  [hannosch]

- Replaced Products.ATReferenceBrowserWidget with
  archetypes.referencebrowserwidget. This is PLIP 9258
  http://dev.plone.org/plone/ticket/9258
  [tom_gross]

- Clarified help text for extension profiles on the add site form.
  [davisagli]

- Added a mechanism for specifying profiles that are selected by default on
  the add site form. This should be kept in sync with PloneTestCase's list
  of default extension profiles.
  [davisagli]

- Hide the plonetheme.sunburst uninstall profile from the add site form.
  [davisagli]

- Default to plonetheme.sunburst for new sites.
  [esteele, davisagli]

- Allow email addresses as login name, with a switch on the security
  panel. This is plip 9214: Refs http://dev.plone.org/plone/ticket/9214.
  [maurits]

- Extend the language specific default configuration to set a reasonable first
  day of week on the calendar tool.
  [hannosch]

- Stop pretending to use GenericSetup's content import. As a last item we now
  create the translated front-page purely in imperative code. As a bonus we
  moved the body text of the front-page to a page template, so i18ndude can
  automatically extract it.
  [hannosch]

- Create and configure `Members` folder purely in setupPortalContent.
  [hannosch]

- Converted import and export steps XML files to use ZCML registrations.
  [hannosch]

- Made sure to have a complete list of non-installable profiles. No longer
  apply the filter to base profiles and ignore our default profile. This works
  in combination with the corresponding changes in quick installer to reduce
  portal creation time.
  [hannosch]

- Make use of the new `authenticated` flag for ResourceRegistries entries
  instead of specifying verbose condition expressions.
  [hannosch]

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

- Changed workflow actor variable from user/getUserName to user/getId.
  http://dev.plone.org/plone/ticket/7398.
  [hannosch]

- Removed the AT graphviz references action from all content types.
  [davisagli]

- Finished switching tool and action icons to use PNG format.
  [davisagli]

- Exclude some of the CMFDefault functionality, that isn't used or usable
  inside Plone sites. The CMFDefault types are no longer supported.
  [hannosch]

- Move prefs_users_overview and prefs_groups_overview pages to
  plone.app.controlpanel (@@usergroup-userprefs and @@usergroup-groupprefs
  respectively).
  [esteele]

- Adjust to CMF's splitting of CMFCatalogAware into separate CatalogAware,
  WorkflowAware, and OpaqueItemManager mixins.
  [davisagli]

- Added zope.app.locales dependency, some strings are in zope domain such as
  'Invalid value' and '(no value)' found in portlet EditForm.
  [vincentfretin]

- Moved membershipRolemapping.dtml and portrait_fix.dtml to PlonePAS.
  [davisagli]

- Added icon_expr property to the Plone control panel tool actions, and
  switched to registering configlet icons here instead of in the action
  icons tool.
  [davisagli]

- Moved the diff tool registration to this package, so it can still be a tool
  for Plone 4.
  [davisagli]

- Use the new zope.ramcache in favor of zope.app.cache.
  [hannosch]

- Removed GroupUserFolder skin layers.
  [davisagli]

- Silenced the deprecation warning about old-style actions from CMFCore's
  ActionProviderBase when listing configlets with the control panel tool.
  [davisagli]

- Added the _IMREALLYPLONE4 hint to factory.py for PloneTestCase to use.
  [hannosch]

- Removed the calendar and review portlets from the standard global
  assignments. The review list is better put onto a personal dashboard and the
  calendar is exceptionally slow and rather user unfriendly. The news and
  events portlets are a better fit to show-case the portlets system.
  [hannosch]

- Include the `overrides.zcml` from `Products.PlacelessTranslationService` to
  actually make PTS' language negotiator available to the zope.i18n machinery.
  [hannosch]

- Got rid of the ToolNames indirection and declared the meta_types directly
  in the relevant tool class themselves.
  [hannosch]

- Moved ATCT specific exportimport code into the ATCT package itself.
  [hannosch]

- Made sure the plone.indexer registration works by introducing a more
  specific IPloneCatalogTool marker interface and registering the indexable
  object wrapper for this.
  [optilude]

- Added a restricted version of the opaqueItems method for CMFCatalogAware.
  This takes the idea of experimental.opaquespeedup one step further.
  [hannosch]

- Actually made the types tool action lookup optimization effective. Slightly
  optimized the add items drop-down menu.
  [hannosch]

- Removed the `ResourceRegistries` skin layer. It only contained test code.
  [hannosch]

- Make use of the new IContainer API of object managers and replace objectIds
  and objectValues calls.
  [hannosch]

- Finally removed the interfacePatch for the IContainer interface of
  OFS.ObjectManager after it has been merged upstream.
  [hannosch]

- Removed CMFTopic from our dependency list, it turns out that we aren't
  actually using any of it.
  [hannosch]

- Added proper deprecation warnings for the IBrowserDefault,
  IDynamicViewTypeInformation and ISelectableBrowserDefault interfaces, who
  has always come from Products.CMFDynamicViewFTI.
  [hannosch]

- Use the `replace_local_role_manager` method from borg.localrole.
  [hannosch]

- Deprecate our own IOrderedContainer interface in favor of the original one
  from OFS.
  [hannosch]

- Avoid dependency on the zope.app.zapi package.
  [hannosch]

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

- No longer depend on the PageTemplates.GlobalTranslationService but use
  zope.i18n directly.
  [hannosch]

- Merged in more performance optimizations from experimental.contentcreation.
  We don't restrict the permissions for the temporary folder anymore, but
  only care about the permissions of the actual target folder.
  [hannosch]

- Use the new `icon_expr` for specifying icons for content types instead.
  [hannosch]

- Prefer path expressions over Python expressions for persistent expressions.
  [hannosch]

- Fixed the content_status_history form to include the required content table.
  The old_folder_contents template is gone.
  [hannosch]

- Fixed the browserDefault tests to use actual traversal to look up views
  for content items instead of relying on Acquisition.
  [hannosch]

- Moved the `scale_image` function from utils into the PlonePAS.utils
  module, as PlonePAS is the only user of it.
  [hannosch]

- The remaining functionality from GroupUserFolder has been merged into
  the PlonePAS package. GroupUserFolder is no longer required.
  [hannosch]

- Removed the groups, groupdata, membership and memberdata tools from this
  package. All code is now in a central place inside PlonePAS. The persistent
  tools have been from the PlonePAS package since Plone 2.5.
  [hannosch]

- Replaced has_key method calls with containment checks via `in`.
  [hannosch]

- Replaced a direct interface invocation with a queryAdapter call, to avoid
  an internal getattr call and make the pattern clearer.
  [hannosch]

- Replaced here with context in all templates and scripts. The old spelling is
  still supported, but we need to settle on one to avoid confusion.
  [hannosch]

- Optimized the types tool action lookup further to avoid Acquisition lookups.
  [hannosch]

- Simplified the normalizeString method.
  [hannosch]

- Optimized the action lookup code and implemented category restriction for
  the types tool in the same way it was available for the actions tool.
  [hannosch]

- Removed remaining sys.modules hacks to provide the browser.ploneview as
  browser.plone.
  [hannosch]

- Removed last unused external methods and PloneInitialize code. To my
  knowledge the Windows installer doesn't use this code anymore.
  [hannosch]

- Write the doctype definition in the main_template in a way that does not
  claim to be valid XML, as the main_template really isn't.
  [hannosch]

- Worked around `sys._getframe` call in mark_view.
  [malthe, hannosch]

- Removed macro slot for changing the document type; this was not
  correct XML and should this flexibility be required, it's
  recommended to customize `main_template.pt`.
  [malthe]

- Turned deprecated string 'Unauthorized' exceptions into real exceptions.
  [davisagli]

- Removed module alias for the ploneview formerly named plone.
  [hannosch]

- Clarified content language versus response language handling.
  [hannosch]

- Removed unmaintained and unused Favorite content type.
  [hannosch]

- Removed our own home-grown dependency checking code.
  [hannosch]

- Exposed option to honour exclude from navigation even in subfolders from
  navtree_preferences.  Request from theming sprinter at ploneconf2008.
  [MatthewWilkes]

- Made the fieldset tabbing code faster on startup (especially for IE) by
  constructing a big string and creating the HTML elements in one bunch
  instead of using DOM functions to add them step by step.
  [fschulze]

- Added uniqueItemIndex as a method to the plone view.
  [hannosch]

- Added back ``global_defines.pt`` as a template including the (empty)
  macro definition. This allows main templates to be compatible with both
  Plone 3.x and 4.0 at the same time.
  [hannosch]

- Removed ``global_defines.pt`` and the globalize-hack. Templates
  now bring in their tool and function dependency using the
  standard utility views or via normal Acquisition of tools.
  [malthe, hannosch]

- Fixed test for editing language fields. This refs
  http://dev.plone.org/plone/ticket/8342.
  [hannosch]

- Removed deprecated context parameter in getDefaultPage and
  isDefaultPage in utils.py.
  [maurits]

- Made sure the export order of the factory tool GS step is consistent.
  This closes http://dev.plone.org/plone/ticket/7892.
  [hannosch]

- Replaced lock_icon with smaller version with one third of the size.
  [hannosch]

- Removed backwards-compatibility code in calendar_formfields.js introduced
  in Plone 3.1.4. Any date-time picker not based on calendar_macros.pt
  using the old-style (no plone.jscalendar namespace) methods will no
  longer work until adjusted.
  [mj]

- Don't show relevance information of one percent in the search form,
  since sort_on searches will always show this for all entries
  This closes http://dev.plone.org/plone/ticket/4325
  [hannosch]

- Removed duplicated isMemberIdAllowed method from registration tool.
  [hannosch]

- Fixed mailto link in event view and enhanced the spam protect script to
  allow setting css ids on the generated anchor tag. This closes
  http://dev.plone.org/plone/ticket/8219
  [hannosch]

- Fixed contact form to be usable for authenticated users which have no
  email address stored in their member data. This closes
  http://dev.plone.org/plone/ticket/5766
  [hannosch]

- Avoid empty tags in the contact form. This closes
  http://dev.plone.org/plone/ticket/8182
  [hannosch]

- Avoid an empty div in login_form. This closes
  http://dev.plone.org/plone/ticket/8192
  [hannosch]

- Avoid an empty dd in recently modified.pt. This closes
  http://dev.plone.org/plone/ticket/8186
  [hannosch]

- Avoid an empty span in folder_summary_view. This closes
  http://dev.plone.org/plone/ticket/8181
  [hannosch]

- Changed wording in personalize form to remove reference to external
  editor icon and add a note about ZopeEditManager. This closes
  http://dev.plone.org/plone/ticket/7390
  [hannosch]

- Changed webstats_js in portal properties to a text field.
  This refs http://dev.plone.org/plone/ticket/7781
  [hannosch]

- Added option to the error log control panel to search for an error log
  entry by number, since the number is the only thing that is exposed to
  normal users. This closes http://dev.plone.org/plone/ticket/7234
  [hannosch]

- Changed title of collections control panel to plural form. This
  closes http://dev.plone.org/plone/ticket/8096
  [hannosch]

- Include link to the plone.org upgrade manual from the migration tool
  inside the ZMI. This closes http://dev.plone.org/plone/ticket/8075
  [hannosch]

- Clarify help text in content_status_history. This closes
  http://dev.plone.org/plone/ticket/8218
  [hannosch]

- Let default RSS list publication date, not modified date and include
  the body text. This closes http://dev.plone.org/plone/ticket/7952
  [hannosch]

- Updated the check_id script to disallowed content by the name of
  properties. This closes http://dev.plone.org/plone/ticket/6005
  [hannosch]

- Fixed invalid markup in membershipRolemapping.dtml. This closes
  http://dev.plone.org/plone/ticket/6222
  [hannosch]

- Removed long unused getObjPositionInParent.py script which wasn't
  functional at all anymore, since it used Zope 2 interfaces. Also
  simplified the getObjPositionInParent function in the CatalogTool.
  This closes http://dev.plone.org/plone/ticket/6081
  [hannosch]

- Removed getActionObject call from createObject script. It was a private
  method and would always fail. This closes
  http://dev.plone.org/plone/ticket/7172
  [hannosch]

- Removed testing of sendto action visibilty from sendto.cpy. There's a
  permission to use to restrict sending mail. This closes
  http://dev.plone.org/plone/ticket/5377
  [hannosch]

- Disable external editor icon for structural folders. This closes
  http://dev.plone.org/plone/ticket/6871
  [hannosch]

- Updated the check_id script to disallowed content by the name of zip or
  plone since this shadows the views by those names. This closes
  http://dev.plone.org/plone/ticket/6105
  [hannosch]

- Purged old Zope 2 Interface interfaces for Zope 2.12 compatibility.
  [elro]

- Make use of upgrade steps with a source '*' version and an explicit
  destination, to register the 'enable site' and 'register tools as
  utilities' only once.
  [hannosch]

- Added support for upgrade step groups to the migration tool and started
  exposing the individual upgrade methods as steps.
  [hannosch]

- Changed the way messages are handled during migration. We don't pass an
  `out` list around anymore, but use the logging framework.
  [hannosch]

- Replaced our own migration step registration by using GenericSetup steps
  directly. Changed the migration tool to integrate with GS instead.
  Added BBB code to read the instance version from the migration tool if
  the last profile version isn't set yet inside the GS tool.
  [hannosch]

- Exposed all our migration steps as GenericSetup upgrade steps.
  [hannosch]

- Hide the deprecation warning about the moved ITranslatable interface
  for our own code.
  [hannosch]

- Use png icons instead of gif icons since they are much more flexible
  for styling.
  [dannyb, wichert]

- Fixed the coreVersions method in MigrationTool to return strings and not
  bound methods for the Zope and Python version.
  [hannosch]

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

- Moved all icons for real actions from the action icons tool to the
  actions themselves.
  [hannosch]

- Changed PloneTool's getIconFor method to prefer the icon expression set
  on the action itself instead of looking it up in the action icons tool.
  This finally makes use of the new icon expression on actions introduced
  in CMF 2.1.
  [hannosch]

- Avoid unneeded line breaks in TAL output, by effectively disabling the
  internal beautified wrapping inside tags. This reduces the HTML output
  by 5% - 10% for normal Plone pages.
  [hannosch]

- Memoize the installed products and packages in App.FactoryDispatcher
  for the duration of the process runtime.
  [hannosch]

- 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]

- Updated webdav_enabled method in utils.py to check for
  webdav.interfaces.IWriteLock interface in addition to the old Zope2
  interface.
  [hannosch]

- Use a FauxArchetypeTool which returns no catalogs for CatalogMultiplex
  aware objects in portal factory. This prevents most temporary objects
  from being indexed in the first place.
  [tesdal, hannosch]

- Move our GenericSetup import step registrations to zcml.
  [wichert]

- Added a 'do-not-use' warning to the ZMI security screen for Plone content
  objects. Sharing tab or workflows are what you are looking for.
  [hannosch]

- Moved interface declarations for factorytool from ZCML to the class.
  [hannosch]

- Added BBB code for ITranslatable, which is now part of LinguaPlone.
  [hannosch]

- Added an explicit button to add a new Plone site to the ZMI for faster
  access. If you have installed Plone this is probably what you want to
  add most of the time. The button only shows up in the root folder.
  [hannosch]

- Deprecate the ITranslatable interface. This interface is LinguaPlone-
  specific and has thus been moved to LinguaPlone.
  [wichert]

- Removed tests for isRTL method of PTS. The method was deprecated in the
  last release and is gone now.
  [hannosch]

- Removed PTSTranslationDomain utilities. PTS exposes all translation files
  as pure Zope3 translation utilities now, so these aren't needed anymore.
  [hannosch]

- Replaced our FasterStringIO implementation by one based on
  collections.deque, which is a faster than StringIO.
  [hannosch]

- Removed more deprecated code, adjusted some comments.
  [hannosch]

- Tweaked sortable_title method to give reasonable results for titles with
  many numbers in them, like '1.2.3 document'.
  [hannosch]

- Moved CMF skins registration into configure.zcml, removed security
  declaration for no-longer extant listPolicies of the portal.
  [hannosch]

- Refactored initial content creation into a separate extension profile,
  thus making it possible to skip it. This refs
  http://dev.plone.org/plone/ticket/6948
  [hannosch]

- Removed some outdated Extension scripts.
  [hannosch]

- Removed deprecated tool related Zope2 interfaces. Extended the
  deprecation period for ConstrainTypes and NonStructuralFolder as these
  are still used in Plone Core.
  [hannosch]

- Removed work-around code for insertion of non-unicode non-ascii non-utf8
  encoded text in TAL. This will produce an error now. Always use Unicode
  when using data in page templates and TAL.
  [hannosch]

- Removed lots of deprecated code and zcml registrations.
  [hannosch]

- Fixed ticket #9420 DC.date.valid_range not emitted if only Publishing Date is set.
  [jaroel]
