This is not my original plugin. It tracks Kolab's calendar plugin as they release it, and I mainly add and maintain the rounddav driver so it integrates cleanly with my RoundDAV Suite of plugins for Roundcube.
This plugin adds a full calendar interface to Roundcube, including:
- day, week, month, and agenda views
- multiple calendars with per-calendar colors
- recurring events
- reminders and alarms
- attendees, invitations, and RSVP handling
- attachments
- import/export support
- shared calendar support, depending on backend
This fork supports these backends:
databasefor local SQL-backed calendarskolabfor Kolab groupware storagecaldavfor generic CalDAV serversrounddavfor RoundDAV integration
For calendar UI widgets, iTip handling, and iCal parsing/export, this plugin requires the libcalendaring and libkolab plugins.
- Roundcube with plugin support enabled
- PHP 7.1 or newer
- The
libcalendaringplugin - The
libkolabplugin - A configured backend:
database,kolab,caldav, orrounddav - Database access for the plugin's local support tables
Copy this plugin into your Roundcube plugins/ directory as calendar.
If you are installing manually from Kolab sources, you also need these companion plugins:
libcalendaringlibkolab
Example layout:
roundcube/
plugins/
calendar/
libcalendaring/
libkolab/
Copy the distributed config and edit it for your environment:
cd plugins/calendar
cp config.inc.php.dist config.inc.phpThe main setting is:
$config['calendar_driver'] = 'rounddav';Valid values are:
databasekolabcaldavrounddav
Each backend ships with SQL initialization files under its own driver directory. Run Roundcube's database initialization script against the backend you plan to use.
Examples:
bin/initdb.sh --dir=plugins/calendar/drivers/database/SQL
bin/initdb.sh --dir=plugins/calendar/drivers/caldav/SQL
bin/initdb.sh --dir=plugins/calendar/drivers/kolab/SQL
bin/initdb.sh --dir=plugins/calendar/drivers/rounddav/SQLUse the directory that matches your configured calendar_driver.
Add calendar to your active plugins list in config/config.inc.php:
$config['plugins'] = [
// ...
'calendar',
];This fork is primarily intended for the rounddav backend.
Minimum working setup:
$config['calendar_driver'] = 'rounddav';
$config['calendar_caldav_server'] = 'https://www.domain.com/rounddav/public/';
$config['calendar_caldav_url'] = 'https://www.domain.com/rounddav/public/calendars/%u/%n/';You can also use:
$config['rounddav_base_url'] = 'https://www.domain.com/rounddav/public';If calendar_caldav_server is empty, the driver will fall back to rounddav_base_url.
Useful RoundDAV-specific options supported by this fork include:
rounddav_calendar_slug_urirounddav_calendar_autocolorrounddav_calendar_color_paletterounddav_calendar_favorites
Use calendar_driver = 'caldav' and point the CalDAV settings to your server:
$config['calendar_driver'] = 'caldav';
$config['calendar_caldav_server'] = 'https://caldav.example.com/';
$config['calendar_caldav_url'] = 'https://caldav.example.com/calendars/%u/%n/';Use this when you want calendar storage fully inside Roundcube's database.
$config['calendar_driver'] = 'database';Use this when Roundcube is connected to a Kolab groupware environment.
$config['calendar_driver'] = 'kolab';Some useful settings from config.inc.php.dist:
calendar_default_viewcalendar_contact_birthdayscalendar_timeslotscalendar_agenda_rangecalendar_first_daycalendar_first_hourcalendar_work_startcalendar_work_endcalendar_default_alarm_typecalendar_default_alarm_offsetcalendar_event_coloringcalendar_allow_invite_sharedcalendar_itip_send_option
The sample config includes a commented example for calendar_caldav_preinstalled_sources. This is useful when you want every Roundcube user to automatically see one or more CalDAV or RoundDAV calendars.
Typical uses:
- a per-user RoundDAV calendar using
%uand%p - a shared or global calendar account with fixed credentials
- If the calendar page loads but no calendars appear, verify the selected
calendar_driverand its URLs. - If using
rounddav, make sure eithercalendar_caldav_serverorrounddav_base_urlis set. - If event dialogs or iCal handling fail, verify
libcalendaringandlibkolabare installed and enabled. - If calendars exist but changes do not save, confirm the backend SQL tables were initialized for the selected driver.
- If free/busy is missing, review your
kolab_freebusy_serverand related scheduling configuration.
Open the Calendar task in Roundcube. The interface provides:
- a main calendar view
- a mini calendar for quick navigation
- a calendar list on the left
- a toolbar for view changes, navigation, and new events
Users can switch between:
DayWeekMonthAgenda
Use the toolbar buttons to change views, and use the mini calendar or toolbar arrows to jump to another date.
Users can:
- show or hide calendars with the checkbox list
- create a new calendar with the
+button - edit calendar name, color, and reminder behavior
- remove calendars they own
Depending on backend and permissions, users may also see:
- shared calendars
- read-only calendars
- birthdays calendars
- pending or declined invitation calendars
Users can create events by:
- clicking
New eventin the toolbar - dragging across a time range in day or week view
- double-clicking a day for an all-day event
Event fields include:
- title
- location
- description
- URL
- start and end
- all-day flag
- reminder
- calendar
- category
- free/busy status
- priority
- privacy
Users can:
- click an event to view details
- click
Editto change full event settings - drag and drop events to move them
- resize events directly in the calendar view
- move an event between calendars from the edit form
The recurrence tab supports repeating events such as:
- daily
- weekly
- monthly
- yearly
Users can define how often the event repeats and when the series ends.
Reminders can be configured per event and, depending on backend support, per calendar.
Users can:
- set a default reminder preference
- dismiss reminders
- snooze reminders for a later time
This plugin supports meeting workflows:
- adding participants
- sending invitations
- tracking RSVP responses
- checking availability
- booking resources when configured
When invitations are received by email, Roundcube can process them through the calendar integration.
Users can also:
- search events by keyword
- import calendar data
- export events as iCal
- print calendar views
- This plugin is based on Kolab's calendar codebase.
- In this fork, the main project-specific work is keeping the
rounddavbackend integrated and compatible with the RoundDAV Suite for Roundcube. - The bundled
helpdocs/directory contains additional upstream end-user documentation.
This project is distributed under the GPL-3.0 license. See LICENSE.