Changelog for Plone

   (name of developer listed in brackets)

Plone 2.0 - Fyuti

   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.2 - Vert Release

    - 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 

    - 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

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

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


    - 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 - 1/31/02:


    - 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
 
