diff --git a/README b/README index a423da6..10fdd2a 100644 --- a/README +++ b/README @@ -1,81 +1,49 @@ -A calendar module for Roundcube -------------------------------- +# Another plugin Fork with CalDAV Support +I am trying to get the changes in this fork back into the original calendar but it needs a newer version of sabre/vobject and I am waiting until https://github.com/kolab-roundcube-plugins-mirror/libcalendaring/pull/1 is accepted. -This plugin currently supports a local database as well as a Kolab groupware -server as backends for calendar and event storage. For both drivers, some -initialization of the local database is necessary. To do so, execute the -SQL commands in drivers//SQL/.initial.sql +## TLDR +Contrary to other CalDAV forks, this one is based on kolab-roundcube-plugins-mirror/calendar (which means the calendar itself is most up to date) and adds CalDAV capability on top of it. As far as I have found, it is the most up to date version with the most bugfixes (August 2021). -For some general calendar-based operations such as alarms handling or iCal -parsing/exporting and UI widgets/style this plugins requires the `libcalendaring` -and `libkolab` plugins which are also part of the Kolab Roundcube Plugins repository. -Make sure these plugins are installed and configured correctly. +## Why is this needed? +Unfortunately, the current situation about CalDAV support in roundcube is quite confusing. There are several plugins (/Forks) around that have CalDAV support but from what I found, all of them are slightly buggy or do not work anymore. +All of them are based on , a very old Fork which (as far as I can tell) is based on a version of kolab-roundcube-plugins-mirror/calendar that is over 10 years old and been updated in 4 years now. -For recurring event computation, some utility classes from the Horde project -are used. They are packaged in a slightly modified version with this plugin. +## History of other Forks so far + +### kolab-roundcube-plugins-mirror/calendar : +This is the original calendar that all other forks are based on. It is working very well and is actively maintained but unfortunately, it does not have caldav support + +### [https://gitlab.awesome-it.de/kolab/roundcube-plugins](awesome-it) : +This is the "original fork" of the calendar. A lot of work was put into it and caldav is almost fully implemented. Unfortunately it included a few bugs / problems and most of them were not fixed in any other forks: +- The birthday calendar is not supported by the caldav driver. +- While the backend (mostly) supports adding all calendars from a dav-url, the front-end does not. That makes calendar handling a bit clunky and confusing. +- Calendar colors have to be set manually and can not be loaded from DAV. +- Adding and Removing calendars directly in the external source is not supported. +- It prepares the codebase so multiple drivers can be used. But as far as I can tell, this feature is not used in the code and also not really supported by the front-end. This means, that it still only uses one driver but as a result adds a lot of unnecessary changes to the original codebase. -REQUIREMENTS ------------- +### fasterit/roundcube_calendar : +A fork of awesome-it to make it work with blind-coder/rcmcardav (a CardDAV plugin) by packing the outdated version of sabre/DAV inside the plugin. But it hasn't been maintained and is still based on a very outdated version of kolab-roundcube-plugins-mirror/calendar. -Some functions are shared with other plugins and therefore being moved to -library plugins. Thus in order to run the calendar plugin, you also need the -following plugins installed: +### texxasrulez/calendar : +This is a fork of awesome-it with a few bugfixes to make it work with roundcube 1.3. +It is the most current fork of the original CalDAV fork. But unfortunately, it is treated as its own project (which means that it doesn't have any updates from the original calendar) and is focused primarily on nextcloud (which I don't really understand since nextcloud is using CalDAV anyway). +Also, on top of still having the original bugs included, it is also still based on an ancient sabre/DAV - version and there hasn't been updated since 2019. -* kolab/libcalendaring [1] -* kolab/libkolab [1] +### texxasrulez/caldav_calendar : +That one confuses me. It is from Texxas as well and seems to be the basis of Texxas but was abandoned in favour of Texxas. But it seems to be only a few commits behind Texxas. -INSTALLATION ------------- +### Another fork, what am I doing differently? -For a manual installation of the calendar plugin (and its dependencies), -execute the following steps. This will set it up with the database backend -driver. +All CalDAV forks are based on faster-it which has a very different codebase to the original calendar because of its unfinished "multiple-driver" support. That makes it very difficult to get updates from the original calendar. -1. Get the source from git - - $ cd /tmp - $ git clone https://git.kolab.org/diffusion/RPK/roundcubemail-plugins-kolab.git - $ cd //plugins - $ cp -r /tmp/roundcubemail-plugins-kolab/plugins/calendar . - $ cp -r /tmp/roundcubemail-plugins-kolab/plugins/libcalendaring . - $ cp -r /tmp/roundcubemail-plugins-kolab/plugins/libkolab . - -2. Create calendar plugin configuration - - $ cd calendar/ - $ cp config.inc.php.dist config.inc.php - $ edit config.inc.php - -3. Initialize the calendar database tables - - $ cd ../../ - $ bin/initdb.sh --dir=plugins/calendar/drivers/database/SQL - -4. Build css styles for the Elastic skin - - $ lessc --relative-urls -x plugins/libkolab/skins/elastic/libkolab.less > plugins/libkolab/skins/elastic/libkolab.min.css - -5. Enable the calendar plugin - - $ edit config/config.inc.php - -Add 'calendar' to the list of active plugins: - - $config['plugins'] = array( - (...) - 'calendar', - ); - - -IMPORTANT ---------- - -This plugin doesn't work with the Classic skin of Roundcube because no -templates are available for that skin. - -Use Roundcube `skins_allowed` option to limit skins available to the user -or remove incompatible skins from the skins folder. - -[1] https://git.kolab.org/diffusion/RPK/ +So I decided to ditch the "multiple driver" support and keep most changes in the CalDAV driver itself to stay compatible with the original calendar. I also added a ton of updates: +- Updated to the most recent version of the calendar plugin. +- Uses the most recent version of sabre/dav (x) +- Only minor changes in the existing code base, meaning that future updates of the calendar plugin should be able to be merged quite easily. +- added support for the birthday calendar. +- Changed the behaviour from "per calendar" to "per CalDAV source". + - All calendars from a source will be automatically added. + - Calendars can be created and deleted directly at the CalDAV source. +- ics support included. \ No newline at end of file