CHANGES.txt
CMF 1.5.0-alpha (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.