[CMF-checkins] CVS: Products/CMFCore - SkinsTool.py:1.31.2.1
Jens Vagelpohl
jens at dataflake.org
Wed Apr 6 09:38:49 EDT 2005
Update of /cvs-repository/Products/CMFCore
In directory cvs.zope.org:/tmp/cvs-serv16845/CMFCore
Modified Files:
Tag: CMF-1_5-branch
SkinsTool.py
Log Message:
- 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)
=== Products/CMFCore/SkinsTool.py 1.31 => 1.31.2.1 ===
--- Products/CMFCore/SkinsTool.py:1.31 Thu Aug 12 11:07:39 2004
+++ Products/CMFCore/SkinsTool.py Wed Apr 6 09:38:18 2005
@@ -30,6 +30,9 @@
from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate
from Products.PythonScripts.PythonScript import PythonScript
+from DirectoryView import base_ignore
+from DirectoryView import ignore
+from DirectoryView import ignore_re
from ActionProviderBase import ActionProviderBase
from permissions import AccessContentsInformation
from permissions import ManagePortal
@@ -349,6 +352,18 @@
'''
sels = self._getSelections()
skinpath = str(skinpath)
+
+ # Basic precaution to make sure the stuff we want to ignore in
+ # DirectoryViews gets prevented from ending up in a skin path
+ path_elems = [x.strip() for x in skinpath.split(',')]
+ ignored = base_ignore + ignore
+
+ for elem in path_elems[:]:
+ if elem in ignored or ignore_re.match(elem):
+ path_elems.remove(elem)
+
+ skinpath = ','.join(path_elems)
+
if test:
self.testSkinPath(skinpath)
sels[str(skinname)] = skinpath
More information about the CMF-checkins
mailing list