diff options
| author | Christophe Simonis <chs@openerp.com> | 2012-11-06 17:41:49 +0100 |
|---|---|---|
| committer | Christophe Simonis <chs@openerp.com> | 2012-11-06 17:41:49 +0100 |
| commit | c09a6600a582f1e032e34215b9c3e14e576af8a0 (patch) | |
| tree | 0ba9e87b51b168132a5bc553febad56a1ae4ebed /addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/dhtmlxscheduler_serialize.js | |
| parent | 595a2b3bb160351bca19c40414ede990f45376ea (diff) | |
| parent | 660443885c68b1e86536bafe7e7b01400f04f1e2 (diff) | |
merge upstream
bzr revid: chs@openerp.com-20121106164149-hgj1250avzf12u68
Diffstat (limited to 'addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/dhtmlxscheduler_serialize.js')
| -rw-r--r-- | addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/dhtmlxscheduler_serialize.js | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/dhtmlxscheduler_serialize.js b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/dhtmlxscheduler_serialize.js new file mode 100644 index 00000000000..92273c13b44 --- /dev/null +++ b/addons/web_calendar/static/lib/dhtmlxScheduler/sources/ext/dhtmlxscheduler_serialize.js @@ -0,0 +1,77 @@ +/* +This software is allowed to use under GPL or you need to obtain Commercial or Enterise License
+to use it in non-GPL project. Please contact sales@dhtmlx.com for details +*/ +//redefine this method, if you want to provide a custom set of attributes for serialization
+scheduler.data_attributes=function(){
+ var attrs = [];
+ var format = scheduler.templates.xml_format;
+ for (var a in this._events){
+ var ev = this._events[a];
+ for (var name in ev)
+ if (name.substr(0,1) !="_")
+ attrs.push([name,((name == "start_date" || name == "end_date")?format:null)]);
+ break;
+ }
+ return attrs;
+}
+
+scheduler.toXML = function(header){
+ var xml = [];
+ var attrs = this.data_attributes();
+
+
+ for (var a in this._events){
+ var ev = this._events[a];
+ if (ev.id.toString().indexOf("#")!=-1) continue;
+ xml.push("<event>");
+ for (var i=0; i < attrs.length; i++)
+ xml.push("<"+attrs[i][0]+"><![CDATA["+(attrs[i][1]?attrs[i][1](ev[attrs[i][0]]):ev[attrs[i][0]])+"]]></"+attrs[i][0]+">");
+
+ xml.push("</event>");
+ }
+ return (header||"")+"<data>"+xml.join("\n")+"</data>";
+};
+
+scheduler.toJSON = function(){
+ var json = [];
+ var attrs = this.data_attributes();
+ for (var a in this._events){
+ var ev = this._events[a];
+ if (ev.id.toString().indexOf("#")!=-1) continue;
+ var ev = this._events[a];
+ var line =[];
+ for (var i=0; i < attrs.length; i++)
+ line.push(' "'+attrs[i][0]+'": "'+((attrs[i][1]?attrs[i][1](ev[attrs[i][0]]):ev[attrs[i][0]])||"").toString().replace(/\n/g,"")+'" ');
+ json.push("{"+line.join(",")+"}");
+ }
+ return "["+json.join(",\n")+"]";
+};
+
+
+scheduler.toICal = function(header){
+ var start = "BEGIN:VCALENDAR\nVERSION:2.0\nPRODID:-//dhtmlXScheduler//NONSGML v2.2//EN\nDESCRIPTION:";
+ var end = "END:VCALENDAR";
+ var format = scheduler.date.date_to_str("%Y%m%dT%H%i%s");
+ var full_day_format = scheduler.date.date_to_str("%Y%m%d");
+
+ var ical = [];
+ for (var a in this._events){
+ var ev = this._events[a];
+ if (ev.id.toString().indexOf("#")!=-1) continue;
+
+
+ ical.push("BEGIN:VEVENT");
+ if (!ev._timed || (!ev.start_date.getHours() && !ev.start_date.getMinutes()))
+ ical.push("DTSTART:"+full_day_format(ev.start_date));
+ else
+ ical.push("DTSTART:"+format(ev.start_date));
+ if (!ev._timed || (!ev.end_date.getHours() && !ev.end_date.getMinutes()))
+ ical.push("DTEND:"+full_day_format(ev.end_date));
+ else
+ ical.push("DTEND:"+format(ev.end_date));
+ ical.push("SUMMARY:"+ev.text);
+ ical.push("END:VEVENT");
+ }
+ return start+(header||"")+"\n"+ical.join("\n")+"\n"+end;
+};
\ No newline at end of file |
