Developers guide for creating and enterprise mash-up

By | January 10, 2006

The term “mash-up” has been coined to describe the aggregation and customization of multiple web interfaces and web services to eliminate context-switching between existing systems, a process which delivers a richer experience and a wider range of capabilities to the end user. Technologies such as web services, AJAX, and REST have enabled developers to create new and interesting ways of providing some very cool integrations. We have demonstrated a number of these within the Zimbra Collaboration Suite (ZCS), and have a guide in development which will enable the integration of third party information into the ZCS. We encourage you to download our specification and give us feedback and to help create compelling mash-ups.


The template we’re developing will enable developers to declaratively integrate information from disparate sources – such as the Internet and enterprise information systems – into just about any content in the ZCS, including email messages, contacts fields and calendar appointment notes. In fact, the ZCS will soon come preconfigured with several of these templates, each of which will provide an illustration of what is possible. These include: Integration with Google/Yahoo Maps, Alexa, ZCS calendar, ZCS address book, Amazon, Salesforce.com, and Skype.
The architecture of these templates will consist of a client and server framework, as well as a set of web services and JavaScript APIs. They will be exposed to the end user via the ZCS AJAX client. The template server infrastructure provides the template for lifecycle management such as deployment, configuration, access control, and “undeployment” of the templates. In addition, the framework will provide the ability to integrate with the ZCS search engine, while the template client framework will provide support for context menus on panel items and content objects, drag and drop support, and the embedding of remote content into ZCS. A key goal of the architecture is to enable the implementation of a broad range of these templates, from those requiring little or no custom code (i.e. entirely declarative) to those that use JavaScript to tightly integrate rich UI behavior within the ZCS client.

The templates will be realized in the client in two ways:
* As panel item elements in the application overview panel. The user may interact with the panel items by dragging content such as mail messages, contacts and calendar appointment onto them, double clicking them, and invoking actions from a context menu if one is provided by the template author.

* As Content objects – that is, objects such as phone numbers, purchase order numbers, and URLs in content including email message bodies, contacts and calendar appointments. Examples of these are the maps, calendar, and phone number mash ups found within Zimbra today.

It will also be possible to integrate the templates with the ZCS server. Specifically, it will be possible to have the server index content, such as email messages and attachments that contain content objects, so that the end user may search for such content by using either the “has” clause of the query language or by checking the appropriate checkbox in the relevant panel of the search builder. So if a template defining phone numbers has registered with the server for indexing, then a user may, for example, search for content containing phone numbers by issues the following search query: has:phone.

Each template will be a “zipped” bundle of content that is deployed to the ZCS server by the template management tool. There are a number of files that may comprise this bundle of content; however there are two very important ones.

The first is the template definition file. This XML file defines the template. It is possible to fully define many of these templates by providing only the appropriate definition file – i.e., no JavaScript code has to be written. In fact, it is possible to define content objects and their corresponding context menus and tool tips, as well as template panel items and their actions solely with XML.

There are other cases where it may be necessary or desirable to provide JavaScript in order to carry out the function of a template. For such cases, the template developer would extend the template JavaScript class to provide the necessary functionality. This implementation is then referenced in the template definition file and included as part of the template bundle.

To learn more about these templates, check out the specification. You can also try this for yourself on our hosted demo. Just go to contacts, drag the Demouser, Dan contact to the Y! Maps panel template and get a quick map of the Zimbra office address.

Forum Announcement is posted here.


Comments are closed.