diff --git a/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/TaskReportModule_exportTaskReportListAsiCalendar.xml b/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/TaskReportModule_exportTaskReportListAsiCalendar.xml
index 046432daae7e5cb5a4c94ab102a41d185d64154b..28cf979a19a1ac9be6148e54945645d197a53e0e 100644
--- a/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/TaskReportModule_exportTaskReportListAsiCalendar.xml
+++ b/bt5/erp5_project/SkinTemplateItem/portal_skins/erp5_project/TaskReportModule_exportTaskReportListAsiCalendar.xml
@@ -70,7 +70,9 @@
             <key> <string>_body</string> </key>
             <value> <string encoding="cdata"><![CDATA[
 
-# bypass CookieCrumbler\n
+"""Export the current selection in task report module in iCalendar format.\n
+"""\n
+# XXX bypass CookieCrumbler\n
 if context.REQUEST.AUTHENTICATED_USER.getUserName() == \'Anonymous User\': \n
   if context.REQUEST.get(\'disable_cookie_login__\', 0) \\\n
           or context.REQUEST.get(\'no_infinite_loop\', 0)  :\n
@@ -79,13 +81,17 @@ if context.REQUEST.AUTHENTICATED_USER.getUserName() == \'Anonymous User\': \n
 \n
 def formatDate(date):\n
   d = "%04d%02d%02d" % (date.year(), date.month(), date.day())\n
-  if date.hour() is not None :\n
-    d += "T%02d%02d" % (date.hour(), date.minute())\n
+  if date.hour() and date.minute():\n
+    d += "T%02d%02d%02d" % (date.hour(), date.minute(), date.second())\n
   return d\n
 \n
-def foldContent(s) : \n
+def foldContent(s):\n
   """ fold a content line (cf RFC 2445) """\n
-  # TODO \n
+  s = s.replace(\',\', \'\\\\,\')\n
+  s = s.replace(\'/\', \'\\\\/\')\n
+  s = s.replace(\'"\', \'\\\\"\')\n
+  s = s.replace(\'\\n\', \'\\\\n\')\n
+  # FIXME: really fold, for now we return a big line, it works for most clients\n
   return s\n
 \n
 def printTask(task) :\n
@@ -98,8 +104,8 @@ SUMMARY:%(title)s\n
 STATUS:%(status)s\n
 PRIORITY:%(priority)s""" % ( {\n
         \'creation_date\': formatDate(task.getCreationDate()),\n
-        \'uid\': task.getUid(),\n
-        \'title\': task.getTitle(),\n
+        \'uid\': task.getPath(),\n
+        \'title\': foldContent(task.getTitle()),\n
         \'modification_date\': formatDate(task.getModificationDate()),\n
         \'status\': task.getSimulationState() == \'delivered\' and \'COMPLETED\' or \'NEEDS_ACTION\',\n
         \'priority\': task.getProperty(\'int_index\', 3),\n
@@ -107,28 +113,30 @@ PRIORITY:%(priority)s""" % ( {\n
   if task.hasComment():\n
     print "DESCRIPTION:" + foldContent(task.getComment())\n
   if task.hasStartDate():\n
-    print "DTSTART;VALUE=DATE::" + formatDate(task.getStartDate())\n
+    print "DTSTART;VALUE=DATE:" + formatDate(task.getStartDate())\n
   if task.hasStopDate():\n
-    print "DUE:" + formatDate(task.getStopDate())\n
+    print "DUE;VALUE=DATE:" + formatDate(task.getStopDate())\n
   organizer = task.getDestinationValue(portal_type=\'Person\')\n
   if organizer:\n
     print "ORGANIZER;CN=%s:MAILTO:%s" % (organizer.getTitle(), organizer.getDefaultEmailText())\n
     print "X-ORGANIZER:MAILTO:%s" % (organizer.getDefaultEmailText())\n
   for attendee in task.getSourceValueList( portal_type = \'Person\') :\n
     print "ATTENDEE;CN=%s:MAILTO:%s" % (attendee.getTitle(), attendee.getDefaultEmailText())\n
-  \n
+  print "ATTACH;FMTTYPE=text/html:%s/%s/view" % (context.ERP5Site_getAbsoluteUrl(), task.getRelativeUrl())\n
+\n
   print "END:VTODO"\n
   return printed\n
 \n
 print """BEGIN:VCALENDAR\n
-PRODID:-//ERP5//NONSGML Task Module Report//EN \n
-VERSION:1.0"""\n
+PRODID:-//ERP5//NONSGML Task Report Module//EN \n
+VERSION:2.0"""\n
 obj_list = context.getPortalObject().portal_selections.callSelectionFor("task_report_selection")\n
 for obj in obj_list : \n
   print printTask(obj.getObject())\n
 print "END:VCALENDAR"\n
 \n
 context.REQUEST.RESPONSE.setHeader(\'Content-Type\', \'text/calendar\')\n
+context.REQUEST.RESPONSE.setHeader(\'Content-disposition\',  \'attachment;; filename=ERP5.ics\')\n
 return printed\n
 
 
diff --git a/bt5/erp5_project/bt/revision b/bt5/erp5_project/bt/revision
index a09fd8ad47268facfe50ea952d980dc5627594a2..afbe847262c0a530b87f33d06d3526a72dd1d9a4 100644
--- a/bt5/erp5_project/bt/revision
+++ b/bt5/erp5_project/bt/revision
@@ -1 +1 @@
-124
\ No newline at end of file
+126
\ No newline at end of file