[Grok-dev] pagelets/layouts in grok
faassen at startifact.com
Mon Jan 12 11:49:11 EST 2009
Christian Klinger wrote:
> on the Grok-Sprint in Rotterdam we had a discussion about integration of
> z3c.pagelets in grok. If i remember correctly Christian Theune showed as
> a presentation how pagelets and layouts work.
> I found a blueprint on grok-launchpad site but unfortunatly with no
> content.  :)
> Is there any progress in this direction?
> What would you expect form a megrok.pagelet addon package?
No progress so far. I wish there were, so I'm happy you're bringing it up!
Some design thoughts I have:
* it's reasonable to start with megrok.pagelet with a Pagelet class. We
can experiment with things there before possibly folding this into
* it should always be possible to swap out grok.View with Pagelet and
have things work exactly the same without doing any extra work.
A Pagelet is a view which does one extra thing - wrap the layout
thingy around whatever it's viewing.
* One exception: don't bother supporting the 'render()' method for now.
This is going to be factored out grok.View anyway. Just support
regular template-based rendering.
* There is a new directive to indicate the layout template on the
pagelet. grok.layout()? Now I get fuzzy - I don't recall exactly how
this works with ZCML pagelets. How are these things registered and
looked up? Someone needs to do some research and
describe what's going on, and make some proposals for Grok. We should
be inspired by the current pagelet story but we don't have to
slavishly follow it either - I think we need more than just a simple
translation of the ZCML directives to Grok.
* The rule that things will just work by simply swapping View for
Pagelet implies that we want there to be a default layout
that does absolutely nothing. This means that grok.layout (or
whatever it is called) needs to have a default that does
* We need to consider interaction with layers. Can perhaps a layer
define a layout that's used for everything that is in that layer?
In this case we might not need a grok.layout directive for
Pagelet at all, but instead only allow its use on layers. Perhaps
this makes no sense at all though - I haven't through this
through at all. How would this work with extensions overriding
layouts, multiple layers in a skin, etc?
* I think it'd be nice if eventually grok.View could gain pagelet-like
functionalities and we can do away with any extension. This kind
of functionality is useful to have out of the box, but shouldn't
break existing applications.
* We need to answer questions like: how would an extension override the
layout of a core project? How can an extension introduce a layout
while the core didn't have one yet (it used the default layout)?
I think the best steps would be:
* investigating the current pagelet story and summarizing how it works.
* writing a document that describes how things should work in Grok,
covering various use cases. This document is what eventually should
document the feature.
* worry about implementation. I suspect that this is a minor part of
the actual work involved.
Don't worry about getting it all right in first draft however - just
throw it out there and eventually we'll hopefully sort it out. If you
want to experiment by coding up a prototype first that's fine as well;
that's one way we can get our thoughts sorted out too.
More information about the Grok-dev