Re: [Plone Mosaic Sprint Barcelona discussion] Re: Plone Mosaic Sprint Barcelona June 10 - 13
Guido Stevens <[email protected]>
| Newsgroups | gmane.comp.web.zope.plone.devel |
|---|---|
| Organization | Cosent -:- social knowledge technology |
| Message-ID | <[email protected]> |
On 15/05/14 13:01, Asko Soukka wrote:
> Guido Stevens wrote:
>>>> What I propose is to take a fresh look at the layout/rendering
>>>> patterns we have and work from first principles, to come up with an
>>>> evolutionary approach that moves us towards a responsive grid layout
>>>> engine, while maintaining "good enough" backward compatibility.
>> At PLOG we validated that it should be possible to intercept portlets
>> and metal:fill-slot="main" assigments.
>
> Could you open this one a bit more? Who should intercept and what should
> be the results?
Thanks for your probing questions, Asko :-).
I want to move away from the paradigm where a page is a big chunk of
content in the middle surrounded by morsels of extra stuff on the left,
on the right, above and below. In that logic, #content-core in a sense
*is* the actual page and the rest is chrome slapped on top of that. That
gives you a content-centric page model, and a page-centric rendering model.
I'd like to turn that around and work from tiles, or whatever you want
to call a chunk of html. Tiles, not pages, are the primary rendering
lego block for me. Such tiles get composited into a page. Of course you
still have pages. But the resulting page is a consequence of the tile
composition.
To make that work I'd like to demote #main to "just a tile", albeit one
which prefers to be rendered big. And I'd like to have portlets play
nice as citizens of this new world. If we have that, everything becomes
a display:block chunk of HTML that we can position in a responsive grid.
That changes our 3-column layout with two portletmanagers and a
metal:main slot, into a single manageable grid we can rearrange at will
and reflow responsively. = what
That can only work if we have a smart page composition controller who
does the rendering and decides which tile should render left, right,
middle; and how large; and how the responsive reflow should work. = who
The closest we have to that in our current code base are
portletmanagers, but they only work top-down (single column, 1D). And
are less than ideal considering the convoluted interactions between
global assignments, local assigments, local blocks, user assignments
etc. It pretends to put you as an editor in control, but it gets
confusing really fast. Maybe we can tune down the "control" pretense a
bit and arrive at a more elegant solution.
So I'd like to work on a new 2D grid layout controller that is advanced
enough to provide "good enough" backward compatibility with existing
portlet assignments. It intercepts all portlets, it intercepts
metal:main and it throws all of them into a 2D grid. Which we then by
default make behave as if there's a 25% left, 50% middle and 25% right
column - have a "fake Sunburst" mode if you will out of the box. But if
you want something shinier, change the layout logic and suddenly you
have access to a far bigger space of layout choices than is currently
available. And you can also insert tiles directly, no need for portlets
overhead.
The best metaphor is perhaps to have "python-side Diazo". Which can then
handle far more complex scenarios than you'd want to do with xslt, like
for example full personalization of layouts.
My business case is that I want to be able to provide a fully
personalized selection and composition of tiles, based on personal and
usage characteristics. The actual personalization logic is out of the
scope here, but creating a rendering engine that is flexible enough to
provide such a capability is not.
Once we have a powerful 2D grid manager, that of course opens up the
avenue to realize Deco-like content management affordances as well. But
I'm keen to solve the problem of compositing transient tiles across a
whole site first, and not prematurely mix this with the challenge of
managing multiple persistent WYSIWIG tiles and the acquisition and
permission headaches that poses.
I hope that's enough to turn your "95%" into a "100%"? ;-)
:*CU#
--
Guido Stevens | +31.43.3618933 | http://cosent.nl
s o c i a l k n o w l e d g e t e c h n o l o g y
------------------------------------------------------------------------------
"Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE
Instantly run your Selenium tests across 300+ browser/OS combos.
Get unparalleled scalability from the best Selenium testing platform available
Simple to use. Nothing to install. Get started now for free."
http://p.sf.net/sfu/SauceLabs