backend | ||
DIST | ||
js | ||
languages | ||
php | ||
resources | ||
.gitignore | ||
build.xml | ||
changelog.txt | ||
config.php | ||
Makefile | ||
manifest.xml | ||
README.md | ||
usage_sync.png | ||
usage.png |
CALENDAR IMPORTER AND EXPORTER:
Building the calendar importer plugin from source:
Dependencies
- Kopano WebApp Source Code (https://stash.kopano.io/projects/KW/repos/kopano-webapp/browse)
- PHP >= 5 (7 or higher recommended)
- composer (https://getcomposer.org/)
- JDK 1.8 (http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html)
- ant (http://ant.apache.org/)
Add JAVA_HOME (e.g. C:\Program Files\Java\jdk1.8.0_161) to your path. Also add Ant, Composer, PHP and Java to the global PATH variable!
Compiling the plugin
Unzip (or use git clone) the sourcecode of Kopano WebApp to a new directory. In this README we call the source folder of WebApp "kopano-webapp-source".
Then generate the WebApp build utils:
cd kopano-webapp-source
ant tools
Next clone the plugin to the WebApp plugin directory:
cd kopano-webapp-source\plugins
git clone https://git.sprinternet.at/zarafa_webapp/calendarimporter.git
Now lets build the plugin:
cd kopano-webapp-source\plugins\calendarimporter\php
composer install
cd kopano-webapp-source\plugins\calendarimporter
ant deploy
The compiled plugin is saved to kopano-webapp-source\deploy\plugins\calendarimporter
.
Installing the plugin
From compiled source
Copy the whole folder "calendarimporter" to your production WebApp (kopano-webapp-production\plugins\calendarimporter
)
For example:
cp -r kopano-webapp-source\deploy\plugins\calendarimporter kopano-webapp-production\plugins\
Installing the sync backend
From source
Copy the whole folder "kopano-webapp-source\plugins\calendarimporter\backend" to a destination of cour choice.
For example:
cp -r kopano-webapp-source\plugins\calendarimporter\backend /opt/ical-sync/backend
From precompiled download
Download the newest backend release from https://git.sprinternet.at/zarafa_webapp/calendarimporter/tree/master/DIST.
Unzip the downloaded file and copy the backend folder to a destination of cour choice.
For example:
cp -r Downloads\calendarimporter_backend /opt/ical-sync/backend
WebApp Plugin Configuration
Edit the config.php file in the plugin root path to fit your needs.
Available configuration values:
Configuration Value | Type | Default | Desctription |
---|---|---|---|
PLUGIN_CALENDARIMPORTER_USER_DEFAULT_ENABLE | boolean | false | Set to true to enable the plugin for all users |
PLUGIN_CALENDARIMPORTER_USER_DEFAULT_ENABLE_SYNC | string | true | Set to true to enable the sync feature for all users |
PLUGIN_CALENDARIMPORTER_DEFAULT | string | "Kalender" | Default calendar folder name (might be "Calendar" on english installations) |
PLUGIN_CALENDARIMPORTER_DEFAULT_TIMEZONE | string | "Europe/Vienna" | The local Timezone |
PLUGIN_CALENDARIMPORTER_TMP_UPLOAD | string | "/var/lib/kopano-webapp/tmp/" | Temporary path to store uploaded iCal files |
Sync Backend Configuration
First you have to create a new Kopano user with admin rights. For example:
kopano-admin -c adminuser -e admin@domain.com -f "Calendar Sync Admin" -p topsecretpw -a 1
Then edit the config.php file of the sync backend to fit your needs.
Available configuration values:
Configuration Value | Type | Default | Desctription |
---|---|---|---|
$ADMINUSERNAME | string | "adminuser" | The newly created Kopano admin user |
$ADMINPASSWORD | string | "topsecretpw" | The password of the admin user |
$SERVER | string | "http://localhost:236/kopano" | Kopano Socket or HTTP(S) connection string |
$CALDAVURL | string | "http://localhost:8080/ical/" | Kopano CalDAV URL |
$TEMPDIR | string | "/tmp/" | Temporary path to store synchronised iCal files (must be writeable by the user executing the sync script) |
Next set up a cronjob to allow periodic syncing of ical items.
For example: (/etc/crontab
):
# sync ics calendars every minute (interval can be changed by the user)
* * * * * icssync /opt/ical-sync/backend/sync.php > /var/log/icssync.log 2>&1
If you get an error, make sure that the mapi module is loaded for php-cli. Therefore create or modify: /etc/php7/cli/conf.d/50-mapi.ini
extension=mapi.so
Do no run the sync script as root! Create a user without admin rights (adduser icssync
), and change permissions of the tmp folder accordingly.
Usage
The plugin add context menu entries to calendar folders.
If syncing is enabled, the calendar section in the WebApp settings gets extended with a synchronisation overview. There you can add new iCal URLs for syncing.