From niko.berger at corinis.com Fri Jun 12 04:15:20 2009
From: niko.berger at corinis.com (Niko Berger)
Date: Fri, 12 Jun 2009 13:15:20 +0200
Subject: [Synckolab] Loads of errors, headstart appreciated
In-Reply-To: <4A144494.6070809@googlemail.com>
References: <4A0B079C.8020900@teranetworks.de> <4A0DF43C.7040101@linuxclusters.com.ar> <4A12F918.5040508@teranetworks.de> <4A132B1A.3020901@googlemail.com> <4A1435E7.6050006@teranetworks.de>
<4A144494.6070809@googlemail.com>
Message-ID: <4A3238C8.8000600@corinis.com>
I included the patch (and fixed for some other bugs) in the current
nightly. I hope this resolves the problem now
Niko
Jan Sch?nherr wrote:
> jesse schrieb:
>> Hi Jan,
>>
>> I think there are several issues working together here.
>> If I am correct, I can easily patch files of firefox/thunderbird
>> extensions because it doesn't check for their integrity.
>
> Yes, though you have to patch the files, that are located
> _inside_ the synckolab.jar somewhere in your profile directory.
> (Not those you find right away.)
>
>
>
>> Automatic sync is enabled with 3 minutes for each calendar. The result
>> is: it just syncs the second calendar. The first one is not even tried
>> and I get the "NS_ERROR_DOM_NOT_FOUND_ERR".
>
> I guess that is without the patch?
>
>
>> If I do manual sync, both calendars sync (first one first) but i get
>> "nicht lesbar" (not readable) on the only item of the second calendar
>> and it creates a duplicate with a date and removes this one from the
>> first item. Can't figure out why it does that.
>>
>> Additionally, on a second PC I get "MODIFICATION_FAILED" on manual
>> second.
>
> Is this with a clean start? I.e. autosync disabled, empty calendar,
> removed all
> messages in the IMAP-Folders and removed the cached messages (there is a
> synckolab folder in your profile directory)?
>
> When I discovered those problems, I had some events that mysteriously
> turned into
> tasks causing those "nicht lesbar" errors (see outermost XML tag).
> MODIFICATION_FAILED
> errors are caused (at least for me) by duplicates (imap messages with
> the same subject).
>
>
> Regards
> Jan
>
> PS: My patch has a minor flaw, but doing it right is more complex:
> The patch limits the number of autosynced calendars to one per minute.
> With multiple calendars and small autosync times, the first calendars
> might fill the available time slots, so that some calendars are never
> synced automatically. (With two calendars and three minutes, you won't
> have that problem.)
> _______________________________________________
> Synckolab mailing list
> Synckolab at mozdev.org
> https://www.mozdev.org/mailman/listinfo/synckolab
From van at vmartin.net Tue Jun 16 19:59:06 2009
From: van at vmartin.net (Van A. Martin)
Date: Tue, 16 Jun 2009 19:59:06 -0700
Subject: [Synckolab] Contact/Calendar/Tasks Folder Selection Blank in 1.0.3
Message-ID: <4A385BFA.6070807@vmartin.net>
I just upgraded from SyncKolab 1.0.2 to 1.0.3 and immediately see a
problem in the Options dialog. The window where you specify the folder
to use for IMAP synchronization is completely empty for Contacts,
Calenday, and Tasks. None of my IMAP folders are shown. This was not a
problem with 1.0.2.
Is there a way to fix this?
Van
From f.pavlic at evice.de Wed Jun 17 14:05:13 2009
From: f.pavlic at evice.de (Frank Pavlic)
Date: Wed, 17 Jun 2009 23:05:13 +0200
Subject: [Synckolab] PATCH: handle Categories properly in xml2event
Message-ID: <200906172305.13260.f.pavlic@evice.de>
Hi ,
in function xml2event(..) the categories are not set properly with Lightning 0.9 . setKolabItemProperty(...)
is not working , we have to use event.setCategories(..) instead.
Following patch fixes it. Please review it and apply if it is ok.
--- orig_calTools.js 2009-06-17 23:01:58.000000000 +0200
+++ calTools.js 2009-06-17 23:02:21.000000000 +0200
@@ -520,8 +520,17 @@
case "CATEGORIES":
if (cur.firstChild)
+ if (!event.setCategories) {
setKolabItemProperty(event, "CATEGORIES", decode4XML(cur.firstChild.data));
break;
+ }
+ var cattxt = decode4XML(cur.firstChild.data);
+ if (cattxt) {
+ var categories = categoriesStringToArray(cattxt);
+ event.setCategories(categories.length, categories);
+ }
+
+ break;
case "ALARM":
if (cur.firstChild)
Mit freundlichen Gr?ssen
evice GmbH Open Source-Systemhaus - Frank Pavlic
From van at vmartin.net Thu Jun 18 14:45:42 2009
From: van at vmartin.net (Van A. Martin)
Date: Thu, 18 Jun 2009 14:45:42 -0700
Subject: [Synckolab] Synckolab has trouble with "All Day" events
Message-ID: <4A3AB586.9080201@vmartin.net>
I have discovered a problem in Synckolab 1.0.2 and 1.0.3 where it can
not handle "All Day" events. This was noticed for two reasons:
1. When running a sync, the message window would always show updates,
even though nothing had changed.
2. The All Day event would move on it?s own over time from day x to x-1,
then x-2, and so on.
My theory is that Lightening stores dates and times in GMT. When an
event starts and stops at a specific time, the entry has the date,
followed by time, and then the letter "Z". For an All Day event, only
the date is stored and not the time, but the date is implied GMT.
Synckolab has trouble with these "date only" GMT entries.
The easy circumvention here is to not use All Day events. I changed all
of mine to have specific start and end times that cover the whole day.
This problem is easily reproduced.
Van A. Martin
From niko.berger at corinis.com Fri Jun 19 03:38:00 2009
From: niko.berger at corinis.com (Niko Berger)
Date: Fri, 19 Jun 2009 12:38:00 +0200
Subject: [Synckolab] Synckolab has trouble with "All Day" events
In-Reply-To: <4A3AB586.9080201@vmartin.net>
References: <4A3AB586.9080201@vmartin.net>
Message-ID: <4A3B6A88.1080702@corinis.com>
Van A. Martin wrote:
> I have discovered a problem in Synckolab 1.0.2 and 1.0.3 where it can
> not handle "All Day" events. This was noticed for two reasons:
>
> 1. When running a sync, the message window would always show updates,
> even though nothing had changed.
>
> 2. The All Day event would move on it?s own over time from day x to
> x-1, then x-2, and so on.
>
> My theory is that Lightening stores dates and times in GMT. When an
> event starts and stops at a specific time, the entry has the date,
> followed by time, and then the letter "Z". For an All Day event, only
> the date is stored and not the time, but the date is implied GMT.
> Synckolab has trouble with these "date only" GMT entries.
>
> The easy circumvention here is to not use All Day events. I changed
> all of mine to have specific start and end times that cover the whole
> day.
>
> This problem is easily reproduced.
>
> Van A. Martin
>
I tried reproducing it, but youldnt. Can you send me such an event (just
attach the message)
Niko
From f.pavlic at evice.de Fri Jun 19 04:33:58 2009
From: f.pavlic at evice.de (Frank Pavlic)
Date: Fri, 19 Jun 2009 13:33:58 +0200
Subject: [Synckolab] Enhancement: Respect Privacy Settings of Events and
Tasks in SyncKolab
Message-ID: <200906191333.58802.f.pavlic@evice.de>
Hi,
today you can use SyncKolab to simple sync all events and tasks to an IMAP folder. Also
several persons can participate. Everything will be synced without any user relevant checkings.
Even PRIVATE events and tasks will be synced completely. This does not make much sense for a
group calendar where you really want to use PRVACY status in events and tasks
Following patch will take this into consideration.
1.
PRIVATE events and tasks will never be synced
2.
CONFIDENTIAL events and tasks will be synced with a modified description just telling all others except
for the organizer that event or task is CONFIDENTIAL.
If an event or task is CONFIDENTIAL only organizer will be able to make modifications to this event.
Of course in their local calendars users can modify the event or task but this will be synced back to
server version again.
Description will be modified because users are able to read events and tasks directly from shared folder in
Thunderbird . Therefore description should not be on the server but only in organizers calendar.
3.
PUBLIC events will be handled as today. We are not breaking any only private used calendars but users
should note these modifications if they want to use the PRIVACY status in their "one-man-calendar" .
4.
Changing the PRIVACY of events and tasks of already synchronized events and tasks will also be handled appropriately.
5.
If there is no organizer information in a new event or task it will be inserted before syncing. This is more
a workaround, but an important one, for Lightning's neglect to insert an organizer
even when not opening the attendees dialog.
This has been tested with HEAD version of SyncKolab, under Linux and Windows.
Furthermore it has been tested with ICAL and XML for events and tasks.
The patch is on top of the fix I sent the day before yesterday .
Please review, make comments or add to SyncKolab repository if you agree with all lines of code ;-)
If it's more appropriate I can also send you a patch file as attachment.
Mit freundlichen Gr?ssen
evice GmbH Open Source-Systemhaus - Frank Pavlic
diffstat:
calTools.js | 134 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
calendar.js | 66 +++++++++++++++++------------
2 files changed, 171 insertions(+), 29 deletions(-)
Index: calTools.js
===================================================================
RCS file: /cvs/synckolab/src/chrome/content/synckolab/calTools.js,v
retrieving revision 1.71
diff -a -u -p -r1.71 calTools.js
--- calTools.js 12 Jun 2009 12:01:26 -0000 1.71
+++ calTools.js 18 Jun 2009 16:32:43 -0000
@@ -928,7 +937,8 @@ function cnv_event2xml (event, skipVolat
xml += " " + calDateTime2String(event.getProperty("LAST-MODIFIED"), false) + "\n";
}
- if (event.getProperty("DESCRIPTION"))
+ if ( event.getProperty("DESCRIPTION") &&
+ (ispublicevent(event) || !skipVolatiles) )
xml += "
" + encode4XML(event.getProperty("DESCRIPTION")) + "\n";
if (event.getProperty("CLASS"))
xml += " " + event.getProperty("CLASS").toLowerCase() + "\n";
@@ -954,7 +964,7 @@ function cnv_event2xml (event, skipVolat
xml += ",";
}
xml += "\n";
- }
+ }
}
else
{
@@ -1302,3 +1312,132 @@ function setKolabItemProperty(item, prop
logMessage("unable set property: " + propertyName + " with value " + value, LOG_CAL + LOG_ERROR);
}
}
+
+/**
+ * insert an organizer if not existing and update
+ */
+function insertOrganizer(levent, lsyncCalendar)
+{
+ if (levent.organizer)
+ return levent;
+ var modevent = levent.clone();
+ organizer = Components.classes["@mozilla.org/calendar/attendee;1"]
+ .createInstance(Components.interfaces.calIAttendee);
+ organizer.id = "MAILTO:" + lsyncCalendar.email;
+ organizer.commonName = lsyncCalendar.name;
+ organizer.participationStatus = "ACCEPTED";
+ organizer.rsvp = false;
+ organizer.role = "CHAIR";
+ organizer.isOrganizer = true;
+ modevent.organizer = organizer;
+ lsyncCalendar.gCalendar.modifyItem(modevent, levent, lsyncCalendar.gEvents);
+ return modevent;
+}
+
+function isprivateevent(levent)
+{
+ return (levent && levent.getProperty("CLASS") == "PRIVATE");
+}
+
+function isconfidentialevent(levent)
+{
+ return (levent && levent.getProperty("CLASS") == "CONFIDENTIAL");
+}
+
+function ispublicevent(levent)
+{
+ return (levent &&
+ !isprivateevent(levent) &&
+ !isconfidentialevent(levent));
+}
+
+/**
+ * only ORGANIZER is allowed to change non-public events
+ */
+function allowSyncEvent(levent, revent, lsyncCalendar)
+{
+ var lpublic = ispublicevent(levent);
+ var rpublic = ispublicevent(revent);
+ if (lpublic && rpublic)
+ return true;
+ /*previous behaviour*/
+ var rorgmail = lsyncCalendar.email;
+ if (revent.organizer)
+ rorgmail = revent.organizer.id.replace(/MAILTO:/i, '');
+ var org2mail = (lsyncCalendar.email == rorgmail);
+ logMessage("allowSyncEvent: " + org2mail + ":" + lpublic + ":" + rpublic, LOG_CAL + LOG_DEBUG );
+ return org2mail;
+}
+
+/**
+ * sync local changes back to server version
+ */
+function checkEventBeforeSync(fevent, revent, lsyncCalendar)
+{
+ var rc = allowSyncEvent(fevent, revent, lsyncCalendar);
+ if (!rc) {
+ logMessage("Update local event with server one : " + revent.id, LOG_CAL + LOG_DEBUG );
+ lsyncCalendar.curItemInListStatus.setAttribute("label", strBundle.getString("localUpdate"));
+ lsyncCalendar.gCalendar.modifyItem(revent, fevent, lsyncCalendar.gEvents);
+ }
+ return rc;
+}
+
+/**
+ * Event has changed from PUBLIC/CONFIDENTIAL to PRIVATE
+ */
+function checkEventServerDeletion(fevent, revent, lsyncCalendar)
+{
+ return (revent &&
+ allowSyncEvent(fevent, revent, lsyncCalendar) &&
+ isprivateevent(fevent));
+}
+
+/**
+ * delete event on Server and database but not in Thunderbird calendar
+ */
+function deleteEventOnServer(fevent, pevent, lsyncCalendar)
+{
+ if (!checkEventServerDeletion(fevent, pevent, lsyncCalendar))
+ return false;
+ var eventry = getSyncDbFile(lsyncCalendar.gConfig, lsyncCalendar.getType(), fevent.id);
+ var fentry = getSyncFieldFile(lsyncCalendar.gConfig, lsyncCalendar.getType(), fevent.id);
+ if (eventry.exists())
+ eventry.remove(false);
+ if (fentry.exists())
+ fentry.remove(false);
+ lsyncCalendar.curItemInListStatus.setAttribute("label", strBundle.getString("deleteOnServer"));
+ return true;
+}
+/**
+ * clear the description if event is confidential or private
+ */
+function modifyDescriptionOnExport(levent, syncTasks)
+{
+ var myclass = levent.getProperty("CLASS");
+ if (!ispublicevent(levent)) {
+ levent = levent.clone();
+ tmpdesc = (syncTasks==true ? "Task" : "Event");
+ levent.setProperty("DESCRIPTION",tmpdesc + " is " + myclass + "!");
+ }
+ return levent;
+}
+
+/**
+ * prepare event for export
+ */
+function modifyEventOnExport(levent, lsyncCalendar)
+{
+ levent = insertOrganizer(levent, lsyncCalendar);
+ levent = modifyDescriptionOnExport(levent, lsyncCalendar.syncTasks);
+ return levent;
+}
+
+function checkEventOnDeletion(levent, pevent, lsyncCalendar) {
+ /* check Events and Todos on privacy changes and modify appropriately*/
+ if (deleteEventOnServer(levent, pevent, lsyncCalendar))
+ return "DELETEME";
+ if (!checkEventBeforeSync(levent, pevent, lsyncCalendar))
+ return null;
+ return modifyDescriptionOnExport(levent, lsyncCalendar.syncTasks);
+}
Index: calendar.js
===================================================================
RCS file: /cvs/synckolab/src/chrome/content/synckolab/calendar.js,v
retrieving revision 1.55
diff -a -u -p -r1.55 calendar.js
--- calendar.js 7 Nov 2008 10:21:34 -0000 1.55
+++ calendar.js 18 Jun 2009 16:32:44 -0000
@@ -317,7 +317,7 @@ var syncCalendar = {
{
// a new event
logMessage("a new event, locally unknown:" + parsedEvent.id, LOG_CAL + LOG_DEBUG);
- if (!idxEntry.exists())
+ if (!idxEntry.exists() || !allowSyncEvent(foundEvent, parsedEvent, this))
{
// use the original content to write the snyc file
// this makes it easier to compare later on and makes sure no info is
@@ -428,14 +428,17 @@ var syncCalendar = {
{
// local change to server
logMessage ("put event on server: " + parsedEvent.id, LOG_CAL + LOG_INFO);
-
- var msg = null;
- if (this.format == "Xml")
- {
- msg = event2kolabXmlMsg(foundEvent, this.email, this.syncTasks);
- }
- else
- {
+ foundEvent = checkEventOnDeletion(foundEvent, parsedEvent, this);
+ if (!foundEvent || foundEvent == "DELETEME")
+ return foundEvent;
+
+ var msg = null;
+ if (this.format == "Xml")
+ {
+ msg = event2kolabXmlMsg(foundEvent, this.email, this.syncTasks);
+ }
+ else
+ {
icssrv = Components.classes["@mozilla.org/calendar/ics-service;1"]
.getService(Components.interfaces.calIICSService);
@@ -505,6 +508,10 @@ var syncCalendar = {
{
logMessage("event on client changed: " + parsedEvent.id, LOG_CAL + LOG_INFO);
+ foundEvent = checkEventOnDeletion(foundEvent, parsedEvent, this);
+ if (!foundEvent || foundEvent == "DELETEME")
+ return foundEvent;
+
var msg = null;
if (this.format == "Xml")
{
@@ -592,6 +599,12 @@ var syncCalendar = {
return null;
}
+ /* skip if event is PRIVATE */
+ if (isprivateevent(cur)) {
+ logMessage("skipping event because it is marked as PRIVATE: " + cur.id, LOG_CAL + LOG_INFO);
+ return null;
+ }
+
logMessage("processing event", LOG_CAL + LOG_DEBUG);
// check if we have this uid in the messages, skip it if it
@@ -677,34 +690,33 @@ var syncCalendar = {
{
logMessage("nextUpdate really writes event:" + cur.id, LOG_CAL + LOG_DEBUG);
// and now really write the message
-
- var msg = null;
- if (this.format == "Xml")
- {
- msg = event2kolabXmlMsg(cur, this.email, this.syncTasks);
- }
- else
- {
- icssrv = Components.classes["@mozilla.org/calendar/ics-service;1"]
- .getService(Components.interfaces.calIICSService);
+ clonedEvent = modifyEventOnExport(cur, this);
+ var msg = null;
+ if (this.format == "Xml")
+ {
+ msg = event2kolabXmlMsg(clonedEvent, this.email, this.syncTasks);
+ }
+ else
+ {
+ icssrv = Components.classes["@mozilla.org/calendar/ics-service;1"]
+ .getService(Components.interfaces.calIICSService);
if (this.syncTasks)
{
var calComp = icssrv.createIcalComponent("VTODO");
-
calComp.version = "2.0";
calComp.prodid = "-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN";
- calComp.addSubcomponent(cur.icalComponent);
+ calComp.addSubcomponent(clonedEvent.icalComponent);
msg = generateMail(cur.id, this.email, "iCal", "text/todo",
false, encode_utf8(encodeQuoted(calComp.serializeToICS())), null);
}
else
{
- var calComp = icssrv.createIcalComponent("VCALENDAR");
- calComp.version = "2.0";
- calComp.prodid = "-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN";
- calComp.addSubcomponent(cur.icalComponent);
+ var calComp = icssrv.createIcalComponent("VCALENDAR");
+ calComp.version = "2.0";
+ calComp.prodid = "-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN";
+ calComp.addSubcomponent(clonedEvent.icalComponent);
msg = generateMail(cur.id, this.email, "iCal", "text/calendar",
false, encode_utf8(encodeQuoted(calComp.serializeToICS())), null);
@@ -715,8 +727,8 @@ var syncCalendar = {
logMessage("nextUpdate puts event into db (2):" + cur.id, LOG_CAL + LOG_INFO);
// add the new event into the db
- var cEntry = getSyncDbFile (this.gConfig, this.getType(), cur.id);
- writeSyncDBFile (cEntry, stripMailHeader(msg));
+ var cEntry = getSyncDbFile(this.gConfig, this.getType(), cur.id);
+ writeSyncDBFile(cEntry, stripMailHeader(msg));
}
}
From f.pavlic at evice.de Fri Jun 19 04:44:08 2009
From: f.pavlic at evice.de (Frank Pavlic)
Date: Fri, 19 Jun 2009 13:44:08 +0200
Subject: [Synckolab] PATCH: Task Status Synchronization in SyncKolab broken
Message-ID: <200906191344.08555.f.pavlic@evice.de>
Hi,
Synchronization of the task status is broken in SyncKolab.
Even more it does not respect various possible settings like NEEDS-ACTION and so on.
Following patch fixes it . This one goes on top of the Enhancement-Patch I have sent a couple of minutes ago
It has been tested on Linux and Windows with SyncKolab HEAD version and also for ICAL and XML format.
Please review and add to the repository if it is ok .
Mit freundlichen Gr?ssen
evice GmbH Open Source-Systemhaus - Frank Pavlic
-------
diffstat:
calTools.js | 61 ++++++++++++++++++++++++++++++++++++++++++++----------------
1 file changed, 45 insertions(+), 16 deletions(-)
--- calTools.js 2009-06-18 18:31:49.000000000 +0200
+++ /home/adempiere/Entwicklung/CVS_synckolab/exported/synckolab/src/chrome/content/synckolab/calTools.js 2009-06-18 18:31:45.000000000 +0200
@@ -456,7 +456,6 @@
break;
var cStatus = cur.firstChild.data;
- if (cStatus == "IN-PROCESS")
setKolabItemProperty(event, "status", cStatus);
break;
@@ -857,6 +856,46 @@
}
/**
+ * task status mapping from Lightning to xml
+ * Kolabs "deferred" will be Lightning "CANCELLED"
+ */
+var arrstatus = new Array();
+arrstatus["IN-PROCESS"] = "in-progress";
+arrstatus["NEEDS-ACTION"]="waiting-on-someone-else";
+arrstatus["NONE"]="not-started";
+arrstatus["CANCELLED"]="deferred";
+arrstatus["COMPLETED"]="completed";
+
+/* return the task status */
+function gettaskstatus(tstatus, xmlvalue)
+{
+ if (xmlvalue)
+ return arrstatus[tstatus];
+ /* we want to return the Lightning value */
+ for (var icalval in arrstatus) {
+ if (arrstatus[icalval] == tstatus)
+ return icalval;
+ }
+ return (xmlvalue==true ? "not-started" : "NONE");
+}
+
+/**
+ * set the task status appropriately
+ */
+function setxmltaskstatus(tevent)
+{
+ var tmpxml="";
+ if (tevent.isCompleted || tevent.percentComplete == 100) {
+ tmpxml += " 100\n";
+ tmpxml += " completed\n";
+ return tmpxml;
+ }
+ tmpxml += " " + gettaskstatus(tevent.status, true) + "\n";
+ tmpxml += " " + tevent.percentComplete +"\n";
+ return tmpxml;
+}
+
+/**
* convert an ICAL event into a Kolab XML string representation,
* allow to caller to skip fields which change frequently such as
* "last-modification-date" because this can confuse the hash IDs.
@@ -892,20 +931,8 @@
var xml = '\n';
if (syncTasks == true)
{
- xml += '\n'
- if (event.isCompleted || event.percentComplete == 100)
- {
- xml += " 100\n";
- xml += " completed\n";
- }
- else
- {
- if (event.percentComplete == 0)
- xml += " not-started\n";
- else
- xml += " started\n";
- xml += " " + event.percentComplete +"\n";
- }
+ xml += '\n';
+ xml += setxmltaskstatus(event);
}
else
xml += '\n';
@@ -1295,7 +1322,9 @@
case "isCompleted":
item.isCompleted = value;
break;
-
+ case "status":
+ item.status = gettaskstatus(value,false);
+ break;
case "title":
item.title = value;
break;
From van at vmartin.net Fri Jun 19 17:44:17 2009
From: van at vmartin.net (Van A. Martin)
Date: Fri, 19 Jun 2009 17:44:17 -0700
Subject: [Synckolab] Synckolab has trouble with "All Day" events
Message-ID: <4A3C30E1.8020208@vmartin.net>
Niko;
Here is the debugging info you requested. I created a new All Day event
for Aug 1 and then did a manual sync. You can see the entry being sent
to IMAP. The dialog box does not allow text copy, so I had to paste
screen shots. I then did 4 more manual syncs with no change to the
calendar entry. Note that the sync keeps thinking that something has
changed. Also note that the date in the message is off my one day.
Included are exports of the calendar entry from Lightening right after
it was created and after the last manual sync.
Initial Sync
Second Sync
Third Sync:
Fourth Sync:
Fifth Sync:
Initial iCal Entry:
BEGIN:VEVENT
CREATED:20090619T232257Z
LAST-MODIFIED:20090619T232315Z
DTSTAMP:20090619T232257Z
UID:38d99af2-4cf4-4b90-95f6-358058ef985a
SUMMARY:Synckolab All Day Test
DTSTART;VALUE=DATE:20090801
DTEND;VALUE=DATE:20090802
TRANSP:TRANSPARENT
END:VEVENT
Final iCal Entry:
BEGIN:VEVENT
CREATED:20090619T232257Z
LAST-MODIFIED:20090619T232315Z
DTSTAMP:20090619T232257Z
UID:38d99af2-4cf4-4b90-95f6-358058ef985a
SUMMARY:Synckolab All Day Test
DTSTART;VALUE=DATE:20090801
DTEND;VALUE=DATE:20090802
TRANSP:TRANSPARENT
END:VEVENT
I was not able to reproduce the part where the calendar entry moves.
The problem had been going on for two weeks after the initial entry
before I noticed the entry had moved to the wrong place. I saw this on
several All Day entries.
Let me know if you need anything else.
Van A. Martin
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: image/jpeg
Size: 4257 bytes
Desc: not available
URL:
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: image/jpeg
Size: 5079 bytes
Desc: not available
URL:
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: image/jpeg
Size: 5000 bytes
Desc: not available
URL:
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: image/jpeg
Size: 4954 bytes
Desc: not available
URL:
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: image/jpeg
Size: 5009 bytes
Desc: not available
URL:
From niko.berger at corinis.com Sat Jun 20 17:47:47 2009
From: niko.berger at corinis.com (Niko Berger)
Date: Sun, 21 Jun 2009 02:47:47 +0200
Subject: [Synckolab] Synckolab has trouble with "All Day" events
In-Reply-To: <4A3C30E1.8020208@vmartin.net>
References: <4A3C30E1.8020208@vmartin.net>
Message-ID: <4A3D8333.7090008@corinis.com>
Van A. Martin schrieb:
>
> Niko;
>
> Here is the debugging info you requested. I created a new All Day
> event for Aug 1 and then did a manual sync. You can see the entry
> being sent to IMAP. The dialog box does not allow text copy, so I had
> to paste screen shots. I then did 4 more manual syncs with no change
> to the calendar entry. Note that the sync keeps thinking that
> something has changed. Also note that the date in the message is off
> my one day. Included are exports of the calendar entry from
> Lightening right after it was created and after the last manual sync.
>
> Initial Sync
>
>
> Second Sync
>
> Third Sync:
>
> Fourth Sync:
>
> Fifth Sync:
>
> Initial iCal Entry:
>
> BEGIN:VEVENT
> CREATED:20090619T232257Z
> LAST-MODIFIED:20090619T232315Z
> DTSTAMP:20090619T232257Z
> UID:38d99af2-4cf4-4b90-95f6-358058ef985a
> SUMMARY:Synckolab All Day Test
> DTSTART;VALUE=DATE:20090801
> DTEND;VALUE=DATE:20090802
> TRANSP:TRANSPARENT
> END:VEVENT
>
> Final iCal Entry:
>
> BEGIN:VEVENT
> CREATED:20090619T232257Z
> LAST-MODIFIED:20090619T232315Z
> DTSTAMP:20090619T232257Z
> UID:38d99af2-4cf4-4b90-95f6-358058ef985a
> SUMMARY:Synckolab All Day Test
> DTSTART;VALUE=DATE:20090801
> DTEND;VALUE=DATE:20090802
> TRANSP:TRANSPARENT
> END:VEVENT
>
> I was not able to reproduce the part where the calendar entry moves.
> The problem had been going on for two weeks after the initial entry
> before I noticed the entry had moved to the wrong place. I saw this
> on several All Day entries.
>
> Let me know if you need anything else.
>
>
> Van A. Martin
>
I am afraid with ical there is nothing i can do. I use the lightning
ical import/export functionality to parse these. Maybe try chaning the
format to kolab2/xml and see if the problem is reproduceable there.
Niko
--
Corinis OpenSource Community & Content Management - www.corinis.org
NPS Berger KEG
www.corinis.com
niko.berger at corinis.com
Fax: +43/1/941 55 66
Kundratstrasse 4-6/18/9
A-1100 Vienna
From van at vmartin.net Sat Jun 20 19:15:17 2009
From: van at vmartin.net (Van A. Martin)
Date: Sat, 20 Jun 2009 19:15:17 -0700
Subject: [Synckolab] Synckolab has trouble with "All Day" events
In-Reply-To: <4A3D8333.7090008@corinis.com>
References: <4A3C30E1.8020208@vmartin.net> <4A3D8333.7090008@corinis.com>
Message-ID: <4A3D97B5.60008@vmartin.net>
Niko;
I think we have a communications problem. I am using kolab2/xml for the
Synckolab format to IMAP. I wanted to show you what the entry looked
like so I used the Lightening export function, which puts the output in
iCal format. What I showed in my note should be the same as what you
get from calling the Lightening API.
Van A. Martin
From niko.berger at corinis.com Sun Jun 21 03:56:57 2009
From: niko.berger at corinis.com (Niko Berger)
Date: Sun, 21 Jun 2009 12:56:57 +0200
Subject: [Synckolab] Synckolab has trouble with "All Day" events
In-Reply-To: <4A3D97B5.60008@vmartin.net>
References: <4A3C30E1.8020208@vmartin.net> <4A3D8333.7090008@corinis.com>
<4A3D97B5.60008@vmartin.net>
Message-ID: <4A3E11F9.9000300@corinis.com>
Van A. Martin schrieb:
> Niko;
>
> I think we have a communications problem. I am using kolab2/xml for
> the Synckolab format to IMAP. I wanted to show you what the entry
> looked like so I used the Lightening export function, which puts the
> output in iCal format. What I showed in my note should be the same as
> what you get from calling the Lightening API.
>
> Van A. Martin
>
Ah... I see. No I ctually would need the whole email from one of those
"moving" full time events (meaning: try to find the email message in
your imap folder and attach that to an email to me). If there is
information you dont want hte whole world to know, just send me the
attachment directly.
My problem was/is that I cant seem to reproduce one of these messages,
thus I cant check out why it is moving a day (I am currently guessing
that its time zone related).
So if anyone encounters such a message (same goes for messages that
contain data that synckolab syncs every time) please send them to me.
Most of the time those issues come from some bug in encoding or some
special character that isnt handled correctly.
Niko
From van at vmartin.net Sun Jun 21 20:19:58 2009
From: van at vmartin.net (Van A. Martin)
Date: Sun, 21 Jun 2009 20:19:58 -0700
Subject: [Synckolab] Synckolab has trouble with "All Day" events
In-Reply-To: <4A3E11F9.9000300@corinis.com>
References: <4A3C30E1.8020208@vmartin.net> <4A3D8333.7090008@corinis.com>
<4A3D97B5.60008@vmartin.net> <4A3E11F9.9000300@corinis.com>
Message-ID: <4A3EF85E.8070406@vmartin.net>
Niko;
Here is the XML entry from the IMAP folder for a Calendar event that
says something has changed on every sync, even though there was no update:
-
Synckolab 1.0.3, Calendar Sync
d6dda2af-624f-49af-b4ca-0b1d3339238b
2009-07-04
2009-07-04
Synckolab All Day Test 2
2009-06-22T03:10:56Z
2009-06-22T03:11:17Z
public
-
xxxx
xxxx
busy
0
I notice that in the XML entry you show "local" dates while the
Lightening export shows GMT dates.
Van A. Martin
From niko.berger at corinis.com Mon Jun 22 10:22:38 2009
From: niko.berger at corinis.com (Niko Berger)
Date: Mon, 22 Jun 2009 19:22:38 +0200
Subject: [Synckolab] Enhancement: Respect Privacy Settings of Events and
Tasks in SyncKolab
In-Reply-To: <200906191333.58802.f.pavlic@evice.de>
References: <200906191333.58802.f.pavlic@evice.de>
Message-ID: <4A3FBDDE.7020903@corinis.com>
Frank Pavlic wrote:
> Hi,
> today you can use SyncKolab to simple sync all events and tasks to an IMAP folder. Also
> several persons can participate. Everything will be synced without any user relevant checkings.
> Even PRIVATE events and tasks will be synced completely. This does not make much sense for a
> group calendar where you really want to use PRVACY status in events and tasks
>
> Following patch will take this into consideration.
>
> 1.
> PRIVATE events and tasks will never be synced
> 2.
> CONFIDENTIAL events and tasks will be synced with a modified description just telling all others except
> for the organizer that event or task is CONFIDENTIAL.
> If an event or task is CONFIDENTIAL only organizer will be able to make modifications to this event.
> Of course in their local calendars users can modify the event or task but this will be synced back to
> server version again.
> Description will be modified because users are able to read events and tasks directly from shared folder in
> Thunderbird . Therefore description should not be on the server but only in organizers calendar.
> 3.
> PUBLIC events will be handled as today. We are not breaking any only private used calendars but users
> should note these modifications if they want to use the PRIVACY status in their "one-man-calendar" .
> 4.
> Changing the PRIVACY of events and tasks of already synchronized events and tasks will also be handled appropriately.
> 5.
> If there is no organizer information in a new event or task it will be inserted before syncing. This is more
> a workaround, but an important one, for Lightning's neglect to insert an organizer
> even when not opening the attendees dialog.
>
> This has been tested with HEAD version of SyncKolab, under Linux and Windows.
> Furthermore it has been tested with ICAL and XML for events and tasks.
>
> The patch is on top of the fix I sent the day before yesterday .
> Please review, make comments or add to SyncKolab repository if you agree with all lines of code ;-)
>
> If it's more appropriate I can also send you a patch file as attachment.
>
Hi,
first of all, thanks for the patch. I included it (with a few minor
modfications) in the current trunk and built a nightly.
Please check it out, i hope i didnt miss anything.
Niko
From van at vmartin.net Mon Jun 22 22:48:41 2009
From: van at vmartin.net (Van A. Martin)
Date: Mon, 22 Jun 2009 22:48:41 -0700
Subject: [Synckolab] Synckolab has trouble with "All Day" events
In-Reply-To: <4A3B6A88.1080702@corinis.com>
References: <4A3AB586.9080201@vmartin.net> <4A3B6A88.1080702@corinis.com>
Message-ID: <4A406CB9.7060103@vmartin.net>
Niko;
I tried an experiment and can verify your theory that the continuous
Update on Server message is time zone related. I changed my PC to say
that I am on GMT time and then created a new All Day event. Everything
worked as it should and I did not see any Update on Server messages over
several syncs.
You should now be able to recreate the problem by setting your PC to
Pacific time (GMT-8).
Van A. Martin
From f.pavlic at evice.de Tue Jun 23 01:01:11 2009
From: f.pavlic at evice.de (Frank Pavlic)
Date: Tue, 23 Jun 2009 10:01:11 +0200
Subject: [Synckolab] Enhancement: Respect Privacy Settings of Events and
Tasks in SyncKolab
In-Reply-To: <4A3FBDDE.7020903@corinis.com>
References: <200906191333.58802.f.pavlic@evice.de>
<4A3FBDDE.7020903@corinis.com>
Message-ID: <200906231001.12056.f.pavlic@evice.de>
Niko,
almost perfect, there is one important thing you have missed in calTools.js. Only checking
if there is a description available in the event will result in __always__ syncing CONFIDENTIAL events.
Description on the server and on organizer's side are never equal for CONFIDENTIAL events. We don't want
to sync events where nothing has been changed .
Here is the patch .
Index: calTools.js
===================================================================
RCS file: /cvs/synckolab/src/chrome/content/synckolab/calTools.js,v
retrieving revision 1.74
diff -B -u -b -r1.74 calTools.js
--- calTools.js 22 Jun 2009 17:22:18 -0000 1.74
+++ calTools.js 23 Jun 2009 07:20:18 -0000
@@ -961,7 +961,8 @@
}
// description only for public events
- if (event.getProperty("DESCRIPTION"))
+ if ( event.getProperty("DESCRIPTION") &&
+ (isPublicEvent(event) || !skipVolatiles) )
xml += " " + encode4XML(event.getProperty("DESCRIPTION")) + "\n";
if (event.getProperty("CLASS"))
Mit freundlichen Gr?ssen
evice GmbH Open Source-Systemhaus - Frank Pavlic
Am Monday 22 June 2009 19:22:38 schrieb Niko Berger:
> Frank Pavlic wrote:
> > Hi,
> > today you can use SyncKolab to simple sync all events and tasks to an
> > IMAP folder. Also several persons can participate. Everything will be
> > synced without any user relevant checkings. Even PRIVATE events and tasks
> > will be synced completely. This does not make much sense for a group
> > calendar where you really want to use PRVACY status in events and tasks
> >
> > Following patch will take this into consideration.
> >
> > 1.
> > PRIVATE events and tasks will never be synced
> > 2.
> > CONFIDENTIAL events and tasks will be synced with a modified description
> > just telling all others except for the organizer that event or task is
> > CONFIDENTIAL.
> > If an event or task is CONFIDENTIAL only organizer will be able to make
> > modifications to this event. Of course in their local calendars users can
> > modify the event or task but this will be synced back to server version
> > again.
> > Description will be modified because users are able to read events and
> > tasks directly from shared folder in Thunderbird . Therefore description
> > should not be on the server but only in organizers calendar. 3.
> > PUBLIC events will be handled as today. We are not breaking any only
> > private used calendars but users should note these modifications if they
> > want to use the PRIVACY status in their "one-man-calendar" . 4.
> > Changing the PRIVACY of events and tasks of already synchronized events
> > and tasks will also be handled appropriately. 5.
> > If there is no organizer information in a new event or task it will be
> > inserted before syncing. This is more a workaround, but an important one,
> > for Lightning's neglect to insert an organizer even when not opening the
> > attendees dialog.
> >
> > This has been tested with HEAD version of SyncKolab, under Linux and
> > Windows. Furthermore it has been tested with ICAL and XML for events and
> > tasks.
> >
> > The patch is on top of the fix I sent the day before yesterday .
> > Please review, make comments or add to SyncKolab repository if you agree
> > with all lines of code ;-)
> >
> > If it's more appropriate I can also send you a patch file as attachment.
>
> Hi,
> first of all, thanks for the patch. I included it (with a few minor
> modfications) in the current trunk and built a nightly.
>
> Please check it out, i hope i didnt miss anything.
>
> Niko
From f.pavlic at evice.de Wed Jun 24 07:49:23 2009
From: f.pavlic at evice.de (Frank Pavlic)
Date: Wed, 24 Jun 2009 16:49:23 +0200
Subject: [Synckolab] PATCH: insertOrganizer also for XML - entries...
Message-ID: <200906241649.23543.f.pavlic@evice.de>
Niko,
modifyEventOnExport should also be called for XML events so before the if-else call.
You have put that function call inside the "else" - clause ,
means only for ICAL-events and tasks. XML events are not affected .
Here is the patch:
Index: calendar.js
===================================================================
RCS file: /cvs/synckolab/src/chrome/content/synckolab/calendar.js,v
retrieving revision 1.56
diff -B -u -b -r1.56 calendar.js
--- calendar.js 22 Jun 2009 17:22:18 -0000 1.56
+++ calendar.js 24 Jun 2009 13:36:01 -0000
@@ -692,17 +692,16 @@
{
logMessage("nextUpdate really writes event:" + cur.id, LOG_CAL + LOG_DEBUG);
// and now really write the message
-
+ var clonedEvent = cur;
+ if (modifyEventOnExport)
+ clonedEvent = modifyEventOnExport(cur, this);
var msg = null;
if (this.format == "Xml")
{
- msg = event2kolabXmlMsg(cur, this.email, this.syncTasks);
+ msg = event2kolabXmlMsg(clonedEvent, this.email, this.syncTasks);
}
else
{
- var clonedEvent = cur;
- if (modifyEventOnExport)
- clonedEvent = modifyEventOnExport(cur, this);
icssrv = Components.classes["@mozilla.org/calendar/ics-service;1"]
.getService(Components.interfaces.calIICSService);
Mit freundlichen Gr?ssen
evice GmbH Open Source-Systemhaus - Frank Pavlic
From f.pavlic at evice.de Wed Jun 24 10:24:50 2009
From: f.pavlic at evice.de (Frank Pavlic)
Date: Wed, 24 Jun 2009 19:24:50 +0200
Subject: [Synckolab] PATCH : modify Task status on Export to IMAP Server
Message-ID: <200906241924.51032.f.pavlic@evice.de>
Hi,
seems that Lightning does not care about Task Status if user does not touch the drop-down menu
when creating new tasks. In this case Tasks will be saved with a NULL-status .
SyncKolab will __always__ sync this task to the server.
Exporting Tasks I will set the Task Status to NONE if it is NULL and modify the event in the appropriate calendar.
Patch also contains a small typo-fix, a semicolon has been forgotten.
Please review and apply if you agree .
Here is the patch :
Index: calTools.js
===================================================================
RCS file: /cvs/synckolab/src/chrome/content/synckolab/calTools.js,v
retrieving revision 1.75
diff -B -u -b -r1.75 calTools.js
--- calTools.js 24 Jun 2009 14:25:56 -0000 1.75
+++ calTools.js 24 Jun 2009 17:15:47 -0000
@@ -918,7 +918,7 @@
var xml = '\n';
if (syncTasks == true)
{
- xml += '\n'
+ xml += '\n';
// tasks have a status
if (event.isCompleted || event.percentComplete == 100) {
@@ -1374,6 +1374,9 @@
organizer.role = "CHAIR";
organizer.isOrganizer = true;
modevent.organizer = organizer;
+ /* set task status to NONE if it is NULL */
+ if (lsyncCalendar.syncTasks && !levent.status)
+ modevent.status="NONE";
lsyncCalendar.gCalendar.modifyItem(modevent, levent, lsyncCalendar.gEvents);
return modevent;
}
Mit freundlichen Gr?ssen
evice GmbH Open Source-Systemhaus - Frank Pavlic
From f.pavlic at evice.de Thu Jun 25 02:28:09 2009
From: f.pavlic at evice.de (Frank Pavlic)
Date: Thu, 25 Jun 2009 11:28:09 +0200
Subject: [Synckolab] PATCH: Fix Alarm Synchronisation for Tasks and Events
Message-ID: <200906251128.09577.f.pavlic@evice.de>
Hi,
synchronization of Alarm Settings does not work since createDuration(..) in xml2Event(..)
is not called with an iCalString-formatted string but just the value from the XML File.
This results in always zero seconds for alarmOffset and thus will never be compared .
Following patch fixes it.
--- calTools.js 2009-06-24 19:14:51.000000000 +0200
+++ /home/adempiere/Entwicklung/CVS_synckolab/exported/synckolab/src/chrome/content/synckolab/calTools.js 2009-06-25 11:12:02.000000000 +0200
@@ -535,7 +535,7 @@
case "ALARM":
if (cur.firstChild)
- event.alarmOffset = createDuration(decode4XML(cur.firstChild.data));
+ event.alarmOffset = createDuration("-PT"+decode4XML(cur.firstChild.data)+"M");
break;
case "SENSITIVITY":
Mit freundlichen Gr?ssen
evice GmbH Open Source-Systemhaus - Frank Pavlic
From aditsu at yahoo.com Tue Jun 16 09:34:58 2009
From: aditsu at yahoo.com (Adrian Sandor)
Date: Tue, 16 Jun 2009 09:34:58 -0700 (PDT)
Subject: [Synckolab] Can't install
Message-ID: <100128.62104.qm@web32403.mail.mud.yahoo.com>
Hi, I tried installing SyncKolab in SeaMonkey 1.1.16 and I get "Install script not found".
How can I install it?
Thanks
Adrian
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
From wwilliam at umn.edu Wed Jun 24 12:19:36 2009
From: wwilliam at umn.edu (Bill Williamson)
Date: Wed, 24 Jun 2009 14:19:36 -0500
Subject: [Synckolab] syncing lists
Message-ID: <4A427C48.4080001@umn.edu>
Issue: unable to sync mailing lists. Is that an available feature of
synckolab? Individual cards/entries sync fine. No errors. Using
version 1.0.2 on Win XPsp3/Tbird v 2.0.0.22.
Thank you. ~Bill
From rainer.kohls at web.de Tue Jun 30 15:11:54 2009
From: rainer.kohls at web.de (Rainer)
Date: Wed, 1 Jul 2009 00:11:54 +0200
Subject: [Synckolab] no folders contacts or calendar
Message-ID: <200907010011.54502.rainer.kohls@web.de>
Hi,
i've just installed thunderbird, synckolab and lightning, because the sync
with kmail in ubuntu 9.04 is not well working yet.
I've configured synckolab just like in the wiki, if I have to chosse the
contacts or calendar-folder I just see all the other folders on my kolab/IMAP,
but no contacts or calendar, in kmail I can see them.
What do I wrong?
It doesn't matter, if I chosse vcard/kolab1 or kolab2.
My kolab is in Version 2.2.2
can anybody help me?
greetings
rainer