Table of contents
- Shared Calendars
The calendar module brings powerful and realtime calendar support into the OpenPaaS platform. It is composed of several components:
- A frontend component. Built using Angular.
- A backend component which can be split into two parts:
- A DAV compliant backend built on top of Sabre
- A specific backend, built using Node.js, which mainly listen to specific technical events and so provides realtime support and data indexing.
If the calendar module is not provided with the OpenPaaS distribution, you can install it by following the installation instructions in the calendar repository.
The calendar module needs a Sabre server to run. Thanks to its plugin system, the default Sabre distribution has been extended to provide more advanced features. Installation instructions can be found in the esn-sabre repository.
The calendar module provides standard calendar features:
- CalDAV support
- Event creation/edition/deletion
- Attendees with accept/decline/…
- Recurrent events
- email notifications
- Calendar delegation
- Public calendars and subscriptions
and more advanced ones:
- Full text search
- Realtime synchronization between browsers
The following sections will go deep into details of some of the above mentioned features.
The calendar module supports two kinds of shared calendars:
- Delegated calendars: when an owner delegates his own calendars to other users. For example, a manager can delegate his calendars to his secretary.
- Public calendars: an owner can set his calendars to public. Other users, or external ones, can subscribe to such calendars and see events.
There are some differences between these types of shared calendars, the main ones are:
- Delegated calendars represent a privileged access for a given calendar to a specific user.
- Public calendars can be seen by everyone, and any user can add them. In some cases, any users are also abe to create events in public calendars.
Shared calendars come with rights: Rights are applied to users who are looking at other users calendars.
- Free/Busy: User can only see that the calendar owner is free or busy in a timeperiod. The details of the events are not available.
- Read: User has access to all the event informations but can not change anything.
- Write: User has access to all the event informations and can change anything.
- Administration: User can do anything on the calendar (edit, delete, etc) as well as on the calendar events.
In order make a calendar public, the user has to change the Public right to Free/Busy, Read or Write during the calendar creation, or on the calendar settings page as shown below.
Once a calendar is public, other users can subscribe to it by going to the Shared Calendars page and by doing a search. Public calendars are linked to their creator, so in order to find them, the user has to search for the creator to find all his public calendars.
In the screenshot below, one public calendar is displayed. In order to subscribe to this public calendar, the user has to click on the Add toggle button then on Save.
The calendar is now displayed as a Shared calendar. The user can see events and create some if Write rights are set on the public calendar.
A user can delegate his calendar by adding users in the delegation section in the calendar settings pages. A user which is added is called a Sharee. In order to add a user as sharee:
- Search for user, once found, click on it
- Set the right level
- Click on Add
- The user is added to the list of Sharee
Once the calendar is saved, it is “ready to be delegated”: The sharee can not do anything until he adds the delegated calendar to his calendars. This is possible by going to the Shared calendars page and by doing a search just like for public calendars.
In the screenshot below, one delegated calendar is displayed. In order to add this delegated calendar, the sharee has to click on the Add toggle button then on Save.
The calendar is now displayed as a Shared calendar. The sharee can see events and create some if Write or Administration rights are set on the calendar.
- When a user has a delegated calendar, a new instance of the given calendar is created for him on the backend side.
- When a user add a public calendar, the backend will create a subscription for this calendar. A subscription is an object owned by the user and stored in the backend. This object has a reference towards the public calendar along with its own properties.