diff --git a/__init__.py b/__init__.py index 80d3f5d..45303e9 100644 --- a/__init__.py +++ b/__init__.py @@ -34,6 +34,11 @@ class Loops(Folder): implements(ILoops) + _skinName = '' + def getSkinName(self): return self._skinName + def setSkinName(self, skinName): self._skinName = skinName + skinName = property(getSkinName, setSkinName) + def getLoopsRoot(self): return self diff --git a/browser/common.py b/browser/common.py index 2ba109d..ef79109 100644 --- a/browser/common.py +++ b/browser/common.py @@ -29,6 +29,8 @@ from zope.app.intid.interfaces import IIntIds from zope.cachedescriptors.property import Lazy from zope.dottedname.resolve import resolve from zope.interface import implements +from zope.app.publisher.browser import applySkin +from zope.publisher.interfaces.browser import ISkin from zope.schema.vocabulary import SimpleTerm from zope.security.proxy import removeSecurityProxy @@ -39,8 +41,23 @@ class BaseView(object): def __init__(self, context, request): #self.context = context + # TODO: get rid of removeSecurityProxy() call self.context = removeSecurityProxy(context) self.request = request + skin = None + # TODO: get ISkinController adapter instead + skinName = self.loopsRoot.skinName + if skinName: + skin = zapi.queryUtility(ISkin, skinName) + if skin is not None: + applySkin(self.request, skin) + self.skin = skin + + @Lazy + def resourceBase(self): + skinSetter = self.skin and ('/++skin++' + self.skin.__name__) or '' + # TODO: put '/@@' etc after path to site instead of directly after URL0 + return self.request.URL[0] + skinSetter + '/@@' @Lazy def modified(self): diff --git a/browser/configure.zcml b/browser/configure.zcml index 728c436..4ea275e 100644 --- a/browser/configure.zcml +++ b/browser/configure.zcml @@ -67,6 +67,21 @@ view="AddLoopsContainer.html" /> + + + + -
- Impressum -
- - diff --git a/configure.zcml b/configure.zcml index 96b5337..bada4a3 100644 --- a/configure.zcml +++ b/configure.zcml @@ -50,7 +50,11 @@ + getResourceManager getViewManager skinName" /> + + diff --git a/interfaces.py b/interfaces.py index d59ea62..9c5333e 100644 --- a/interfaces.py +++ b/interfaces.py @@ -410,6 +410,12 @@ class ILoops(ILoopsObject): """ contains(IConceptManager, IResourceManager, IViewManager) + skinName = schema.ASCIILine( + title=_(u'Skin Name'), + description=_(u'Name of the skin to use'), + default='', + required=False) + def getLoopsUri(obj): """ Return the relativ path to obj, starting with '.loops/...'. """