+2008-01-24 Wolfgang Sourdeau <wsourdeau@inverse.ca>
+
+ * SoObjects/Appointments/SOGoAppointmentFolder.m: if c_cycleinfo
+ is an NSNull instance, we consider it to be empty and return
+ automatically with an error message in the log.
+
+ * OGoContentStore/OCSiCalFieldExtractor.m ([OCSiCalFieldExtractor
+ -extractQuickFieldsFromTodo:_task]): handle recurrence info in
+ tasks.
+
+ * UI/MailPartViewers/UIxMailPartViewer.m ([UIxMailPartViewer
+ -pathToAttachment]): in the case where the client object is not a
+ mail body part (when the message IS the attachment), we append 0
+ to generate the url, instead of the filename.
+
2008-01-22 Wolfgang Sourdeau <wsourdeau@inverse.ca>
* SoObjects/Appointments/SOGoAppointmentFolder.m
date = [NSNull null];
[row setObject: date forKey: @"c_enddate"];
+ if ([_task isRecurrent])
+ {
+ [row setObject: [self numberForDate: distantFuture]
+ forKey: @"c_cycleenddate"];
+ [row setObject: [_task cycleInfo]
+ forKey: @"c_cycleinfo"];
+ }
+
if ([participants length] > 0)
[row setObject:participants forKey: @"c_participants"];
if ([partmails length] > 0)
NGCalendarDateRange *fir;
NSArray *rules, *exRules, *exDates, *ranges;
unsigned i, count;
+ NSString *content;
- cycleinfo = [[_row objectForKey:@"c_cycleinfo"] propertyList];
- if (cycleinfo == nil) {
- [self errorWithFormat:@"cyclic record doesn't have cycleinfo -> %@", _row];
- return;
- }
+ content = [_row objectForKey: @"c_cycleinfo"];
+ if (![content isNotNull])
+ {
+ [self errorWithFormat:@"cyclic record doesn't have cycleinfo -> %@", _row];
+ return;
+ }
+
+ cycleinfo = [content propertyList];
+ if (!cycleinfo)
+ {
+ [self errorWithFormat:@"cyclic record doesn't have cycleinfo -> %@", _row];
+ return;
+ }
row = [self fixupRecord:_row fetchRange: _r];
[row removeObjectForKey: @"c_cycleinfo"];
if (![url hasSuffix: @"/"])
url = [url stringByAppendingString: @"/"];
- /* if we get a message with an image/* or application/*
+ /* if we get a message with an image-* or application-*
Content-Type, we must generate a 'fake' part since our
decoded mail won't have any. Also see SOGoMailBodyPart: -fetchBLOB
and SOGoMailObject: -lookupImap4BodyPartKey: inContext for
- (NSString *) pathToAttachment
{
NSMutableString *url;
- NSString *s;
+ NSString *s, *attachment;
SOGoMailBodyPart *bodyPart;
bodyPart = [self clientPart];
[url appendString: @"/"];
// s = [[self partPath] componentsJoinedByString: @"/"];
- [url appendString: [self _filenameForAttachment: bodyPart]];
+ if ([bodyPart isKindOfClass: [SOGoMailBodyPart class]])
+ attachment = [self _filenameForAttachment: bodyPart];
+ else
+ attachment = @"0";
+ [url appendString: attachment];
return url;
}
<br />
<br />
-->
- <pre style="display: none;"><var:string value="flatContentAsString" /></pre>
+ <!-- <pre style="display: none;"><var:string value="flatContentAsString" /></pre> -->
</div>