Small addition:
If the description contains html formatted text:
Summary of changes:
Code: Select all
CreateRegularExpression(0, "\<[^\<]+\>")
WriteStringN(FileID, #iCal_Description + EscapeText(ReplaceRegularExpression(0, iCal()\Event()\Description, "")), #PB_UTF8)
If FindString(iCal()\Event()\Description, "<html>", 0, #PB_String_NoCase)
WriteStringN(FileID, ~"X-ALT-DESC;FMTTYPE=text/html:<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2//EN\">" +
EscapeText(iCal()\Event()\Description), #PB_UTF8)
EndIf
In Procedure ExportFile():
Code: Select all
Procedure.i ExportFile(ID.i, File.s="iCal_Export.ics")
Define.i FileID, Result = #False
CreateRegularExpression(0, "\<[^\<]+\>") ; Html entfernen
If FindMapElement(iCal(), Str(ID))
FileID = CreateFile(#PB_Any, File, #PB_UTF8)
If FileID
WriteStringFormat(FileID, #PB_UTF8)
WriteStringN(FileID, #iCal_BeginCalendar, #PB_UTF8)
WriteStringN(FileID, #iCal_Version, #PB_UTF8)
WriteStringN(FileID, #iCal_ProID + iCal()\ProducerID, #PB_UTF8)
If iCal()\Method = #Request
WriteStringN(FileID, #iCal_Request, #PB_UTF8)
Else
WriteStringN(FileID, #iCal_Publish, #PB_UTF8)
EndIf
ForEach iCal()\Event()
WriteStringN(FileID, #iCal_BeginEvent, #PB_UTF8)
WriteStringN(FileID, #iCal_UID + iCal()\Event()\UID, #PB_UTF8)
WriteStringN(FileID, #iCal_Location + EscapeText(iCal()\Event()\Location), #PB_UTF8)
If iCal()\Summary
WriteStringN(FileID, ReplaceString(#iCal_Summary, ":", iCal()\Summary + ":") + EscapeText(iCal()\Event()\Summary), #PB_UTF8)
Else
WriteStringN(FileID, #iCal_Summary + EscapeText(iCal()\Event()\Summary), #PB_UTF8)
EndIf
WriteStringN(FileID, #iCal_Description + EscapeText(ReplaceRegularExpression(0, iCal()\Event()\Description, "")), #PB_UTF8)
If iCal()\Event()\Class = #Private
WriteStringN(FileID, #iCal_Private, #PB_UTF8)
Else
WriteStringN(FileID, #iCal_Public, #PB_UTF8)
EndIf
If FindString(iCal()\Event()\Description, "<html>", 0, #PB_String_NoCase)
WriteStringN(FileID, ~"X-ALT-DESC;FMTTYPE=text/html:<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2//EN\">" +
EscapeText(iCal()\Event()\Description), #PB_UTF8)
EndIf
If iCal()\DTStart
WriteStringN(FileID, ReplaceString(#iCal_DateStart, ":", iCal()\DTStart + ":") + DateICal(iCal()\Event()\StartDate), #PB_UTF8)
Else
WriteStringN(FileID, #iCal_DateStart + DateICal(iCal()\Event()\StartDate), #PB_UTF8)
EndIf
If iCal()\DTEnd
WriteStringN(FileID, ReplaceString(#iCal_DateEnd, ":", iCal()\DTEnd + ":") + DateICal(iCal()\Event()\EndDate), #PB_UTF8)
Else
WriteStringN(FileID, #iCal_DateEnd + DateICal(iCal()\Event()\EndDate), #PB_UTF8)
EndIf
WriteStringN(FileID, #iCal_DateStamp + DateICal(iCal()\Event()\DateStamp), #PB_UTF8)
WriteStringN(FileID, #iCal_EndEvent, #PB_UTF8)
Next
WriteStringN(FileID, #iCal_EndCalendar, #PB_UTF8)
Result = #True
CloseFile(FileID)
EndIf
EndIf
ProcedureReturn Result
EndProcedure