[Grok-dev] Re: layers and skins
Maurits van Rees
m.van.rees at zestsoftware.nl
Mon Apr 23 16:15:49 EDT 2007
Martijn Faassen, on 2007-04-23:
> A skin is ever only associated with a single layer directly. Instead,
> layers can be in a hierarchy:
>
> class IAnonymousLayer(Interface):
> pass
>
> class IMemberLayer(IAnonymousLayer):
> pass
>
> class IManagerLayer(IMemberLayer):
> pass
Okay.
> Of course you might make it more complicated with multiple inheritance
> and such. You could instead have three base layers and combine them
> different ways for anonymous, member and manager.
>
> A skin is what takes a layer and turns it into something with a name
> that can show up in the request (and later on hopefully title, menu
> entry, etc).
Clear.
> I think so. If I'm not mistaken it's even possible for the EditView to
> replace the BaseView entirely. As long as they have the same name
> (grok.name) the one in the more specific layer will show up (the
> IMemberLayer).
For the case of GrokChess this would be exactly the right thing to do.
> Grok isn't like Plone. You could build something like Plone on top of
> Grok of course, but Grok itself actually isn't in the business of
> providing a default user interface, so Grok won't be providing a skin.
"Plok: now even cavemen can use Plone!" ;-)
> class MySkin(grok.Skin):
> grok.layer(IMyLayer)
> grok.name('myskin') # actually the default
>
> Since there needs to be only a single layer associated with a skin (the
> rest is done through inheritance), this is sufficient. In the future
> when we gain a grok.menu(), this could be used to register the skin into
> a particular menu as well.
Clear now. Looks pretty workable.
--
Maurits van Rees | http://maurits.vanrees.org/ [NL]
Work | http://zestsoftware.nl/
"Do not worry about your difficulties in computers,
I can assure you mine are still greater."
More information about the Grok-dev
mailing list