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 cybertools.typology.interfaces import IType
from loops.interfaces import IView
from loops import util
class BaseView(object):
@ -47,17 +48,25 @@ class BaseView(object):
skin = None
# TODO: get ISkinController adapter instead
skinName = self.loopsRoot.skinName
if skinName:
if skinName and IView.providedBy(self.context):
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 + '/@@'
_controller = None
def setController(self, controller):
self._controller = controller
# this is also the place to register special macros with the controller
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
def modified(self):

View file

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

View file

@ -3,22 +3,14 @@
<head></head>
<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" />