Changelog for Plone

   (name of developer listed in brackets)

Plone 2.0.4 - (no name yet) - Released (no date yet)

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

    - Backported fixes for http://plone.org/collector/3253 from the trunk.
      folder_paste should return better error messages.
      [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]

    - Backported fix for http://plone.org/collector/3098. 
      getObjSize() should handle floats.
      [stefan]

    - 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 20. May 2004

    - Login portlet wasn't using the 'label' tag, corrected.

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

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

    - 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 4. May 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
      <header>
      [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:
      [dtremea]

      - 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 23. March 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 9. September 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 14. August 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 19. June 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 3. June 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 19. February 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 6. February 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 25. May 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 19. March 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 31. January 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

