aboutsummaryrefslogtreecommitdiffstats
path: root/caldav.js
diff options
context:
space:
mode:
Diffstat (limited to 'caldav.js')
-rw-r--r--caldav.js25
1 files changed, 20 insertions, 5 deletions
diff --git a/caldav.js b/caldav.js
index 6f43d34..0f21ea6 100644
--- a/caldav.js
+++ b/caldav.js
@@ -1463,6 +1463,7 @@ function write (chunk) {
var events = [
'ontext',
+ 'oncdata',
'onopentag',
'onclosetag',
'onerror',
@@ -1643,6 +1644,10 @@ function write (chunk) {
this._fireHandler('ontext', data);
},
+ oncdata: function(data) {
+ this._fireHandler('oncdata', data);
+ },
+
onerror: function(data) {
//TODO: XXX implement handling of parsing errors.
//unlikely but possible if server goes down
@@ -2739,7 +2744,8 @@ function write (chunk) {
(function(module, ns) {
- var XHR = ns.require('xhr');
+ var Caldav = ns.require('caldav'),
+ XHR = ns.require('xhr');
/**
* Connection objects contain
@@ -2941,12 +2947,21 @@ function write (chunk) {
//value where key is local tag name
//and value is the text.
ontext: function(data) {
- var handler = this.handler;
- this.current[this.currentTag[handler.tagField]] =
- CalendarDataHandler.parseICAL(data);
- }
+ return CalendarDataHandler.ondata.call(this, data);
+ },
+
+ // Servers can also stash ical data inside of an xml cdata.
+ oncdata: function(data) {
+ return CalendarDataHandler.ondata.call(this, data);
+ },
});
+ CalendarDataHandler.ondata = function(data) {
+ var handler = this.handler;
+ this.current[this.currentTag[handler.tagField]] =
+ CalendarDataHandler.parseICAL(data);
+ };
+
/**
* Default ical parser handler.
*