Use view controller (via settings slot) for providing specialized resources

git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@1148 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
helmutm 2006-03-26 16:45:08 +00:00
parent e96289a34b
commit 6932033e20
3 changed files with 23 additions and 22 deletions

View file

@ -35,6 +35,7 @@ from zope.schema.vocabulary import SimpleTerm
from zope.security.proxy import removeSecurityProxy from zope.security.proxy import removeSecurityProxy
from cybertools.typology.interfaces import IType from cybertools.typology.interfaces import IType
from loops.interfaces import IView
from loops import util from loops import util
class BaseView(object): class BaseView(object):
@ -47,17 +48,25 @@ class BaseView(object):
skin = None skin = None
# TODO: get ISkinController adapter instead # TODO: get ISkinController adapter instead
skinName = self.loopsRoot.skinName skinName = self.loopsRoot.skinName
if skinName: if skinName and IView.providedBy(self.context):
skin = zapi.queryUtility(ISkin, skinName) skin = zapi.queryUtility(ISkin, skinName)
if skin is not None: if skin is not None:
applySkin(self.request, skin) applySkin(self.request, skin)
self.skin = skin self.skin = skin
@Lazy _controller = None
def resourceBase(self): def setController(self, controller):
skinSetter = self.skin and ('/++skin++' + self.skin.__name__) or '' self._controller = controller
# TODO: put '/@@' etc after path to site instead of directly after URL0 # this is also the place to register special macros with the controller
return self.request.URL[0] + skinSetter + '/@@' controller.skin = self.skin
def getController(self): return self._controller
controller = property(getController, setController)
#@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 @Lazy
def modified(self): def modified(self):

View file

@ -6,7 +6,7 @@
*/ */
.box { .box {
margin: 5px; margin: 12px;
} }
#body { #body {

View file

@ -3,22 +3,14 @@
<head></head> <head></head>
<body> <body>
<metal:settings fill-slot="settings"
tal:define="dummy python:
controller.macros.register('css', resourceName='node.css', media='all');
dummy python:
controller.macros.register('js', resourceName='node.js');" />
<metal:js fill-slot="ecmascript_slot">
<script type="text/javascript" src="node.js"
tal:attributes="src string:${context/++resource++node.js}">
</script>
</metal:js>
<metal:css fill-slot="style_slot">
<style type="text/css" media="all"
tal:content="string:@import url(${context/++resource++node.css});">
@import url(view.css);
</style>
</metal:css>
<metal:block fill-slot="actions" /> <metal:block fill-slot="actions" />