From: vinsci <svn...@pl...> - 2005-06-26 00:47:32
|
Author: vinsci Date: Sat Jun 25 20:39:23 2005 New Revision: 7346 Added: CMFPlone/branches/vinsci-portal-message-refactoring/patches/httprequest_patch.py Modified: CMFPlone/branches/vinsci-portal-message-refactoring/HISTORY.txt CMFPlone/branches/vinsci-portal-message-refactoring/patches/__init__.py CMFPlone/branches/vinsci-portal-message-refactoring/skins/plone_prefs/prefs_user_manage.cpy CMFPlone/branches/vinsci-portal-message-refactoring/skins/plone_prefs/prefs_user_manage.cpy.metadata CMFPlone/branches/vinsci-portal-message-refactoring/skins/plone_scripts/folder_position.cpy Log: Monkey-patch alert! Add method stripFormData() to ZPublisher.HTTPRequest. Also, rework previous workaround for issue #3835 with real fix, using stripFormData(). Modified: CMFPlone/branches/vinsci-portal-message-refactoring/HISTORY.txt ============================================================================== --- CMFPlone/branches/vinsci-portal-message-refactoring/HISTORY.txt (original) +++ CMFPlone/branches/vinsci-portal-message-refactoring/HISTORY.txt Sat Jun 25 20:39:23 2005 @@ -4,6 +4,19 @@ Plone 2.1 - Plaid - (Unreleased) + - Fix the previously worked around issue #3835 'The Apply Changes + button performs like search button in User & Groups + administrator'. Previously this was worked around by changing + the .metadata from 'traverse_to' to 'redirect_to'. The real fix + is to use REQUEST.stripFormData() and then traverse. + [vinsci] + + - Monkey patch ZPublisher.HTTPRequest to add a new method stripFormData(). That + is to be called in form scripts before traversing, to make sure the target + template doesn't get misleading information in the request. Call like this: + context.REQUEST.stripFormData() + [vinsci] + - Make first batch of portal messages be displayed using addPortalMessage rather than the old URL hack of adding ...?portal_status_message=message to the URL. [vinsci] Modified: CMFPlone/branches/vinsci-portal-message-refactoring/patches/__init__.py ============================================================================== --- CMFPlone/branches/vinsci-portal-message-refactoring/patches/__init__.py (original) +++ CMFPlone/branches/vinsci-portal-message-refactoring/patches/__init__.py Sat Jun 25 20:39:23 2005 @@ -8,3 +8,6 @@ import ceilingDatePatch # Patch CMFCore's CEILING_DATE to fit into # DateIndexes. +import httprequest_patch # Add method to delete form data from a + # request, so a traverse to another + # template doesn't get confused. Added: CMFPlone/branches/vinsci-portal-message-refactoring/patches/httprequest_patch.py ============================================================================== --- (empty file) +++ CMFPlone/branches/vinsci-portal-message-refactoring/patches/httprequest_patch.py Sat Jun 25 20:39:23 2005 @@ -0,0 +1,19 @@ +from ZPublisher.HTTPRequest import HTTPRequest +from exceptions import AssertionError + +def stripFormData(self): + """\ + Monkey-patched by Plone to add this method. + Strip form data from self, before traversing (otherwise + they'll be used again in the template we traverse to). + + Compare ZPublisher.HTTPRequest.clone(). + """ + for key in self.form.keys(): + del self.other[key] + self.form.clear() + if 'QUERY_STRING' in self.environ: + del self.environ['QUERY_STRING'] + +HTTPRequest.stripFormData = stripFormData + Modified: CMFPlone/branches/vinsci-portal-message-refactoring/skins/plone_prefs/prefs_user_manage.cpy ============================================================================== --- CMFPlone/branches/vinsci-portal-message-refactoring/skins/plone_prefs/prefs_user_manage.cpy (original) +++ CMFPlone/branches/vinsci-portal-message-refactoring/skins/plone_prefs/prefs_user_manage.cpy Sat Jun 25 20:39:23 2005 @@ -38,4 +38,5 @@ acl_users.userFolderDelUsers(delete) context.plone_utils.addPortalMessage(context.translate('Changes applied.')) +context.REQUEST.stripFormData() # fix issue 3835 return state Modified: CMFPlone/branches/vinsci-portal-message-refactoring/skins/plone_prefs/prefs_user_manage.cpy.metadata ============================================================================== --- CMFPlone/branches/vinsci-portal-message-refactoring/skins/plone_prefs/prefs_user_manage.cpy.metadata (original) +++ CMFPlone/branches/vinsci-portal-message-refactoring/skins/plone_prefs/prefs_user_manage.cpy.metadata Sat Jun 25 20:39:23 2005 @@ -2,6 +2,6 @@ validators = [actions] -action.success = redirect_to:string:prefs_users_overview +action.success = traverse_to:string:prefs_users_overview action.failure = traverse_to:string:prefs_users_overview Modified: CMFPlone/branches/vinsci-portal-message-refactoring/skins/plone_scripts/folder_position.cpy ============================================================================== --- CMFPlone/branches/vinsci-portal-message-refactoring/skins/plone_scripts/folder_position.cpy (original) +++ CMFPlone/branches/vinsci-portal-message-refactoring/skins/plone_scripts/folder_position.cpy Sat Jun 25 20:39:23 2005 @@ -30,14 +30,5 @@ msg="Item's position has changed." context.plone_utils.addPortalMessage(msg) -# XXX/vinsci: portal_status_message refactoring: make these lines a function (need to call it from many form scripts) -# -# Strip form data from request, before traversing (otherwise -# they'll be used again in the template we traverse to). -for key in context.REQUEST.form.keys(): - del context.REQUEST.other[key] -context.REQUEST.form.clear() -# not needed: -# del context.REQUEST.environ['QUERY_STRING'] - +context.REQUEST.stripFormData() return state |