diff options
author | Unrud <unrud@openaliasbox.org> | 2017-06-04 17:16:11 +0200 |
---|---|---|
committer | Unrud <unrud@openaliasbox.org> | 2017-06-04 17:16:36 +0200 |
commit | 10eef51a0f086ad148928ba965c330599b4765cb (patch) | |
tree | d0283e55f1b4e66c49bf17461b5fee211b78768a | |
parent | Update license (diff) | |
download | radicaleinfcloud-10eef51a0f086ad148928ba965c330599b4765cb.tar.gz radicaleinfcloud-10eef51a0f086ad148928ba965c330599b4765cb.tar.bz2 radicaleinfcloud-10eef51a0f086ad148928ba965c330599b4765cb.zip |
Update package for new web plugin interface
-rw-r--r-- | README.md | 26 | ||||
-rw-r--r-- | etc/screenshot_login.png | bin | 5378 -> 0 bytes | |||
-rw-r--r-- | etc/screenshot_new_collection.png | bin | 12477 -> 0 bytes | |||
-rw-r--r-- | etc/screenshot_overview.png | bin | 23056 -> 0 bytes | |||
-rw-r--r-- | radicale_infcloud/__init__.py (renamed from radicale_web/__init__.py) | 49 | ||||
-rw-r--r-- | radicale_infcloud/web/.htaccess (renamed from radicale_web/web/infcloud/.htaccess) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/addressbook.js (renamed from radicale_web/web/infcloud/addressbook.js) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/auth/.htaccess (renamed from radicale_web/web/infcloud/auth/.htaccess) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/auth/common.inc (renamed from radicale_web/web/infcloud/auth/common.inc) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/auth/config.inc (renamed from radicale_web/web/infcloud/auth/config.inc) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/auth/cross_domain.inc (renamed from radicale_web/web/infcloud/auth/cross_domain.inc) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/auth/doc/example_config_response.xml (renamed from radicale_web/web/infcloud/auth/doc/example_config_response.xml) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/auth/doc/readme.txt (renamed from radicale_web/web/infcloud/auth/doc/readme.txt) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/auth/index.php (renamed from radicale_web/web/infcloud/auth/index.php) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/auth/plugins/generic.inc (renamed from radicale_web/web/infcloud/auth/plugins/generic.inc) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/auth/plugins/generic_conf.inc (renamed from radicale_web/web/infcloud/auth/plugins/generic_conf.inc) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/auth/plugins/ldap.inc (renamed from radicale_web/web/infcloud/auth/plugins/ldap.inc) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/auth/plugins/ldap_conf.inc (renamed from radicale_web/web/infcloud/auth/plugins/ldap_conf.inc) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/cache.manifest (renamed from radicale_web/web/infcloud/cache.manifest) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/cache_handler.js (renamed from radicale_web/web/infcloud/cache_handler.js) | 0 | ||||
-rwxr-xr-x | radicale_infcloud/web/cache_update.sh (renamed from radicale_web/web/infcloud/cache_update.sh) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/changelog.txt (renamed from radicale_web/web/infcloud/changelog.txt) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/changelog_caldavzap.txt (renamed from radicale_web/web/infcloud/changelog_caldavzap.txt) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/changelog_carddavmate.txt (renamed from radicale_web/web/infcloud/changelog_carddavmate.txt) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/common.js (renamed from radicale_web/web/infcloud/common.js) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/config.js (renamed from radicale_web/web/infcloud/config.js) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/css/default.css (renamed from radicale_web/web/infcloud/css/default.css) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/css/default_ie.css (renamed from radicale_web/web/infcloud/css/default_ie.css) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/css/default_integration.css (renamed from radicale_web/web/infcloud/css/default_integration.css) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/css/fullcalendar.css (renamed from radicale_web/web/infcloud/css/fullcalendar.css) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/css/jquery-ui.custom.css (renamed from radicale_web/web/infcloud/css/jquery-ui.custom.css) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/css/jquery.tagsinput.css (renamed from radicale_web/web/infcloud/css/jquery.tagsinput.css) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/css/spectrum.custom.css (renamed from radicale_web/web/infcloud/css/spectrum.custom.css) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/data_process.js (renamed from radicale_web/web/infcloud/data_process.js) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/fonts/Roboto-Bold-webfont.eot (renamed from radicale_web/web/infcloud/fonts/Roboto-Bold-webfont.eot) | bin | 80347 -> 80347 bytes | |||
-rw-r--r-- | radicale_infcloud/web/fonts/Roboto-Bold-webfont.svg (renamed from radicale_web/web/infcloud/fonts/Roboto-Bold-webfont.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/fonts/Roboto-Bold-webfont.ttf (renamed from radicale_web/web/infcloud/fonts/Roboto-Bold-webfont.ttf) | bin | 233632 -> 233632 bytes | |||
-rw-r--r-- | radicale_infcloud/web/fonts/Roboto-Bold-webfont.woff (renamed from radicale_web/web/infcloud/fonts/Roboto-Bold-webfont.woff) | bin | 106512 -> 106512 bytes | |||
-rw-r--r-- | radicale_infcloud/web/fonts/Roboto-BoldItalic-webfont.eot (renamed from radicale_web/web/infcloud/fonts/Roboto-BoldItalic-webfont.eot) | bin | 91716 -> 91716 bytes | |||
-rw-r--r-- | radicale_infcloud/web/fonts/Roboto-BoldItalic-webfont.svg (renamed from radicale_web/web/infcloud/fonts/Roboto-BoldItalic-webfont.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/fonts/Roboto-BoldItalic-webfont.ttf (renamed from radicale_web/web/infcloud/fonts/Roboto-BoldItalic-webfont.ttf) | bin | 280136 -> 280136 bytes | |||
-rw-r--r-- | radicale_infcloud/web/fonts/Roboto-BoldItalic-webfont.woff (renamed from radicale_web/web/infcloud/fonts/Roboto-BoldItalic-webfont.woff) | bin | 120664 -> 120664 bytes | |||
-rw-r--r-- | radicale_infcloud/web/fonts/Roboto-Italic-webfont.eot (renamed from radicale_web/web/infcloud/fonts/Roboto-Italic-webfont.eot) | bin | 91372 -> 91372 bytes | |||
-rw-r--r-- | radicale_infcloud/web/fonts/Roboto-Italic-webfont.svg (renamed from radicale_web/web/infcloud/fonts/Roboto-Italic-webfont.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/fonts/Roboto-Italic-webfont.ttf (renamed from radicale_web/web/infcloud/fonts/Roboto-Italic-webfont.ttf) | bin | 281700 -> 281700 bytes | |||
-rw-r--r-- | radicale_infcloud/web/fonts/Roboto-Italic-webfont.woff (renamed from radicale_web/web/infcloud/fonts/Roboto-Italic-webfont.woff) | bin | 120260 -> 120260 bytes | |||
-rw-r--r-- | radicale_infcloud/web/fonts/Roboto-Light-webfont.eot (renamed from radicale_web/web/infcloud/fonts/Roboto-Light-webfont.eot) | bin | 79718 -> 79718 bytes | |||
-rw-r--r-- | radicale_infcloud/web/fonts/Roboto-Light-webfont.svg (renamed from radicale_web/web/infcloud/fonts/Roboto-Light-webfont.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/fonts/Roboto-Light-webfont.ttf (renamed from radicale_web/web/infcloud/fonts/Roboto-Light-webfont.ttf) | bin | 239772 -> 239772 bytes | |||
-rw-r--r-- | radicale_infcloud/web/fonts/Roboto-Light-webfont.woff (renamed from radicale_web/web/infcloud/fonts/Roboto-Light-webfont.woff) | bin | 105544 -> 105544 bytes | |||
-rw-r--r-- | radicale_infcloud/web/fonts/Roboto-LightItalic-webfont.eot (renamed from radicale_web/web/infcloud/fonts/Roboto-LightItalic-webfont.eot) | bin | 92934 -> 92934 bytes | |||
-rw-r--r-- | radicale_infcloud/web/fonts/Roboto-LightItalic-webfont.svg (renamed from radicale_web/web/infcloud/fonts/Roboto-LightItalic-webfont.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/fonts/Roboto-LightItalic-webfont.ttf (renamed from radicale_web/web/infcloud/fonts/Roboto-LightItalic-webfont.ttf) | bin | 294168 -> 294168 bytes | |||
-rw-r--r-- | radicale_infcloud/web/fonts/Roboto-LightItalic-webfont.woff (renamed from radicale_web/web/infcloud/fonts/Roboto-LightItalic-webfont.woff) | bin | 123428 -> 123428 bytes | |||
-rw-r--r-- | radicale_infcloud/web/fonts/Roboto-Medium-webfont.eot (renamed from radicale_web/web/infcloud/fonts/Roboto-Medium-webfont.eot) | bin | 81472 -> 81472 bytes | |||
-rw-r--r-- | radicale_infcloud/web/fonts/Roboto-Medium-webfont.svg (renamed from radicale_web/web/infcloud/fonts/Roboto-Medium-webfont.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/fonts/Roboto-Medium-webfont.ttf (renamed from radicale_web/web/infcloud/fonts/Roboto-Medium-webfont.ttf) | bin | 235252 -> 235252 bytes | |||
-rw-r--r-- | radicale_infcloud/web/fonts/Roboto-Medium-webfont.woff (renamed from radicale_web/web/infcloud/fonts/Roboto-Medium-webfont.woff) | bin | 107504 -> 107504 bytes | |||
-rw-r--r-- | radicale_infcloud/web/fonts/Roboto-MediumItalic-webfont.eot (renamed from radicale_web/web/infcloud/fonts/Roboto-MediumItalic-webfont.eot) | bin | 93106 -> 93106 bytes | |||
-rw-r--r-- | radicale_infcloud/web/fonts/Roboto-MediumItalic-webfont.svg (renamed from radicale_web/web/infcloud/fonts/Roboto-MediumItalic-webfont.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/fonts/Roboto-MediumItalic-webfont.ttf (renamed from radicale_web/web/infcloud/fonts/Roboto-MediumItalic-webfont.ttf) | bin | 284196 -> 284196 bytes | |||
-rw-r--r-- | radicale_infcloud/web/fonts/Roboto-MediumItalic-webfont.woff (renamed from radicale_web/web/infcloud/fonts/Roboto-MediumItalic-webfont.woff) | bin | 121828 -> 121828 bytes | |||
-rw-r--r-- | radicale_infcloud/web/fonts/Roboto-Regular-webfont.eot (renamed from radicale_web/web/infcloud/fonts/Roboto-Regular-webfont.eot) | bin | 79547 -> 79547 bytes | |||
-rw-r--r-- | radicale_infcloud/web/fonts/Roboto-Regular-webfont.svg (renamed from radicale_web/web/infcloud/fonts/Roboto-Regular-webfont.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/fonts/Roboto-Regular-webfont.ttf (renamed from radicale_web/web/infcloud/fonts/Roboto-Regular-webfont.ttf) | bin | 234464 -> 234464 bytes | |||
-rw-r--r-- | radicale_infcloud/web/fonts/Roboto-Regular-webfont.woff (renamed from radicale_web/web/infcloud/fonts/Roboto-Regular-webfont.woff) | bin | 105700 -> 105700 bytes | |||
-rw-r--r-- | radicale_infcloud/web/fonts/license.txt (renamed from radicale_web/web/infcloud/fonts/license.txt) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/forms.js (renamed from radicale_web/web/infcloud/forms.js) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/add_cal.svg (renamed from radicale_web/web/infcloud/images/add_cal.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/add_cal_white.svg (renamed from radicale_web/web/infcloud/images/add_cal_white.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/arrow.svg (renamed from radicale_web/web/infcloud/images/arrow.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/arrow_next.svg (renamed from radicale_web/web/infcloud/images/arrow_next.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/arrow_next_red.svg (renamed from radicale_web/web/infcloud/images/arrow_next_red.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/arrow_prev.svg (renamed from radicale_web/web/infcloud/images/arrow_prev.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/arrow_prev_red.svg (renamed from radicale_web/web/infcloud/images/arrow_prev_red.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/banner_addressbook.svg (renamed from radicale_web/web/infcloud/images/banner_addressbook.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/banner_calendar.svg (renamed from radicale_web/web/infcloud/images/banner_calendar.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/banner_logout.svg (renamed from radicale_web/web/infcloud/images/banner_logout.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/banner_refresh.svg (renamed from radicale_web/web/infcloud/images/banner_refresh.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/banner_todo.svg (renamed from radicale_web/web/infcloud/images/banner_todo.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/calendarB.svg (renamed from radicale_web/web/infcloud/images/calendarB.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/cdm_logo.svg (renamed from radicale_web/web/infcloud/images/cdm_logo.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/cdz_logo.svg (renamed from radicale_web/web/infcloud/images/cdz_logo.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/cloud.svg (renamed from radicale_web/web/infcloud/images/cloud.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/company.svg (renamed from radicale_web/web/infcloud/images/company.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/company_s_b.svg (renamed from radicale_web/web/infcloud/images/company_s_b.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/company_s_w.svg (renamed from radicale_web/web/infcloud/images/company_s_w.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/delegation.svg (renamed from radicale_web/web/infcloud/images/delegation.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/dp_left.svg (renamed from radicale_web/web/infcloud/images/dp_left.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/dp_right.svg (renamed from radicale_web/web/infcloud/images/dp_right.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/drag.svg (renamed from radicale_web/web/infcloud/images/drag.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/error_b.svg (renamed from radicale_web/web/infcloud/images/error_b.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/error_badge.svg (renamed from radicale_web/web/infcloud/images/error_badge.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/error_w.svg (renamed from radicale_web/web/infcloud/images/error_w.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/in_progress_b.svg (renamed from radicale_web/web/infcloud/images/in_progress_b.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/in_progress_dr.svg (renamed from radicale_web/web/infcloud/images/in_progress_dr.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/in_progress_r.svg (renamed from radicale_web/web/infcloud/images/in_progress_r.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/in_progress_w.svg (renamed from radicale_web/web/infcloud/images/in_progress_w.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/infcloud_logo.svg (renamed from radicale_web/web/infcloud/images/infcloud_logo.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/jumper_bottom_b.svg (renamed from radicale_web/web/infcloud/images/jumper_bottom_b.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/jumper_bottom_w.svg (renamed from radicale_web/web/infcloud/images/jumper_bottom_w.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/jumper_top_b.svg (renamed from radicale_web/web/infcloud/images/jumper_top_b.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/jumper_top_w.svg (renamed from radicale_web/web/infcloud/images/jumper_top_w.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/loadinfo.gif (renamed from radicale_web/web/infcloud/images/loadinfo.gif) | bin | 6462 -> 6462 bytes | |||
-rw-r--r-- | radicale_infcloud/web/images/loadinfo_s1.gif (renamed from radicale_web/web/infcloud/images/loadinfo_s1.gif) | bin | 1985 -> 1985 bytes | |||
-rw-r--r-- | radicale_infcloud/web/images/loadinfo_s2.gif (renamed from radicale_web/web/infcloud/images/loadinfo_s2.gif) | bin | 1987 -> 1987 bytes | |||
-rw-r--r-- | radicale_infcloud/web/images/loadinfo_s3.gif (renamed from radicale_web/web/infcloud/images/loadinfo_s3.gif) | bin | 1992 -> 1992 bytes | |||
-rw-r--r-- | radicale_infcloud/web/images/loadinfo_s4.gif (renamed from radicale_web/web/infcloud/images/loadinfo_s4.gif) | bin | 1981 -> 1981 bytes | |||
-rw-r--r-- | radicale_infcloud/web/images/login.svg (renamed from radicale_web/web/infcloud/images/login.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/logout.svg (renamed from radicale_web/web/infcloud/images/logout.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/needs_action_b.svg (renamed from radicale_web/web/infcloud/images/needs_action_b.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/needs_action_dr.svg (renamed from radicale_web/web/infcloud/images/needs_action_dr.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/needs_action_r.svg (renamed from radicale_web/web/infcloud/images/needs_action_r.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/needs_action_w.svg (renamed from radicale_web/web/infcloud/images/needs_action_w.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/new_item.svg (renamed from radicale_web/web/infcloud/images/new_item.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/op_add.svg (renamed from radicale_web/web/infcloud/images/op_add.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/op_del.svg (renamed from radicale_web/web/infcloud/images/op_del.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/popupArrow.svg (renamed from radicale_web/web/infcloud/images/popupArrow.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/priority-1-dr.svg (renamed from radicale_web/web/infcloud/images/priority-1-dr.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/priority-1-r.svg (renamed from radicale_web/web/infcloud/images/priority-1-r.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/priority-1-w.svg (renamed from radicale_web/web/infcloud/images/priority-1-w.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/priority-1.svg (renamed from radicale_web/web/infcloud/images/priority-1.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/priority-2-dr.svg (renamed from radicale_web/web/infcloud/images/priority-2-dr.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/priority-2-r.svg (renamed from radicale_web/web/infcloud/images/priority-2-r.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/priority-2-w.svg (renamed from radicale_web/web/infcloud/images/priority-2-w.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/priority-2.svg (renamed from radicale_web/web/infcloud/images/priority-2.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/priority-3-dr.svg (renamed from radicale_web/web/infcloud/images/priority-3-dr.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/priority-3-r.svg (renamed from radicale_web/web/infcloud/images/priority-3-r.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/priority-3-w.svg (renamed from radicale_web/web/infcloud/images/priority-3-w.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/priority-3.svg (renamed from radicale_web/web/infcloud/images/priority-3.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/read_only_b.svg (renamed from radicale_web/web/infcloud/images/read_only_b.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/read_only_w.svg (renamed from radicale_web/web/infcloud/images/read_only_w.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/remove_cal.svg (renamed from radicale_web/web/infcloud/images/remove_cal.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/remove_cal_white.svg (renamed from radicale_web/web/infcloud/images/remove_cal_white.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/reset_b.svg (renamed from radicale_web/web/infcloud/images/reset_b.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/reset_dr.svg (renamed from radicale_web/web/infcloud/images/reset_dr.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/reset_drw.svg (renamed from radicale_web/web/infcloud/images/reset_drw.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/reset_r.svg (renamed from radicale_web/web/infcloud/images/reset_r.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/reset_rw.svg (renamed from radicale_web/web/infcloud/images/reset_rw.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/reset_w.svg (renamed from radicale_web/web/infcloud/images/reset_w.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/resource_arrow_down.svg (renamed from radicale_web/web/infcloud/images/resource_arrow_down.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/resource_arrow_right.svg (renamed from radicale_web/web/infcloud/images/resource_arrow_right.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/resource_arrow_up.svg (renamed from radicale_web/web/infcloud/images/resource_arrow_up.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/resources.svg (renamed from radicale_web/web/infcloud/images/resources.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/search.svg (renamed from radicale_web/web/infcloud/images/search.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/searchWhiteNew.svg (renamed from radicale_web/web/infcloud/images/searchWhiteNew.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/select.svg (renamed from radicale_web/web/infcloud/images/select.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/select_bg.svg (renamed from radicale_web/web/infcloud/images/select_bg.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/select_bg_black.svg (renamed from radicale_web/web/infcloud/images/select_bg_black.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/select_bg_dis.svg (renamed from radicale_web/web/infcloud/images/select_bg_dis.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/select_black.svg (renamed from radicale_web/web/infcloud/images/select_black.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/select_dis.svg (renamed from radicale_web/web/infcloud/images/select_dis.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/select_inv.svg (renamed from radicale_web/web/infcloud/images/select_inv.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/select_login.svg (renamed from radicale_web/web/infcloud/images/select_login.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/success_b.svg (renamed from radicale_web/web/infcloud/images/success_b.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/success_dr.svg (renamed from radicale_web/web/infcloud/images/success_dr.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/success_drw.svg (renamed from radicale_web/web/infcloud/images/success_drw.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/success_r.svg (renamed from radicale_web/web/infcloud/images/success_r.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/success_rw.svg (renamed from radicale_web/web/infcloud/images/success_rw.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/success_w.svg (renamed from radicale_web/web/infcloud/images/success_w.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/todoB.svg (renamed from radicale_web/web/infcloud/images/todoB.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/images/user.svg (renamed from radicale_web/web/infcloud/images/user.svg) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/index.html (renamed from radicale_web/web/infcloud/index.html) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/interface.js (renamed from radicale_web/web/infcloud/interface.js) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/lib/fullcalendar.js (renamed from radicale_web/web/infcloud/lib/fullcalendar.js) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/lib/ie_base64.js (renamed from radicale_web/web/infcloud/lib/ie_base64.js) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/lib/jquery-2.1.4.min.js (renamed from radicale_web/web/infcloud/lib/jquery-2.1.4.min.js) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/lib/jquery-ui-1.11.4.custom.js (renamed from radicale_web/web/infcloud/lib/jquery-ui-1.11.4.custom.js) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/lib/jquery.autosize.js (renamed from radicale_web/web/infcloud/lib/jquery.autosize.js) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/lib/jquery.browser.js (renamed from radicale_web/web/infcloud/lib/jquery.browser.js) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/lib/jquery.placeholder-1.1.9.js (renamed from radicale_web/web/infcloud/lib/jquery.placeholder-1.1.9.js) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/lib/jquery.quicksearch.js (renamed from radicale_web/web/infcloud/lib/jquery.quicksearch.js) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/lib/jquery.tagsinput.js (renamed from radicale_web/web/infcloud/lib/jquery.tagsinput.js) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/lib/rrule.js (renamed from radicale_web/web/infcloud/lib/rrule.js) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/lib/sha256.js (renamed from radicale_web/web/infcloud/lib/sha256.js) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/lib/spectrum.js (renamed from radicale_web/web/infcloud/lib/spectrum.js) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/license.txt (renamed from radicale_web/web/infcloud/license.txt) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/localization.js (renamed from radicale_web/web/infcloud/localization.js) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/main.js (renamed from radicale_web/web/infcloud/main.js) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/misc/baikal-flat-0.2.7.diff (renamed from radicale_web/web/infcloud/misc/baikal-flat-0.2.7.diff) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/misc/calendarserver.diff (renamed from radicale_web/web/infcloud/misc/calendarserver.diff) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/misc/config_davical.txt (renamed from radicale_web/web/infcloud/misc/config_davical.txt) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/misc/readme_baikal_sabredav.txt (renamed from radicale_web/web/infcloud/misc/readme_baikal_sabredav.txt) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/misc/readme_osx.txt (renamed from radicale_web/web/infcloud/misc/readme_osx.txt) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/readme.txt (renamed from radicale_web/web/infcloud/readme.txt) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/resource.js (renamed from radicale_web/web/infcloud/resource.js) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/timezones.js (renamed from radicale_web/web/infcloud/timezones.js) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/vcalendar.js (renamed from radicale_web/web/infcloud/vcalendar.js) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/vcalendar_rfc_regex.js (renamed from radicale_web/web/infcloud/vcalendar_rfc_regex.js) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/vcard_rfc_regex.js (renamed from radicale_web/web/infcloud/vcard_rfc_regex.js) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/vtodo.js (renamed from radicale_web/web/infcloud/vtodo.js) | 0 | ||||
-rw-r--r-- | radicale_infcloud/web/webdav_protocol.js (renamed from radicale_web/web/infcloud/webdav_protocol.js) | 0 | ||||
-rw-r--r-- | radicale_web/web/css/fonts.css | 12 | ||||
-rw-r--r-- | radicale_web/web/css/fonts/COPYRIGHT.txt | 1 | ||||
-rw-r--r-- | radicale_web/web/css/fonts/LICENSE.txt | 202 | ||||
-rw-r--r-- | radicale_web/web/css/fonts/Roboto-Light.woff2 | bin | 62832 -> 0 bytes | |||
-rw-r--r-- | radicale_web/web/css/fonts/Roboto-Regular.woff2 | bin | 63412 -> 0 bytes | |||
-rw-r--r-- | radicale_web/web/css/icon.png | bin | 1069 -> 0 bytes | |||
-rw-r--r-- | radicale_web/web/css/main.css | 44 | ||||
-rw-r--r-- | radicale_web/web/fn.js | 966 | ||||
-rw-r--r-- | radicale_web/web/index.html | 106 | ||||
-rwxr-xr-x | setup.py | 12 |
202 files changed, 38 insertions, 1380 deletions
@@ -1,27 +1,19 @@ -# Web interface for Radicale +# InfCloud for Radicale -Create, edit and delete calendars and address books via a simple web interface. +Integrate [InfCloud](https://www.inf-it.com/open-source/clients/infcloud/) into Radicale's web interface. -The package also includes [InfCloud](https://www.inf-it.com/open-source/clients/infcloud/) which allows you to manage appointments, tasks and contacts in the browser. +InfCloud allows you to to manage appointments, tasks and contacts in the browser. ## Installation - pip3 install --upgrade git+https://github.com/Unrud/RadicaleWeb + pip3 install --upgrade git+https://github.com/Unrud/RadicaleInfCloud -The official version of [Radicale](https://github.com/Kozea/Radicale/) doesn't support this package (yet) and is missing a WebDAV features that is required by InfCloud. - -I created [a fork of Radicale](https://github.com/Unrud/Radicale/) which includes all necessary pull requests: - - pip3 install --upgrade git+https://github.com/Unrud/Radicale - -## Screenshots - -![Login](https://github.com/Unrud/RadicaleWeb/raw/master/etc/screenshot_login.png) -![Overview](https://github.com/Unrud/RadicaleWeb/raw/master/etc/screenshot_overview.png) -![New Collection](https://github.com/Unrud/RadicaleWeb/raw/master/etc/screenshot_new_collection.png) +You need the +[development version of Radicale](https://github.com/Kozea/Radicale). +Set the configuration option `type` in the `web` section to `radicale_infcloud`. ## License -[AGPL-3.0](https://github.com/Unrud/RadicaleWeb/blob/master/COPYING) for the whole package because [InfCloud](https://github.com/Unrud/RadicaleWeb/blob/master/radicale_web/web/infcloud/) is included. +[AGPL-3.0](https://github.com/Unrud/RadicaleWeb/blob/master/COPYING) because [InfCloud](https://github.com/Unrud/RadicaleInfCloud/blob/master/radicale_infcloud/web/) is included. -[GPL-3.0](https://github.com/Unrud/RadicaleWeb/blob/master/COPYING_GPL) for RadicaleWeb without InfCloud. +[GPL-3.0](https://github.com/Unrud/RadicaleWeb/blob/master/COPYING_GPL) for `radicale_infcloud/__init__.py` diff --git a/etc/screenshot_login.png b/etc/screenshot_login.png Binary files differdeleted file mode 100644 index d1b6281..0000000 --- a/etc/screenshot_login.png +++ /dev/null diff --git a/etc/screenshot_new_collection.png b/etc/screenshot_new_collection.png Binary files differdeleted file mode 100644 index e73b7f2..0000000 --- a/etc/screenshot_new_collection.png +++ /dev/null diff --git a/etc/screenshot_overview.png b/etc/screenshot_overview.png Binary files differdeleted file mode 100644 index b02ff08..0000000 --- a/etc/screenshot_overview.png +++ /dev/null diff --git a/radicale_web/__init__.py b/radicale_infcloud/__init__.py index 7a69abd..22157f0 100644 --- a/radicale_web/__init__.py +++ b/radicale_infcloud/__init__.py @@ -17,42 +17,39 @@ import os import pkg_resources import posixpath -import radicale import time from http import client +from radicale import storage, web +from radicale.web import NOT_FOUND, MIMETYPES, FALLBACK_MIMETYPE VERSION = "2.0.0" -MIMETYPES = { - ".css": "text/css", - ".eot": "application/vnd.ms-fontobject", - ".gif": "image/gif", - ".html": "text/html", - ".js": "application/javascript", - ".manifest": "text/cache-manifest", - ".png": "image/png", - ".svg": "image/svg+xml", - ".ttf": "application/font-sfnt", - ".txt": "text/plain", - ".woff": "application/font-woff", - ".woff2": "font/woff2", - ".xml": "text/xml"} -FALLBACK_MIMETYPE = "application/octet-stream" -class Web: - def __init__(self, configuration, logger): - self.configuration = configuration - self.logger = logger - self.folder = pkg_resources.resource_filename(__name__, "web") +class Web(web.Web): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.infcloud_folder = pkg_resources.resource_filename(__name__, "web") def get(self, environ, base_prefix, path, user): + if not path.startswith("/.web/infcloud/") and path != "/.web/infcloud": + status, headers, answer = super().get(environ, base_prefix, path, + user) + if status == client.OK and path in ("/.web/", "/.web/index.html"): + answer = answer.replace(b"""\ + <nav> + <ul>""", b"""\ + <nav> + <ul> + <li><a href="infcloud">InfCloud</a></li>""") + return status, headers, answer try: - filesystem_path = radicale.storage.path_to_filesystem( - self.folder, path[len("/.web"):]) + filesystem_path = storage.path_to_filesystem( + self.infcloud_folder, path[len("/.web/infcloud"):]) except ValueError as e: - self.logger.debug(e) - return radicale.NOT_FOUND + self.logger.debug("Web content with unsafe path %r requested: %s", + path, e, exc_info=True) + return NOT_FOUND if os.path.isdir(filesystem_path) and not path.endswith("/"): location = posixpath.basename(path) + "/" return (client.SEE_OTHER, @@ -61,7 +58,7 @@ class Web: if os.path.isdir(filesystem_path): filesystem_path = os.path.join(filesystem_path, "index.html") if not os.path.isfile(filesystem_path): - return radicale.NOT_FOUND + return NOT_FOUND content_type = MIMETYPES.get( os.path.splitext(filesystem_path)[1].lower(), FALLBACK_MIMETYPE) with open(filesystem_path, "rb") as f: diff --git a/radicale_web/web/infcloud/.htaccess b/radicale_infcloud/web/.htaccess index b8583d1..b8583d1 100644 --- a/radicale_web/web/infcloud/.htaccess +++ b/radicale_infcloud/web/.htaccess diff --git a/radicale_web/web/infcloud/addressbook.js b/radicale_infcloud/web/addressbook.js index fcde7ef..fcde7ef 100644 --- a/radicale_web/web/infcloud/addressbook.js +++ b/radicale_infcloud/web/addressbook.js diff --git a/radicale_web/web/infcloud/auth/.htaccess b/radicale_infcloud/web/auth/.htaccess index fb4203d..fb4203d 100644 --- a/radicale_web/web/infcloud/auth/.htaccess +++ b/radicale_infcloud/web/auth/.htaccess diff --git a/radicale_web/web/infcloud/auth/common.inc b/radicale_infcloud/web/auth/common.inc index 419cefb..419cefb 100644 --- a/radicale_web/web/infcloud/auth/common.inc +++ b/radicale_infcloud/web/auth/common.inc diff --git a/radicale_web/web/infcloud/auth/config.inc b/radicale_infcloud/web/auth/config.inc index 534e524..534e524 100644 --- a/radicale_web/web/infcloud/auth/config.inc +++ b/radicale_infcloud/web/auth/config.inc diff --git a/radicale_web/web/infcloud/auth/cross_domain.inc b/radicale_infcloud/web/auth/cross_domain.inc index a6a10e0..a6a10e0 100644 --- a/radicale_web/web/infcloud/auth/cross_domain.inc +++ b/radicale_infcloud/web/auth/cross_domain.inc diff --git a/radicale_web/web/infcloud/auth/doc/example_config_response.xml b/radicale_infcloud/web/auth/doc/example_config_response.xml index 9568049..9568049 100644 --- a/radicale_web/web/infcloud/auth/doc/example_config_response.xml +++ b/radicale_infcloud/web/auth/doc/example_config_response.xml diff --git a/radicale_web/web/infcloud/auth/doc/readme.txt b/radicale_infcloud/web/auth/doc/readme.txt index 860d29c..860d29c 100644 --- a/radicale_web/web/infcloud/auth/doc/readme.txt +++ b/radicale_infcloud/web/auth/doc/readme.txt diff --git a/radicale_web/web/infcloud/auth/index.php b/radicale_infcloud/web/auth/index.php index e92f005..e92f005 100644 --- a/radicale_web/web/infcloud/auth/index.php +++ b/radicale_infcloud/web/auth/index.php diff --git a/radicale_web/web/infcloud/auth/plugins/generic.inc b/radicale_infcloud/web/auth/plugins/generic.inc index 8e6b14b..8e6b14b 100644 --- a/radicale_web/web/infcloud/auth/plugins/generic.inc +++ b/radicale_infcloud/web/auth/plugins/generic.inc diff --git a/radicale_web/web/infcloud/auth/plugins/generic_conf.inc b/radicale_infcloud/web/auth/plugins/generic_conf.inc index 01c2b32..01c2b32 100644 --- a/radicale_web/web/infcloud/auth/plugins/generic_conf.inc +++ b/radicale_infcloud/web/auth/plugins/generic_conf.inc diff --git a/radicale_web/web/infcloud/auth/plugins/ldap.inc b/radicale_infcloud/web/auth/plugins/ldap.inc index f7012e5..f7012e5 100644 --- a/radicale_web/web/infcloud/auth/plugins/ldap.inc +++ b/radicale_infcloud/web/auth/plugins/ldap.inc diff --git a/radicale_web/web/infcloud/auth/plugins/ldap_conf.inc b/radicale_infcloud/web/auth/plugins/ldap_conf.inc index c9242c7..c9242c7 100644 --- a/radicale_web/web/infcloud/auth/plugins/ldap_conf.inc +++ b/radicale_infcloud/web/auth/plugins/ldap_conf.inc diff --git a/radicale_web/web/infcloud/cache.manifest b/radicale_infcloud/web/cache.manifest index b139826..b139826 100644 --- a/radicale_web/web/infcloud/cache.manifest +++ b/radicale_infcloud/web/cache.manifest diff --git a/radicale_web/web/infcloud/cache_handler.js b/radicale_infcloud/web/cache_handler.js index e21fb63..e21fb63 100644 --- a/radicale_web/web/infcloud/cache_handler.js +++ b/radicale_infcloud/web/cache_handler.js diff --git a/radicale_web/web/infcloud/cache_update.sh b/radicale_infcloud/web/cache_update.sh index 77f8670..77f8670 100755 --- a/radicale_web/web/infcloud/cache_update.sh +++ b/radicale_infcloud/web/cache_update.sh diff --git a/radicale_web/web/infcloud/changelog.txt b/radicale_infcloud/web/changelog.txt index e0bd4f1..e0bd4f1 100644 --- a/radicale_web/web/infcloud/changelog.txt +++ b/radicale_infcloud/web/changelog.txt diff --git a/radicale_web/web/infcloud/changelog_caldavzap.txt b/radicale_infcloud/web/changelog_caldavzap.txt index 83f9892..83f9892 100644 --- a/radicale_web/web/infcloud/changelog_caldavzap.txt +++ b/radicale_infcloud/web/changelog_caldavzap.txt diff --git a/radicale_web/web/infcloud/changelog_carddavmate.txt b/radicale_infcloud/web/changelog_carddavmate.txt index b1dd652..b1dd652 100644 --- a/radicale_web/web/infcloud/changelog_carddavmate.txt +++ b/radicale_infcloud/web/changelog_carddavmate.txt diff --git a/radicale_web/web/infcloud/common.js b/radicale_infcloud/web/common.js index b5b8029..b5b8029 100644 --- a/radicale_web/web/infcloud/common.js +++ b/radicale_infcloud/web/common.js diff --git a/radicale_web/web/infcloud/config.js b/radicale_infcloud/web/config.js index 560c1d1..560c1d1 100644 --- a/radicale_web/web/infcloud/config.js +++ b/radicale_infcloud/web/config.js diff --git a/radicale_web/web/infcloud/css/default.css b/radicale_infcloud/web/css/default.css index 14e8156..14e8156 100644 --- a/radicale_web/web/infcloud/css/default.css +++ b/radicale_infcloud/web/css/default.css diff --git a/radicale_web/web/infcloud/css/default_ie.css b/radicale_infcloud/web/css/default_ie.css index 41dbb3a..41dbb3a 100644 --- a/radicale_web/web/infcloud/css/default_ie.css +++ b/radicale_infcloud/web/css/default_ie.css diff --git a/radicale_web/web/infcloud/css/default_integration.css b/radicale_infcloud/web/css/default_integration.css index 35aa3c5..35aa3c5 100644 --- a/radicale_web/web/infcloud/css/default_integration.css +++ b/radicale_infcloud/web/css/default_integration.css diff --git a/radicale_web/web/infcloud/css/fullcalendar.css b/radicale_infcloud/web/css/fullcalendar.css index de14fbd..de14fbd 100644 --- a/radicale_web/web/infcloud/css/fullcalendar.css +++ b/radicale_infcloud/web/css/fullcalendar.css diff --git a/radicale_web/web/infcloud/css/jquery-ui.custom.css b/radicale_infcloud/web/css/jquery-ui.custom.css index a0b2f47..a0b2f47 100644 --- a/radicale_web/web/infcloud/css/jquery-ui.custom.css +++ b/radicale_infcloud/web/css/jquery-ui.custom.css diff --git a/radicale_web/web/infcloud/css/jquery.tagsinput.css b/radicale_infcloud/web/css/jquery.tagsinput.css index daad03c..daad03c 100644 --- a/radicale_web/web/infcloud/css/jquery.tagsinput.css +++ b/radicale_infcloud/web/css/jquery.tagsinput.css diff --git a/radicale_web/web/infcloud/css/spectrum.custom.css b/radicale_infcloud/web/css/spectrum.custom.css index 97a3d22..97a3d22 100644 --- a/radicale_web/web/infcloud/css/spectrum.custom.css +++ b/radicale_infcloud/web/css/spectrum.custom.css diff --git a/radicale_web/web/infcloud/data_process.js b/radicale_infcloud/web/data_process.js index bdbf711..bdbf711 100644 --- a/radicale_web/web/infcloud/data_process.js +++ b/radicale_infcloud/web/data_process.js diff --git a/radicale_web/web/infcloud/fonts/Roboto-Bold-webfont.eot b/radicale_infcloud/web/fonts/Roboto-Bold-webfont.eot Binary files differindex d9c8988..d9c8988 100644 --- a/radicale_web/web/infcloud/fonts/Roboto-Bold-webfont.eot +++ b/radicale_infcloud/web/fonts/Roboto-Bold-webfont.eot diff --git a/radicale_web/web/infcloud/fonts/Roboto-Bold-webfont.svg b/radicale_infcloud/web/fonts/Roboto-Bold-webfont.svg index 2cf6d93..2cf6d93 100644 --- a/radicale_web/web/infcloud/fonts/Roboto-Bold-webfont.svg +++ b/radicale_infcloud/web/fonts/Roboto-Bold-webfont.svg diff --git a/radicale_web/web/infcloud/fonts/Roboto-Bold-webfont.ttf b/radicale_infcloud/web/fonts/Roboto-Bold-webfont.ttf Binary files differindex 569c7e5..569c7e5 100644 --- a/radicale_web/web/infcloud/fonts/Roboto-Bold-webfont.ttf +++ b/radicale_infcloud/web/fonts/Roboto-Bold-webfont.ttf diff --git a/radicale_web/web/infcloud/fonts/Roboto-Bold-webfont.woff b/radicale_infcloud/web/fonts/Roboto-Bold-webfont.woff Binary files differindex a560848..a560848 100644 --- a/radicale_web/web/infcloud/fonts/Roboto-Bold-webfont.woff +++ b/radicale_infcloud/web/fonts/Roboto-Bold-webfont.woff diff --git a/radicale_web/web/infcloud/fonts/Roboto-BoldItalic-webfont.eot b/radicale_infcloud/web/fonts/Roboto-BoldItalic-webfont.eot Binary files differindex 716e9b7..716e9b7 100644 --- a/radicale_web/web/infcloud/fonts/Roboto-BoldItalic-webfont.eot +++ b/radicale_infcloud/web/fonts/Roboto-BoldItalic-webfont.eot diff --git a/radicale_web/web/infcloud/fonts/Roboto-BoldItalic-webfont.svg b/radicale_infcloud/web/fonts/Roboto-BoldItalic-webfont.svg index 804f27b..804f27b 100644 --- a/radicale_web/web/infcloud/fonts/Roboto-BoldItalic-webfont.svg +++ b/radicale_infcloud/web/fonts/Roboto-BoldItalic-webfont.svg diff --git a/radicale_web/web/infcloud/fonts/Roboto-BoldItalic-webfont.ttf b/radicale_infcloud/web/fonts/Roboto-BoldItalic-webfont.ttf Binary files differindex 0f59564..0f59564 100644 --- a/radicale_web/web/infcloud/fonts/Roboto-BoldItalic-webfont.ttf +++ b/radicale_infcloud/web/fonts/Roboto-BoldItalic-webfont.ttf diff --git a/radicale_web/web/infcloud/fonts/Roboto-BoldItalic-webfont.woff b/radicale_infcloud/web/fonts/Roboto-BoldItalic-webfont.woff Binary files differindex 12c5ee8..12c5ee8 100644 --- a/radicale_web/web/infcloud/fonts/Roboto-BoldItalic-webfont.woff +++ b/radicale_infcloud/web/fonts/Roboto-BoldItalic-webfont.woff diff --git a/radicale_web/web/infcloud/fonts/Roboto-Italic-webfont.eot b/radicale_infcloud/web/fonts/Roboto-Italic-webfont.eot Binary files differindex 6505304..6505304 100644 --- a/radicale_web/web/infcloud/fonts/Roboto-Italic-webfont.eot +++ b/radicale_infcloud/web/fonts/Roboto-Italic-webfont.eot diff --git a/radicale_web/web/infcloud/fonts/Roboto-Italic-webfont.svg b/radicale_infcloud/web/fonts/Roboto-Italic-webfont.svg index 935e561..935e561 100644 --- a/radicale_web/web/infcloud/fonts/Roboto-Italic-webfont.svg +++ b/radicale_infcloud/web/fonts/Roboto-Italic-webfont.svg diff --git a/radicale_web/web/infcloud/fonts/Roboto-Italic-webfont.ttf b/radicale_infcloud/web/fonts/Roboto-Italic-webfont.ttf Binary files differindex 34e7f54..34e7f54 100644 --- a/radicale_web/web/infcloud/fonts/Roboto-Italic-webfont.ttf +++ b/radicale_infcloud/web/fonts/Roboto-Italic-webfont.ttf diff --git a/radicale_web/web/infcloud/fonts/Roboto-Italic-webfont.woff b/radicale_infcloud/web/fonts/Roboto-Italic-webfont.woff Binary files differindex d132ceb..d132ceb 100644 --- a/radicale_web/web/infcloud/fonts/Roboto-Italic-webfont.woff +++ b/radicale_infcloud/web/fonts/Roboto-Italic-webfont.woff diff --git a/radicale_web/web/infcloud/fonts/Roboto-Light-webfont.eot b/radicale_infcloud/web/fonts/Roboto-Light-webfont.eot Binary files differindex 4d4bdac..4d4bdac 100644 --- a/radicale_web/web/infcloud/fonts/Roboto-Light-webfont.eot +++ b/radicale_infcloud/web/fonts/Roboto-Light-webfont.eot diff --git a/radicale_web/web/infcloud/fonts/Roboto-Light-webfont.svg b/radicale_infcloud/web/fonts/Roboto-Light-webfont.svg index 242047e..242047e 100644 --- a/radicale_web/web/infcloud/fonts/Roboto-Light-webfont.svg +++ b/radicale_infcloud/web/fonts/Roboto-Light-webfont.svg diff --git a/radicale_web/web/infcloud/fonts/Roboto-Light-webfont.ttf b/radicale_infcloud/web/fonts/Roboto-Light-webfont.ttf Binary files differindex ce541fb..ce541fb 100644 --- a/radicale_web/web/infcloud/fonts/Roboto-Light-webfont.ttf +++ b/radicale_infcloud/web/fonts/Roboto-Light-webfont.ttf diff --git a/radicale_web/web/infcloud/fonts/Roboto-Light-webfont.woff b/radicale_infcloud/web/fonts/Roboto-Light-webfont.woff Binary files differindex eb0fe29..eb0fe29 100644 --- a/radicale_web/web/infcloud/fonts/Roboto-Light-webfont.woff +++ b/radicale_infcloud/web/fonts/Roboto-Light-webfont.woff diff --git a/radicale_web/web/infcloud/fonts/Roboto-LightItalic-webfont.eot b/radicale_infcloud/web/fonts/Roboto-LightItalic-webfont.eot Binary files differindex b66d0bb..b66d0bb 100644 --- a/radicale_web/web/infcloud/fonts/Roboto-LightItalic-webfont.eot +++ b/radicale_infcloud/web/fonts/Roboto-LightItalic-webfont.eot diff --git a/radicale_web/web/infcloud/fonts/Roboto-LightItalic-webfont.svg b/radicale_infcloud/web/fonts/Roboto-LightItalic-webfont.svg index 5e9b613..5e9b613 100644 --- a/radicale_web/web/infcloud/fonts/Roboto-LightItalic-webfont.svg +++ b/radicale_infcloud/web/fonts/Roboto-LightItalic-webfont.svg diff --git a/radicale_web/web/infcloud/fonts/Roboto-LightItalic-webfont.ttf b/radicale_infcloud/web/fonts/Roboto-LightItalic-webfont.ttf Binary files differindex 36c2be5..36c2be5 100644 --- a/radicale_web/web/infcloud/fonts/Roboto-LightItalic-webfont.ttf +++ b/radicale_infcloud/web/fonts/Roboto-LightItalic-webfont.ttf diff --git a/radicale_web/web/infcloud/fonts/Roboto-LightItalic-webfont.woff b/radicale_infcloud/web/fonts/Roboto-LightItalic-webfont.woff Binary files differindex dc66ac4..dc66ac4 100644 --- a/radicale_web/web/infcloud/fonts/Roboto-LightItalic-webfont.woff +++ b/radicale_infcloud/web/fonts/Roboto-LightItalic-webfont.woff diff --git a/radicale_web/web/infcloud/fonts/Roboto-Medium-webfont.eot b/radicale_infcloud/web/fonts/Roboto-Medium-webfont.eot Binary files differindex e988d25..e988d25 100644 --- a/radicale_web/web/infcloud/fonts/Roboto-Medium-webfont.eot +++ b/radicale_infcloud/web/fonts/Roboto-Medium-webfont.eot diff --git a/radicale_web/web/infcloud/fonts/Roboto-Medium-webfont.svg b/radicale_infcloud/web/fonts/Roboto-Medium-webfont.svg index c4f6127..c4f6127 100644 --- a/radicale_web/web/infcloud/fonts/Roboto-Medium-webfont.svg +++ b/radicale_infcloud/web/fonts/Roboto-Medium-webfont.svg diff --git a/radicale_web/web/infcloud/fonts/Roboto-Medium-webfont.ttf b/radicale_infcloud/web/fonts/Roboto-Medium-webfont.ttf Binary files differindex 8420f79..8420f79 100644 --- a/radicale_web/web/infcloud/fonts/Roboto-Medium-webfont.ttf +++ b/radicale_infcloud/web/fonts/Roboto-Medium-webfont.ttf diff --git a/radicale_web/web/infcloud/fonts/Roboto-Medium-webfont.woff b/radicale_infcloud/web/fonts/Roboto-Medium-webfont.woff Binary files differindex 2122867..2122867 100644 --- a/radicale_web/web/infcloud/fonts/Roboto-Medium-webfont.woff +++ b/radicale_infcloud/web/fonts/Roboto-Medium-webfont.woff diff --git a/radicale_web/web/infcloud/fonts/Roboto-MediumItalic-webfont.eot b/radicale_infcloud/web/fonts/Roboto-MediumItalic-webfont.eot Binary files differindex 25f9be2..25f9be2 100644 --- a/radicale_web/web/infcloud/fonts/Roboto-MediumItalic-webfont.eot +++ b/radicale_infcloud/web/fonts/Roboto-MediumItalic-webfont.eot diff --git a/radicale_web/web/infcloud/fonts/Roboto-MediumItalic-webfont.svg b/radicale_infcloud/web/fonts/Roboto-MediumItalic-webfont.svg index 583da89..583da89 100644 --- a/radicale_web/web/infcloud/fonts/Roboto-MediumItalic-webfont.svg +++ b/radicale_infcloud/web/fonts/Roboto-MediumItalic-webfont.svg diff --git a/radicale_web/web/infcloud/fonts/Roboto-MediumItalic-webfont.ttf b/radicale_infcloud/web/fonts/Roboto-MediumItalic-webfont.ttf Binary files differindex 00ffb28..00ffb28 100644 --- a/radicale_web/web/infcloud/fonts/Roboto-MediumItalic-webfont.ttf +++ b/radicale_infcloud/web/fonts/Roboto-MediumItalic-webfont.ttf diff --git a/radicale_web/web/infcloud/fonts/Roboto-MediumItalic-webfont.woff b/radicale_infcloud/web/fonts/Roboto-MediumItalic-webfont.woff Binary files differindex d615d62..d615d62 100644 --- a/radicale_web/web/infcloud/fonts/Roboto-MediumItalic-webfont.woff +++ b/radicale_infcloud/web/fonts/Roboto-MediumItalic-webfont.woff diff --git a/radicale_web/web/infcloud/fonts/Roboto-Regular-webfont.eot b/radicale_infcloud/web/fonts/Roboto-Regular-webfont.eot Binary files differindex d4e185d..d4e185d 100644 --- a/radicale_web/web/infcloud/fonts/Roboto-Regular-webfont.eot +++ b/radicale_infcloud/web/fonts/Roboto-Regular-webfont.eot diff --git a/radicale_web/web/infcloud/fonts/Roboto-Regular-webfont.svg b/radicale_infcloud/web/fonts/Roboto-Regular-webfont.svg index 06824bf..06824bf 100644 --- a/radicale_web/web/infcloud/fonts/Roboto-Regular-webfont.svg +++ b/radicale_infcloud/web/fonts/Roboto-Regular-webfont.svg diff --git a/radicale_web/web/infcloud/fonts/Roboto-Regular-webfont.ttf b/radicale_infcloud/web/fonts/Roboto-Regular-webfont.ttf Binary files differindex 305f0d5..305f0d5 100644 --- a/radicale_web/web/infcloud/fonts/Roboto-Regular-webfont.ttf +++ b/radicale_infcloud/web/fonts/Roboto-Regular-webfont.ttf diff --git a/radicale_web/web/infcloud/fonts/Roboto-Regular-webfont.woff b/radicale_infcloud/web/fonts/Roboto-Regular-webfont.woff Binary files differindex ac7452a..ac7452a 100644 --- a/radicale_web/web/infcloud/fonts/Roboto-Regular-webfont.woff +++ b/radicale_infcloud/web/fonts/Roboto-Regular-webfont.woff diff --git a/radicale_web/web/infcloud/fonts/license.txt b/radicale_infcloud/web/fonts/license.txt index d645695..d645695 100644 --- a/radicale_web/web/infcloud/fonts/license.txt +++ b/radicale_infcloud/web/fonts/license.txt diff --git a/radicale_web/web/infcloud/forms.js b/radicale_infcloud/web/forms.js index 0e4c816..0e4c816 100644 --- a/radicale_web/web/infcloud/forms.js +++ b/radicale_infcloud/web/forms.js diff --git a/radicale_web/web/infcloud/images/add_cal.svg b/radicale_infcloud/web/images/add_cal.svg index b4844f0..b4844f0 100644 --- a/radicale_web/web/infcloud/images/add_cal.svg +++ b/radicale_infcloud/web/images/add_cal.svg diff --git a/radicale_web/web/infcloud/images/add_cal_white.svg b/radicale_infcloud/web/images/add_cal_white.svg index 8bec3e0..8bec3e0 100644 --- a/radicale_web/web/infcloud/images/add_cal_white.svg +++ b/radicale_infcloud/web/images/add_cal_white.svg diff --git a/radicale_web/web/infcloud/images/arrow.svg b/radicale_infcloud/web/images/arrow.svg index 913ccc8..913ccc8 100644 --- a/radicale_web/web/infcloud/images/arrow.svg +++ b/radicale_infcloud/web/images/arrow.svg diff --git a/radicale_web/web/infcloud/images/arrow_next.svg b/radicale_infcloud/web/images/arrow_next.svg index e954800..e954800 100644 --- a/radicale_web/web/infcloud/images/arrow_next.svg +++ b/radicale_infcloud/web/images/arrow_next.svg diff --git a/radicale_web/web/infcloud/images/arrow_next_red.svg b/radicale_infcloud/web/images/arrow_next_red.svg index d4942a7..d4942a7 100644 --- a/radicale_web/web/infcloud/images/arrow_next_red.svg +++ b/radicale_infcloud/web/images/arrow_next_red.svg diff --git a/radicale_web/web/infcloud/images/arrow_prev.svg b/radicale_infcloud/web/images/arrow_prev.svg index 03cb5ad..03cb5ad 100644 --- a/radicale_web/web/infcloud/images/arrow_prev.svg +++ b/radicale_infcloud/web/images/arrow_prev.svg diff --git a/radicale_web/web/infcloud/images/arrow_prev_red.svg b/radicale_infcloud/web/images/arrow_prev_red.svg index 2716f33..2716f33 100644 --- a/radicale_web/web/infcloud/images/arrow_prev_red.svg +++ b/radicale_infcloud/web/images/arrow_prev_red.svg diff --git a/radicale_web/web/infcloud/images/banner_addressbook.svg b/radicale_infcloud/web/images/banner_addressbook.svg index 0bf391b..0bf391b 100644 --- a/radicale_web/web/infcloud/images/banner_addressbook.svg +++ b/radicale_infcloud/web/images/banner_addressbook.svg diff --git a/radicale_web/web/infcloud/images/banner_calendar.svg b/radicale_infcloud/web/images/banner_calendar.svg index 652b108..652b108 100644 --- a/radicale_web/web/infcloud/images/banner_calendar.svg +++ b/radicale_infcloud/web/images/banner_calendar.svg diff --git a/radicale_web/web/infcloud/images/banner_logout.svg b/radicale_infcloud/web/images/banner_logout.svg index 6ef7c2b..6ef7c2b 100644 --- a/radicale_web/web/infcloud/images/banner_logout.svg +++ b/radicale_infcloud/web/images/banner_logout.svg diff --git a/radicale_web/web/infcloud/images/banner_refresh.svg b/radicale_infcloud/web/images/banner_refresh.svg index 48ab354..48ab354 100644 --- a/radicale_web/web/infcloud/images/banner_refresh.svg +++ b/radicale_infcloud/web/images/banner_refresh.svg diff --git a/radicale_web/web/infcloud/images/banner_todo.svg b/radicale_infcloud/web/images/banner_todo.svg index 3d50033..3d50033 100644 --- a/radicale_web/web/infcloud/images/banner_todo.svg +++ b/radicale_infcloud/web/images/banner_todo.svg diff --git a/radicale_web/web/infcloud/images/calendarB.svg b/radicale_infcloud/web/images/calendarB.svg index 4d1c61b..4d1c61b 100644 --- a/radicale_web/web/infcloud/images/calendarB.svg +++ b/radicale_infcloud/web/images/calendarB.svg diff --git a/radicale_web/web/infcloud/images/cdm_logo.svg b/radicale_infcloud/web/images/cdm_logo.svg index 5386b07..5386b07 100644 --- a/radicale_web/web/infcloud/images/cdm_logo.svg +++ b/radicale_infcloud/web/images/cdm_logo.svg diff --git a/radicale_web/web/infcloud/images/cdz_logo.svg b/radicale_infcloud/web/images/cdz_logo.svg index 833a1ba..833a1ba 100644 --- a/radicale_web/web/infcloud/images/cdz_logo.svg +++ b/radicale_infcloud/web/images/cdz_logo.svg diff --git a/radicale_web/web/infcloud/images/cloud.svg b/radicale_infcloud/web/images/cloud.svg index 8250d18..8250d18 100644 --- a/radicale_web/web/infcloud/images/cloud.svg +++ b/radicale_infcloud/web/images/cloud.svg diff --git a/radicale_web/web/infcloud/images/company.svg b/radicale_infcloud/web/images/company.svg index 095d046..095d046 100644 --- a/radicale_web/web/infcloud/images/company.svg +++ b/radicale_infcloud/web/images/company.svg diff --git a/radicale_web/web/infcloud/images/company_s_b.svg b/radicale_infcloud/web/images/company_s_b.svg index 9b033f3..9b033f3 100644 --- a/radicale_web/web/infcloud/images/company_s_b.svg +++ b/radicale_infcloud/web/images/company_s_b.svg diff --git a/radicale_web/web/infcloud/images/company_s_w.svg b/radicale_infcloud/web/images/company_s_w.svg index 33f1775..33f1775 100644 --- a/radicale_web/web/infcloud/images/company_s_w.svg +++ b/radicale_infcloud/web/images/company_s_w.svg diff --git a/radicale_web/web/infcloud/images/delegation.svg b/radicale_infcloud/web/images/delegation.svg index 52066e5..52066e5 100644 --- a/radicale_web/web/infcloud/images/delegation.svg +++ b/radicale_infcloud/web/images/delegation.svg diff --git a/radicale_web/web/infcloud/images/dp_left.svg b/radicale_infcloud/web/images/dp_left.svg index 0daecb0..0daecb0 100644 --- a/radicale_web/web/infcloud/images/dp_left.svg +++ b/radicale_infcloud/web/images/dp_left.svg diff --git a/radicale_web/web/infcloud/images/dp_right.svg b/radicale_infcloud/web/images/dp_right.svg index 913ccc8..913ccc8 100644 --- a/radicale_web/web/infcloud/images/dp_right.svg +++ b/radicale_infcloud/web/images/dp_right.svg diff --git a/radicale_web/web/infcloud/images/drag.svg b/radicale_infcloud/web/images/drag.svg index c93d57e..c93d57e 100644 --- a/radicale_web/web/infcloud/images/drag.svg +++ b/radicale_infcloud/web/images/drag.svg diff --git a/radicale_web/web/infcloud/images/error_b.svg b/radicale_infcloud/web/images/error_b.svg index 3729aec..3729aec 100644 --- a/radicale_web/web/infcloud/images/error_b.svg +++ b/radicale_infcloud/web/images/error_b.svg diff --git a/radicale_web/web/infcloud/images/error_badge.svg b/radicale_infcloud/web/images/error_badge.svg index d91ffa3..d91ffa3 100644 --- a/radicale_web/web/infcloud/images/error_badge.svg +++ b/radicale_infcloud/web/images/error_badge.svg diff --git a/radicale_web/web/infcloud/images/error_w.svg b/radicale_infcloud/web/images/error_w.svg index 0515462..0515462 100644 --- a/radicale_web/web/infcloud/images/error_w.svg +++ b/radicale_infcloud/web/images/error_w.svg diff --git a/radicale_web/web/infcloud/images/in_progress_b.svg b/radicale_infcloud/web/images/in_progress_b.svg index 68ff1f8..68ff1f8 100644 --- a/radicale_web/web/infcloud/images/in_progress_b.svg +++ b/radicale_infcloud/web/images/in_progress_b.svg diff --git a/radicale_web/web/infcloud/images/in_progress_dr.svg b/radicale_infcloud/web/images/in_progress_dr.svg index dbb269d..dbb269d 100644 --- a/radicale_web/web/infcloud/images/in_progress_dr.svg +++ b/radicale_infcloud/web/images/in_progress_dr.svg diff --git a/radicale_web/web/infcloud/images/in_progress_r.svg b/radicale_infcloud/web/images/in_progress_r.svg index 2b89b27..2b89b27 100644 --- a/radicale_web/web/infcloud/images/in_progress_r.svg +++ b/radicale_infcloud/web/images/in_progress_r.svg diff --git a/radicale_web/web/infcloud/images/in_progress_w.svg b/radicale_infcloud/web/images/in_progress_w.svg index d4c3866..d4c3866 100644 --- a/radicale_web/web/infcloud/images/in_progress_w.svg +++ b/radicale_infcloud/web/images/in_progress_w.svg diff --git a/radicale_web/web/infcloud/images/infcloud_logo.svg b/radicale_infcloud/web/images/infcloud_logo.svg index 6d0e118..6d0e118 100644 --- a/radicale_web/web/infcloud/images/infcloud_logo.svg +++ b/radicale_infcloud/web/images/infcloud_logo.svg diff --git a/radicale_web/web/infcloud/images/jumper_bottom_b.svg b/radicale_infcloud/web/images/jumper_bottom_b.svg index f2e415b..f2e415b 100644 --- a/radicale_web/web/infcloud/images/jumper_bottom_b.svg +++ b/radicale_infcloud/web/images/jumper_bottom_b.svg diff --git a/radicale_web/web/infcloud/images/jumper_bottom_w.svg b/radicale_infcloud/web/images/jumper_bottom_w.svg index 50b35a1..50b35a1 100644 --- a/radicale_web/web/infcloud/images/jumper_bottom_w.svg +++ b/radicale_infcloud/web/images/jumper_bottom_w.svg diff --git a/radicale_web/web/infcloud/images/jumper_top_b.svg b/radicale_infcloud/web/images/jumper_top_b.svg index c333e56..c333e56 100644 --- a/radicale_web/web/infcloud/images/jumper_top_b.svg +++ b/radicale_infcloud/web/images/jumper_top_b.svg diff --git a/radicale_web/web/infcloud/images/jumper_top_w.svg b/radicale_infcloud/web/images/jumper_top_w.svg index 92a36c6..92a36c6 100644 --- a/radicale_web/web/infcloud/images/jumper_top_w.svg +++ b/radicale_infcloud/web/images/jumper_top_w.svg diff --git a/radicale_web/web/infcloud/images/loadinfo.gif b/radicale_infcloud/web/images/loadinfo.gif Binary files differindex decd9bd..decd9bd 100644 --- a/radicale_web/web/infcloud/images/loadinfo.gif +++ b/radicale_infcloud/web/images/loadinfo.gif diff --git a/radicale_web/web/infcloud/images/loadinfo_s1.gif b/radicale_infcloud/web/images/loadinfo_s1.gif Binary files differindex da8aebe..da8aebe 100644 --- a/radicale_web/web/infcloud/images/loadinfo_s1.gif +++ b/radicale_infcloud/web/images/loadinfo_s1.gif diff --git a/radicale_web/web/infcloud/images/loadinfo_s2.gif b/radicale_infcloud/web/images/loadinfo_s2.gif Binary files differindex eafa4a4..eafa4a4 100644 --- a/radicale_web/web/infcloud/images/loadinfo_s2.gif +++ b/radicale_infcloud/web/images/loadinfo_s2.gif diff --git a/radicale_web/web/infcloud/images/loadinfo_s3.gif b/radicale_infcloud/web/images/loadinfo_s3.gif Binary files differindex 5f2e7d4..5f2e7d4 100644 --- a/radicale_web/web/infcloud/images/loadinfo_s3.gif +++ b/radicale_infcloud/web/images/loadinfo_s3.gif diff --git a/radicale_web/web/infcloud/images/loadinfo_s4.gif b/radicale_infcloud/web/images/loadinfo_s4.gif Binary files differindex bb3dc6b..bb3dc6b 100644 --- a/radicale_web/web/infcloud/images/loadinfo_s4.gif +++ b/radicale_infcloud/web/images/loadinfo_s4.gif diff --git a/radicale_web/web/infcloud/images/login.svg b/radicale_infcloud/web/images/login.svg index d6ffbbb..d6ffbbb 100644 --- a/radicale_web/web/infcloud/images/login.svg +++ b/radicale_infcloud/web/images/login.svg diff --git a/radicale_web/web/infcloud/images/logout.svg b/radicale_infcloud/web/images/logout.svg index fa6b3ef..fa6b3ef 100644 --- a/radicale_web/web/infcloud/images/logout.svg +++ b/radicale_infcloud/web/images/logout.svg diff --git a/radicale_web/web/infcloud/images/needs_action_b.svg b/radicale_infcloud/web/images/needs_action_b.svg index 5372f9a..5372f9a 100644 --- a/radicale_web/web/infcloud/images/needs_action_b.svg +++ b/radicale_infcloud/web/images/needs_action_b.svg diff --git a/radicale_web/web/infcloud/images/needs_action_dr.svg b/radicale_infcloud/web/images/needs_action_dr.svg index 978d7ea..978d7ea 100644 --- a/radicale_web/web/infcloud/images/needs_action_dr.svg +++ b/radicale_infcloud/web/images/needs_action_dr.svg diff --git a/radicale_web/web/infcloud/images/needs_action_r.svg b/radicale_infcloud/web/images/needs_action_r.svg index 30012f5..30012f5 100644 --- a/radicale_web/web/infcloud/images/needs_action_r.svg +++ b/radicale_infcloud/web/images/needs_action_r.svg diff --git a/radicale_web/web/infcloud/images/needs_action_w.svg b/radicale_infcloud/web/images/needs_action_w.svg index 295f509..295f509 100644 --- a/radicale_web/web/infcloud/images/needs_action_w.svg +++ b/radicale_infcloud/web/images/needs_action_w.svg diff --git a/radicale_web/web/infcloud/images/new_item.svg b/radicale_infcloud/web/images/new_item.svg index 0c0cfbb..0c0cfbb 100644 --- a/radicale_web/web/infcloud/images/new_item.svg +++ b/radicale_infcloud/web/images/new_item.svg diff --git a/radicale_web/web/infcloud/images/op_add.svg b/radicale_infcloud/web/images/op_add.svg index 1543969..1543969 100644 --- a/radicale_web/web/infcloud/images/op_add.svg +++ b/radicale_infcloud/web/images/op_add.svg diff --git a/radicale_web/web/infcloud/images/op_del.svg b/radicale_infcloud/web/images/op_del.svg index 5d6c61b..5d6c61b 100644 --- a/radicale_web/web/infcloud/images/op_del.svg +++ b/radicale_infcloud/web/images/op_del.svg diff --git a/radicale_web/web/infcloud/images/popupArrow.svg b/radicale_infcloud/web/images/popupArrow.svg index 4e9f645..4e9f645 100644 --- a/radicale_web/web/infcloud/images/popupArrow.svg +++ b/radicale_infcloud/web/images/popupArrow.svg diff --git a/radicale_web/web/infcloud/images/priority-1-dr.svg b/radicale_infcloud/web/images/priority-1-dr.svg index de77a05..de77a05 100644 --- a/radicale_web/web/infcloud/images/priority-1-dr.svg +++ b/radicale_infcloud/web/images/priority-1-dr.svg diff --git a/radicale_web/web/infcloud/images/priority-1-r.svg b/radicale_infcloud/web/images/priority-1-r.svg index 516ce67..516ce67 100644 --- a/radicale_web/web/infcloud/images/priority-1-r.svg +++ b/radicale_infcloud/web/images/priority-1-r.svg diff --git a/radicale_web/web/infcloud/images/priority-1-w.svg b/radicale_infcloud/web/images/priority-1-w.svg index 20e1f4a..20e1f4a 100644 --- a/radicale_web/web/infcloud/images/priority-1-w.svg +++ b/radicale_infcloud/web/images/priority-1-w.svg diff --git a/radicale_web/web/infcloud/images/priority-1.svg b/radicale_infcloud/web/images/priority-1.svg index 6fabe40..6fabe40 100644 --- a/radicale_web/web/infcloud/images/priority-1.svg +++ b/radicale_infcloud/web/images/priority-1.svg diff --git a/radicale_web/web/infcloud/images/priority-2-dr.svg b/radicale_infcloud/web/images/priority-2-dr.svg index 5302113..5302113 100644 --- a/radicale_web/web/infcloud/images/priority-2-dr.svg +++ b/radicale_infcloud/web/images/priority-2-dr.svg diff --git a/radicale_web/web/infcloud/images/priority-2-r.svg b/radicale_infcloud/web/images/priority-2-r.svg index 6ff859b..6ff859b 100644 --- a/radicale_web/web/infcloud/images/priority-2-r.svg +++ b/radicale_infcloud/web/images/priority-2-r.svg diff --git a/radicale_web/web/infcloud/images/priority-2-w.svg b/radicale_infcloud/web/images/priority-2-w.svg index 89aa834..89aa834 100644 --- a/radicale_web/web/infcloud/images/priority-2-w.svg +++ b/radicale_infcloud/web/images/priority-2-w.svg diff --git a/radicale_web/web/infcloud/images/priority-2.svg b/radicale_infcloud/web/images/priority-2.svg index 5382a66..5382a66 100644 --- a/radicale_web/web/infcloud/images/priority-2.svg +++ b/radicale_infcloud/web/images/priority-2.svg diff --git a/radicale_web/web/infcloud/images/priority-3-dr.svg b/radicale_infcloud/web/images/priority-3-dr.svg index 29c0686..29c0686 100644 --- a/radicale_web/web/infcloud/images/priority-3-dr.svg +++ b/radicale_infcloud/web/images/priority-3-dr.svg diff --git a/radicale_web/web/infcloud/images/priority-3-r.svg b/radicale_infcloud/web/images/priority-3-r.svg index 42f8aa5..42f8aa5 100644 --- a/radicale_web/web/infcloud/images/priority-3-r.svg +++ b/radicale_infcloud/web/images/priority-3-r.svg diff --git a/radicale_web/web/infcloud/images/priority-3-w.svg b/radicale_infcloud/web/images/priority-3-w.svg index 22bd1e2..22bd1e2 100644 --- a/radicale_web/web/infcloud/images/priority-3-w.svg +++ b/radicale_infcloud/web/images/priority-3-w.svg diff --git a/radicale_web/web/infcloud/images/priority-3.svg b/radicale_infcloud/web/images/priority-3.svg index 4c10001..4c10001 100644 --- a/radicale_web/web/infcloud/images/priority-3.svg +++ b/radicale_infcloud/web/images/priority-3.svg diff --git a/radicale_web/web/infcloud/images/read_only_b.svg b/radicale_infcloud/web/images/read_only_b.svg index e934a8c..e934a8c 100644 --- a/radicale_web/web/infcloud/images/read_only_b.svg +++ b/radicale_infcloud/web/images/read_only_b.svg diff --git a/radicale_web/web/infcloud/images/read_only_w.svg b/radicale_infcloud/web/images/read_only_w.svg index 40d671e..40d671e 100644 --- a/radicale_web/web/infcloud/images/read_only_w.svg +++ b/radicale_infcloud/web/images/read_only_w.svg diff --git a/radicale_web/web/infcloud/images/remove_cal.svg b/radicale_infcloud/web/images/remove_cal.svg index 663395a..663395a 100644 --- a/radicale_web/web/infcloud/images/remove_cal.svg +++ b/radicale_infcloud/web/images/remove_cal.svg diff --git a/radicale_web/web/infcloud/images/remove_cal_white.svg b/radicale_infcloud/web/images/remove_cal_white.svg index 36a5c5c..36a5c5c 100644 --- a/radicale_web/web/infcloud/images/remove_cal_white.svg +++ b/radicale_infcloud/web/images/remove_cal_white.svg diff --git a/radicale_web/web/infcloud/images/reset_b.svg b/radicale_infcloud/web/images/reset_b.svg index 0523109..0523109 100644 --- a/radicale_web/web/infcloud/images/reset_b.svg +++ b/radicale_infcloud/web/images/reset_b.svg diff --git a/radicale_web/web/infcloud/images/reset_dr.svg b/radicale_infcloud/web/images/reset_dr.svg index 2459d51..2459d51 100644 --- a/radicale_web/web/infcloud/images/reset_dr.svg +++ b/radicale_infcloud/web/images/reset_dr.svg diff --git a/radicale_web/web/infcloud/images/reset_drw.svg b/radicale_infcloud/web/images/reset_drw.svg index 8206e2a..8206e2a 100644 --- a/radicale_web/web/infcloud/images/reset_drw.svg +++ b/radicale_infcloud/web/images/reset_drw.svg diff --git a/radicale_web/web/infcloud/images/reset_r.svg b/radicale_infcloud/web/images/reset_r.svg index 5a0efb8..5a0efb8 100644 --- a/radicale_web/web/infcloud/images/reset_r.svg +++ b/radicale_infcloud/web/images/reset_r.svg diff --git a/radicale_web/web/infcloud/images/reset_rw.svg b/radicale_infcloud/web/images/reset_rw.svg index f0618a1..f0618a1 100644 --- a/radicale_web/web/infcloud/images/reset_rw.svg +++ b/radicale_infcloud/web/images/reset_rw.svg diff --git a/radicale_web/web/infcloud/images/reset_w.svg b/radicale_infcloud/web/images/reset_w.svg index 9bd4d5b..9bd4d5b 100644 --- a/radicale_web/web/infcloud/images/reset_w.svg +++ b/radicale_infcloud/web/images/reset_w.svg diff --git a/radicale_web/web/infcloud/images/resource_arrow_down.svg b/radicale_infcloud/web/images/resource_arrow_down.svg index a9fef20..a9fef20 100644 --- a/radicale_web/web/infcloud/images/resource_arrow_down.svg +++ b/radicale_infcloud/web/images/resource_arrow_down.svg diff --git a/radicale_web/web/infcloud/images/resource_arrow_right.svg b/radicale_infcloud/web/images/resource_arrow_right.svg index deca329..deca329 100644 --- a/radicale_web/web/infcloud/images/resource_arrow_right.svg +++ b/radicale_infcloud/web/images/resource_arrow_right.svg diff --git a/radicale_web/web/infcloud/images/resource_arrow_up.svg b/radicale_infcloud/web/images/resource_arrow_up.svg index e0669d6..e0669d6 100644 --- a/radicale_web/web/infcloud/images/resource_arrow_up.svg +++ b/radicale_infcloud/web/images/resource_arrow_up.svg diff --git a/radicale_web/web/infcloud/images/resources.svg b/radicale_infcloud/web/images/resources.svg index 7eee180..7eee180 100644 --- a/radicale_web/web/infcloud/images/resources.svg +++ b/radicale_infcloud/web/images/resources.svg diff --git a/radicale_web/web/infcloud/images/search.svg b/radicale_infcloud/web/images/search.svg index efd7fb7..efd7fb7 100644 --- a/radicale_web/web/infcloud/images/search.svg +++ b/radicale_infcloud/web/images/search.svg diff --git a/radicale_web/web/infcloud/images/searchWhiteNew.svg b/radicale_infcloud/web/images/searchWhiteNew.svg index da3e287..da3e287 100644 --- a/radicale_web/web/infcloud/images/searchWhiteNew.svg +++ b/radicale_infcloud/web/images/searchWhiteNew.svg diff --git a/radicale_web/web/infcloud/images/select.svg b/radicale_infcloud/web/images/select.svg index 13131c5..13131c5 100644 --- a/radicale_web/web/infcloud/images/select.svg +++ b/radicale_infcloud/web/images/select.svg diff --git a/radicale_web/web/infcloud/images/select_bg.svg b/radicale_infcloud/web/images/select_bg.svg index 11b2742..11b2742 100644 --- a/radicale_web/web/infcloud/images/select_bg.svg +++ b/radicale_infcloud/web/images/select_bg.svg diff --git a/radicale_web/web/infcloud/images/select_bg_black.svg b/radicale_infcloud/web/images/select_bg_black.svg index 040ee9e..040ee9e 100644 --- a/radicale_web/web/infcloud/images/select_bg_black.svg +++ b/radicale_infcloud/web/images/select_bg_black.svg diff --git a/radicale_web/web/infcloud/images/select_bg_dis.svg b/radicale_infcloud/web/images/select_bg_dis.svg index 11b2742..11b2742 100644 --- a/radicale_web/web/infcloud/images/select_bg_dis.svg +++ b/radicale_infcloud/web/images/select_bg_dis.svg diff --git a/radicale_web/web/infcloud/images/select_black.svg b/radicale_infcloud/web/images/select_black.svg index a0d8598..a0d8598 100644 --- a/radicale_web/web/infcloud/images/select_black.svg +++ b/radicale_infcloud/web/images/select_black.svg diff --git a/radicale_web/web/infcloud/images/select_dis.svg b/radicale_infcloud/web/images/select_dis.svg index 4043825..4043825 100644 --- a/radicale_web/web/infcloud/images/select_dis.svg +++ b/radicale_infcloud/web/images/select_dis.svg diff --git a/radicale_web/web/infcloud/images/select_inv.svg b/radicale_infcloud/web/images/select_inv.svg index 538321e..538321e 100644 --- a/radicale_web/web/infcloud/images/select_inv.svg +++ b/radicale_infcloud/web/images/select_inv.svg diff --git a/radicale_web/web/infcloud/images/select_login.svg b/radicale_infcloud/web/images/select_login.svg index 9edc13a..9edc13a 100644 --- a/radicale_web/web/infcloud/images/select_login.svg +++ b/radicale_infcloud/web/images/select_login.svg diff --git a/radicale_web/web/infcloud/images/success_b.svg b/radicale_infcloud/web/images/success_b.svg index bd0e306..bd0e306 100644 --- a/radicale_web/web/infcloud/images/success_b.svg +++ b/radicale_infcloud/web/images/success_b.svg diff --git a/radicale_web/web/infcloud/images/success_dr.svg b/radicale_infcloud/web/images/success_dr.svg index 22191b5..22191b5 100644 --- a/radicale_web/web/infcloud/images/success_dr.svg +++ b/radicale_infcloud/web/images/success_dr.svg diff --git a/radicale_web/web/infcloud/images/success_drw.svg b/radicale_infcloud/web/images/success_drw.svg index 474bb52..474bb52 100644 --- a/radicale_web/web/infcloud/images/success_drw.svg +++ b/radicale_infcloud/web/images/success_drw.svg diff --git a/radicale_web/web/infcloud/images/success_r.svg b/radicale_infcloud/web/images/success_r.svg index 7e61d3f..7e61d3f 100644 --- a/radicale_web/web/infcloud/images/success_r.svg +++ b/radicale_infcloud/web/images/success_r.svg diff --git a/radicale_web/web/infcloud/images/success_rw.svg b/radicale_infcloud/web/images/success_rw.svg index 7dca8f4..7dca8f4 100644 --- a/radicale_web/web/infcloud/images/success_rw.svg +++ b/radicale_infcloud/web/images/success_rw.svg diff --git a/radicale_web/web/infcloud/images/success_w.svg b/radicale_infcloud/web/images/success_w.svg index 83a0f16..83a0f16 100644 --- a/radicale_web/web/infcloud/images/success_w.svg +++ b/radicale_infcloud/web/images/success_w.svg diff --git a/radicale_web/web/infcloud/images/todoB.svg b/radicale_infcloud/web/images/todoB.svg index c1a4084..c1a4084 100644 --- a/radicale_web/web/infcloud/images/todoB.svg +++ b/radicale_infcloud/web/images/todoB.svg diff --git a/radicale_web/web/infcloud/images/user.svg b/radicale_infcloud/web/images/user.svg index 57f074d..57f074d 100644 --- a/radicale_web/web/infcloud/images/user.svg +++ b/radicale_infcloud/web/images/user.svg diff --git a/radicale_web/web/infcloud/index.html b/radicale_infcloud/web/index.html index a62ccb8..a62ccb8 100644 --- a/radicale_web/web/infcloud/index.html +++ b/radicale_infcloud/web/index.html diff --git a/radicale_web/web/infcloud/interface.js b/radicale_infcloud/web/interface.js index e5afb8d..e5afb8d 100644 --- a/radicale_web/web/infcloud/interface.js +++ b/radicale_infcloud/web/interface.js diff --git a/radicale_web/web/infcloud/lib/fullcalendar.js b/radicale_infcloud/web/lib/fullcalendar.js index 8effe83..8effe83 100644 --- a/radicale_web/web/infcloud/lib/fullcalendar.js +++ b/radicale_infcloud/web/lib/fullcalendar.js diff --git a/radicale_web/web/infcloud/lib/ie_base64.js b/radicale_infcloud/web/lib/ie_base64.js index 5baba0d..5baba0d 100644 --- a/radicale_web/web/infcloud/lib/ie_base64.js +++ b/radicale_infcloud/web/lib/ie_base64.js diff --git a/radicale_web/web/infcloud/lib/jquery-2.1.4.min.js b/radicale_infcloud/web/lib/jquery-2.1.4.min.js index 49990d6..49990d6 100644 --- a/radicale_web/web/infcloud/lib/jquery-2.1.4.min.js +++ b/radicale_infcloud/web/lib/jquery-2.1.4.min.js diff --git a/radicale_web/web/infcloud/lib/jquery-ui-1.11.4.custom.js b/radicale_infcloud/web/lib/jquery-ui-1.11.4.custom.js index fa650d7..fa650d7 100644 --- a/radicale_web/web/infcloud/lib/jquery-ui-1.11.4.custom.js +++ b/radicale_infcloud/web/lib/jquery-ui-1.11.4.custom.js diff --git a/radicale_web/web/infcloud/lib/jquery.autosize.js b/radicale_infcloud/web/lib/jquery.autosize.js index b0a3f00..b0a3f00 100644 --- a/radicale_web/web/infcloud/lib/jquery.autosize.js +++ b/radicale_infcloud/web/lib/jquery.autosize.js diff --git a/radicale_web/web/infcloud/lib/jquery.browser.js b/radicale_infcloud/web/lib/jquery.browser.js index c2eba36..c2eba36 100644 --- a/radicale_web/web/infcloud/lib/jquery.browser.js +++ b/radicale_infcloud/web/lib/jquery.browser.js diff --git a/radicale_web/web/infcloud/lib/jquery.placeholder-1.1.9.js b/radicale_infcloud/web/lib/jquery.placeholder-1.1.9.js index f1ecba8..f1ecba8 100644 --- a/radicale_web/web/infcloud/lib/jquery.placeholder-1.1.9.js +++ b/radicale_infcloud/web/lib/jquery.placeholder-1.1.9.js diff --git a/radicale_web/web/infcloud/lib/jquery.quicksearch.js b/radicale_infcloud/web/lib/jquery.quicksearch.js index fe2f0a5..fe2f0a5 100644 --- a/radicale_web/web/infcloud/lib/jquery.quicksearch.js +++ b/radicale_infcloud/web/lib/jquery.quicksearch.js diff --git a/radicale_web/web/infcloud/lib/jquery.tagsinput.js b/radicale_infcloud/web/lib/jquery.tagsinput.js index 1493079..1493079 100644 --- a/radicale_web/web/infcloud/lib/jquery.tagsinput.js +++ b/radicale_infcloud/web/lib/jquery.tagsinput.js diff --git a/radicale_web/web/infcloud/lib/rrule.js b/radicale_infcloud/web/lib/rrule.js index ed2689e..ed2689e 100644 --- a/radicale_web/web/infcloud/lib/rrule.js +++ b/radicale_infcloud/web/lib/rrule.js diff --git a/radicale_web/web/infcloud/lib/sha256.js b/radicale_infcloud/web/lib/sha256.js index 529db30..529db30 100644 --- a/radicale_web/web/infcloud/lib/sha256.js +++ b/radicale_infcloud/web/lib/sha256.js diff --git a/radicale_web/web/infcloud/lib/spectrum.js b/radicale_infcloud/web/lib/spectrum.js index 4b99b07..4b99b07 100644 --- a/radicale_web/web/infcloud/lib/spectrum.js +++ b/radicale_infcloud/web/lib/spectrum.js diff --git a/radicale_web/web/infcloud/license.txt b/radicale_infcloud/web/license.txt index dba13ed..dba13ed 100644 --- a/radicale_web/web/infcloud/license.txt +++ b/radicale_infcloud/web/license.txt diff --git a/radicale_web/web/infcloud/localization.js b/radicale_infcloud/web/localization.js index c6ca781..c6ca781 100644 --- a/radicale_web/web/infcloud/localization.js +++ b/radicale_infcloud/web/localization.js diff --git a/radicale_web/web/infcloud/main.js b/radicale_infcloud/web/main.js index 3687f64..3687f64 100644 --- a/radicale_web/web/infcloud/main.js +++ b/radicale_infcloud/web/main.js diff --git a/radicale_web/web/infcloud/misc/baikal-flat-0.2.7.diff b/radicale_infcloud/web/misc/baikal-flat-0.2.7.diff index 8eba7bf..8eba7bf 100644 --- a/radicale_web/web/infcloud/misc/baikal-flat-0.2.7.diff +++ b/radicale_infcloud/web/misc/baikal-flat-0.2.7.diff diff --git a/radicale_web/web/infcloud/misc/calendarserver.diff b/radicale_infcloud/web/misc/calendarserver.diff index 1acff92..1acff92 100644 --- a/radicale_web/web/infcloud/misc/calendarserver.diff +++ b/radicale_infcloud/web/misc/calendarserver.diff diff --git a/radicale_web/web/infcloud/misc/config_davical.txt b/radicale_infcloud/web/misc/config_davical.txt index e88672b..e88672b 100644 --- a/radicale_web/web/infcloud/misc/config_davical.txt +++ b/radicale_infcloud/web/misc/config_davical.txt diff --git a/radicale_web/web/infcloud/misc/readme_baikal_sabredav.txt b/radicale_infcloud/web/misc/readme_baikal_sabredav.txt index a7c99d1..a7c99d1 100644 --- a/radicale_web/web/infcloud/misc/readme_baikal_sabredav.txt +++ b/radicale_infcloud/web/misc/readme_baikal_sabredav.txt diff --git a/radicale_web/web/infcloud/misc/readme_osx.txt b/radicale_infcloud/web/misc/readme_osx.txt index 511e7f3..511e7f3 100644 --- a/radicale_web/web/infcloud/misc/readme_osx.txt +++ b/radicale_infcloud/web/misc/readme_osx.txt diff --git a/radicale_web/web/infcloud/readme.txt b/radicale_infcloud/web/readme.txt index f5a8962..f5a8962 100644 --- a/radicale_web/web/infcloud/readme.txt +++ b/radicale_infcloud/web/readme.txt diff --git a/radicale_web/web/infcloud/resource.js b/radicale_infcloud/web/resource.js index 9456173..9456173 100644 --- a/radicale_web/web/infcloud/resource.js +++ b/radicale_infcloud/web/resource.js diff --git a/radicale_web/web/infcloud/timezones.js b/radicale_infcloud/web/timezones.js index 39b7525..39b7525 100644 --- a/radicale_web/web/infcloud/timezones.js +++ b/radicale_infcloud/web/timezones.js diff --git a/radicale_web/web/infcloud/vcalendar.js b/radicale_infcloud/web/vcalendar.js index ee8eadb..ee8eadb 100644 --- a/radicale_web/web/infcloud/vcalendar.js +++ b/radicale_infcloud/web/vcalendar.js diff --git a/radicale_web/web/infcloud/vcalendar_rfc_regex.js b/radicale_infcloud/web/vcalendar_rfc_regex.js index b080476..b080476 100644 --- a/radicale_web/web/infcloud/vcalendar_rfc_regex.js +++ b/radicale_infcloud/web/vcalendar_rfc_regex.js diff --git a/radicale_web/web/infcloud/vcard_rfc_regex.js b/radicale_infcloud/web/vcard_rfc_regex.js index 16ec9fa..16ec9fa 100644 --- a/radicale_web/web/infcloud/vcard_rfc_regex.js +++ b/radicale_infcloud/web/vcard_rfc_regex.js diff --git a/radicale_web/web/infcloud/vtodo.js b/radicale_infcloud/web/vtodo.js index b110975..b110975 100644 --- a/radicale_web/web/infcloud/vtodo.js +++ b/radicale_infcloud/web/vtodo.js diff --git a/radicale_web/web/infcloud/webdav_protocol.js b/radicale_infcloud/web/webdav_protocol.js index 93ce885..93ce885 100644 --- a/radicale_web/web/infcloud/webdav_protocol.js +++ b/radicale_infcloud/web/webdav_protocol.js diff --git a/radicale_web/web/css/fonts.css b/radicale_web/web/css/fonts.css deleted file mode 100644 index 297998e..0000000 --- a/radicale_web/web/css/fonts.css +++ /dev/null @@ -1,12 +0,0 @@ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 300; - src: local('Roboto Light'), local('Roboto-Light'), url(fonts/Roboto-Light.woff2) format('woff2'); -} -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 400; - src: local('Roboto'), local('Roboto-Regular'), url(fonts/Roboto-Light.woff2) format('woff2'); -} diff --git a/radicale_web/web/css/fonts/COPYRIGHT.txt b/radicale_web/web/css/fonts/COPYRIGHT.txt deleted file mode 100644 index e69c54c..0000000 --- a/radicale_web/web/css/fonts/COPYRIGHT.txt +++ /dev/null @@ -1 +0,0 @@ -Copyright 2011 Google Inc. All Rights Reserved. diff --git a/radicale_web/web/css/fonts/LICENSE.txt b/radicale_web/web/css/fonts/LICENSE.txt deleted file mode 100644 index d645695..0000000 --- a/radicale_web/web/css/fonts/LICENSE.txt +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/radicale_web/web/css/fonts/Roboto-Light.woff2 b/radicale_web/web/css/fonts/Roboto-Light.woff2 Binary files differdeleted file mode 100644 index 2882017..0000000 --- a/radicale_web/web/css/fonts/Roboto-Light.woff2 +++ /dev/null diff --git a/radicale_web/web/css/fonts/Roboto-Regular.woff2 b/radicale_web/web/css/fonts/Roboto-Regular.woff2 Binary files differdeleted file mode 100644 index f966196..0000000 --- a/radicale_web/web/css/fonts/Roboto-Regular.woff2 +++ /dev/null diff --git a/radicale_web/web/css/icon.png b/radicale_web/web/css/icon.png Binary files differdeleted file mode 100644 index a9c9c04..0000000 --- a/radicale_web/web/css/icon.png +++ /dev/null diff --git a/radicale_web/web/css/main.css b/radicale_web/web/css/main.css deleted file mode 100644 index 7b8330b..0000000 --- a/radicale_web/web/css/main.css +++ /dev/null @@ -1,44 +0,0 @@ -@import url(fonts.css); -body { background: #e4e9f6; color: #424247; display: flex; flex-direction: column; font-family: Roboto, sans; font-size: 14pt; line-height: 1.4; margin: 0; min-height: 100vh; } - -a { color: inherit; } - -nav, footer { background: #a40000; color: white; padding: 0 20%; } -nav ul, footer ul { display: flex; flex-wrap: wrap; margin: 0; padding: 0; } -nav ul li, footer ul li { display: block; padding: 0 1em 0 0; } -nav ul li a, footer ul li a { color: inherit; display: block; padding: 1em 0.5em 1em 0; text-decoration: inherit; transition: 0.2s; } -nav ul li a:hover, nav ul li a:focus, footer ul li a:hover, footer ul li a:focus { color: black; outline: none; } - -header { background: url(logo.svg), linear-gradient(to bottom right, #050a02, black); background-position: 22% 45%; background-repeat: no-repeat; color: #efdddd; font-size: 1.5em; min-height: 250px; overflow: auto; padding: 3em 22%; text-shadow: 0.2em 0.2em 0.2em rgba(0, 0, 0, 0.5); } -header > * { padding-left: 220px; } -header h1 { font-size: 2.5em; font-weight: lighter; margin: 0.5em 0; } - -main { flex: 1; } - -section { padding: 0 20% 2em; } -section:not(:last-child) { border-bottom: 1px dashed #ccc; } -section h1 { background: linear-gradient(to bottom right, #050a02, black); color: #e5dddd; font-size: 2.5em; margin: 0 -33.33% 1em; padding: 1em 33.33%; } -section h2, section h3, section h4 { font-weight: lighter; margin: 1.5em 0 1em; } - -article { border-top: 1px solid transparent; position: relative; margin: 3em 0; } -article aside { box-sizing: border-box; color: #aaa; font-size: 0.8em; right: -30%; top: 0.5em; position: absolute; } -article:before { border-top: 1px dashed #ccc; content: ""; display: block; left: -33.33%; position: absolute; right: -33.33%; } - -pre { border-radius: 3px; background: black; color: #d3d5db; margin: 0 -1em; overflow-x: auto; padding: 1em; } - -table { border-collapse: collapse; font-size: 0.8em; margin: auto; } -table td { border: 1px solid #ccc; padding: 0.5em; } - -dl dt { margin-bottom: 0.5em; margin-top: 1em; } - -@media (max-width: 800px) { body { font-size: 12pt; } - header, section { padding-left: 2em; padding-right: 2em; } - nav, footer { padding-left: 0; padding-right: 0; } - nav ul, footer ul { justify-content: center; } - nav ul li, footer ul li { padding: 0 0.5em; } - nav ul li a, footer ul li a { padding: 1em 0; } - header { background-position: 50% 30px, 0 0; padding-bottom: 0; padding-top: 330px; text-align: center; } - header > * { margin: 0; padding-left: 0; } - section h1 { margin: 0 -0.8em 1.3em; padding: 0.5em 0; text-align: center; } - article aside { top: 0.5em; right: -1.5em; } - article:before { left: -2em; right: -2em; } } diff --git a/radicale_web/web/fn.js b/radicale_web/web/fn.js deleted file mode 100644 index 83094e4..0000000 --- a/radicale_web/web/fn.js +++ /dev/null @@ -1,966 +0,0 @@ -/** - * RadicaleWeb web interface for Radicale. - * Copyright (C) 2017 Unrud <unrud@openaliasbox.org> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -/** - * Server address (must not end with /) - * @const - * @type {string} - */ -var SERVER = (location.protocol + '//' + location.hostname + - (location.port ? ':' + location.port : '') + - location.pathname.replace(new RegExp("/+[^/]+/*(/index\.html?)?$"), "")); - -/** - * time between updates of collections. - * @const - */ -var UPDATE_INTERVAL = 10000; - -/** - * Regex to match and normalize color - * @const - */ -var COLOR_RE = new RegExp("^(#[0-9A-Fa-f]{6})(?:[0-9A-Fa-f]{2})?$"); - -/** - * Escape string for usage in XML - * @param {string} s - * @return {string} - */ -function escape_xml(s) { - return (s - .replace("&", "&") - .replace('"', """) - .replace("'", "'") - .replace("<", "<") - .replace(">", ">")); -} - -/** - * @enum {string} - */ -var CollectionType = { - PRINCIPAL: "PRINCIPAL", - ADDRESSBOOK: "ADDRESSBOOK", - CALENDAR_JOURNAL_TASKS: "CALENDAR_JOURNAL_TASKS", - CALENDAR_JOURNAL: "CALENDAR_JOURNAL", - CALENDAR_TASKS: "CALENDAR_TASKS", - JOURNAL_TASKS: "JOURNAL_TASKS", - CALENDAR: "CALENDAR", - JOURNAL: "JOURNAL", - TASKS: "TASKS", - is_subset: function(a, b) { - var components = a.split("_"); - var i; - for (i = 0; i < components.length; i++) { - if (b.search(components[i]) === -1) { - return false; - } - } - return true; - }, - union: function(a, b) { - if (a.search(this.ADDRESSBOOK) !== -1 || b.search(this.ADDRESSBOOK) !== -1) { - if (a && a !== this.ADDRESSBOOK || b && b !== this.ADDRESSBOOK) { - throw "Invalid union: " + a + " " + b; - } - return this.ADDRESSBOOK; - } - var union = ""; - if (a.search(this.CALENDAR) !== -1 || b.search(this.CALENDAR) !== -1) { - union += (union ? "_" : "") + this.CALENDAR; - } - if (a.search(this.JOURNAL) !== -1 || b.search(this.JOURNAL) !== -1) { - union += (union ? "_" : "") + this.JOURNAL; - } - if (a.search(this.TASKS) !== -1 || b.search(this.TASKS) !== -1) { - union += (union ? "_" : "") + this.TASKS; - } - return union; - } -} - -/** - * @constructor - * @struct - * @param {string} href Must always start and end with /. - * @param {CollectionType} type - * @param {string} displayname - * @param {string} description - * @param {string} color - */ -function Collection(href, type, displayname, description, color) { - this.href = href; - this.type = type; - this.displayname = displayname; - this.color = color; - this.description = description; -} - -/** - * Find the principal collection. - * @param {string} user - * @param {string} password - * @param {function(?Collection, ?string)} callback Returns result or error - * @return {XMLHttpRequest} - */ -function get_principal(user, password, callback) { - var request = new XMLHttpRequest(); - request.open("PROPFIND", SERVER, true, user, password); - request.onreadystatechange = function() { - if (request.readyState !== 4) { - return; - } - if (request.status === 207) { - var xml = request.responseXML; - var principal_element = xml.querySelector("*|multistatus:root > *|response:first-of-type > *|propstat > *|prop > *|current-user-principal > *|href"); - var displayname_element = xml.querySelector("*|multistatus:root > *|response:first-of-type > *|propstat > *|prop > *|displayname"); - if (principal_element) { - callback(new Collection( - principal_element.textContent, - CollectionType.PRINCIPAL, - displayname_element ? displayname_element.textContent : "", - "", - ""), null); - } else { - callback(null, "Internal error"); - } - } else { - callback(null, request.status + " " + request.statusText); - } - } - request.send('<?xml version="1.0" encoding="utf-8" ?>' + - '<propfind xmlns="DAV:">' + - '<prop>' + - '<current-user-principal />' + - '<displayname />' + - '</prop>' + - '</propfind>'); - return request; -} - -/** - * Find all calendars and addressbooks in collection. - * @param {string} user - * @param {string} password - * @param {Collection} collection - * @param {function(?Array<Collection>, ?string)} callback Returns result or error - * @return {XMLHttpRequest} - */ -function get_collections(user, password, collection, callback) { - var request = new XMLHttpRequest(); - request.open("PROPFIND", SERVER + collection.href, true, user, password); - request.setRequestHeader("depth", "1"); - request.onreadystatechange = function() { - if (request.readyState !== 4) { - return; - } - if (request.status === 207) { - var xml = request.responseXML; - var collections = []; - var response_query = "*|multistatus:root > *|response"; - var responses = xml.querySelectorAll(response_query); - var i; - for (i = 0; i < responses.length; i++) { - var response = responses[i]; - var href_element = response.querySelector(response_query + " > *|href"); - var resourcetype_query = response_query + " > *|propstat > *|prop > *|resourcetype"; - var resourcetype_element = response.querySelector(resourcetype_query); - var displayname_element = response.querySelector(response_query + " > *|propstat > *|prop > *|displayname"); - var calendarcolor_element = response.querySelector(response_query + " > *|propstat > *|prop > *|calendar-color"); - var addressbookcolor_element = response.querySelector(response_query + " > *|propstat > *|prop > *|addressbook-color"); - var calendardesc_element = response.querySelector(response_query + " > *|propstat > *|prop > *|calendar-description"); - var addressbookdesc_element = response.querySelector(response_query + " > *|propstat > *|prop > *|addressbook-description"); - var components_query = response_query + " > *|propstat > *|prop > *|supported-calendar-component-set"; - var components_element = response.querySelector(components_query); - var href = href_element ? href_element.textContent : ""; - var displayname = displayname_element ? displayname_element.textContent : ""; - var type = ""; - var color = ""; - var description = ""; - if (resourcetype_element) { - if (resourcetype_element.querySelector(resourcetype_query + " > *|addressbook")) { - type = CollectionType.ADDRESSBOOK; - color = addressbookcolor_element ? addressbookcolor_element.textContent : ""; - description = addressbookdesc_element ? addressbookdesc_element.textContent : ""; - } else if (resourcetype_element.querySelector(resourcetype_query + " > *|calendar")) { - if (components_element) { - if (components_element.querySelector(components_query + " > *|comp[name=VEVENT]")) { - type = CollectionType.union(type, CollectionType.CALENDAR); - } - if (components_element.querySelector(components_query + " > *|comp[name=VJOURNAL]")) { - type = CollectionType.union(type, CollectionType.JOURNAL); - } - if (components_element.querySelector(components_query + " > *|comp[name=VTODO]")) { - type = CollectionType.union(type, CollectionType.TASKS); - } - } - color = calendarcolor_element ? calendarcolor_element.textContent : ""; - description = calendardesc_element ? calendardesc_element.textContent : ""; - } - } - // Quirks - if (href === (displayname ? "/" + displayname + "/" : "/")) { - displayname = ""; - } - var sane_color = color.trim(); - if (sane_color) { - var color_match = COLOR_RE.exec(sane_color); - if (color_match) { - sane_color = color_match[1]; - } else { - sane_color = ""; - } - } - if (href.substr(-1) === "/" && href !== collection.href && type) { - collections.push(new Collection(href, type, displayname, description, sane_color)); - } - } - collections.sort(function(a, b) { - /** @type {string} */ var ca = a.displayname || a.href; - /** @type {string} */ var cb = b.displayname || b.href; - return ca.localeCompare(cb); - }); - callback(collections, null); - } else { - callback(null, request.status + " " + request.statusText); - } - }; - request.send('<?xml version="1.0" encoding="utf-8" ?>' + - '<propfind xmlns="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav" xmlns:CR="urn:ietf:params:xml:ns:carddav" xmlns:I="http://apple.com/ns/ical/" xmlns:INF="http://inf-it.com/ns/ab/">' + - '<prop>' + - '<resourcetype />' + - '<displayname />' + - '<I:calendar-color />' + - '<INF:addressbook-color />' + - '<C:calendar-description />' + - '<C:supported-calendar-component-set />' + - '<CR:addressbook-description />' + - '</prop>' + - '</propfind>'); - return request; -} - -/** - * @param {string} user - * @param {string} password - * @param {Collection} collection - * @param {function(?string)} callback Returns error or null - * @return {XMLHttpRequest} - */ -function delete_collection(user, password, collection, callback) { - var request = new XMLHttpRequest(); - request.open("DELETE", SERVER + collection.href, true, user, password); - request.onreadystatechange = function() { - if (request.readyState !== 4) { - return; - } - if (200 <= request.status && request.status < 300) { - callback(null); - } else { - callback(request.status + " " + request.statusText); - } - }; - request.send(); - return request; -} - -/** - * @param {string} user - * @param {string} password - * @param {Collection} collection - * @param {boolean} create - * @param {function(?string)} callback Returns error or null - * @return {XMLHttpRequest} - */ -function create_edit_collection(user, password, collection, create, callback) { - var request = new XMLHttpRequest(); - request.open(create ? "MKCOL" : "PROPPATCH", SERVER + collection.href, true, user, password); - request.onreadystatechange = function() { - if (request.readyState !== 4) { - return; - } - if (200 <= request.status && request.status < 300) { - callback(null); - } else { - callback(request.status + " " + request.statusText); - } - }; - var displayname = escape_xml(collection.displayname); - var calendar_color = ""; - var addressbook_color = ""; - var calendar_description = ""; - var addressbook_description = ""; - var resourcetype; - var components = ""; - if (collection.type === CollectionType.ADDRESSBOOK) { - addressbook_color = escape_xml(collection.color + (collection.color ? "ff" : "")); - addressbook_description = escape_xml(collection.description); - resourcetype = '<CR:addressbook />'; - } else { - calendar_color = escape_xml(collection.color + (collection.color ? "ff" : "")); - calendar_description = escape_xml(collection.description); - resourcetype = '<C:calendar />'; - if (CollectionType.is_subset(CollectionType.CALENDAR, collection.type)) { - components += '<C:comp name="VEVENT" />'; - } - if (CollectionType.is_subset(CollectionType.JOURNAL, collection.type)) { - components += '<C:comp name="VJOURNAL" />'; - } - if (CollectionType.is_subset(CollectionType.TASKS, collection.type)) { - components += '<C:comp name="VTODO" />'; - } - } - var xml_request = create ? "mkcol" : "propertyupdate"; - request.send('<?xml version="1.0" encoding="UTF-8" ?>' + - '<' + xml_request + ' xmlns="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav" xmlns:CR="urn:ietf:params:xml:ns:carddav" xmlns:I="http://apple.com/ns/ical/" xmlns:INF="http://inf-it.com/ns/ab/">' + - '<set>' + - '<prop>' + - (create ? '<resourcetype><collection />' + resourcetype + '</resourcetype>' : '') + - '<C:supported-calendar-component-set>' + components + '</C:supported-calendar-component-set>' + - '<displayname>' + displayname + '</displayname>' + - '<I:calendar-color>' + calendar_color + '</I:calendar-color>' + - '<INF:addressbook-color>' + addressbook_color + '</INF:addressbook-color>' + - '<CR:addressbook-description>' + addressbook_description + '</CR:addressbook-description>' + - '<C:calendar-description>' + calendar_description + '</C:calendar-description>' + - '</prop>' + - '</set>' + - '</' + xml_request + '>'); - return request; -} - -/** - * @param {string} user - * @param {string} password - * @param {Collection} collection - * @param {function(?string)} callback Returns error or null - * @return {XMLHttpRequest} - */ -function create_collection(user, password, collection, callback) { - return create_edit_collection(user, password, collection, true, callback); -} - -/** - * @param {string} user - * @param {string} password - * @param {Collection} collection - * @param {function(?string)} callback Returns error or null - * @return {XMLHttpRequest} - */ -function edit_collection(user, password, collection, callback) { - return create_edit_collection(user, password, collection, false, callback); -} - -/** - * @interface - */ -function Scene() {} -/** - * Scene is on top of stack and visible. - */ -Scene.prototype.show = function() {}; -/** - * Scene is no longer visible. - */ -Scene.prototype.hide = function() {}; -/** - * Scene is removed from scene stack. - */ -Scene.prototype.release = function() {}; - - -/** - * @type {Array<Scene>} - */ -var scene_stack = []; - -/** - * Push scene onto stack. - * @param {Scene} scene - * @param {boolean} replace Replace the scene on top of the stack. - */ -function push_scene(scene, replace) { - if (scene_stack.length >= 1) { - scene_stack[scene_stack.length - 1].hide(); - if (replace) { - scene_stack.pop().release(); - } - } - scene_stack.push(scene); - scene.show(); -} - -/** - * Remove scenes from stack. - * @param {number} index New top of stack - */ -function pop_scene(index) { - if (scene_stack.length - 1 <= index) { - return; - } - scene_stack[scene_stack.length - 1].hide(); - while (scene_stack.length - 1 > index) { - var old_length = scene_stack.length; - scene_stack.pop().release(); - if (old_length - 1 === index + 1) { - break; - } - } - if (scene_stack.length >= 1) { - var scene = scene_stack[scene_stack.length - 1]; - scene.show(); - } else { - throw "Scene stack is empty"; - } -} - -/** - * @constructor - * @implements {Scene} - */ -function LoginScene() { - var othis = this; - var html_scene = document.getElementById("loginscene"); - var form = html_scene.querySelector("[name=form]"); - var user_form = html_scene.querySelector("[name=user]"); - var password_form = html_scene.querySelector("[name=password]"); - var error_form = html_scene.querySelector("[name=error]"); - var logout_view = document.getElementById("logoutview"); - var logout_user_form = logout_view.querySelector("[name=user]"); - var logout_btn = logout_view.querySelector("[name=link]"); - - /** @type {?number} */ var scene_index = null; - var user = ""; - var error = ""; - /** @type {?XMLHttpRequest} */ var principal_req = null; - - function read_form() { - user = user_form.value; - } - - function fill_form() { - user_form.value = user; - password_form.value = ""; - error_form.textContent = error ? "Error: " + error : ""; - } - - function onlogin() { - try { - read_form(); - var password = password_form.value; - if (user) { - error = ""; - // setup logout - logout_view.style.display = "block"; - logout_btn.onclick = onlogout; - logout_user_form.textContent = user; - // Fetch principal - var loading_scene = new LoadingScene(); - push_scene(loading_scene, false); - principal_req = get_principal(user, password, function(collection, error1) { - if (scene_index === null) { - return; - } - principal_req = null; - if (error1) { - error = error1; - pop_scene(scene_index); - } else { - // show collections - var saved_user = user; - user = ""; - var collections_scene = new CollectionsScene( - saved_user, password, collection, function(error1) { - error = error1; - user = saved_user; - }); - push_scene(collections_scene, true); - } - }); - } else { - error = "Username is empty"; - fill_form(); - } - } catch(err) { - console.error(err); - } - return false; - } - - function onlogout() { - try { - if (scene_index === null) { - return false; - } - user = ""; - pop_scene(scene_index); - } catch (err) { - console.error(err); - } - return false; - } - - this.show = function() { - this.release(); - fill_form(); - form.onsubmit = onlogin; - html_scene.style.display = "block"; - user_form.focus(); - scene_index = scene_stack.length - 1; - }; - this.hide = function() { - read_form(); - html_scene.style.display = "none"; - form.onsubmit = null; - }; - this.release = function() { - scene_index = null; - // cancel pending requests - if (principal_req !== null) { - principal_req.abort(); - principal_req = null; - } - // remove logout - logout_view.style.display = "none"; - logout_btn.onclick = null; - logout_user_form.textContent = ""; - }; -} - -/** - * @constructor - * @implements {Scene} - */ -function LoadingScene() { - var html_scene = document.getElementById("loadingscene"); - this.show = function() { - html_scene.style.display = "block"; - }; - this.hide = function() { - html_scene.style.display = "none"; - }; - this.release = function() {}; -} - -/** - * @constructor - * @implements {Scene} - * @param {string} user - * @param {string} password - * @param {Collection} collection The principal collection. - * @param {function(string)} onerror Called when an error occurs, before the - * scene is popped. - */ -function CollectionsScene(user, password, collection, onerror) { - var othis = this; - var html_scene = document.getElementById("collectionsscene"); - var template = html_scene.querySelector("[name=collectiontemplate]"); - var new_btn = html_scene.querySelector("[name=new]"); - - /** @type {?number} */ var scene_index = null; - var saved_template_display = null; - /** @type {?XMLHttpRequest} */ var collections_req = null; - var timer = null; - /** @type {?Array<Collection>} */ var collections = null; - /** @type {Array<Node>} */ nodes = []; - - function onnew() { - try { - var create_collection_scene = new CreateEditCollectionScene(user, password, collection); - push_scene(create_collection_scene, false); - } catch(err) { - console.error(err); - } - return false; - } - - function onedit(collection) { - try { - var edit_collection_scene = new CreateEditCollectionScene(user, password, collection); - push_scene(edit_collection_scene, false); - } catch(err) { - console.error(err); - } - return false; - } - - function ondelete(collection) { - try { - var delete_collection_scene = new DeleteCollectionScene(user, password, collection); - push_scene(delete_collection_scene, false); - } catch(err) { - console.error(err); - } - return false; - } - - function show_collections(collections) { - nodes.forEach(function(node) { - template.parentNode.removeChild(node); - }); - nodes = []; - collections.forEach(function (collection) { - var node = template.cloneNode(true); - var title_form = node.querySelector("[name=title]"); - var description_form = node.querySelector("[name=description]"); - var url_form = node.querySelector("[name=url]"); - var color_form = node.querySelector("[name=color]"); - var delete_btn = node.querySelector("[name=delete]"); - var edit_btn = node.querySelector("[name=edit]"); - if (collection.color) { - color_form.style.color = collection.color; - } else { - color_form.style.display = "none"; - } - var possible_types = [CollectionType.ADDRESSBOOK]; - [CollectionType.CALENDAR, ""].forEach(function(e) { - [CollectionType.union(e, CollectionType.JOURNAL), e].forEach(function(e) { - [CollectionType.union(e, CollectionType.TASKS), e].forEach(function(e) { - if (e) { - possible_types.push(e); - } - }); - }); - }); - possible_types.forEach(function(e) { - if (e !== collection.type) { - node.querySelector("[name=" + e + "]").style.display = "none"; - } - }); - title_form.textContent = collection.displayname || collection.href; - description_form.textContent = collection.description; - href = SERVER.replace("//", "//" + user + "@") + collection.href; - url_form.href = href; - url_form.textContent = href; - delete_btn.onclick = function(ev) {return ondelete(collection);}; - edit_btn.onclick = function(ev) {return onedit(collection);}; - node.style.display = saved_template_display; - nodes.push(node); - template.parentNode.insertBefore(node, template); - }); - } - - function update() { - if (collections === null) { - var loading_scene = new LoadingScene(); - push_scene(loading_scene, false); - } - collections_req = get_collections(user, password, collection, function(collections1, error) { - if (scene_index === null) { - return; - } - collections_req = null; - if (error) { - onerror(error); - pop_scene(scene_index - 1) - } else { - var old_collections = collections; - collections = collections1; - timer = window.setTimeout(update, UPDATE_INTERVAL); - if (old_collections === null) { - pop_scene(scene_index); - } else { - show_collections(collections); - } - } - }); - } - - this.show = function() { - saved_template_display = template.style.display; - template.style.display = "none"; - html_scene.style.display = "block"; - new_btn.onclick = onnew; - if (scene_index === null) { - scene_index = scene_stack.length - 1; - if (collections === null && collections_req !== null) { - pop_scene(scene_index - 1); - return; - } - update(); - } else if (collections === null) { - pop_scene(scene_index - 1); - } else { - if (timer !== null) { - show_collections(collections); - } else { - collections = null; - update(); - } - } - }; - this.hide = function() { - html_scene.style.display = "none"; - template.style.display = saved_template_display; - new_btn.onclick = null; - if (timer !== null) { - window.clearTimeout(timer); - timer = null; - } - if (collections !== null && collections_req !== null) { - collections_req.abort(); - collections_req = null; - } - show_collections([]); - }; - this.release = function() { - scene_index = null; - if (collections_req !== null) { - collections_req.abort(); - collections_req = null; - } - }; -} - -/** - * @constructor - * @implements {Scene} - * @param {string} user - * @param {string} password - * @param {Collection} collection - */ -function DeleteCollectionScene(user, password, collection) { - var html_scene = document.getElementById("deletecollectionscene"); - var title_form = html_scene.querySelector("[name=title]"); - var error_form = html_scene.querySelector("[name=error]"); - var delete_btn = html_scene.querySelector("[name=delete]"); - var cancel_btn = html_scene.querySelector("[name=cancel]"); - var no_btn = html_scene.querySelector("[name=no]"); - - /** @type {?number} */ var scene_index = null; - /** @type {?XMLHttpRequest} */ var delete_req = null; - var error = ""; - - function ondelete() { - try { - var loading_scene = new LoadingScene(); - push_scene(loading_scene); - delete_req = delete_collection(user, password, collection, function(error1) { - if (scene_index === null) { - return; - } - delete_req = null; - if (error1) { - error = error1; - pop_scene(scene_index); - } else { - pop_scene(scene_index - 1); - } - }); - } catch(err) { - console.error(err); - } - return false; - } - - function oncancel() { - try { - pop_scene(scene_index - 1); - } catch(err) { - console.error(err); - } - return false; - } - - this.show = function() { - this.release(); - scene_index = scene_stack.length - 1; - html_scene.style.display = "block"; - title_form.textContent = collection.displayname || collection.href; - error_form.textContent = error ? "Error: " + error : ""; - delete_btn.onclick = ondelete; - cancel_btn.onclick = oncancel; - }; - this.hide = function() { - html_scene.style.display = "none"; - cancel_btn.onclick = null; - delete_btn.onclick = null; - }; - this.release = function() { - scene_index = null; - if (delete_req !== null) { - delete_req.abort(); - delete_req = null; - } - }; -} - -/** - * Generate random hex number. - * @param {number} length - * @return {string} - */ -function randHex(length) { - var s = Math.floor(Math.random() * Math.pow(16, length)).toString(16); - while (s.length < length) { - s = "0" + s; - } - return s; -} - -/** - * @constructor - * @implements {Scene} - * @param {string} user - * @param {string} password - * @param {Collection} collection if it's a principal collection, a new - * collection will be created inside of it. - * Otherwise the collection will be edited. - */ -function CreateEditCollectionScene(user, password, collection) { - var edit = collection.type !== CollectionType.PRINCIPAL; - var html_scene = document.getElementById(edit ? "editcollectionscene" : "createcollectionscene"); - var title_form = edit ? html_scene.querySelector("[name=title]") : null; - var error_form = html_scene.querySelector("[name=error]"); - var displayname_form = html_scene.querySelector("[name=displayname]"); - var description_form = html_scene.querySelector("[name=description]"); - var type_form = html_scene.querySelector("[name=type]"); - var color_form = html_scene.querySelector("[name=color]"); - var submit_btn = html_scene.querySelector("[name=submit]"); - var cancel_btn = html_scene.querySelector("[name=cancel]"); - - /** @type {?number} */ var scene_index = null; - /** @type {?XMLHttpRequest} */ var create_edit_req = null; - var error = ""; - /** @type {?Element} */ var saved_type_form = null; - - var href = edit ? collection.href : ( - collection.href + randHex(8) + "-" + randHex(4) + "-" + randHex(4) + - "-" + randHex(4) + "-" + randHex(12) + "/"); - var displayname = edit ? collection.displayname : ""; - var description = edit ? collection.description : ""; - var type = edit ? collection.type : CollectionType.CALENDAR_JOURNAL_TASKS; - var color = edit && collection.color ? collection.color : "#" + randHex(6); - - function remove_invalid_types() { - if (!edit) { - return; - } - /** @type {HTMLOptionsCollection} */ var options = type_form.options; - // remove all options that are not supersets - var i; - for (i = options.length - 1; i >= 0; i--) { - if (!CollectionType.is_subset(type, options[i].value)) { - options.remove(i); - } - } - } - - function read_form() { - displayname = displayname_form.value; - description = description_form.value; - type = type_form.value; - color = color_form.value; - } - - function fill_form() { - displayname_form.value = displayname; - description_form.value = description; - type_form.value = type; - color_form.value = color; - error_form.textContent = error ? "Error: " + error : ""; - } - - function onsubmit() { - try { - read_form(); - var sane_color = color.trim(); - if (sane_color) { - var color_match = COLOR_RE.exec(sane_color); - if (!color_match) { - error = "Invalid color"; - fill_form(); - return false; - } - sane_color = color_match[1]; - } - var loading_scene = new LoadingScene(); - push_scene(loading_scene); - var collection = new Collection(href, type, displayname, description, sane_color); - var callback = function(error1) { - if (scene_index === null) { - return; - } - create_edit_req = null; - if (error1) { - error = error1; - pop_scene(scene_index); - } else { - pop_scene(scene_index - 1); - } - }; - if (edit) { - create_edit_req = edit_collection(user, password, collection, callback); - } else { - create_edit_req = create_collection(user, password, collection, callback); - } - } catch(err) { - console.error(err); - } - return false; - } - - function oncancel() { - try { - pop_scene(scene_index - 1); - } catch(err) { - console.error(err); - } - return false; - } - - this.show = function() { - this.release(); - scene_index = scene_stack.length - 1; - // Clone type_form because it's impossible to hide options without removing them - saved_type_form = type_form; - type_form = type_form.cloneNode(true); - saved_type_form.parentNode.replaceChild(type_form, saved_type_form); - remove_invalid_types(); - html_scene.style.display = "block"; - if (edit) { - title_form.textContent = collection.displayname || collection.href; - } - fill_form(); - submit_btn.onclick = onsubmit; - cancel_btn.onclick = oncancel; - }; - this.hide = function() { - read_form(); - html_scene.style.display = "none"; - // restore type_form - type_form.parentNode.replaceChild(saved_type_form, type_form); - type_form = saved_type_form; - saved_type_form = null; - submit_btn.onclick = null; - cancel_btn.onclick = null; - }; - this.release = function() { - scene_index = null; - if (create_edit_req !== null) { - create_edit_req.abort(); - create_edit_req = null; - } - }; -} - -function main() { - push_scene(new LoginScene(), false); -} - -window.addEventListener("load", main); diff --git a/radicale_web/web/index.html b/radicale_web/web/index.html deleted file mode 100644 index 99fb9f4..0000000 --- a/radicale_web/web/index.html +++ /dev/null @@ -1,106 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> - <head> - <meta charset="utf-8" /> - <meta name="viewport" content="width=device-width initial-scale=1" /> - <meta http-equiv="X-UA-Compatible" content="IE=edge" /> - <script src="fn.js"></script> - <title>Web interface for Radicale</title> - <link href="css/main.css" media="screen" rel="stylesheet" /> - <link href="css/icon.png" type="image/png" rel="shortcut icon" /> - </head> - <body> - <nav> - <ul> - <li><a href="infcloud" title="CalDAV/CardDAV web client">InfCloud</a></li> - <li id="logoutview" style="display: none;"><a href="" name="link">Logout [<span name="user"></span>]</a></li> - </ul> - </nav> - <section id="loginscene" style="display: none;"> - <h1>Login</h1> - <form name="form"> - <input name="user" type="text" placeholder="Username"><br> - <input name="password" type="password" placeholder="Password"><br> - <span style="color: #A40000;" name="error"></span><br> - <button type="submit">Next</button> - </form> - </section> - <section id="loadingscene" style="display: none;"> - <h1>Loading</h1> - Please wait... - </section> - <section id="collectionsscene" style="display: none;"> - <h1>Collections</h1> - <a href="" name="new">Create new addressbook or calendar</a> - <article name="collectiontemplate"> - <h2><span name="color">█ </span><span name="title">Title</span> <small>[<span name="ADDRESSBOOK">addressbook</span><span name="CALENDAR_JOURNAL_TASKS">calendar, journal and tasks</span><span name="CALENDAR_JOURNAL">calendar and journal</span><span name="CALENDAR_TASKS">calendar and tasks</span><span name="JOURNAL_TASKS">journal and tasks</span><span name="CALENDAR">calendar</span><span name="JOURNAL">journal</span><span name="TASKS">tasks</span>]</small></h2> - <span name="description">Description</span> - <ul> - <li>URL: <a name="url">url</a></li> - <li><a href="" name="edit">Edit</a></li> - <li><a href="" name="delete">Delete</a></li> - </ul> - </article> - </section> - <section id="editcollectionscene" style="display: none;"> - <h1>Edit collection</h1> - <h2>Edit <span name="title">title</span>:</h2> - <form> - Title:<br> - <input name="displayname" type="text"><br> - Description:<br> - <input name="description" type="text"><br> - Type:<br> - <select name="type"> - <option value="ADDRESSBOOK">addressbook</option> - <option value="CALENDAR_JOURNAL_TASKS">calendar, journal and tasks</option> - <option value="CALENDAR_JOURNAL">calendar and journal</option> - <option value="CALENDAR_TASKS">calendar and tasks</option> - <option value="JOURNAL_TASKS">journal and tasks</option> - <option value="CALENDAR">calendar</option> - <option value="JOURNAL">journal</option> - <option value="TASKS">tasks</option> - </select><br> - Color:<br> - <input name="color" type="color"><br> - <span style="color: #A40000;" name="error"></span><br> - <button type="submit" name="submit">Save</button> - <button type="button" name="cancel">Cancel</button> - </form> - </section> - <section id="createcollectionscene" style="display: none;"> - <h1>Create new collection</h1> - <form> - Title:<br> - <input name="displayname" type="text"><br> - Description:<br> - <input name="description" type="text"><br> - Type:<br> - <select name="type"> - <option value="ADDRESSBOOK">addressbook</option> - <option value="CALENDAR_JOURNAL_TASKS">calendar, journal and tasks</option> - <option value="CALENDAR_JOURNAL">calendar and journal</option> - <option value="CALENDAR_TASKS">calendar and tasks</option> - <option value="JOURNAL_TASKS">journal and tasks</option> - <option value="CALENDAR">calendar</option> - <option value="JOURNAL">journal</option> - <option value="TASKS">tasks</option> - </select><br> - Color:<br> - <input name="color" type="color"><br> - <span style="color: #A40000;" name="error"></span><br> - <button type="submit" name="submit">Create</button> - <button type="button" name="cancel">Cancel</button> - </form> - </section> - <section id="deletecollectionscene" style="display: none;"> - <h1>Delete collection</h1> - <h2>Delete <span name="title">title</span>?</h2> - <span style="color: #A40000;" name="error"></span><br> - <form> - <button type="button" name="delete">Yes</button> - <button type="button" name="cancel">No</button> - </form> - </section> - </body> -</html> @@ -7,21 +7,21 @@ import re from setuptools import setup init_path = os.path.join(os.path.dirname(__file__), - "radicale_web", "__init__.py") + "radicale_infcloud", "__init__.py") with open(init_path) as f: version = re.search(r'VERSION = "([^"]+)"', f.read()).group(1) -os.chdir("radicale_web") +os.chdir("radicale_infcloud") web_data = list(filter(os.path.isfile, glob.glob("web/**/*[!~]", recursive=True))) os.chdir(os.pardir) setup( - name="Radicale_Web", + name="Radicale_InfCloud", version=version, - description="Web interface for Radicale", + description="InfCloud for Radicale", author="Unrud", author_email="unrud@openaliasbox.org", url="http://github.com/Unrud/RadicaleWeb", license="GNU AGPL v3", platforms="Any", - packages=["radicale_web"], - package_data={"radicale_web": web_data}) + packages=["radicale_infcloud"], + package_data={"radicale_infcloud": web_data}) |