2 <!-- SYNTHESIS SYNCML CLIENT Version 3.2 Configuration file -->
4 <sysync_config version="1.0">
6 <configvar name="logpath" value="$(defout_path)"/>
8 <!-- this string is output to every session debug logfile to identify the config in use -->
9 <configidstring>SyncEvolution client config</configidstring>
11 <!-- information about maximum supported message and object size (in bytes) -->
15 <!-- information for DevInf -->
25 <transport type="xpt">
26 <!-- allow HTTP 1.1 kepp-alive (multiple request-answer-exchanges in single TCP connection) -->
27 <keepconnection>true</keepconnection>
32 <looptimeout>5</looptimeout>
37 return "syuid" + NUMFORMAT(RANDOM(1000000),6,"0") + "." + (string)MILLISECONDS(NOW());
42 <!-- define script macros for scripts that are used by both vCalendar 1.0 and iCalendar 2.0 -->
44 <macro name="VCALENDAR_INCOMING_SCRIPT"><![CDATA[
48 // make sure we have all trailing and leading spaces eliminated
49 DESCRIPTION=NORMALIZED(DESCRIPTION);
50 SUMMARY=NORMALIZED(SUMMARY);
51 // make sure that we have a DESCRIPTION
52 if (DESCRIPTION==EMPTY) DESCRIPTION=SUMMARY;
56 // - handle duration cases
57 if (ISDURATION(DURATION)) {
58 if (DTEND==EMPTY) DTEND = DTSTART + DURATION;
59 if (DTSTART==EMPTY) DTSTART = DTEND - DURATION;
61 // - detect alldays in vCalendar 1.0 (0:00-0:00 or 23:59 localtime)
62 i = ALLDAYCOUNT(DTSTART,DTEND,TRUE);
63 if (ITEMDATATYPE()=="vCalendar10" && i>0) {
64 // DTSTART and DTEND represent allday event, make them date-only values
65 // - convert start to user zone (or floating) so it represents midnight
66 DTSTART = CONVERTTOUSERZONE(DTSTART);
67 MAKEALLDAY(DTSTART,DTEND,i);
69 // - shape attendees (and make sure ATTENDEES[] is assigned even for empty email addresses)
71 while(i<SIZE(ATTENDEES) || i<SIZE(ATTENDEE_CNS)) {
72 PARSEEMAILSPEC(ATTENDEES[i], CN, EM);
73 ATTENDEES[i] = EM; // pure email address
74 // in case we have no specific common name, use the one extracted from the email
75 // This catches the vCalendar 1.0 case and eventually ill-formed iCalendar 2.0 as well
76 if (ATTENDEE_CNS[i]==EMPTY)
78 // default participation status to needs-action
79 if (ATTENDEE_PARTSTATS[i]==EMPTY)
80 ATTENDEE_PARTSTATS[i]=1; // 1=needs action
84 PARSEEMAILSPEC(ORGANIZER, CN, EM);
85 ORGANIZER = EM; // pure email address
86 if (ORGANIZER_CN==EMPTY)
91 // - make sure we have at least a summary
92 if (SUMMARY==EMPTY) SUMMARY=DESCRIPTION; // use description if we don't have a summary
93 if (SUMMARY==EMPTY) SUMMARY="unnamed"; // set dummy summary if we still don't have one
94 // due shaping for non-iCalendar 2.0
95 if (ITEMDATATYPE()=="vCalendar10" && ALLDAYCOUNT(DUE,DUE,TRUE,TRUE)>0) {
99 // a workaround for funambol: adding 'action' for 'alarm'
100 if (ITEMDATATYPE()=="iCalendar20") {
101 if (ALARM_TIME!=EMPTY && ALARM_ACTION==EMPTY) {
102 ALARM_ACTION = "DISPLAY";
108 <macro name="VCALENDAR_OUTGOING_SCRIPT"><![CDATA[
109 // set UTC time of generation for iCalendar 2.0 DTSTAMP
111 // make sure we have all trailing and leading spaces eliminated
112 DESCRIPTION=NORMALIZED(DESCRIPTION);
113 SUMMARY=NORMALIZED(SUMMARY);
116 // - combine attendee email address and common name into single string for vCalendar 1.0
117 if (ITEMDATATYPE()=="vCalendar10") {
119 while(i<SIZE(ATTENDEES)) {
120 ATTENDEES[i] = MAKEEMAILSPEC(ATTENDEE_CNS[i], ATTENDEES[i]);
123 ORGANIZER = MAKEEMAILSPEC(ORGANIZER_CN, ORGANIZER);
128 // - Nothing special so far
130 // make sure we have at least a summary
131 if (SUMMARY==EMPTY) SUMMARY=SUBSTR(DESCRIPTION,0,32); // derive from description
132 if (SUMMARY==EMPTY) SUMMARY="unnamed"; // in case description is empty as well
133 // make sure that we have a DESCRIPTION
134 if (DESCRIPTION==EMPTY) DESCRIPTION=SUMMARY;
135 // do NOT send duration (some servers crash when doing so)
136 DURATION = UNASSIGNED;
138 if (ALARM_TIME!=EMPTY) {
139 if (ITEMDATATYPE()=="iCalendar20") {
140 if (ALARM_ACTION==EMPTY) ALARM_ACTION = "AUDIO";
143 if (ALARM_MSG==EMPTY) ALARM_MSG="alarm";
153 <!-- list of internal fields representing vCard data -->
154 <fieldlist name="contacts">
155 <field name="REV" type="timestamp" compare="never" age="yes"/>
157 <!-- Name elements -->
158 <field name="N_LAST" type="string" compare="always"/>
159 <field name="N_FIRST" type="string" compare="always"/>
160 <field name="N_MIDDLE" type="string" compare="always"/>
161 <field name="N_PREFIX" type="string" compare="conflict"/>
162 <field name="N_SUFFIX" type="string" compare="conflict"/>
163 <field name="NICKNAME" type="string" compare="conflict"/>
164 <field name="TITLE" type="string" compare="conflict" merge="fillempty"/>
166 <field name="FN" type="string" compare="conflict" merge="fillempty"/>
167 <field name="FILE-AS" type="string" compare="conflict" merge="fillempty"/>
169 <!-- categories and classification -->
170 <field name="CATEGORIES" array="yes" type="string" compare="conflict"/>
172 <!-- organisation -->
173 <field name="ORG_NAME" type="string" compare="slowsync" merge="fillempty"/>
174 <field name="ORG_DIVISION" type="string" compare="conflict" merge="fillempty"/>
175 <field name="ORG_OFFICE" type="string" compare="conflict" merge="fillempty"/>
176 <field name="ORG_TEAM" type="string" compare="conflict" merge="fillempty"/>
177 <field name="ROLE" type="string" compare="conflict" merge="fillempty"/>
179 <!-- birthday and anniversary (not necessarily the same) -->
180 <field name="BDAY" type="date" compare="conflict" merge="fillempty"/>
181 <field name="ANNIVERSARY" type="date" compare="conflict" merge="fillempty"/>
183 <!-- telephone numbers -->
184 <field name="TEL" array="yes" type="telephone" compare="conflict"/>
185 <field name="TEL_FLAGS" array="yes" type="integer" compare="conflict"/> <!-- offset 0 -->
186 <field name="TEL_LABEL" array="yes" type="string" compare="conflict"/> <!-- offset 1 -->
187 <field name="TEL_ID" array="yes" type="integer" compare="conflict"/> <!-- offset 2 -->
188 <field name="TEL_SLOT" array="yes" type="integer" compare="never"/> <!-- offset 3 -->
191 <field name="EMAIL" array="yes" type="multiline" compare="conflict"/>
192 <field name="EMAIL_FLAGS" array="yes" type="integer" compare="conflict"/> <!-- offset 0 -->
193 <field name="EMAIL_LABEL" array="yes" type="string" compare="conflict"/> <!-- offset 1 -->
194 <field name="EMAIL_ID" array="yes" type="integer" compare="conflict"/> <!-- offset 2 -->
195 <field name="EMAIL_SLOT" array="yes" type="integer" compare="never"/> <!-- offset 3 -->
197 <!-- web addresses -->
198 <field name="WEB" array="yes" type="string" compare="conflict"/>
199 <field name="WEB_FLAGS" array="yes" type="integer" compare="conflict"/> <!-- offset 0 -->
200 <field name="WEB_LABEL" array="yes" type="string" compare="conflict"/> <!-- offset 1 -->
201 <field name="WEB_ID" array="yes" type="integer" compare="conflict"/> <!-- offset 2 -->
203 <!-- would be nicer to have as part of WEB, but parser/encoder does not support mapping
204 with more than one property per field -->
205 <field name="CALURI" array="yes" type="string" compare="conflict"/>
206 <field name="FBURL" array="yes" type="string" compare="conflict"/>
207 <field name="BLOGURL" array="yes" type="string" compare="conflict"/>
208 <field name="VIDEOURL" array="yes" type="string" compare="conflict"/>
210 <!-- related persons: should be turned into array, like WEB and CALURI/FBURL -->
211 <field name="MANAGER" type="string" compare="conflict"/>
212 <field name="ASSISTANT" type="string" compare="conflict"/>
213 <field name="SPOUSE" type="string" compare="conflict"/>
215 <!-- does this person want HTML mails? Valid values are TRUE/FALSE; a "boolean"
216 type would be useful, maybe add that later. -->
217 <field name="WANTS_HTML" type="string" compare="conflict"/>
219 <!-- chat handles: should be turned into one array, like WEB and CALURI/FBURL -->
220 <field name="AIM_HANDLE" array="yes" type="string" compare="conflict"/>
221 <field name="AIM_SLOT" array="yes" type="string" compare="conflict"/>
222 <field name="GADUGADU_HANDLE" array="yes" type="string" compare="conflict"/>
223 <field name="GADUGADU_SLOT" array="yes" type="string" compare="conflict"/>
224 <field name="GROUPWISE_HANDLE" array="yes" type="string" compare="conflict"/>
225 <field name="GROUPWISE_SLOT" array="yes" type="string" compare="conflict"/>
226 <field name="ICQ_HANDLE" array="yes" type="string" compare="conflict"/>
227 <field name="ICQ_SLOT" array="yes" type="string" compare="conflict"/>
228 <field name="JABBER_HANDLE" array="yes" type="string" compare="conflict"/>
229 <field name="JABBER_SLOT" array="yes" type="string" compare="conflict"/>
230 <field name="MSN_HANDLE" array="yes" type="string" compare="conflict"/>
231 <field name="MSN_SLOT" array="yes" type="string" compare="conflict"/>
232 <field name="YAHOO_HANDLE" array="yes" type="string" compare="conflict"/>
233 <field name="YAHOO_SLOT" array="yes" type="string" compare="conflict"/>
235 <!-- home address -->
236 <field name="ADR_STREET" array="yes" type="multiline" compare="conflict"/>
237 <field name="ADR_ADDTL" array="yes" type="multiline" compare="conflict"/>
238 <field name="ADR_STREET_FLAGS" array="yes" type="integer" compare="conflict"/> <!-- offset 0 (from ADR_STREET_FLAGS) -->
239 <field name="ADR_STREET_LABEL" array="yes" type="string" compare="conflict"/> <!-- offset 1 -->
240 <field name="ADR_STREET_ID" array="yes" type="integer" compare="conflict"/> <!-- offset 2 -->
241 <field name="ADR_POBOX" array="yes" type="multiline" compare="conflict"/>
242 <field name="ADR_CITY" array="yes" type="multiline" compare="conflict"/>
243 <field name="ADR_REG" array="yes" type="multiline" compare="conflict"/>
244 <field name="ADR_ZIP" array="yes" type="multiline" compare="conflict"/>
245 <field name="ADR_COUNTRY" array="yes" type="multiline" compare="conflict"/>
248 <field name="NOTE" type="multiline" compare="conflict" merge="lines"/>
251 <field name="PHOTO" type="blob" compare="never" merge="fillempty"/>
252 <field name="PHOTO_TYPE" type="integer" compare="never" merge="fillempty"/>
256 <!-- vCard profile -->
257 <mimeprofile name="vCard" fieldlist="contacts">
259 <profile name="VCARD" nummandatory="0"> <!-- we allow records without "N" as Address book can store them -->
260 <property name="VERSION">
261 <value conversion="version"/>
264 <property onlyformode="standard" name="PRODID" mandatory="no">
265 <value conversion="prodid"/>
268 <property name="REV">
272 <property name="N" values="5" mandatory="yes"> <!-- Note: makes N parse and generate even if not in remote's CTCap -->
273 <value index="0" field="N_LAST"/>
274 <value index="1" field="N_FIRST"/>
275 <value index="2" field="N_MIDDLE"/>
276 <value index="3" field="N_PREFIX"/>
277 <value index="4" field="N_SUFFIX"/>
284 <property name="X-EVOLUTION-FILE-AS">
285 <value field="FILE-AS"/>
288 <!-- onlyformode="standard": not part of vCard 2.1, but some
289 peers (like the Funambol server) accept it anyway in
291 <property name="NICKNAME">
292 <value field="NICKNAME"/>
295 <property name="TITLE">
296 <value field="TITLE"/>
299 <property name="CATEGORIES" values="list" valueseparator="," altvalueseparator=";" > <!-- non-standard, but 1:1 as in vCard 3.0 (NOT like in vCalendar 1.0, where separator is ";") -->
300 <value field="CATEGORIES"/>
301 <position field="CATEGORIES" repeat="array" increment="1" minshow="0"/>
304 <property name="ORG" values="4">
305 <value index="0" field="ORG_NAME"/>
306 <value index="1" field="ORG_DIVISION"/>
307 <value index="2" field="ORG_OFFICE"/>
308 <value index="3" field="ORG_TEAM"/>
311 <property name="ROLE">
312 <value field="ROLE"/>
315 <property name="TEL">
317 <position field="TEL" repeat="array" increment="1" minshow="1"/>
318 <parameter name="TYPE" default="yes" positional="no" show="yes">
319 <value field="TEL_FLAGS" conversion="multimix" combine=",">
320 <enum name="HOME" value="B0"/>
321 <enum name="WORK" value="B1"/>
322 <enum mode="ignore" value="B2"/> <!-- OTHER -->
323 <enum name="VOICE" value="B3"/>
324 <enum name="CELL" value="B4"/>
325 <enum name="FAX" value="B5"/>
326 <enum name="PAGER" value="B6"/>
327 <enum name="PREF" value="B7"/>
328 <enum name="CAR" value="B8"/>
329 <enum name="X-EVOLUTION-CALLBACK" value="B9"/>
330 <enum name="X-EVOLUTION-RADIO" value="B10"/>
331 <enum name="X-EVOLUTION-TELEX" value="B11"/>
332 <enum name="X-EVOLUTION-TTYTDD" value="B12"/>
334 <enum mode="prefix" name="X-CustomLabel-" value="1.L"/>
335 <enum mode="prefix" name="X-Synthesis-Ref" value="2.L"/>
338 <parameter name="X-EVOLUTION-UI-SLOT" positional="no" show="yes">
339 <value field="TEL_SLOT"/>
343 <property name="EMAIL">
344 <value field="EMAIL"/>
345 <position field="EMAIL" repeat="array" increment="1" minshow="1"/>
346 <parameter name="TYPE" default="yes" positional="no" show="yes">
347 <value field="EMAIL_FLAGS" conversion="multimix" combine=",">
348 <enum name="HOME" value="B0"/>
349 <enum name="WORK" value="B1"/>
350 <enum mode="ignore" value="B2"/> <!-- OTHER -->
351 <enum name="INTERNET" value="B3"/>
353 <enum mode="prefix" name="X-CustomLabel-" value="1.L"/>
354 <enum mode="prefix" name="X-Synthesis-Ref" value="2.L"/>
357 <parameter name="X-EVOLUTION-UI-SLOT" positional="no" show="yes">
358 <value field="EMAIL_SLOT"/>
362 <property name="URL">
364 <position field="WEB" repeat="array" increment="1" minshow="1"/>
365 <parameter name="TYPE" default="yes" positional="no" show="yes">
366 <value field="WEB_FLAGS" conversion="multimix" combine=",">
367 <enum name="HOME" value="B0"/>
368 <enum name="WORK" value="B1"/>
369 <enum mode="ignore" value="B2"/> <!-- OTHER -->
370 <enum name="PREF" value="B3"/>
372 <enum mode="prefix" name="X-CustomLabel-" value="1.L"/>
373 <enum mode="prefix" name="X-Synthesis-Ref" value="2.L"/>
378 <property name="CALURI" suppressempty="yes">
379 <value field="CALURI" show="yes"/>
381 <property name="FBURL" suppressempty="yes">
382 <value field="FBURL" show="yes"/>
384 <property name="X-EVOLUTION-BLOG-URL" suppressempty="yes">
385 <value field="BLOGURL" show="yes"/>
387 <property name="X-EVOLUTION-VIDEO-URL" suppressempty="yes">
388 <value field="VIDEOURL" show="yes"/>
391 <!-- item for SyncML server: EVOLUTION rule not active,
392 both X-EVOLUTION-MANAGER and X-MANAGER are sent.
394 item from SyncML server: EVOLUTION rule not active,
395 both X-EVOLUTION-MANAGER and X-MANAGER are checked,
396 but X-EVOLUTION-MANAGER later so that it overwrites
397 a value set earlier by X-MANAGER (if any). This is
398 a more or less arbitrary priority, chosen because
399 servers that know about SyncEvolution (ScheduleWorld,
400 Memotoo) use the X-EVOLUTION variant.
402 item to/from Evolution: EVOLUTION rule is active,
403 only X-EVOLUTION-MANAGER is used. -->
404 <property name="X-EVOLUTION-MANAGER" suppressempty="yes" delayedparsing="1">
405 <value field="MANAGER" show="yes"/>
407 <property name="X-MANAGER" suppressempty="yes" rule="EVOLUTION"/> <!-- disables the X-MANAGER for EVOLUTION -->
408 <property name="X-MANAGER" suppressempty="yes" rule="other">
409 <value field="MANAGER" show="yes"/>
412 <property name="X-EVOLUTION-ASSISTANT" suppressempty="yes" delayedparsing="1">
413 <value field="ASSISTANT" show="yes"/>
415 <property name="X-ASSISTANT" suppressempty="yes" rule="EVOLUTION"/>
416 <property name="X-ASSISTANT" suppressempty="yes" rule="other">
417 <value field="ASSISTANT" show="yes"/>
420 <property name="X-EVOLUTION-SPOUSE" suppressempty="yes" delayedparsing="1">
421 <value field="SPOUSE" show="yes"/>
423 <property name="X-SPOUSE" suppressempty="yes" rule="EVOLUTION"/>
424 <property name="X-SPOUSE" suppressempty="yes" rule="other">
425 <value field="SPOUSE" show="yes"/>
428 <property name="X-EVOLUTION-ANNIVERSARY" suppressempty="yes" delayedparsing="1">
429 <value field="ANNIVERSARY" show="yes"/>
431 <property name="X-ANNIVERSARY" suppressempty="yes" rule="EVOLUTION"/>
432 <property name="X-ANNIVERSARY" suppressempty="yes" rule="other">
433 <value field="ANNIVERSARY" show="yes"/>
436 <property name="X-MOZILLA-HTML">
437 <value field="WANTS_HTML" show="yes"/>
440 <property name="X-AIM" suppressempty="yes">
441 <value field="AIM_HANDLE"/>
442 <parameter name="X-EVOLUTION-UI-SLOT" positional="no" show="yes">
443 <value field="AIM_SLOT"/>
446 <property name="X-GADUGADU" suppressempty="yes">
447 <value field="GADUGADU_HANDLE"/>
448 <parameter name="X-EVOLUTION-UI-SLOT" positional="no" show="yes">
449 <value field="GADUGADU_SLOT"/>
452 <property name="X-GROUPWISE" suppressempty="yes">
453 <value field="GROUPWISE_HANDLE"/>
454 <parameter name="X-EVOLUTION-UI-SLOT" positional="no" show="yes">
455 <value field="GROUPWISE_SLOT"/>
458 <property name="X-ICQ" suppressempty="yes">
459 <value field="ICQ_HANDLE"/>
460 <parameter name="X-EVOLUTION-UI-SLOT" positional="no" show="yes">
461 <value field="ICQ_SLOT"/>
464 <property name="X-JABBER" suppressempty="yes">
465 <value field="JABBER_HANDLE"/>
466 <parameter name="X-EVOLUTION-UI-SLOT" positional="no" show="yes">
467 <value field="JABBER_SLOT"/>
470 <property name="X-MSN" suppressempty="yes">
471 <value field="MSN_HANDLE"/>
472 <parameter name="X-EVOLUTION-UI-SLOT" positional="no" show="yes">
473 <value field="MSN_SLOT"/>
476 <property name="X-YAHOO" suppressempty="yes">
477 <value field="YAHOO_HANDLE"/>
478 <parameter name="X-EVOLUTION-UI-SLOT" positional="no" show="yes">
479 <value field="YAHOO_SLOT"/>
483 <property name="ADR" values="7">
484 <value index="0" field="ADR_POBOX"/>
485 <value index="1" field="ADR_ADDTL"/>
486 <value index="2" field="ADR_STREET"/>
487 <value index="3" field="ADR_CITY"/>
488 <value index="4" field="ADR_REG"/>
489 <value index="5" field="ADR_ZIP"/>
490 <value index="6" field="ADR_COUNTRY"/>
491 <position field="ADR_POBOX" repeat="array" increment="1" minshow="1"/>
492 <parameter name="TYPE" default="yes" positional="no" show="yes">
493 <value field="ADR_STREET_FLAGS" conversion="multimix" combine=",">
494 <enum name="HOME" value="B0"/>
495 <enum name="WORK" value="B1"/>
496 <enum mode="ignore" value="B2"/> <!-- OTHER -->
498 <enum mode="prefix" name="X-CustomLabel-" value="1.L"/>
499 <enum mode="prefix" name="X-Synthesis-Ref" value="2.L"/>
504 <property name="BDAY">
505 <value field="BDAY"/>
508 <property name="NOTE" filter="no">
509 <value field="NOTE"/>
512 <property name="PHOTO" filter="no">
513 <value field="PHOTO" conversion="BLOB_B64"/>
514 <parameter name="TYPE" default="no" show="yes">
515 <value field="PHOTO_TYPE">
516 <enum name="JPEG" value="0"/>
524 <!-- vCard 2.1 datatype, using vCard profile defined above -->
525 <datatype name="vCard21" basetype="vcard">
526 <version>2.1</version>
527 <use mimeprofile="vCard"/>
530 <!-- vCard 3.0 datatype, using vCard profile defined above -->
531 <datatype name="vCard30" basetype="vcard">
532 <version>3.0</version>
533 <use mimeprofile="vCard"/>
537 <!-- common field list for events and todos (both represented by vCalendar/iCalendar) -->
538 <fieldlist name="calendar">
539 <field name="ISEVENT" type="integer" compare="always"/>
541 <field name="DMODIFIED" type="timestamp" compare="never" age="yes"/>
542 <field name="DCREATED" type="timestamp" compare="never"/>
544 <field name="DGENERATED" type="timestamp" compare="never"/>
546 <field name="UID" type="string" compare="never"/>
548 <field name="CATEGORIES" array="yes" type="string" compare="conflict" merge="fillempty"/>
549 <field name="CLASS" type="integer" compare="conflict" merge="fillempty"/>
550 <field name="TRANSP" type="integer" compare="conflict" merge="fillempty"/>
552 <field name="SUMMARY" type="multiline" compare="always"/>
553 <field name="DESCRIPTION" type="multiline" compare="slowsync" merge="lines"/>
554 <field name="LOCATION" type="multiline" compare="slowsync" merge="lines"/>
555 <field name="URL" type="url" compare="conflict"/>
557 <!-- recurrence rule block, fields must be in that order, including
558 DTSTART as last field !! -->
559 <field name="RR_FREQ" type="string" compare="conflict"/>
560 <field name="RR_INTERVAL" type="integer" compare="conflict"/>
561 <field name="RR_FMASK" type="integer" compare="conflict"/>
562 <field name="RR_LMASK" type="integer" compare="conflict"/>
563 <field name="RR_END" type="timestamp" compare="conflict"/>
565 <!-- Note: DTSTART/DTEND are compared in the <comparescript>,
566 therefore compare is set no "never" here -->
567 <field name="DTSTART" type="timestamp" compare="never"/>
568 <field name="DTEND" type="timestamp" compare="never"/>
569 <field name="DURATION" type="timestamp" compare="never"/>
570 <field name="COMPLETED" type="timestamp" compare="never"/>
571 <field name="DUE" type="timestamp" compare="never"/>
573 <field name="GEO_LAT" type="string" compare="never"/>
574 <field name="GEO_LONG" type="string" compare="never"/>
576 <field name="PRIORITY" type="integer" compare="conflict"/>
577 <field name="STATUS" type="integer" compare="conflict" merge="fillempty"/>
578 <field name="PERCENT_COMPLETE" type="integer" compare="conflict"/>
580 <field name="ALARM_TIME" type="timestamp" compare="conflict"/>
581 <field name="ALARM_SNOOZE" type="string" compare="conflict"/>
582 <field name="ALARM_REPEAT" type="string" compare="conflict"/>
583 <field name="ALARM_MSG" type="string" compare="conflict"/>
584 <field name="ALARM_ACTION" type="string" compare="conflict"/>
585 <field name="ALARM_REL" type="integer" compare="never"/>
586 <field name="ALARM_UID" type="string" compare="conflict"/>
588 <!-- non-standard -->
589 <field name="PARENT_UID" type="string" compare="never"/>
592 <field name="EXDATES" array="yes" type="timestamp" compare="never"/>
594 <field name="ORIGSTART" array="no" type="timestamp" compare="never"/>
595 <field name="SEQNO" array="no" type="integer" compare="never"/>
597 <field name="ATTENDEES" array="yes" type="string" compare="never"/>
598 <field name="ATTENDEE_CNS" array="yes" type="string" compare="never"/>
599 <field name="ATTENDEE_PARTSTATS" array="yes" type="integer" compare="never"/>
600 <field name="ATTENDEE_ROLE" array="yes" type="integer" compare="never"/>
601 <field name="ATTENDEE_RSVP" array="yes" type="integer" compare="never"/>
602 <field name="ATTENDEE_LANG" array="yes" type="string" compare="never"/>
603 <field name="ATTENDEE_CUTYPE" array="yes" type="integer" compare="never"/>
604 <field name="ORGANIZER" array="no" type="string" compare="never"/>
605 <field name="ORGANIZER_CN" array="no" type="string" compare="never"/>
610 <!-- vCalendar with VTODO and VEVENT variants -->
611 <mimeprofile name="vCalendar" fieldlist="calendar">
613 <vtimezonegenmode>current</vtimezonegenmode>
614 <tzidgenmode>olson</tzidgenmode>
616 <profile name="VCALENDAR" nummandatory="1">
618 <property name="VERSION" mandatory="yes">
619 <value conversion="version"/>
622 <property onlyformode="standard" name="PRODID" mandatory="no">
623 <value conversion="prodid"/>
626 <property onlyformode="old" name="TZ" filter="false" suppressempty="yes">
627 <value field="DTSTART" conversion="tz"/>
630 <property onlyformode="old" name="DAYLIGHT" mode="daylight" filter="false" suppressempty="yes">
631 <value field="DTSTART" conversion="daylight"/>
634 <property name="GEO" values="2" suppressempty="yes" onlyformode="old" valueseparator=",">
635 <!-- LON,LAT in vCalendar 1.0 -->
636 <value index="0" field="GEO_LAT"/>
637 <value index="1" field="GEO_LONG"/>
640 <subprofile onlyformode="standard" name="VTIMEZONE" mode="vtimezones"/>
642 <!-- sub-profile for todoz -->
643 <subprofile name="VTODO" nummandatory="1" showifselectedonly="yes" field="ISEVENT" value="0">
645 <property name="LAST-MODIFIED" suppressempty="yes">
646 <value field="DMODIFIED"/>
649 <property name="DTSTAMP" suppressempty="yes" onlyformode="standard">
650 <value field="DGENERATED"/>
653 <property name="DCREATED" suppressempty="yes" onlyformode="old">
654 <value field="DCREATED"/>
656 <property name="CREATED" suppressempty="yes" onlyformode="standard">
657 <value field="DCREATED"/>
660 <property name="UID" suppressempty="yes">
664 <property name="SEQUENCE" suppressempty="yes">
665 <value field="SEQNO"/>
668 <property name="GEO" values="2" suppressempty="yes" onlyformode="standard" valueseparator=";">
669 <!-- LAT;LON in iCalendar 2.0 -->
670 <value index="0" field="GEO_LONG"/>
671 <value index="1" field="GEO_LAT"/>
674 <property onlyformode="standard" name="CATEGORIES" values="list" valueseparator="," suppressempty="yes">
675 <value field="CATEGORIES" />
676 <position field="CATEGORIES" repeat="array" minshow="0"/>
679 <property onlyformode="old" name="CATEGORIES" values="list" valueseparator=";" altvalueseparator="," suppressempty="yes">
680 <value field="CATEGORIES" />
681 <position field="CATEGORIES" repeat="array" minshow="0"/>
684 <property name="CLASS" suppressempty="yes">
685 <value field="CLASS">
686 <enum name="PUBLIC" value="0"/>
687 <enum name="PRIVATE" value="1"/>
688 <enum name="CONFIDENTIAL" value="2"/>
692 <property name="SUMMARY" mandatory="yes">
693 <value field="SUMMARY"/>
696 <!-- DESCRIPTION is an optional property and libical does not like
697 empty properties, so suppress it here. However, in the scripts
698 we ensure that the DESCRIPTION field should never be empty. -->
699 <property name="DESCRIPTION" suppressempty="yes" mandatory="no">
700 <value field="DESCRIPTION"/>
703 <property name="LOCATION" suppressempty="yes" mandatory="no">
704 <value field="LOCATION"/>
707 <property name="URL" suppressempty="yes" mandatory="no">
711 <property name="DTSTART" suppressempty="yes" delayedparsing="1">
712 <value field="DTSTART" conversion="autodate"/>
713 <parameter onlyformode="standard" name="TZID" default="no" show="yes">
714 <value field="DTSTART" conversion="TZID"/>
716 <parameter onlyformode="standard" name="VALUE" default="no" show="yes">
717 <value field="DTSTART" conversion="VALUETYPE"/>
721 <property name="COMPLETED" suppressempty="yes" delayedparsing="1">
722 <value field="COMPLETED" conversion="autoenddate"/>
723 <parameter onlyformode="standard" name="TZID" default="no" show="yes">
724 <value field="COMPLETED" conversion="TZID"/>
726 <parameter onlyformode="standard" name="VALUE" default="no" show="yes">
727 <value field="COMPLETED" conversion="VALUETYPE"/>
731 <property name="DUE" suppressempty="yes" delayedparsing="1">
732 <value field="DUE" conversion="autodate"/>
733 <parameter onlyformode="standard" name="TZID" default="no" show="yes">
734 <value field="DUE" conversion="TZID"/>
736 <parameter onlyformode="standard" name="VALUE" default="no" show="yes">
737 <value field="DUE" conversion="VALUETYPE"/>
741 <property name="PRIORITY" suppressempty="yes">
742 <value field="PRIORITY"/>
745 <property name="STATUS" onlyformode="standard" suppressempty="yes">
746 <value field="STATUS" conversion="emptyonly">
747 <enum name="COMPLETED" value="0"/>
748 <enum name="NEEDS-ACTION" value="1"/>
749 <enum name="IN-PROCESS" value="2"/>
750 <enum name="CANCELLED" value="3"/>
751 <enum name="ACCEPTED" value="4"/>
752 <enum name="TENTATIVE" value="5"/>
753 <enum name="DELEGATED" value="6"/>
754 <enum name="DECLINED" value="7"/>
755 <enum name="SENT" value="8"/>
756 <enum name="CONFIRMED" value="9"/>
757 <enum name="DRAFT" value="10"/>
758 <enum name="FINAL" value="11"/>
762 <property name="STATUS" onlyformode="old" suppressempty="yes">
763 <value field="STATUS" conversion="emptyonly">
764 <enum name="COMPLETED" value="0"/>
765 <enum name="NEEDS ACTION" value="1"/>
766 <enum mode="defaultvalue" value="1"/> <!-- catch unknown, but also non-conformant NEEDS_ACTION -->
767 <enum name="IN PROCESS" value="2"/>
768 <enum name="CANCELLED" value="3"/>
769 <enum name="ACCEPTED" value="4"/>
770 <enum name="TENTATIVE" value="5"/>
771 <enum name="DELEGATED" value="6"/>
772 <enum name="DECLINED" value="7"/>
773 <enum name="SENT" value="8"/>
774 <enum name="CONFIRMED" value="9"/>
775 <enum name="DRAFT" value="10"/>
776 <enum name="FINAL" value="11"/>
780 <property name="PERCENT-COMPLETE" onlyformode="standard" suppressempty="yes">
781 <value field="PERCENT_COMPLETE"/>
784 <!-- AALARM and DALARM both use the same fields -->
785 <property name="AALARM" onlyformode="old" values="4" suppressempty="yes">
786 <value index="0" field="ALARM_TIME" conversion="emptyonly"/>
787 <value index="1" field="ALARM_SNOOZE" conversion="emptyonly"/>
788 <value index="2" field="ALARM_REPEAT" conversion="emptyonly"/>
789 <value index="3" field="ALARM_MSG" conversion="emptyonly"/>
791 <property name="DALARM" onlyformode="old" values="4" suppressempty="yes">
792 <value index="0" field="ALARM_TIME" conversion="emptyonly"/>
793 <value index="1" field="ALARM_SNOOZE" conversion="emptyonly"/>
794 <value index="2" field="ALARM_REPEAT" conversion="emptyonly"/>
795 <value index="3" field="ALARM_MSG" conversion="emptyonly"/>
798 <subprofile onlyformode="standard" name="VALARM" nummandatory="1" field="ALARM_TIME">
799 <property name="TRIGGER" suppressempty="no" mandatory="yes">
800 <value field="ALARM_TIME"/>
801 <parameter name="VALUE" default="no" show="yes">
802 <value field="ALARM_TIME" conversion="FULLVALUETYPE"/>
804 <parameter name="RELATED" default="no" show="yes">
805 <value field="ALARM_REL">
806 <enum mode="ignore" value="0"/>
807 <enum name="START" value="1"/>
808 <enum name="END" value="2"/>
812 <property name="ACTION" suppressempty="yes" mandatory="yes">
813 <value field="ALARM_ACTION"/>
815 <property name="DESCRIPTION" suppressempty="yes">
816 <value field="ALARM_MSG"/>
818 <property name="REPEAT" suppressempty="yes">
819 <value field="ALARM_REPEAT"/>
821 <property name="X-EVOLUTION-ALARM-UID" suppressempty="yes">
822 <value field="ALARM_UID"/>
826 <property onlyformode="old" name="RELATED-TO" suppressempty="yes">
827 <value field="PARENT_UID"/>
830 <property onlyformode="standard" name="RELATED-TO" suppressempty="yes">
831 <value field="PARENT_UID"/>
832 <parameter onlyformode="standard" name="RELTYPE" default="no" positional="yes" show="yes">
834 <enum name="PARENT"/>
835 <enum mode="defaultvalue" name="other"/>
837 <position hasnot="other" shows="PARENT" field="PARENT_UID"/>
843 <!-- sub-profile for event -->
844 <subprofile name="VEVENT" nummandatory="1" showifselectedonly="yes" field="ISEVENT" value="1">
846 <property name="LAST-MODIFIED" suppressempty="yes">
847 <value field="DMODIFIED"/>
850 <property name="DTSTAMP" suppressempty="yes" onlyformode="standard">
851 <value field="DGENERATED"/>
854 <property name="DCREATED" suppressempty="yes" onlyformode="old">
855 <value field="DCREATED"/>
857 <property name="CREATED" suppressempty="yes" onlyformode="standard">
858 <value field="DCREATED"/>
862 <property name="UID" suppressempty="yes">
866 <property name="SEQUENCE" suppressempty="yes">
867 <value field="SEQNO"/>
870 <property name="GEO" values="2" suppressempty="yes" onlyformode="standard" valueseparator=";">
871 <!-- LAT;LON in iCalendar 2.0 -->
872 <value index="0" field="GEO_LONG"/>
873 <value index="1" field="GEO_LAT"/>
876 <property onlyformode="standard" name="CATEGORIES" values="list" valueseparator="," suppressempty="yes">
877 <value field="CATEGORIES" />
878 <position field="CATEGORIES" repeat="array" minshow="0"/>
881 <property onlyformode="old" name="CATEGORIES" values="list" valueseparator=";" altvalueseparator="," suppressempty="yes">
882 <value field="CATEGORIES" />
883 <position field="CATEGORIES" repeat="array" minshow="0"/>
886 <property name="CLASS" suppressempty="yes">
887 <value field="CLASS">
888 <enum name="PUBLIC" value="0"/>
889 <enum name="PRIVATE" value="1"/>
890 <enum name="CONFIDENTIAL" value="2"/>
895 <property name="TRANSP" suppressempty="yes" onlyformode="standard">
896 <value field="TRANSP">
897 <enum name="OPAQUE" value="0"/>
898 <enum name="TRANSPARENT" value="1"/>
899 <enum name="TENTATIVE" value="2"/> <!-- according to Oracle de facto usage in vCalendar 1.0 -->
900 <enum name="OUT_OF_OFFICE" value="3"/> <!-- according to Oracle de facto usage in vCalendar 1.0 -->
901 <enum mode="defaultvalue" value="0"/>
904 <property name="TRANSP" suppressempty="yes" onlyformode="old">
905 <value field="TRANSP"/> <!-- directly numeric in vCalendar 1.0 -->
909 <property name="PRIORITY" suppressempty="yes">
910 <value field="PRIORITY"/>
913 <property name="SUMMARY" mandatory="yes">
914 <value field="SUMMARY"/>
917 <!-- DESCRIPTION is an optional property and libical does not like
918 empty properties, so suppress it here. However, in the scripts
919 we ensure that the DESCRIPTION field should never be empty. -->
920 <property name="DESCRIPTION" suppressempty="yes" mandatory="no">
921 <value field="DESCRIPTION"/>
924 <property name="LOCATION" suppressempty="yes" mandatory="no">
925 <value field="LOCATION"/>
928 <property name="DTSTART" suppressempty="yes" delayedparsing="1">
929 <value field="DTSTART" conversion="autodate"/>
930 <parameter onlyformode="standard" name="TZID" default="no" show="yes">
931 <value field="DTSTART" conversion="TZID"/>
933 <parameter onlyformode="standard" name="VALUE" default="no" show="yes">
934 <value field="DTSTART" conversion="VALUETYPE"/>
938 <!-- recurrence rule (with delayed parsing, as it is dependent on DTSTART) -->
939 <property name="RRULE" suppressempty="yes" delayedparsing="2">
940 <!-- Note: RR_FREQ is the beginning of a block of fields
941 suitable for the "rrule" conversion mode -->
942 <value field="RR_FREQ" conversion="rrule"/>
945 <!-- Symbian uses this, so it might make the client work with symbian-prepared servers better -->
946 <property name="X-RECURRENCE-ID" suppressempty="yes" onlyformode="old">
947 <value field="ORIGSTART" conversion="autodate"/>
950 <property name="RECURRENCE-ID" suppressempty="yes" onlyformode="standard" delayedparsing="1">
951 <value field="ORIGSTART" conversion="autodate"/>
952 <parameter name="TZID" default="no" show="yes">
953 <value field="ORIGSTART" conversion="TZID"/>
955 <parameter name="VALUE" default="no" show="yes">
956 <value field="ORIGSTART" conversion="VALUETYPE"/>
960 <!-- ScheduleWorld has a problem (bugzilla.moblin.org #2226)
961 with the EXDATE:value1,value2 format (correct in iCalendar 2.0):
962 as a workaround, accept all valid formats plus ; but
963 generate separate properties with one value each. -->
964 <property name="EXDATE" values="expandedlist" suppressempty="yes" onlyformode="standard" delayedparsing="1" valueseparator="," altvalueseparator=";">
965 <value field="EXDATES"/>
966 <position field="EXDATES" repeat="array" increment="1" minshow="0"/>
967 <parameter name="TZID" default="no" show="yes">
968 <value field="EXDATES" conversion="TZID"/>
972 <property name="EXDATE" values="list" suppressempty="yes" onlyformode="old" delayedparsing="1" valueseparator=";" altvalueseparator=",">
973 <value field="EXDATES"/>
974 <position field="EXDATES" repeat="array" increment="1" minshow="0"/>
978 <property name="DTEND" suppressempty="yes" delayedparsing="1">
979 <value field="DTEND" conversion="autoenddate"/>
980 <parameter onlyformode="standard" name="TZID" default="no" show="yes">
981 <value field="DTEND" conversion="TZID"/>
983 <parameter onlyformode="standard" name="VALUE" default="no" show="yes">
984 <value field="DTEND" conversion="VALUETYPE"/>
988 <property name="DURATION" suppressempty="yes" delayedparsing="1" onlyformode="standard">
989 <value field="DURATION"/>
990 <parameter onlyformode="standard" name="VALUE" default="no" show="no">
991 <value field="DURATION" conversion="VALUETYPE"/>
995 <property name="ATTENDEE" suppressempty="yes" onlyformode="old">
996 <value field="ATTENDEES"/>
997 <parameter name="ROLE" default="no" positional="yes" show="yes">
999 <enum name="ORGANIZER"/>
1001 <position has="ORGANIZER" field="ORGANIZER" overwriteempty="yes"/>
1002 <position hasnot="ORGANIZER" field="ATTENDEES" repeat="array" increment="1" overwriteempty="yes"/>
1004 <parameter name="STATUS" default="no" show="yes">
1005 <value field="ATTENDEE_PARTSTATS">
1006 <enum name="NEEDS ACTION" value="1"/>
1007 <enum mode="defaultvalue" value="1"/> <!-- catch unknown, but also non-conformant NEEDS_ACTION -->
1008 <enum name="ACCEPTED" value="4"/>
1009 <enum name="DECLINED" value="7"/>
1010 <enum name="TENTATIVE" value="5"/>
1011 <enum name="DELEGATED" value="6"/>
1016 <property name="ATTENDEE" suppressempty="yes" onlyformode="standard">
1017 <value field="ATTENDEES" conversion="mailto"/>
1018 <position field="ATTENDEES" repeat="array" increment="1" minshow="0"/>
1019 <parameter name="CN" default="no" show="yes" shownonempty="yes">
1020 <value field="ATTENDEE_CNS"/>
1022 <parameter name="PARTSTAT" default="no" show="yes">
1023 <value field="ATTENDEE_PARTSTATS">
1024 <enum name="NEEDS-ACTION" value="1"/>
1025 <enum mode="defaultvalue" value="1"/> <!-- catch unknown, but also non-conformant NEEDS_ACTION -->
1026 <enum name="ACCEPTED" value="4"/>
1027 <enum name="DECLINED" value="7"/>
1028 <enum name="TENTATIVE" value="5"/>
1029 <enum name="DELEGATED" value="6"/>
1032 <parameter name="ROLE" default="no" show="yes">
1033 <value field="ATTENDEE_ROLE">
1034 <enum name="CHAIR" value="1"/>
1035 <enum name="REQ-PARTICIPANT" value="2"/>
1036 <enum name="OPT-PARTICIPANT" value="3"/>
1037 <enum name="NON-PARTICIPANT" value="4"/>
1040 <parameter name="RSVP" default="no" show="yes">
1041 <value field="ATTENDEE_RSVP">
1042 <enum name="TRUE" value="1"/>
1043 <enum name="FALSE" value="0"/>
1046 <parameter name="LANGUAGE" show="yes">
1047 <value field="ATTENDEE_LANG"/>
1049 <parameter name="CUTYPE" default="no" show="yes">
1050 <value field="ATTENDEE_CUTYPE">
1051 <enum name="INDIVIDUAL" value="1"/>
1052 <enum name="GROUP" value="2"/>
1053 <enum name="RESOURCE" value="3"/>
1054 <enum name="ROOM" value="4"/>
1055 <enum name="UNKNOWN" value="5"/>
1060 <property name="ORGANIZER" suppressempty="yes" onlyformode="standard">
1061 <value field="ORGANIZER" conversion="mailto"/>
1062 <parameter name="CN" default="no" show="yes">
1063 <value field="ORGANIZER_CN"/>
1068 <!-- AALARM and DALARM both use the same fields -->
1069 <property name="AALARM" onlyformode="old" values="4" suppressempty="yes">
1070 <value index="0" field="ALARM_TIME" conversion="emptyonly"/>
1071 <value index="1" field="ALARM_SNOOZE" conversion="emptyonly"/>
1072 <value index="2" field="ALARM_REPEAT" conversion="emptyonly"/>
1073 <value index="3" field="ALARM_MSG" conversion="emptyonly"/>
1075 <property name="DALARM" onlyformode="old" values="4" suppressempty="yes">
1076 <value index="0" field="ALARM_TIME" conversion="emptyonly"/>
1077 <value index="1" field="ALARM_SNOOZE" conversion="emptyonly"/>
1078 <value index="2" field="ALARM_REPEAT" conversion="emptyonly"/>
1079 <value index="3" field="ALARM_MSG" conversion="emptyonly"/>
1082 <subprofile onlyformode="standard" name="VALARM" nummandatory="1" field="ALARM_TIME">
1083 <property name="TRIGGER" suppressempty="no" mandatory="yes">
1084 <value field="ALARM_TIME"/>
1085 <parameter name="VALUE" default="no" show="yes">
1086 <value field="ALARM_TIME" conversion="FULLVALUETYPE"/>
1088 <parameter name="RELATED" default="no" show="yes">
1089 <value field="ALARM_REL">
1090 <enum mode="ignore" value="0"/>
1091 <enum name="START" value="1"/>
1092 <enum name="END" value="2"/>
1096 <property name="ACTION" suppressempty="yes" mandatory="yes">
1097 <value field="ALARM_ACTION"/>
1099 <property name="DESCRIPTION" suppressempty="yes">
1100 <value field="ALARM_MSG"/>
1102 <property name="REPEAT" suppressempty="yes">
1103 <value field="ALARM_REPEAT"/>
1105 <property name="X-EVOLUTION-ALARM-UID" suppressempty="yes">
1106 <value field="ALARM_UID"/>
1116 <!-- vCalendar 1.0 datatype, using vCalendar profile defined above -->
1117 <datatype name="vCalendar10" basetype="vcalendar">
1118 <version>1.0</version>
1119 <use mimeprofile="vCalendar"/>
1121 <incomingscript><![CDATA[
1122 $VCALENDAR_INCOMING_SCRIPT
1123 ]]></incomingscript>
1125 <outgoingscript><![CDATA[
1126 $VCALENDAR_OUTGOING_SCRIPT
1127 ]]></outgoingscript>
1132 <!-- iCalendar 2.0 datatype, using vCalendar profile defined above -->
1133 <datatype name="iCalendar20" basetype="vcalendar">
1134 <version>2.0</version>
1135 <use mimeprofile="vCalendar"/>
1137 <incomingscript><![CDATA[
1138 $VCALENDAR_INCOMING_SCRIPT
1139 ]]></incomingscript>
1141 <outgoingscript><![CDATA[
1142 $VCALENDAR_OUTGOING_SCRIPT
1143 ]]></outgoingscript>
1148 <!-- list of internal fields representing plain text note data -->
1149 <fieldlist name="Note">
1150 <field name="SYNCLVL" type="integer" compare="never"/>
1151 <field name="SUBJECT" type="multiline" compare="always"/>
1152 <field name="TEXT" type="multiline" compare="conflict" merge="lines"/>
1155 <textprofile name="Note" fieldlist="Note">
1156 <linemap field="SUBJECT">
1157 <numlines>1</numlines>
1158 <inheader>false</inheader>
1159 <allowempty>true</allowempty>
1160 <filterkeyword>SUBJECT</filterkeyword>
1162 <linemap field="TEXT">
1163 <numlines>0</numlines>
1164 <inheader>false</inheader>
1165 <allowempty>true</allowempty>
1169 <datatype name="note10" basetype="text">
1170 <use profile="Note"/>
1171 <typestring>text/plain</typestring>
1172 <versionstring>1.0</versionstring>
1175 <datatype name="note11" basetype="text">
1176 <use profile="Note"/>
1177 <typestring>text/plain</typestring>
1178 <versionstring>1.1</versionstring>
1182 <!-- list of internal fields representing vBookmark data -->
1183 <fieldlist name="bookmarks">
1184 <field name="REV" type="timestamp" compare="never" age="yes"/>
1185 <field name="SYNCLVL" type="integer" compare="never"/>
1188 <field name="TITLE" type="string" compare="always"/>
1190 <!-- categories and classification -->
1191 <field name="CATEGORIES" type="string" compare="conflict" merge="fillempty"/>
1192 <field name="CLASS" type="string" compare="conflict" merge="fillempty"/>
1194 <!-- web addresses -->
1195 <field name="URL" type="url" compare="slowsync" merge="fillempty"/>
1198 <field name="NOTE" type="multiline" compare="conflict" merge="lines"/>
1202 <!-- vBookmark profile -->
1203 <mimeprofile name="vBookmark" fieldlist="bookmarks">
1205 <profile name="VBKM" nummandatory="0">
1206 <property name="VERSION">
1207 <value conversion="version"/>
1210 <property name="X-LAST-MODIFIED">
1211 <value field="REV"/>
1214 <property name="TITLE">
1215 <value field="TITLE"/>
1218 <property name="URL">
1219 <value field="URL"/>
1222 <!-- non-standard properties -->
1224 <property name="CATEGORIES">
1225 <value field="CATEGORIES"/>
1228 <property name="CLASS" suppressempty="yes">
1229 <value field="CLASS"/>
1232 <property name="NOTE" filter="no">
1233 <value field="NOTE"/>
1239 <!-- vBookmark datatype, using vBookmark profile defined above -->
1240 <datatype name="vBookmark10" basetype="mimedir">
1241 <typestring>text/x-vbookmark</typestring>
1242 <versionstring>1.0</versionstring>
1243 <use profile="vBookmark"/>
1252 <client type="plugin">
1253 <binfilespath>$(binfilepath)</binfilespath>
1256 <!-- SyncEvolution has traditionally not folded long lines in
1257 vCard. Testing showed that servers still have problems with
1258 it, so avoid it by default -->
1259 <donotfoldcontent>yes</donotfoldcontent>
1265 <remoterule name="EVOLUTION">
1266 <deviceid>none - this rule is activated via its name in MAKE/PARSETEXTWITHPROFILE() macro calls</deviceid>