Personalized block layout

Permalink
Hi.
Is it possible to allow users to personalize the block positions (but not it's contents) on a single page? I browsed through the code but i couldn't find anything that would point me to an anwser. I kindda don't know where to start looking? Is writing a plugin is an option for me?
Cheers!

 
jbx replied on at Permalink Reply
jbx
Well, depending on your layout you could possibly use something like jQuery draggable, so that your blocks could just be dragged around the page. It's really simple to implement. I'm using it on an intranet system to give an interface like the BBC homepage where users can rearrange the blocks to create a custom homepage layout.

Would that work for you?

Jon
mog replied on at Permalink Reply
I've been thinking about this way of solving the problem but in which part of the request processing should i change the block position according to user preferences? Lets say that a block is by default on the left side but the user moves it to the right side. I'll store the selected placement in a DB and i should change the default block position at some place (before the blocks are rendered). What part of the concrete5 code should i extend (i don't want to affect the core code in any way).
jbx replied on at Permalink Best Answer Reply
jbx
I wouldn't change the actual position at all. I first set this up using the BBC Glow library which has a feature to store the positions items are moved to. I think jQuery does this too, but haven't checked...

So, if a guest moves the blocks around, then store the positions in their session. If a registered user moves the blocks around, store them in their session, but also in their user profile. So when a registered user logs back in, you can read the block positions back into their session from their profile and arrange accordingly. If a guest goes away and comes back, they will loose their block positions, but that's their fault for not registering!

Jon
mog replied on at Permalink Reply
Thanks a lot. I'll try that.