[Checkins] SVN: Products.CMFCore/branches/matthewwilkes-traversalprecedence/Products/CMFCore/ Add an interface for SkinnableObjectManager to make adapter registration cleaner
Matthew Wilkes
matthew at matthewwilkes.co.uk
Sat Aug 8 10:15:14 EDT 2009
Log message for revision 102583:
Add an interface for SkinnableObjectManager to make adapter registration cleaner
Changed:
U Products.CMFCore/branches/matthewwilkes-traversalprecedence/Products/CMFCore/Skinnable.py
U Products.CMFCore/branches/matthewwilkes-traversalprecedence/Products/CMFCore/interfaces/_tools.py
-=-
Modified: Products.CMFCore/branches/matthewwilkes-traversalprecedence/Products/CMFCore/Skinnable.py
===================================================================
--- Products.CMFCore/branches/matthewwilkes-traversalprecedence/Products/CMFCore/Skinnable.py 2009-08-08 14:13:25 UTC (rev 102582)
+++ Products.CMFCore/branches/matthewwilkes-traversalprecedence/Products/CMFCore/Skinnable.py 2009-08-08 14:15:14 UTC (rev 102583)
@@ -27,6 +27,7 @@
from App.class_init import InitializeClass
from OFS.ObjectManager import ObjectManager
from ZODB.POSException import ConflictError
+from zope.interface import implements
logger = logging.getLogger('CMFCore.Skinnable')
@@ -51,6 +52,8 @@
class SkinnableObjectManager(ObjectManager):
security = ClassSecurityInfo()
+
+ implements(ISkinnableObjectManager)
security.declarePrivate('getSkinsFolderName')
def getSkinsFolderName(self):
Modified: Products.CMFCore/branches/matthewwilkes-traversalprecedence/Products/CMFCore/interfaces/_tools.py
===================================================================
--- Products.CMFCore/branches/matthewwilkes-traversalprecedence/Products/CMFCore/interfaces/_tools.py 2009-08-08 14:13:25 UTC (rev 102582)
+++ Products.CMFCore/branches/matthewwilkes-traversalprecedence/Products/CMFCore/interfaces/_tools.py 2009-08-08 14:15:14 UTC (rev 102583)
@@ -1248,6 +1248,48 @@
o Permission: Public
"""
+class ISkinnableObjectManager(object):
+
+ """ An object that has skins applied to it."""
+
+
+ def __getattr__(self, name):
+ '''
+ Looks for the name in an object with wrappers that only reach
+ up to the root skins folder.
+
+ This should be fast, flexible, and predictable.
+ '''
+
+ def getSkin(self, name=None):
+ """Returns the requested skin.
+ """
+
+ def getSkinNameFromRequest(self, REQUEST=None):
+ '''Returns the skin name from the Request.'''
+
+ def changeSkin(self, skinname, REQUEST=_MARKER):
+ '''Change the current skin.
+
+ Can be called manually, allowing the user to change
+ skins in the middle of a request.
+ '''
+
+ def getCurrentSkinName(self):
+ '''Return the current skin name.
+ '''
+
+ def clearCurrentSkin(self):
+ """Clear the current skin."""
+
+ def setupCurrentSkin(self, REQUEST=_MARKER):
+ '''
+ Sets up skindata so that __getattr__ can find it.
+
+ Can NOT be called manually to change skins in the middle of a
+ request! Use changeSkin for that.
+ '''
+
#
# Syndication tool interface
#
More information about the Checkins
mailing list