[RCD] Breaking the 'mail' / 'addressbook' divide in Roundcube

Ian Lewis ijl20 at cam.ac.uk
Mon Feb 27 18:42:10 CET 2012

Any advice appreciated of how best to do this.

I'm trying to re-model the current 'modal' behaviour of Roundcube 
between the 'mail' view and the 'addressbook' view, and have spent maybe 
a dozen hours working my way through the code trying to get things off 
the ground. I haven't programmed in PHP for a while but I do have a PhD 
in Computer Science, and I think I've put in a reasonable amount of 
groundwork including creating a new set of templates/styles and reading 
the plugin API documentation.

My intention could be simply put as having a 'Contact List' appear in 
the left-pane of what is currently the 'mail' view, i.e. where the 
folder list currently sits. My preference would be NOT to have to write 
from scratch another addressbook sub-system, but somehow map the 
existing functionality across into a new layout.

An edit of the 'mail' template should hopefully allow me to include the 
contacts on the left e.g. as this mockup screenshot:

FYI the real objective is to experiment with a more contact-centric view 
of emails, e.g. allowing a click on a contact to display the addressbook 
details plus emails from/to, as in this mockup:

My problem is fundamentally the 'task' aspect of Roundcube assumes all 
the folder/email stuff has querystring '_task=mail' and addressbook 
routines have hardcoded things like $RCMAIL->task=='addressbook'. All 
this breaks when I try and put the contacts list on the 'mail' page. A 
smaller issue is 'mail' and 'addressbook' functionality (e.g. 'list') 
seems to prevent that content co-existing on a page also.

E.g. is it very difficult to get <roundcube:object name="addresslist" 
id="contacts-table"...> to be expanded correctly in the 'mail' template  
using much of the existing program/steps/addressbook/ code ?

I'd rather not have to create a complete new 'addressbook' plugin just 
to allow "public $task = 'mail'", but maybe that's the only way. Should 
I effectively clone the program/steps/addressbook code into a plugin and 
take out the 'task=addressbook' sensitivity? The downside of that is I'm 
effectively forking the Roundcube base.

Thanks for any help...


Ian Lewis
Director, University Computing Service
University of Cambridge
office: +44 1223 334702
mobile: +44 7774 017590

List info: http://lists.roundcube.net/dev/

More information about the Dev mailing list