CHANGES.txt
CMF 1.5.7 (08/27/06)
No changes from 1.5.7-beta
CMF 1.5.7-beta (08/17/06)
Bug Fixes
- CMFCore.CatalogTool: Added
cmf_uid
method to IndexableObjectWrapper so that CMFUid UIDs are not acquired during indexing. (http://www.zope.org/Collectors/CMF/446) - CMFCore.PortalContent:
_guessAliases
may leave type information with a default alias of '(Default)'; work around that case. (http://www.zope.org/Collectors/CMF/445) - CMFCore.CatalogTool: Removed import of LOG object from ZCatalog in
favor of the new
logger
pattern using Python's logging module. - Forward-ported fix for DCWorkflow global actions missing IDs (http://www.zope.org/Collectors/CMF/308).
- CMFCore Expression: Fixed
request
provided by expression contexts.request
was not set correctly ifobject
is not specified. - CMFCore.interfaces.portal_workflow: Corrected the API given for WorkflowDefinition.isActionSupported. (http://www.zope.org/Collectors/CMF/407)
- A re-used variable name led to rendering errors in some cases (http://www.zope.org/Collectors/CMF/411)
- The line-endings problem fixed for file-based PythonScripts applies to multi-line python code in file-based PageTemplates as well. The same fix (universal line-endings support) is now used here too. (http://www.zope.org/Collectors/CMF/403)
Other:
- The Actions Tool Action Providers ZMI tab now shows the action IDs provided by each listed provider. (http://www.zope.org/Collectors/CMF/447)
CMF 1.5.6 (2006/02/26)
Bug Fixes
- In certain circumstances file-based PythonScripts with foreign line endings were not handled correctly. PythonScripts are now read using Python's universal line-endings support. (http://www.zope.org/Collectors/CMF/403)
CMF 1.5.6-beta (2006/02/19)
Bug Fixes
- CMFDefault.DiscussionTool: Ensure that isDiscussionAllowedFor will not accidentally acquire discussion settings from the content object's parent. (http://www.zope.org/Collectors/CMF/398)
- CMFDefault.RegistrationTool: Adding single quotes to the allowed characters in the local part of an email address. (http://www.zope.org/Collectors/CMF/401)
- CMFCore.FSPythonScript: FSPythonScripts forgot to add __file__ to the script globals. This broke warnings.warn() when a stacklevel argument pointing into the script was passed (2).
- CMFSetup.workflow: Workflows managing no permissions at all could make the CMFSetup workflow exporter fail. (http://www.zope.org/Collectors/CMF/397)
- CMFDefault.DiscussionItem: Deleting a discussion reply would not recurse and left items below the deleted reply still cataloged (http://www.zope.org/Collectors/CMF/391)
- Corrected the HelpSystem documentation for DCWorkflow Guards (http://www.zope.org/Collectors/CMF/394)
- CMFCore utils: Synced _checkPermission with Zope 2.8.5 code. checkPermission of Zope 2.8.5 and later contains bug fixes and respects proxy roles, but for backwards compatibility CMF 1.5 still needs its own implementation.
Others
- Made unit tests close the request properly.
- Made cut / copy / paste tests more independent from implementation
details of
_verifyObjectPaste
. - Modified several deprecation warnings to indicate point-of-use of the deprecated feature.
CMF 1.5.5 (2005/11/20)
Bug Fixes
- DefaultWorkflowDefinition: Changed meta_type to make it unique. (http://www.zope.org/Collectors/CMF/298)
- CMFSetup: fixed empty attribute parsing when an encoding is defined.
Others
- CMFCore: removed old backward compatibility code that slowed down TypeInformation.allowType and gave PortalFolder.allowedContentTypes quadratic complexity.
- Removed deprecated
all_cmf_tests.py
and supportingtest_all.py
from products (usezopectl test
to run CMF tests instead).
CMF 1.5.5-beta (2005/11/06)
Bug Fixes
- CMFCore.DynamicType/ActionProviderBase: If an action cannot be looked up, provide a more helpful debugging message for the error log.
- CMFCore.MemberDataTool: Fixed the pruneMemberData functionality in the ZMI: Now it is enough to press the button once.
- Collector #381: CMFCore unit tests depended on CMFDefault / workflow.
- CalendarTool: If an event ends at exactly midnight, don't show it in the list of events for the day starting at midnight. (http://www.zope.org/Collectors/CMF/246)
Features
- CMFCore: added
skinname
to the thread-specific tuple created by the Skinnable base class to cache the skin path lookup, to facilitate querying later; added agetCurrentSkinName
to the Skinnable API to do the query. Thanks to Laurent Rowe for the patch. - CMFSetup: added support for importing and exporting workflow script metadata for scripts that are External Methods. One very important difference to other scripts remains: Since the CMFSetup machinery cannot access the filesystem code for external methods it only saves the data needed to instantiate the ZODBi-based External Method object. If, during an import, the filesystem-based code cannot be found, the import will fail.
- CMFActionIcons: added support for exporting / importing action icons tool configuration (via GenericSetup).
- CMFSetup: added support for configuring content type registry.
- CMFSetup: added support for configuring caching policy manager.
- CMFSetup: added support for configuring cookie authentication and mailhost tools (http://www.zope.org/Collectors/CMF/387).
- CMFCore.CachingPolicyManager: Caching policies can now control all the Cache-Control tokens defined in the HTTP 1.1 spec (s-maxage, public, private, no-transform). When no-cache is enabled, a Pragma: no-cache header is also sent for HTTP 1.0 clients. Thanks go to Geoff Davis for contributing the necessary patches.
- CMFCore.FSPageTemplate: These now have the option to return a status 304 and no content when a conditional GET is sent. This is a potential significant win for sites. This behavior is activated on the CachingPolicyManager by using policies that set suitable ETag headers when delivering the content. Geoff Davis invested the time to add this feature.
Others
- CMFDefault.Portal: deprecated
manage_addCMFSite
. - Collectors #384: Added
__traceback_info__
to FSDTMLMethod's call-stack etnry. - Collector #383: Added tab to
portal_uidhandler
tool to allow querying objects given UID. - CMFCatalogAware: refactoring. Defines now 2 methods, _getCatalogTool() and _getWorkflowTool(), that are used to find the catalog and workflow tool. It's now possible to override these methods using inheritence for a given content type to specify another catalog or workflow tool the content type can use
- CMFSetup: allow export of properties of old objects that were stored as lists (instead of tuples now).
CMF 1.5.4 (2005/09/04)
Bug Fixes
- CatalogTool: Made sure the catalog_object method works with Zope 2.8.
The new
pghandler
argument was missing. This broke at least the refreshCatalog method used byUpdate Catalog
. (http://www.zope.org/Collectors/CMF/379)
CMF 1.5.4-beta (2005/08/28)
Bug Fixes
- CMFCore.utils: The return value from _mergedLocalRoles allowed direct manipulation of objects' local role settings since it contained references to the actual values instead of copies. (http://www.zope.org/Collectors/CMF/376)
- CMFTopic.DateCriteria: The behavior and naming of date criteria operators was very confusing and in many cases unexpected and wrong. For that reason e.g. Plone replaced the implementation with a more user-friendly handling which is hereby introduced to CMF proper. (http://www.zope.org/Collectors/CMF/339)
- CMFCore.PortalContent, CMFCore.FSSTXMethod, CMFTopic.Topic, CMFDefault.SkinnedFolder: Cache headers from the Caching Policy Manager never got set for DTML-based skins due to the way the view template __call__ method was invoked. (http://www.zope.org/Collectors/CMF/374)
- CMFCore.FSImage and FSFile: Unlike the current behavior of Zope itself, FSImage and FSFile would set a content-length response header for 304 (not modified) responses, which should not be done according to RFC 2616. It won't do so anymore, but Zope itself will still force a content-length header in ZServer.HTTPResponse. This misbehavior has been filed as a Zope issue (http://www.zope.org/Collectors/Zope/1866). (http://www.zope.org/Collectors/CMF/372)
- PortalFolder: Improved the _checkId method. Method Aliases mask objects with matching IDs. Thus _checkId() and checkIdAvailable() now make sure non-managers can't create objects with IDs already taken by Method Aliases of the current folder.
- CMFDefault.Image and CMFDefault.File: When calling the constructor, any intelligent content type detection would be destroyed by the call to initialize Dublin Core values, which would overwrite the content_type. It is now preserved, if possible. (http://www.zope.org/Collectors/CMF/370)
Features
- CMFTopic.Topic: Made Topics a tad more useful by subclassing from CMFDefault.SkinnedFolder instead of CMFCore.PortalFolder, because SkinnedFolder is CatalogAware. Topics now offer useful information for Title, Description and SearchableText, so Topic objects can be located in the portal by using the standars search facilities. (http://www.zope.org/Collectors/CMF/53)
Others
- CMFCore.PortalFolder._checkId() allows root doted prefixed name object overrides.
CMF 1.5.3 (2005/08/07)
Bugs fixed
- When the CMFBTreeFolder was moved into CMFCore, its base class was changed to PortalFolderBase. This broke an assumption in the portal_syndication tool that relied on all syndication containers deriving from PortalFolder (http://www.zope.org/Collectors/CMF/369)
CMF 1.5.3-beta (2005/08/02)
Bugs Fixed
- Changed the INSTALL_SVN instructions to conform to the new branch and tag naming scheme instituted for the subversion repository.
- Apply an interim fix for slow pathwalking implementation in development mode on Windows (http://www.zope.org/Collectors/CMF/367) Note that a better fix would be to leverage pywin32 APIs for file / directory monitoring.
- FSObject.manage_doCustomize() was broken for folderish objects on Zope 2.8 because manage_permission requires a context to work. (see http://www.zope.org/Collectors/CMF/368)
- CMFCore/FSPropertiesObject and CMFCore/FSMetadata: Removed a wrongly inserted DeprecationWarning in the FSPropertiesObject class and put it into the FSMetadata class. We are not deprecating ".props" files, but ".properties" and ".security".
- Change CVS checkout documentation to their equivalent Subversion instructions
- In CMFSetup, make sure to give special treatment to both CVS and .svn folders where this is necessary (e.g. to implicitly skip them when importing profiles)
- Made sure FSDVTest always deletes its temporary folder on tearDown. (http://www.zope.org/Collectors/CMF/106)
- Fix DefaultWorkflowDefinition bug on isActionSupported() for the keywargs support to reflect DCWorkflowDefinition changes. Add a test case for this definition as well.
Others
- CMFCatalogAware: reindexObjectSecurity() now always reindexes the catalog objects without changing their catalog uid. This is useful for third-party code that indexes objects with special uids.
CMF 1.5.2 (2005/07/17)
Bugs Fixed
- CMFCore/ActionInformation.py: Permissions of action categories starting
with
document
are now evaluated in the object context instead of the portal context. This should probably be generalized some more. - Added testing framework to suppress / examine output from warnings module and from zLOG.
- CMFUid/UniqueIdGeneratorTool.py: Replaced the old BTree.Length.Length implementation by a simple counter. Using a BTree.Length.Length object as counter may have caused setting the same unique id to multiple objects under high load. The tools counter gets automigrated on the first access.
Others
- CMFCore/CMFBTreeFolder.py: Moved here from Zope core's Products/BTreeFolder2; conditional import, with module alias, into __init__.py, for compatibility with Zope 2.7; 2.8.0 has BTreeFolder2 in the core (see http://www.zope.org/Collectors/Zope/1813).
CMF 1.5.2beta2 (2005/07/08)
Features Added
- CMFDefault/skins/zpt_generic/talkback_tree: Add link to allow managers to delete replies (http://www.zope.org/Collectors/CMF/38).
Bugs Fixed
- CMFDefault.utils.parseHeadersBody: use standard library's
rfc822
module to parse metadata headers, to take advantage of better handling of edge cases. - CMFDefault.utils.formatRFC822Headers: strip trailing blank line of multi-line value, to prevent premature halt of parsing. (http://www.zope.org/Collectors/CMF/230)
- CMFCore.MembershipTool: allow
getMemberById
to crawl up the hierarchy of user folders until it finds the user. This means that users from any user folder in or above the portal will be treated as full members of the portal. (http://www.zope.org/Collectors/CMF/354, also http://www.zope.org/Collectors/CMF/63) - CatalogTool: Added manage_convertIndexes. This method should not be used with Zope 2.7. It overrides the broken manage_convertIndexes of Zope 2.8.0. (http://www.zope.org/Collectors/CMF/357)
- CMFCore.WorkflowTool: Make (deprecated) WorkflowInformation objects schema-compatible with current ActionInformation. (http://www.zope.org/Collectors/CMF/355)
- CMFCore.utils.ToolInit: For icon registration to work with ToolInit you would have to have the same product_name parameter as the actual product name of the product. product_name is now optional, defaulting to the real product name. It is also deprecated, and starting with CMF1.6 product_name it will be ignored.
- CMFSetup.workflow: scripts were not exported, they're now in a
scripts
subdirectory, and encoding was not propagated at import time.
Others
- Moved tests which used to
import Zope
to tryimport Zope2
(with a fallback for Zope 2.7). Thanks to sacco for the patch! (http://www.zope.org/Collectors/CMF/362) - CatalogTool: Removed obsolete Vocabulary.
CMF 1.5.2beta (2005/06/26)
New Features
- CMFDefault browser: Added browser package and five_template. This allows to use the main_template for forms generated by Five.
- CMFDefault skins: Added style_slot to main_template.
- CMFCore.PortalFolder: A new class PortalFolderBase was added. The class is a subclass of Folder while PortalFolder is a subclass of PortalFolderBase and OrderedFolder. It was added for software which is incompatible w/ the ordered interface.
- CMFCore.ActionProviderBase: Add the methods _getOAI and _getExprContext which can be used to hook in custom version of getOAI() and getExprContext().
- CMFCore.TypesTool.TypeInformation.queryMethodID(): Add new argument context=None and change all calls of queryMethodID to apply the context.
- Interfaces: Added newstyle (Zope 3) interfaces. This change has no effect on Zope 2.7 without Five.
- CMFSetup.skins: Small featurelet that adds a new keyword to the "layer" tag in skins.xml named "remove". If "remove" is specified, the named layer will be explicitly removed from the skins path(s).
- CMFCatalogAware: reindexObjectSecurity() now supports an
optional argument
skip_self
that prevents the object itself from being reindexed, but its descendants still are. Allows an optimization when you want to reindex all the idxs and the security in a single shot with reindexObject(). - CMFCatalogAware: allow easy subclassing of the "security indexes" that are reindexed by reindexObjectSecurity(), through the attribute _cmf_security_indexes.
- doActionFor() propagates **kw to isActionSupported() through _checkTransitionGuard() until the guard.check() method so that StateChangeInfo() can be constructed with those kwargs.
Bug Fixes
- ActionInfo: Make
setActionExpression
sane if passed a string which is already prefixed with "string;". - ActionInfo: Fixed copy method.
- CMFTopic.Topic/CMFCore.PortalContent: Clean up a previous change by changing __call__ methods to be aligned with what's on CVS HEAD and using the old _getViewFor function as a fallback to retain backwards compatibility.
- DCWorkflow: Add a note to the Transitions and States forms explaining that the renaming actions will not automatically update any items in the workflow that might be affected by the change. (http://www.zope.org/Collectors/CMF/89)
- CMFDefault.SyndicationTool: Zope 2.8 raises AttributeError where earlier Zopes used to raise KeyError.
- Set cache headers in 304 responses from FSImage / FSFile (http://www.zope.org/Collectors/CMF/355)
- CMFCore.DirectoryView: Do not cause ZODB writes or ConflictError if an old DirectoryView with a non-existing path is left. Sends a warning to stderr about those. (http://www.zope.org/Collectors/CMF/347)
- CMFSetup utils: Fixed handling of comments and empty descriptions. (http://www.zope.org/Collectors/CMF/352)
- CMFDefault.MetadataTool: When asked for a non-existing metadata policy, the tool would return the default policy unwrapped. This means, at a minimum, that the security declarations on the MetadataElementPolicy instance would never be applied correctly. (http://www.zope.org/Collectors/CMF/342)
- CMFSetup.workflow: Make sure to set the "permissions" attribute on DCWorkflow definitions to a tuple, which is expected throughout the DCWorkflow code. (http://www.zope.org/Collectors/CMF/346)
- CMFCore.FSObject: Try to find and call the appropriate method to determine the skins tool name instead of hardcoding "portal_skins". (http://www.zope.org/Collectors/CMF/349)
- CMFCore.FSZSQLMethod: Add the forgotten setting to allow simple direct traversal for ZSQL methods to the list of settings recognized and applied by FSZSQLMethods during instantiation and customization. (http://www.zope.org/Collectors/CMF/350)
- CMFCore.FSObject: When customizing filesystem objects in the skins tool, some security-related settings were not transferred to the customized object, namely proxy roles and permission settings. (http://www.zope.org/Collectors/CMF/351)
- Sync catalog metadata column with correct name of DublinCore string ExpirationDate method. (http://www.zope.org/Collectors/CMF/345)
Others
- CMFSetup: the import/export of portal types uses a new XML format that can hold arbitrary properties, to facilitate subclassing. The old format is still recognized when importing.
- WorkflowTool: Marked WorkflowInformation and getActionsFor deprecated. getActionsFor is superseded by listActionInfos and WorkflowInformation was just used by getActionsFor.
CMF-1.5.1 (2005/04/24)
Other
- Made INSTALL.txt more general so it does not refer to specific CMF version numbers in the 1.5 series and thus won't look outdated from one release to the next.
- CMFCatalogAware: reindexObjectSecurity() optimizations in case of an indexable container.
Bug Fixes
- CMFDefault.SyndicationTool: Coerce property values into correct types. (http://www.zope.org/Collectors/CMF/344)
- CMFCore.Skinnable: Don't catch ConflictError in __of__.
- CMFCore.CMFCatalogAware: In reindexObjectSecurity, use _unrestrictedGetObject when available, and LOG when the object cannot be retrieved.
CMF-1.5.1beta2 (2005/04/17)
New Features
- MemberDataTool: setSecurityProfile (called by MembershipTool's setPassword) now uses the userFolderEditUser() API of the user folder to change user information.
- DCWorkflow: To bridge some of the bound variable name differences between TALES expressions used in DCWorkflow and those used elsewhere in the CMF, added two "aliases" to the expression context that reflect the CMF conventions: "object" points to "here", and "folder" points to "container" (http://www.zope.org/Collectors/CMF/338)
- CMFSetup: Improved update directives for extension profiles. See the new PROFILES.txt for details.
- CMFCore.DirectoryView: Made list of file names to ignore configurable. The previously hardcoded list of files to ignore when creating their ZODB representations can now be configured by passing a sequence of names to registerDirectory, which will be ignored in addition to the standard list of ignored names (http://www.zope.org/Collectors/CMF/319).
- CMFCalendar: Added extension profile. You can now set up CMFCalendar in one step together with a new site or add calendar support to an existing site using the portal_setup tool.
- CMFSetup: Added support for extension profiles. Extension profiles are profile fragments used to modify base profiles. They can be shipped with add-on products or used for customization steps. Importing an extension profile adds or overwrites existing settings in a fine-grained way. You can't export extension profiles. Snapshots and exports always represent the merged settings.
- CMFSetup: Sometimes it is not necessary or desirable to create a snapshot upon initial site creation. Matter of fact when run in a unit test situation, addConfiguredSite can throw permission errors during the snapshot-taking because no specific SecurityManager has been set up. Add new flag "snapshot" to factory.addConfiguredSite to turn off snapshotting if desired
Bug Fixes
- TypesTool: Removed _checkViewType. The control-content-creating-by-typeinfo-view-permission feature did never work. Use DCWorkflow's allowCreate method instead. (http://www.zope.org/Collectors/CMF/114)
- CMFDefault.DublinCore: Force local timezone when displaying date metadata. (http://www.zope.org/Collectors/CMF/325)
- CMFCore.SkinsTool: Prevent adding skin layers with invalid path elements There is a disconnect between the ability to define what can be ignored inside DirectoryViews and what can be put into skins paths in the SkinsTool. Now a check is done inside addSkinSelection that makes sure the same ignore-policy that is used for the DirectoryView is applied to the elements of a skin path. (http://www.zope.org/Collectors/CMF/336)
- CMFCore.FSZSQLMethod: Added configuration parameters that were left out. Some of the configuration parameters to ZSQL methods, specifically those describing custom pluggable brains classes and the connection_hook, were not implemented in FSZSQLMethod. Also added a first small unittest module for FSZSQLMethod testing. (http://www.zope.org/Collectors/CMF/335)
- CMFSetup utils: Modified ConfiguratorBase. If the DEFAULT value is used, CONVERTER is no longer called. This makes setting DEFAULT more intuitive. While very unlikely, the change might break existing third party configurators.
- CMFSetup: Reduced probability of profile ID conflicts.
The first argument of
registerProfile
is nowname
instead ofprofile_id
. The profile ID combinesname
andproduct
. - CMFSetup.skins made the assumption that the CMF site can always acquire REQUEST and would set up the current skin with it. Added a test to see if REQUEST is available and if it is not, skip the step that sets up the current skin.
- CMFCalendar zpt skin: Removed dependency on dtml layer.
- CMFCalendar: Modified install script. Adds date indexes instead of field indexes. No longer adds the dtml layer to zpt skins.
- CMFCore.utils: Added
transaction
for backwards compatibility. CMF now uses the Zope 2.8 transaction API und uses utils.transaction as fallback in Zope 2.7. - CMFCore.TypesTool: Added backwards compatibility code to the fix for collector issue 49. (http://www.zope.org/Collectors/CMF/49)
- CMFCore.Skinnable: Changed the way layers (skindata) are stored (no more v attribute) to prevent them being lost in the middle of a request when memory pressure is high. This change is incompatible with SpeedPack, but includes one of its two optimizations about skins. (http://www.zope.org/Collectors/CMF/198)
- DublinCore: Fixed creators upgrade to not call a potentially costly method on the user folder. (http://www.zope.org/Collectors/CMF/300)
- CMFCatalogAware: When reindexing security, all subobjects must be reindexed even if they are not visible by the current user. Also fixed to work correctly with Zope >= 2.7.6.
CMF 1.5.1beta (2005/03/24)
New Features
- CMFCore.TypesTool and CMFCore.PortalFolder: If invokeFactory is called from code it will now hand back the created object's ID. This does not change any behavior when called directly from the web. Both methods returned None before, so there is no dependencies anywhere on their return values, anyway. (http://www.zope.org/Collectors/CMF/331)
- CMFSetup: When importing skins configurations you can now specify a layer to be inserted after a given layer. Previously you could only insert before a given layer.
- CatalogTool: All default FieldIndex instances used for indexing DateTime values are now created as DateIndex instances instead. All default TextIndex instances are now created as ZCTextIndex instances. (CMF collector issues http://www.zope.org/Collectors/CMF/191 and http://www.zope.org/Collectors/CMF/302)
- CMFSetup: Improved
skip purge
behavior of the skins import handler. If purging is disabled, it's now possible to modify existing skin configurations. You can use*
as wildcard for skin-path ids and ainsert-before
attribute to specify where to insert a new layer. - CMFSetup tool: Improved
Properties
tab. The active site configuration can now be selected from a list of registered profiles and stored snapshots. (http://www.zope.org/Collectors/CMF/264) - CMFSetup: Added handlers for site properties.
- CMFSetup utils: Added
ConfiguratorBase
class. It's now recommended to use this class as base for all configurators. The class includes some generic methods to handle subobjects and properties. - FSObject: Now FSObject-derived items like FSImage or FSFile can have security declarations inside the metadata file. (http://www.zope.org/Collectors/CMF/289)
- profiles: Moved
default
profile to CMFDefault. Using the newimportVarious
handler this profile now allows to create CMF sites identical to those created with manage_addCMFSite. - CMFDefault: Added
importVarious
setup handler. This provisional handler will be removed again as soon as full handlers are implemented for these steps. - CachePolicyManager: You can now set a ETag using a TALES expression (http://www.zope.org/Collectors/CMF/236)
- RegistrationTool: The regular expression that limits what people can put in as a valid member ID is now configurable TTW in the portal_registration tool (http://www.zope.org/Collectors/CMF/117)
Bug Fixes
- CMFCore.MembershipTool: Change a couple conditional tests that tried to determine if the MemberDataTool had been found to explicitly test for None as the return value instead of a truth test on the tool itself, which would fail unexpectedly on folderish MemberDataTool implementations that don't have actual content (http://www.zope.org/Collectors/CMF/330)
- CMFCore.CachingPolicyManager and CMFCore.ActionInformation: The names available to TALES expressions throughout the CMF showed some inconsistencies. To prevent confusion the names "content" and "content_url" that were used for Cache Policy Manager policies as well as the special ActionInformation.oai class are now deprecated and will be removed in CMF 1.7. The canonical names to be used are "object" and "object_url", which matches all other CMF expression contexts with DCWorkflow being the only exception due to its non-CMF roots. (http://www.zope.org/Collectors/CMF/328)
- CMFCore.PortalFolder: Cataloging portal folders was prevented by overriding the typical indexing calls, but one of them was forgotten, so they still got cataloged. (http://www.zope.org/Collectors/CMF/309)
- CMFCore.DirectoryView: A special __setattr__ on the DirectoryViewSurrogate class made sure to write changes through to the underlying DirectoryView, but there was no equivalent __delattr__ cleanup. (http://www.zope.org/Collectors/CMF/316)
- CMFDefault.RegistrationTool: Allow email addresses with an underscore as the last element of the alias part. (http://www.zope.org/Collectors/CMF/326)
- FSPageTemplate: Ensure that if a content type is specified using a .metadata file we respect it (http://www.zope.org/Collectors/CMF/320)
- CMFCore.tests.test_PortalFolder: fixed testing bug copied forward from OFS.tests.testCopySupport.
- CMFDefault.RegistrationTool: Allow
+
in e-mail addresses. (http://www.zope.org/Collectors/CMF/322) - ActionInfo: Fixed issue with oldstyle Action info mappings.
The
allowed
key was broken for non-emptypermissions
. - CMFDefault.DiscussionTool:
getDiscussionFor
sometimes returned unwrapped talkback objects. - CMFSite: Made
title
anddescription
properties undeletable. This change has no effect on existing sites. - FSObject: Ensure that a cache manager association on a Filesystem-based object in the Skins Tool gets applied to the customized object in the ZODB upon customization. (http://www.zope.org/Collectors/CMF/304)
- TypesTool: Changed the way available factory_type_informations are presented on the dropdown list when adding a new type from a filesystem FTI to the Types Tool. The new representation includes the "id" as set in the FTI instead of just the product name and the meta_type. (http://www.zope.org/Collectors/CMF/49)
- CMFSetup: Fixed import of workflow bindings.
The
workflow
import step has to be run after thetypeinfo
step. (http://www.zope.org/Collectors/CMF/265) - CMFCore.CatalogTool: Take into account query restrictions on
effective
orexpires
attributes during a search. (http://www.zope.org/Collectors/CMF/120) - WorkflowTool: Fixed
setChainForPortalTypes
. Ifchain
was an empty string, it wasn't set correctly. - FSFile, FSImage: Made available to caching policy manager as standard content. (http://www.zope.org/Collectors/CMF/299)
- FSDTMLMethod: Small code cleanup to remove duplicate variable definition (http://www.zope.org/Collectors/CMF/291)
- Portal: Fixed
setupDefaultProperties
. Backwards compatibility was broken and thedefault_charset
argument was ignored. - Document/NewsItem: If the "plain text" format is selected the content will no longer be tested for HTML and reduced to text between opening and closing "body" tags (http://www.zope.org/Collectors/CMF/214)
- Document/NewsItem: A call to setFormat will now re-cook the document content if the format has been changed (arising from discussion about http://www.zope.org/Collectors/CMF/214)
- DirectoryViews/FSMetadata: Corrected some erroneous docstrings about proxy role handling using .metadata files (http://www.zope.org/Collectors/CMF/177)
Other
- CMFCore.FSPropertiesObject: Added a deprecation warning to announce the fact that .properties files will disappear in CMF 1.7 and should be replaced with CMFCore.FSMetadata (.metadata) files.
CMF 1.5.0 (2004/10/21)
New Features
- Portal: Added
default_charset
property. (http://www.zope.org/Collectors/CMF/261) - CMFDefault utils: Added
toUnicode
function. (http://www.zope.org/Collectors/CMF/261)
Bug Fixes
- ZPT skin: Fixed
RSS
. Values are now converted to unicode, usingdefault_charset
. (http://www.zope.org/Collectors/CMF/261) - DublinCore: Added
setCreators
method. Note thatnotifyModified
also modifies creators. If the current user should not be added to creators, make sure notifyModified() is not called after setCreators(). (http://www.zope.org/Collectors/CMF/61) - ZPT skin: Fixed
*metadata_edit_form
. Setting "Enable Discussion?" toOff
was broken. - CMFSetup: Made sure imported values are converted to strings.
For now imports and exports work only with
ascii
encoding. (http://www.zope.org/Collectors/CMF/287) - FSPageTemplate: Don't hide sub-tracebacks in development mode.
- TypesTool: Removed again the "add properties from the ZMI" feature. That feature existed only in 1.5.0beta2.
- ActionProviderBase: Modified exceptions raised by
getActionInfo
. Now Unauthorized is raised if at least one Action was found but the user is not allowed to access any of them. - RegistrationTool: Generated passwords no longer contain
OQ0Il1
. - The permalink feature is now turned off by default and may be turned
on by setting the boolean property
enable_permalink
in the cmfs root property sheet through the ZMI. Through theget_permalink
script the permanent link of an content object can be asked for. Additionaly the site may be asked if the permalink feature is turned on or not by addingisAvailable
instead of an unique id (http://www.example.com/permalink/isAvailable). Returns1
or0
. Also removed the badly designedtal:on-error
directive inmain_template
.
CMF 1.5.0beta2 (2004/09/27)
New Features
- CookieCrumbler: Merged changes from standalone version. Cookies set on an HTTPS connection are now marked as secure, meaning they will not be transmitted over HTTP.
- PortalFolder: New
Folderish
Interface defines thecontent*
methods. - PortalFolder: Improved WebDAV folder listings.
Hidden sub-objects like tools are now filtered out. To see all
sub-objects, you need the
Manage portal
permission. - TypesTool: New properties can be added from the ZMI to TypeInformation objects.
Bug Fixes
- CMFDefault/Document: store / return size of "raw" source text for
get_size
. - ZPT skin: Refactored registered_notify_template. For security reasons, it no longer adds the password to the login URL.
- PortalFolder: Fixed
_checkId
policy. In a subfolder, members withoutManage portal
permission were not able to create content items whose names clashed with content items in the portal root. - CookieCrumbler: Improved
came_from
URL. Problems in connection with stack manipulation on traversal or usage oftraverse_subpath
should be fixed now. - PortalFolder: Public
content*
methods or no longer publishable. This prevents expensive anonymous calls to contentItems(), contentIds() and contentValues() via URLs. They still can be used in TTW code. - ZPT skin: Added missing mail_password_template.
- TypeInformation: Simplified Method Aliases API. The new queryMethodID() replaces getMethodPath() and getMethodURL(). Aliases for method paths are no longer supported.
- FSFile: Allow setting a content_type value using a .metadata file (http://www.zope.org/Collectors/CMF/281)
- FSPageTemplate: Refine the XML content type detection so that addtional data such as encoding is preserved (http://www.zope.org/Collectors/CMF/228)
- ActionInformation: If a path expression ending in an object that gets called using __render_with_namespace__ (such as DTML objects and Scripts (Python)) is used a KeyError for "here" would be thrown inside PageTemplates.ZRPythonExpr.call_with_ns. call_with_ns expects the namespace to contain "here", which the context coming from CMFCore.Expressions.createExprContext did not provide. Added "here" as an alias pointing to the provided "object" (http://www.zope.org/Collectors/CMF/171)
- DiscussionItem: Made sure that the workflow is notified of their creation. (http://www.zope.org/Collectors/CMF/280)
- CMFCatalogAware: When pasting a content item, local roles were not changed to reflect the new ownership. (http://www.zope.org/Collectors/CMF/205)
- ZPT skin: Added missing RSS script and template. (http://www.zope.org/Collectors/CMF/279)
- DirectoryView: Improved createDirectoryView() backwards compatibility. Using platform specific path separators is deprecated.
- UniqueIdAnnotation: Fixed manage_after* methods. They didn't work correctly in nested folders.
- Workflow: Marked WorkflowMethod alias WorkflowAction as deprecated.
- ZPT skin: Improved folder_copy_control and folder_cut_control. They now catch CopyErrors.
- DirectoryView: Readded expandpath() for backwards compatibility. Some products still import expandpath from DirectoryView because it was once defined there. Note that importing expandpath from DirectoryView is deprecated and doesn't work with CMF HEAD / 1.6.
- RegistrationTool: An optional password can now be passed to registeredNotify() (Issue #277).
- Tool icons can now reside in subdirectories (Issue #144).
CMF 1.5.0beta (2004/08/12)
New Features
- The CMF is now under the terms of version 2.1 of the Zope Public License (ZPL); it was previously under ZPL version 2.0.
- TypeInfos: Marked getActionById as deprecated. Use getActionInfo if you need an URL or getMethodPath if you need a method.
- CatalogTool.CatalogTool now has a private
unrestrictedSearchResults
method bypassing the effective and expiry date and roles. The new method has to be used with care to not expose security holes in applications using the CatalogTool. - CMFCalendar.CalendarTool: Made workflow states configurable TTW. (http://www.zope.org/Collectors/CMF/110)
- Minor featurelet: The "Action Providers" ZMI tab on the portal_actions tool now links directly to the tools shown (http://www.zope.org/Collectors/CMF/181)
- CMFCore.utils: Introduced contributorsplitter() utility function along the lines of keywordsplitter().
- Actions and Action providers: Further refactoring.
- Removed again OldstyleActionProvider Interface and OldstyleActionProviderBase that existed only in 1.5.0-alpha. ActionProvider now also works with oldstyle Action mappings.
- listActionInfos() and getActionInfo() now return ActionInfo objects instead of Action info mappings. ActionInfo objects have a backwards compatible mapping interface.
- Added CMFUid product which provides tools for generating,
registering, and storing unique IDs for content (gregweb).
- As an example of how to use unique ids, enhanced CMFDefault.Favorite content class, using unique ids to track moved or renamed content items.
- At the bottom of the page the permanent link to the content object
is shown (http://www.example.com/
/permalink/1234, where 1234 is the unique id of the content object)
- Added __init__ method to the IOpaqueItems.ICallableOpaqueItem interface.
- CookieCrumber now supports logging the authenticated user id to the access log just like basic auth.
portal_setup
tool can now disply / download diffs between profiles and / or snapshots.- The
find
tab on theportal_skins
tool will now mark the object that would be returned when using the specified skin
Bug Fixes
- CMFCore.PortalFolder: Enforce check of "Delete objects" permission
during cut + paste.
(http://www.zope.org/Collectors/CMF/259)
- B. This fix depends on an update to the underlying Zope software, e.g., Zope 2.7.3 or later. Two new unit tests fail on Zope 2.7.2 and earlier.
- CMFDefault.MetadataTool: Validation would disallow vocabulary-constrained metadata elements to be empty (http://www.zope.org/Collectors/CMF/217)
- CMFDefault.DiscussionItem: Replies were not sorted chronologically (http://www.zope.org/Collectors/CMF/211)
- CMFDefault.Image and CMFDefault.File: When copy/pasting Image and File objects the review state did not revert to "private". (http://www.zope.org/Collectors/CMF/176)
- CMFSetup: Refactored rolemap. Converted the roles attribute to role sub-elements. Fixed an acquisition bug that caused incomplete exports. Updated default profile.
- CMFWiki: Prevent deprecation notice for the deprecated CMFWikiPermissions module by replacing its usage in CMFWiki.__init__ with the new permissions module.
- CMFTopic: Change topic_view template to show title and ID (it only showed title before) (http://www.zope.org/Collectors/CMF/180)
- CMFCore.PortalFolder: Unlike other content, only Managers were able to create PortalFolders using mkdir in FTP. Fixed by inserting missing security declaration for PortalFolder.manage_addFolder (http://www.zope.org/Collectors/CMF/167)
- Default text format for NewsItems is now structured-text, just like it is for Documents, tuhs removing a spurious difference. (http://www.zope.org/Collectors/CMF/138)
- CMFCalendar.CalendarTool: (Lost) fix for issues 65 and 159. The determination of the date/time range constituting a specific month was faulty.
- CMFDefault.DublinCore: Use the portal_metadata tool's
getPublisher
for the DublinCorePublisher
element (thanks to Eric Brown for the patch). - CMFCalendar.CalendarTool: Code assumed US datetime format throughout. At least since Zope 2.7 users can change that.
- CMFCalendar.Event: Day, month, and year were processed in the wrong order by Event.edit(). (http://www.zope.org/Collectors/CMF/202)
- CMFCore.PortalFolder: _verifyObjectPaste() did not check the container's allowed content types, enabling users to paste objects they were not allowed to add. (http://www.zope.org/Collectors/CMF/216)
- CMFDefault.File and CMFDefault.Image: setFormat() failed to update the content_type property causing index_html() to use a stale mimetype when serving the file or image. (http://www.zope.org/Collectors/CMF/226)
- CMFDefault.Document, CMFDefault.Link, and CMFCalendar.Event:
WebDAV PUT() caused improper splitting of
Contributors
metadata header. - CMFCore.PortalFolder: Fixed missing import of BadRequest exception.
- DCWorkflow DefaultWorkflowClassic: Fixed
pending
state permissions. - CMFSetup: Refactored actions, type-infos and workflow definition. Changed some XML attributes. Converted list items and descriptions to sub-elements.
- ActionInformation: Some attribute cleanup.
Enforced usage of
Title
instead ofName
,URL
orURL (Expression)
instead ofAction
. Enforced boolean type ofVisible
. - DiscussionTool: Fixed two acquisition bugs. (Collector #119 and #201)
- Change default CookieCrumbler Cache-Control header value from "no-cache" to "private" to allow browser caches to cache cookie authenticated pages but not proxies and HTTP accellerators.
- ActionInformation: Correctly store an empty tuple for permissions if no permission is given (Collector #242).
- DublinCore: Use a default ceiling date that is parsable by DateIndex (Collector #132).
- RSS: Creates correct XML by always quoting arguments (Collector #170).
CMF 1.5.0alpha (2004/07/09)
New Features
- CMFActionIcons product is now shipped as part of the CMF release.
- New portal_setup tool provides export / import of various site configuration choices, both as tarballs and as TTW "snapshots". See the README.
- zpt skin: Some forms are now scripts. These scripts are dispatchers that call validators and controllers and set redirect depending on the selected button. If redirect is not set, the script calls a template and returns the resulting HTML page.
- ActionProviderBase, ActionInformation: Added methods to modify/edit
actions. New method
getActionObject
inActionProviderBase
andedit
method inActionInformation
(Collector 195). An action now may be modified/edited the following way:action_provider.getActionObject('object/view').edit(title='VIEW')
- Topic objects now support syndication (Collector #203).
- PortalFolder and zpt skin: PortalFolder now inherits from
OrderedFolder.
- Added buttons to
folder_contents
that allow to set a default sorting for each PortalFolder or to order the sub-objects by hand. - Modified
index_html
to show sub-objects in the selected order. The oldindex_html
is still available asindex_html_categorized
.
- Added buttons to
- CMFDefault utils: Added
html_marshal
function. This is similar to ZTUtils.make_hidden_input(), but returns a sequence of (name, value) pairs instead of html code. - CMFCore utils and content types: Marked _getViewFor as deprecated. __call__() and view() methods using _getViewFor() are deprecated as well. Use Method Aliases instead.
- CMFDefault Site: Now adds the
Classic
DCWorkflow on creation. If DCWorkflow is not installed, no default workflow is added. - DynamicType: Added
getActionInfo
method. This is a shortcut to getActionInfo() of the related TypeInformation. - DublinCore: setModificationDate is now guarded by
ModifyPortalContent
. - zpt skin: Reimplemented
folder_contents
and related controllers. Uses a dispatcher script that calls the right validators and controllers if a form button is pushed. The result looks almost the same as before. - PortalFolder and SkinnedFolder: Added
new
andrename_items
Actions. Used for redirects they are invisible by default. - CMFCore exceptions: Added some Exceptions.
AccessControl.Unauthorized is a subclass of zExceptions.Unauthorized,
so for best results use
AccessControl_Unauthorized
to raise Unauthorized andzExceptions_Unauthorized
to catch them all.CopyError
andResourceLockedError
are now also available for TTW code.EditingConflict
is a new CMF class replacing the old string exception. - Callable Opaque Items, CMFCatalogAware: Added an interface
ICallableOpaqueItemWithHooks
. CMF now calls the manage_after and manage_before hooks of a marked opaque item on copying, moving or deleting the containing content object. - DublinCore: Creator element no longer depends on Ownership.
(Collector #25)
- Added listCreators() and listContributors() to the DublinCore Interface. Creator() now returns the first element of listCreators(). Contributors() is now a deprecated alias of listContributors() and might change in a future version.
- Updated DublinCore implementation in DefaultDublinCoreImpl and DiscussionItem. Added new addCreator() method that is called by notifyModified(). SkinnedFolder also uses the new methods.
- Updated ContentFilter to work with listCreators().
- Updated CatalogTool to index listCreators. Creator index and metadata are deprecated and might be removed in a future version.
- Updated skins to search listCreators() and show all creators.
- TypeInfos: _finishConstruction() now calls reindexObject(). This makes sure changes made by ScriptableTypeInformation scripts are indexed and notifyModified() is called after content creation.
- Document: Removed WorkflowMethod wrapper of setFormat(). This was the only wrapped MutableDublinCore method and caused an ugly second reindexObject() / notifyModified() call in the middle of _editMetadata().
- CatalogTool: Updated to post Zope 2.6.2 ZCatalog interface.
catalog_object()
andreindexObject()
now support the newupdate_metadata
argument.reindexObjectSecurity()
doesn't update catalog metadata anymore. - Added new hook to CookieCrumbler "twiddleAuthCookie". The twiddleAuthCookie skin script, if present is called on each request where a cookie authentication token is present. It is passed the auth cookie name and value so that it can perform such functions as extending the expiration of the cookie. A twiddleAuthCookie script along with a setAuthCookie script could create login sessions that timeout after a period of inactivity for example.
- Refactored ActionsTool and Action providers:
- Added listActionInfos() and getActionInfo() to the ActionProvider
Interface, added
object
argument to listActions(). - Added OldstyleActionProvider Interface and OldstyleActionProviderBase for Action providers still not using ActionInformation objects. WorkflowTool and CMFCore DiscussionTool use this.
- Action providers queried by ActionsTool should implement the new ActionProvider Interface. Action providers subclassing ActionProviderBase inherit the necessary methods.
- To ease transition it will be sufficient to implement the OldstyleActionProvider Interface, using OldstyleActionProviderBase. The use of Action providers not implementing one of these Interfaces is deprecated. Support for them will be removed after CMF 1.5.
- Added helper methods getOAI() and getExprContext() to get computed contexts from REQUEST cache or create new ones.
- Added listActionInfos() and getActionInfo() to the ActionProvider
Interface, added
- CMFDefault MembershipTool and zpt skin: Added
Manage members
Action. The skin now provides basic membership management: Browsing members, registering new members and deleting members including their member data, member area and Local Roles. - The caching policy manager now sets the header
X-Cache-Headers-Set-By
when it sets cache headers in a response. - FSDTMLMethods now play nicely with the caching policy manager.
- zpt skin: Added batch_widgets.pt and getBatchNavigation.py. roster and search use now the new navigation macro. Looks like before, but i18n works better and it's easier to reuse or replace the code.
- zpt skin: Added zpt version of registered_notify_template.
- CMFCorePermissions: Made them available for import by Scripts.
- CMFCore MembershipTool and MemberDataTool: Added
delete
methods.- deleteMemberData() deletes the member data of a member.
- deleteMemberArea() deletes the member area of a member.
- deleteLocalRoles() now has a
recursive
argument. - deleteMembers() deletes members including member data, member area and Local Roles.
- CMFCore MembershipTool: Changed interface.
- createMemberarea() is now called createMemberArea(). For backwards compatibility createMemberarea is a deprecated alias.
- getMembersFolder() is now also part of the CMFCore interface.
- CMFCorePermissions: Added
Change local roles
Permission. PortalFolder'sLocal Roles
Action and MembershipTool's Local Roles methods are now guarded byChange local roles
of the object. - Added CMFCore 'exceptions.py': Errors defined in this module are available for import by Scripts.
- CMFCore and CMFDefault MembershipTool: Changed permissions.
createMemberarea()
for someone else andgetRoster()
including hidden members are now protected byManage users
.getMemberById()
, listMemberIds() and listMembers() as well. - Document and NewsItem: Un-hardwired
manage_FTPget()
fortext/html
. Addedsource_html.dtml
andsource_html.pt
.manage_FTPget()
now has agethtml
hook and usessource_html
by default. (Collector #168) - TypeInformation: Added Method Aliases.
- TypesTool and TypeInformation now have an
Aliases
tab to configure Method Aliases TTW. - factory_type_information now has a key
aliases
to configure Method Aliases in a product. This key is required, but may be empty: If it doesn't exist, TypeInformation will try to update by guessing aliases. - DynamicType manipulates
TraversalRequestNameStack
depending on Method Aliases.(Default)
andview
aliases bypass __call__() and view() methods on traversal. - PortalFolder's
mkdir
hook now makes use of Method Aliases.
- TypesTool and TypeInformation now have an
- CMFCore and CMFDefault MembershipTool: Changed member area creation.
wrapUser()
does no longer callcreateMemberarea()
.createMemberarea()
should now be called from thelogged_in
page. - CMFDefault MembershipTool: Added a customization hook to
createMemberarea()
. AcreateMemberContent
script placed inside the tool overrides default member content creation.
Bug Fixes
- zpt skin: Removed dependency on dtml layers.
- CMFCore utils: Marked
format_stx
function as deprecated. It's no longer necessary to work around default STX handling. - DirectoryView: Refactored path handling. Should now work with any products path setup. (Collector #210)
- Enforced new "local permissions" pattern: each top-level CMF product
should have a
permissions.py
module which imports / declares all permissions used within the product; other modules within the product should import from there. Likewise forexceptions.py
. - Removed pre Zope 2.7.0 compatibility code. Now Zope 2.7.0 or a later platform is required for CMF.
- CatalogTool: Marked the
meta_type
index as deprecated. - PortalFolder: Marked the
spec
argument as deprecated. Use thefilter
argument withportal_type
instead for contentItems(), contentIds(), contentValues() and listFolderContents(). - PortalFolder: Fixed portal_type acquisition bug in ContentFilter.
- DynamicType: Added
getPortalTypeName()
to the interface. - Collector #227: expose ZPT filename in tracebacks which include FSPageTemplates.
- zpt skin: Switched base tag policy back to that of dtml skin. This makes the use of relative URLs in content easier. If you have content that depends on the old policy you can customize getBaseTag.pt and add a slash. (Collector #66)
- Actions of folderish types: Fixed some inconsistencies.
Whatever the old CMFDefault policy was - this is the current policy:
"object" is used for Actions related to the object itself, "folder" is
used for Actions related to the container of the object.
- Changed the category of PortalFolder and SkinnedFolder Actions to
object
. - Moved
folderContents
of folderish types from ActionsTool to PortalFolder's type info. Other folderish types now have to declare their ownfolderContents
Action if they need one. - Renamed Topic's
subtopics
and SkinnedFolder'sfoldercontents
Action tofolderContents
to get them in sync.
- Changed the category of PortalFolder and SkinnedFolder Actions to
- StrippingParser: Added
big
,small
,sub
andsup
to valid tags. - _checkPermission: Added check for executable owner and proxy roles.
- SkinsContainer: Fixed context wrappers returned by getSkinByPath(). The original context of skin folders is now removed. This avoids having SkinTool attributes added to the CMFSite root object.
- CatalogTool: Removed deprecated
id
from default indexes and metadata. - Skins: Fixed a DateTime related issue in search_form and doFormSearch. Added one second to epoch to work around the problem that the timezone gets lost if time is 00:00:00.
- CMFCore.PortalFolder: Explicitly declare base interfaces.
- Tests: CachingPolicyManager tests don't fail on Windows anymore. (Collector #107)
- SkinsTool: Fixed cookie paths. clearSkinCookie() now uses the same cookie path as updateSkinCookie() which is now "inside-out" hosting safe.
- DefaultDublinCoreImpl: Changed accessor permissions.
As defined in the interface accessors are now protected by
View
. - CMFDefault utils: Made
tuplize()
work correctly with string types. - CMFCore utils: Reverted obsolete workaround in _checkPermission.
- Skin scripts: Made except statements safer by being more specific. Hope this still catches all relevant errors.
- Removed some pre
Zope 2.4.3 with PageTemplates
backwards compatibility cruft. A later platform is required since CMF 1.3. - Collector #153: CookieCrumbler didn't preserve query strings.