Changelog for Plone

   (name of developer listed in brackets)

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 http://plone.org/collector/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.
      [naro]

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

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

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

    - Refixed http://plone.org/collector/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.
      [alecm]

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

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

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

    - Fixed http://plone.org/collector/4766 - RSS feed in Firefox did not work
      properly.
      [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 http://plone.org/collector/4704 - string.whitespace is not ASCII
      only on OpenBSD, which resulted in problems in UnicodeNormalizer
      [hannosch]

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

    - Fixed http://plone.org/collector/4755 - folder_factories does not link
      to folder_constraintypes_form like add item menu does
      [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 http://plone.org/collector/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'
      [dreamcatcher, 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 2.2 or 2.3 to reduce complexity. If we are going to
      support variables in CSS, ResourceRegistries should handle it, not DTML.
      [limi]

    - Fixed http://members.plone.org/collector/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.
      [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 http://members.plone.org/collector/4638 by making the workflow
      title methods more fault tolerant.
      [alecm]

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

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

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

    - Fixed http://members.plone.org/collector/4589 by adding some
      tal:conditions in a few templates.
      [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 http://plone.org/collector/4530 - type name not translated if only
      one type is shown in global_contentmenu.
      [hannosch]

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

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

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

    - Fixed http://plone.org/collector/4484 - 'My Preferences' action title
      is 'Preferences' in 2.1
      [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 http://plone.org/collector/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.
      [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 http://plone.org/collector/4491)
      [rafrombrc]

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

    - Fixed http://plone.org/collector/4449 by removing direct attribute
      access from file_view template.
      [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 http://plone.org/collector/4361 - OverflowError when converting to
      Date(Range)Indexes.
      [stefan]

    - Fixed http://plone.org/collector/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.
      [bitranch]

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

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

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

    - Fix http://plone.org/collector/4456 wrong title on columns.css
      [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 http://plone.org/collector/4407 by making folder_contents link to
      folder_contents for all folderish types.
      [alecm]

    - Fixed http://plone.org/collector/4376 untranslated 'add type' buttons.
      [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 http://plone.org/collector/4372 which is due to a
      strange behavior in the Firefox alpha.  Thanks to jenner for hunting
      this down and contributing the fix.
      [alecm]

    - Addresses http://plone.org/collector/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.
      [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
      http://plone.org/collector/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 http://plone.org/collector/4382 by removing unnecessary
      getUser call.
      [alecm]

    - Fixed http://plone.org/collector/4381 by using getProperty to
      access listed and last_login_time properties in searchForMembers.
      [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 http://plone.org/collector/4351 by not relying on
      getTypeInfo() being available on the object.
      [optilude]

    - Fixed http://plone.org/collector/3906 - header now shows correct mouse
      pointer cursor when table is sortable.
      [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 http://plone.org/collector/2771 (4350) using the new
      isURLInPortal method, which now also returns true on relative URLs.
      [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 http://plone.org/collector/4345 by checking the flag.
      [alecm]

    - .personal folders will no longer be created.  Fixed unit tests which
      assumed that .personal would be around.
      [alecm]

    - Closed bug http://plone.org/collector/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.
      [optilude]

    - Fixed http://plone.org/collector/4346 by using the suggested
      fix.  Thanks Tim Hicks.
      [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 http://plone.org/collector/1490 by ensuring that sendto
      only works when the action is visible.
      [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 http://plone.org/collector/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.
      [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 http://plone.org/collector/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.
      [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 http://plone.org/collector/4329. Thanks for the patch!
      [optilude]

    - Fixed http://plone.org/collector/4324 need to ensure we are
      passing strings to utranslate.
      [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
      http://plone.org/collector/4290.
      [tiran]

    - Made check_id.py prevent method aliases like 'sharing' and 'edit' as
      object ids. This fixes http://plone.org/collector/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 http://plone.org/collector/4327. The live search now
      honours typeUseViewActionInListings.
      [optilude]

    - Fixed issue http://plone.org/collector/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!!
      [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 http://plone.org/collector/4205. Better check
      for existance of member folders. Thanks to Tiran.
      [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 http://plone.org/collector/4083.
      <div class="visualClear"><!-- --></div> to remove whitespace
      in IE.
      [ender]

    - Fixing http://plone.org/collector/4300 by disabling the content
      menu when the object is in the factory. PLIP 24 form unload protection
      takes care of the other cases.
      [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
      http://plone.org/collector/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. :)
      [optilude]

    - Fixed http://plone.org/collector/4302 using jenner's template
      with a few simplifications, and some changes to folder_contents to make
      reusability even easier.
      [alecm]

    - Finished http://plone.org/collector/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.
      [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 http://plone.org/collector/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.
      [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 - this closes
      http://plone.org/collector/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 http://plone.org/collector/3242 added And/Or search option
      to Subject field on search_form.
      [alecm]

    - Fixed http://plone.org/collector/3211 by updating the permission
      on PloneTool.setMemberProperties, the other permissions are fixed in
      CMF 1.5.
      [alecm]

    - Fixed http://plone.org/collector/4242 by updating test.
      [alecm]

    - Fixed inappropriate condition on folder_constraintypes_form.
      [alecm]

    - Made tableless skin use showEditableBorder, fixed
      http://plone.org/collector/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 http://plone.org/collector/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.
      [alecm]

    - Partial fix for http://plone.org/collector/4272 some missing i18n markup
      [hannosch]

    - Added 'Large Plone Folder' to parentMetaTypesNotToQuey navtree_property.
      This ensures that large folders will not display their contents in the
      navtree.
      [alecm]

    - Fixed http://plone.org/collector/4251. ulocalized_time() fetches
      all DateTime errors and logs them.
      [tiran]

    - Took care of http://plone.org/collector/4224 by disabling the ZMI
      ordering interface for the Plone Site object.
      [stefan]

    - Removed PropertyManagedBrowserDefault, and mane the portal root support
      BrowserDefaultMixin as implemented by CMFDynamicViewFTI.
      [alecm]

    - Fixed http://plone.org/collector/4216 - migration would add
      'contents' action more than once.
      [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.2.
      [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 method alias handling in portal_factory
      (http://plone.org/collector/4263)
      [geoffd]

    - Added support for parentMetaTypesNotToQuery to the navtree. Fixed
      http://plone.org/collector/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 http://plone.org/collector/4247 remove unused group_submit variable
      [hannosch]

    - Made it possible to show action icons in personal-bar.
      [fschulze]

    - Fixed http://plone.org/collector/4229 Error in sharing tab, roles.append
      changes a list inplace
      [hannosch]

    - Fixed http://plone.org/collector/4241 MembershipTool.py used
      _checkPermission without importing it
      [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
      http://plone.org/collector/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.2 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 http://plone.org/collector/4035 - "Collapsible fieldsets take
      up too much space".
      [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 http://plone.org/collector/2793 - ADD ITEM MENU cuts some entries
      [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 http://plone.org/collector/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.
     [geoffd]

    - Fixed http://plone.org/collector/3018 no duplicate id="portal-footer"
      [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 http://plone.org/collector/4077 and #3535 accesskeys are
      properly definied now, but still need to be changed to numeric values
      [hannosch]

    - Fixed http://plone.org/collector/2414 all literal msgid's converted to
      non-literal
      [hannosch]

    - Merged plip83-kupu-integration r7083:7084 into 2.1 branch.
      [stefan]

    - Fixed http://plone.org/collector/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.
      [briang]

    - Fixed http://plone.org/collector/2756 portlet_calendar localization is
      working now. had to introduce a new method on the calendar_tool to get
      the correct daynumbers.
      [hannosch]

    - Fixed http://plone.org/collector/3365 calendar_slot.pt has been moved to
      plone_templates/calendar_macros.pt and cleaned up
      [hannosch]

    - Fixed http://plone.org/collector/4136
      you couldn't pick january or the first of a month with the js date picker
      reflected changes in the tests
      [hannosch]

    - Fixed http://plone.org/collector/3256
      Plone Config -> Add/Remove Products:
      Added "product filesystem version" in the message displayed for
      products that need updating.
      [briang]

    - Fixed http://plone.org/collector/4164 the getIcon and
      getTypeInfo calls were no longer needed.
      [alecm]

    - Fixed http://plone.org/collector/4055 by returning an empty list
      in getAddableTypesInMenu if the View permission is not available.
      [alecm]

    - Fixed http://plone.org/collector/4114 by adding new criteria
      to the news and events topics.
      [alecm]

    - Fixed http://plone.org/collector/4149 - incorrect tal:define for
      locked items in the byline. Thanks to Raphael Ritz for the fix
      [optilude]

    - Removed review_state='published' from the query for author page and
      navigationLocalRelated. Catalog deals with permissions already.
      Issue 2304.
      [ender]

    - Fixed http://plone.org/collector/3714. Use ACTUAL_URL to skip to content.
      [ender, neaj]

    - Fixed http://plone.org/collector/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.
      [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 http://plone.org/collector/3410 by declaring enumConfliglets
      public.  The method does its own security checks for each configlet
      action.
      [alecm]

    - Fixed index_html hack to return 404 for requests other than
      (PUT, HEAD, GET, POST).
      [dreamcatcher]

    - 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 http://plone.org/collector/3688 and added a test.  Also added a
      test to ensure that portal_factory respects PLIP 16 local role inheritance.
      [geoffd]

    - Fixing markup to make zchecker happy and changed table summaries to use
      non-literal msgids, plus some minor i18n changes.
      [hannosch]

    - Fixing http://plone.org/collector/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.
      [limi]

    - Fix http://plone.org/collector/4089 fix some i18n markup
      [hannosch]

    - Fixed http://plone.org/collector/2659 using patch by fschulze.
      [alecm]

    - Fix http://plone.org/collector/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.
      [optilude]

    - Fix http://plone.org/collector/3279 integrate new jscalendar 1.0
      [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 (http://plone.org/collector/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 http://plone.org/collector/4081 changed 'Plone Setup'
      to 'Site Setup'.
      [limi] [alecm]

    - Fixed http://plone.org/collector/2850 added on-error handler to
      portlet_fetcher, currently provides no traceback as tracebacks are not
      accessible from untrusted code.
      [alecm]

    - Fixed http://plone.org/collector/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.
      [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 http://plone.org/collector/3267 removed invalid transition
      validity test using the fix by blueszhao in the collector issue.
      [alecm]

    - Applied http://plone.org/collector/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
      [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 http://plone.org/collector/4062 made history_form show
      true causes for an empty page, rather than always assuming that the
      error is due to missing Historical interface.
      [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 http://plone.org/collector/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 http://plone.org/collector/3841
      [limi]

    - Added icons for feed:// and webcal:// links.
      [limi] [elvix]

    - Fixed http://plone.org/collector/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.
      [alecm]

    - Fixed http://plone.org/collector/2867 put the list reversal in
      content_status_history in the proper place.
      [alecm]

    - Fixed http://plone.org/collector/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.
      [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
      http://plone.org/collector/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.
      [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 http://plone.org/collector/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.
      [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
      http://plone.org/collector/928 and http://plone.org/collector/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.
      [elvix]

    - Added fix for bug #4027. feed:// and webcal:// links now get special
      css-classes so that they may be styled appropriately.
      [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 http://plone.org/collector/2836 - Review portal contents
      or Modify portal contents is sufficient to show the change_state action.
      [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 http://plone.org/collector/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).
      [alecm]

    - Fixed http://plone.org/collector/3681 - No longer allow to add
      content with ids of skin scripts.
      [whit537]

    - Fixed http://plone.org/collector/3999 - check_id now gives better
      error messages.
      [whit537]

    - Fixed http://plone.org/collector/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.
      [alecm]

    - Fixed http://plone.org/collector/2912 - "Format" renamed to
      "MIME type" in metadata form to avoid confusion with the text format
      selector.
      [limi]

    - Fixed http://plone.org/collector/3938 - duplicate class
      definitions for .even and .odd.
      [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 http://plone.org/collector/3931 - add 'more ...' link to
      events portlet, also added new events tab/folder and topic to match the
      news folder/tab and topic.
      [lucas]

    - Fixed http://plone.org/collector/3752 - return rss search results
      in effective date order (reversed), unless another order is explicitly
      given.
      [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 http://plone.org/collector/3901 - applied the
      PloneTool.py patch by F Bennett (bierce), which shows full listing of
      inherited roles.
      [alecm]

    - Fixed http://plone.org/collector/3819/ - applied the
      utils.py patch provided by gkirk
      [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 http://plone.org/collector/3848/ - changed
      prefs_error_log_update.py to match the button submit values
      on prefs_error_log_form.
      [rafrombrc]

    - Minimally reworked user/group control panel pages to plone2.X
      style fixing http://plone.org/collector/2204 and possibly
      others.
      [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 http://plone.org/collector/3835 - Changed .metadata file
      of prefs_user_manage.cpy script to redirect instead of traverse on
      success
      [gkirk]

    - Fixed http://plone.org/collector/3903 - Removed
      hardcoded references to logo.jpg in favor of the logoName
      variable defined in base_properties.
      [bmh]

    - Fixed http://plone.org/collector/3544 - Use password_confirm as
      the name of the password confirmation field so it doesn't show
      up in error logs.
      [bmh]

    - Fixed http://plone.org/collector/3811 - Start and end times of same-day
      events now respect AM/PM settings (event_view).
      [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://plone.org/collector/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 http://plone.org/collector/3866 - Improved performance of
      sortObjects helper script by a factor of 3.
      [axa]

    - Fixed http://plone.org/collector/2791 - Timestamps in recently_published
      and folder_contents now use the configured long format.
      [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).
      [dreamcatcher]

    - 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 http://plone.org/collector/3384 by catching CopyError so
      users don't get dumped into the ZMI.
      [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://plone.org/collector/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 http://plone.org/collector/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.
      [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 http://plone.org/collector/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 http://plone.org/collector/3647 to allow removing all roles
      from a group.
      [optilude]

    - Fixed bug http://plone.org/collector/3386. Modified
      folder_rename_form.pt to reflect user authorisations on each
      item.
      [davconvent]

    - Implemented fix for http://plone.org/collector/3522 to add default
      groups "Reviewers" and "Administrators" to Plone, with the appropriate
      roles.
      [dpunktnpunkt] [optilude]

    - Made PloneFolder.moveObjectsByDelta not throw an error when passed a non
      contentish object id (apparently this happens during some migrations).
      Fixes #3959 (http://plone.org/collector/3959).  Requires a small fix in
      AT done on 1.3 branch.
      [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
      (http://plone.org/collector/3711) which is itself a GRUF issue fixed in
      GRUF svn.  Also implemented a faster sort algorithm in the above script.
      [alecm]

    - Made prev/next links in calendar portlet respect current query parameters.
      Fixes bug #3949 (http://plone.org/collector/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.
      Fixes http://plone.org/collector/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://plone.org/collector/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://plone.org/collector/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]

    - Removed worklist query from listFilteredActionsFor.
      http://plone.org/collector/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 http://plone.org/collector/3924 eradicated all string
      exceptions.
      [alecm]

    - Fixed http://plone.org/collector/3910 isValidEmail now uses
      the _checkEmail function from CMFDefault to avoid ValueErrors.
      [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
      http://plone.org/collector/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.
      [dreamcatcher]

    - 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 http://plone.org/collector/3641 - validate_start_end_date chopped
      off the AM/PM value when saving Events.
      [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.
      [dreamcatcher]

    - 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. See http://plone.org/collector/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 http://plone.org/collector/3629 - Migration failed if 'Topic'
      portal type was missing or otherwise broken.
      [stefan]

   RC2 - Released November 26, 2004

    - Fixed http://plone.org/collector/3612 - listFilteredActionsFor of
      ActionsTool now ignores missing or broken action providers.
      [stefan]

    - Fixed http://plone.org/collector/3611 - Migration failed if the 'Folder'
      portal type did not have both 'edit' and 'local_roles' actions.
      [stefan]

    - Restored overridablity of left_slots/right_slots in folders by reverting
      the patch applied to fix http://plone.org/collector/3472
      [stefan]

   RC1 - Released November 22, 2004

    - Fixed it so the .error class no longer causes compression of items in
      forms.
      [limi]

    - Fixed http://plone.org/collector/3601 - Cancel in password_form
      redirected to the wrong page. Thanks to Varun for the patch.
      [stefan]

    - Fixed http://plone.org/collector/3599 - Cancel in personalize_form
      redirected to the wrong page. Thanks to Varun for the patch.
      [stefan]

    - Fixed http://plone.org/collector/3577 - Interchanged 'Edit' and 'Sharing'
      tab on folder. Thanks to Vamsi for the patch.
      [jladage]

    - Made prefs_error_log_form a tad safer in the face of weird upgrade issues.
      Also see http://plone.org/collector/3435
      [stefan]

    - Changed localLongTimeFormat to '%Y-%m-%d %H:%M'. Note: there is no migration,
      only new sites will be affected.
      [stefan]

    - Fixed http://plone.org/collector/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.
      [stefan]

    - Fixed http://plone.org/collector/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.
      [stefan] [dreamcatcher]

    - 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.
      [dreamcatcher]

    - Fixed http://plone.org/collector/3542 - queryCatalog script ignored
      'sort_limit' argument. Thanks to kaib for the patch!
      [stefan]

    - Fixed http://plone.org/collector/3541 - folder rename gave wrong
      error message. Thanks to Varun for the patch!
      [stefan]

    - Greatly improved the handling of DateTimeErrors in event_edit_form
      and metadata_edit_form + validators. No more traceback on Feb 31!
      [stefan]

    - Fixed http://plone.org/collector/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.
      [rohrer]

    - Fixed http://plone.org/collector/3091 - new SetupWidgets can now
      work without cut/pasting the existing code, and use inheritance
      instead. Thanks to jccooper for the fix!
      [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 http://plone.org/collector/3264. Thanks to
      alecm for the patch.
      [stefan]

    - Fixed http://plone.org/collector/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!
      [limi]

    - Fixed http://plone.org/collector/2855 -  Folders have "Properties"
      instead of "Edit" as title for the edit form.
      [jladage]

    - Fixed http://plone.org/collector/2512 - folder_localrole_form role
      assignment pulldowns should be multiple select. Thanks to teix.
      [deo]

    - Fixed http://plone.org/collector/2386 - Misc political incorrectness
      for msgid 'help_search_keywords'.
      [deo]

    - Fixed http://plone.org/collector/3142 - Swedish translation in search
      page translates "by" into "efter".
      [deo]

    - Fixed issues http://plone.org/collector/3495,
      http://plone.org/collector/3508 and http://plone.org/collector/3509
      French translation errors.
      [deo]

    - Fixed http://plone.org/collector/2171 - accessibility headers for the
      document actions were missing.
      [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 http://plone.org/collector/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.
      [limi]

    - Fixed http://plone.org/collector/3429 - the section class was missing
      from the tableless skin.
      [limi]

    - Fixed http://plone.org/collector/3086 - there is now an
      unRegisterPloneFunction in the plone_javascripts that allows you to
      unregister an onload event. Thanks to acamargo for the patch!
      [limi]

    - Fixed http://plone.org/collector/3518 - Same issue as before, but for
      Images this time. Thanks to Varun for the patch.
      [stefan]

    - Fixed http://plone.org/collector/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
      [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 http://plone.org/collector/3500 - Modified .metadata files to
      make FormController do something appropriate when someone submits a
      for using the return key in IE.
      [geoffd]

    - Fixed http://plone.org/collector/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.
      [geoffd]

    - Fixed http://plone.org/collector/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.
      [limi]

    - Fixed http://plone.org/collector/3472 - you can now declare portlets on a
      template. Thanks to acamargo for the patch.
      [limi]

    - Fixed http://plone.org/collector/3030 - content_status_modify.py now
      assembles the  transaction note before performing the transaction.
      Thanks to raphael (Ritz?).
      [stefan]

    - Fixed http://plone.org/collector/3457 - review portlet was not showing ID
      for items without Title. Thanks to Sjors for the patch.
      [limi]

    - Fixed http://plone.org/collector/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.
      [stefan]

    - Fixed http://plone.org/collector/3457 - review portlet was not showing ID
      for items without Title. Thanks to Sjors for the patch.
      [limi]

    - Fixed http://plone.org/collector/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 collector issue. Patch by mathie, thanks.
      [stefan]

    - Fixed http://plone.org/collector/2931. News items displayed "Read More"
      link even if there was nothing more to read. Thanks to mathie for the patch.
      [stefan]

    - Fixed http://plone.org/collector/3457 - review portlet was not showing ID
      for items without Title. Thanks to Sjors for the patch.
      [limi]

    - Fixed http://plone.org/collector/3038. Search terms "and", "or", and "not"
      are no longer highlighted in documents.
      [rohrer]

    - Made RegistrationTool reuse the EMAIL_RE regex from PloneTool instead of
      duplicating it.
      [stefan]

    - Fixed http://plone.org/collector/3447. Email address validation failed
      for upper-case characters.
      [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 http://plone.org/collector/3511
      [limi]

    - Fixed HTML escape codes in password for special characters in
      registered_notify_template (http://plone.org/collector/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 http://plone.org/collector/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 http://plone.org/collector/3329. Results of breadcrumbs.py
      are no longer translated in global_pathbar.pt.
      [stefan]

    - Fixed http://plone.org/collector/3332: hide the
      portal_siteactions from the print stylesheet
      [bmh]

    - http://plone.org/collector/3334.  Added a break statement to the
      javascript for checking link protocols
      [bmh]

    - Fixed http://plone.org/collector/3325 and related. Plone calendar got
      confused when "datetime-format international" was set in zope.conf.
      [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
      http://plone.org/collector/3243.  Also portal_factory now logs
      exceptions during object creation (some were being swallowed
      higher up) (fix for http://plone.org/collector/3148).
      [geoffd]

    - Added enableHTTPCompression script and enabled HTTP compression for
      HTML, CSS, and JavaScript.
      [tiran]

    - Fixed http://plone.org/collector/3240 and related issues.
      Metadata elements like description and keywords (subject) could
      not be cleared.
      [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 http://plone.org/collector/3159. Missing
      form fields should not cause user prefs to be set to None.
      [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 http://plone.org/collector/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.
      [dreamcatcher]

    - 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 http://plone.org/collector/2183 from HEAD.
      _verifyObjectPaste() should deny pasting if the content type is not
      allowed in the target container.
      [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 http://plone.org/collector/2973. Try to avoid brain.getObject() to
      speed up plone.
      [tiran]

    - Fixed http://plone.org/collector/2795. Replaced aq_explicit by aq_inner
      in batchedFolderContents.py
      [tiran]

    - http://plone.org/collector/472.  empty discussions
      Discussion now uses CMFFormController and subject/body are required fields now
      [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 http://plone.org/collector/2583. Disable submit button when item is
      locked and add a locked icon next to the disabled submit button.
      [tiran]

    - http://plone.org/collector/2826. searchterm-highlighting now functions
      correctly, it highlights text in the fuill content-area, but only
      highlights the parts it is supposed to highlight.
      [elvix]

    - http://plone.org/collector/2691 External-link-detector javascript
      is now case-insensitive
      [elvix]

    - http://plone.org/collector/3001. Fallback handling to avoid
      javascript-error-messages in IE5
      [elvix]

    - Fixed http://plone.org/collector/2859.  plonifyActions accepts javascript
      urls
      [tiran]

    - Fixed http://plone.org/collector/2948. Auto generated ids are now lower
      case and the number is more random.
      [tiran]

    - Fixed http://plone.org/collector/2990. Nested groups don't break the
      prefs_group_members template any more.
      [tiran]

    - Fixed http://plone.org/collector/3005 by catching non existing home folder.
      [tiran]

    - Fixed http://plone.org/collector/2963. Allow access to
      Products.ZCTextIndex.ParseTree.ParseError and catch it
      in the queryCatalog script
      [tiran]

    - Fixed http://plone.org/collector/2862. Added a listMetaTags script to
      skins/plone_scripts to add automagically generated meta tags in the
      '<head>' tag.
      [tiran]

    - Fixed http://plone.org/collector/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.
      [tiran]

    - Fixed http://plone.org/collector/2876.  Folder rename does not reindex
      title. Added a explict reindex if only the title has been changed.
      [tiran]

    - Fixed http://plone.org/collector/2892 by using global_defines in the
      calendar_popup template.
      [tiran]

    - Fixed https://plone.org/collector/2749. 'groups' wasn't
      initialized as an instance variable, so any changes to it would
      vanish on restart.
      [dreamcatcher]

    - Fixed https://plone.org/collector/2671. default_page as a string
      property would not work. Fixed this and added tests for basic
      behavior. More tests are needed IMHO.
      [dreamcatcher]

    - Fixes for http://plone.org/collector/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.
      [runyaga]

    - Fixed http://plone.org/collector/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()'
      [dreamcatcher]

    - Fixed https://plone.org/collector/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.
      [dreamcatcher]

    - Fixed http://plone.org/collector/2998. The types tool has a getTypeInfo
      method, but with different signature.
      [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.
      [dreamcatcher]

    - 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 http://plone.org/collector/2980. Handle dates between
      PLONE_CEILING and CMF_CEILING.
      [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 http://plone.org/collector/2778.
      This means Unicode characters are shown correctly in the ZMI too.
      [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 [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.
      [dreamcatcher]

    - fixed #2808
      metadata_edit form was broken when the date format was set to
      international (zope 2.7). Fixed date_components_support.py
      [tiran]

    - fixed #2804
      the plone_memberprefs_panel.pt ignored the 'visible' of configlet
      actions. thats corrected now
      [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 http://plone.org/collector/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.* [runyaga]

    - Fixed http://plone.org/collector/2744
      Large Plone Folders should use folder_workflow. Fixed
      PortalGenerator and added migration and tests.
      [stefan]

    - Fixed and re-fixed http://plone.org/collector/2246
      Short name should be editable without specifying a file.
      [achilles] [stefan]

    - Added a monkey-patch workaround for http://plone.org/collector/1323
      This *may* be considered a CMF bug. See setFormatPatch.py.
      [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):
      Issue 2498
      FormTool is deprecated or will be deprecated in 2.0. Bug #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. Report any problems in the Collector.

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

      - XXX 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_contentXXXX 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 XXX (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 http://plone.org/collector/1154 (SearchableText should be ZCTextIndex)
      [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).
      [dreamcatcher]

    - Subclassed all CMFCore and CMFDefault tools for easier extension in the future.
      [dreamcatcher]

    - generateUniqueId and isIDUnique now are a bit more unique (with regards to
      randomness) and we now suffix generated ID's with .html - issue #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] [dreamcatcher] [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:   [limi]

        - Home

        - Contents

        - Search

        - Help

        - Copyright

        - Author

    - 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.
      [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, navigationXXX, 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 Collector 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.

    - 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 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 xxx_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 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_xxxx 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_xxx and
      xxx_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_xxx.py)
    - the actual editing scripts call plone_utils.getNextXXXXFor() 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_xxxx_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 xxx_edit_forms, look in
      plone_scripts/validate_xxxxxx

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

    - navigateXXXX 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 xxx_edit scripts return back to objects view

    - changing ID works in xxx_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/xxx/.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:


    - load of fixes, too many to even attempt to keep track of ;)

Plone 0.7:


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


    - fixed search form up

    - fixed folder_contents (not have an extended_edit, since we muck w/ metadata
      alot)

 Plone 0.1

    - Initial release

