[Grok-dev] Re: Proposal: IGrokDefaultBrowserLayer
Philipp von Weitershausen
philipp at weitershausen.de
Mon Apr 16 15:52:42 EDT 2007
Kevin Smith wrote:
> One hitch to implementing skins and layer is that static/ is hard coded
> to IDefaultBrowserLayer. I would like to propose IGrokDefaultBrowser
> layer to override IDefaultBrowserLayer as the default skin.
> To be used like ...
> class StaticLayer(grok.Layer):
> pass # this is what static/ is bound to
> class GrokLayer(grok.Layer):
> pass # all other grok views go here
> class IGrokDefaultBrowserLayer(StaticLayer, GrokLayer):
> pass # combined skin definition
To me this seems backwards. I would think that grok.Layer would
automatically include StaticLayer and GrokLayer.
> * Allows seperation of static/ directory, useful for custom skinning
> * Eliminates the Rotterdam ZMI , which has been mentioned previously on
> the list
> * Worksaround the @@contents bug (I think)
Yup, I've been thinking about the same thing.
I'm certainly in favour or disabling all non-Grok views when in "Grok
mode". We need to define what "Grok mode" means:
1.) An easy definition (and compatible with our current understanding of
Grok view security) would be "Grok's publication is enabled" (IOW, the
'grok' package is present and being loaded).
2.) Another definition that would allow Grok-based views to work within
standard Zope applications would be "Once we have traversed over a
special object (e.g. grok.Model)".
For definition #1 of "Grok mode", we would require that all skins (incl.
the default skin) inherit from grok.Layer (otherwise Grok views won't
appear). For definition #2 of "Grok mode", we could assign this layer to
the request when traversing that special object (via subscriber).
One nice side-effect of the first and easy definition of "Grok mode"
would be that Rotterdam and all those other views would simply be gone.
That can be seen as a disadvantage, obviously ("hey, where's my foolder
With definition #2 of "Grok mode", we could also think about
changing the view security model to only come into effect when having
traversed over this special object.
http://worldcookery.com -- Professional Zope documentation and training
More information about the Grok-dev