Fix for bug #589

pull/3/head
Ludovic Marcotte 2014-09-25 09:25:13 -04:00
parent 3675220756
commit 0b6e3dc22d
3 changed files with 16 additions and 9 deletions

1
NEWS
View File

@ -8,6 +8,7 @@ Enchancements
- alarms can now be snoozed for 1 day
- better iCal compability regarding alarms (#1920)
- force default classification over CalDAV if none is set (#2326)
- now compliant when handling completed tasks (#589)
Bug fixes
- fixed sending mails to multiple recipients over AS

View File

@ -42,7 +42,7 @@
container: (id) theContainer
{
NSMutableDictionary *row;
NSCalendarDate *startDate, *dueDate;
NSCalendarDate *startDate, *dueDate, *completed;
NSArray *attendees, *categories;
NSString *uid, *title, *location, *status;
NSNumber *sequence;
@ -63,6 +63,7 @@
location = [self location];
sequence = [self sequence];
accessClass = [self symbolicAccessClass];
completed = [self completed];
status = [[self status] uppercaseString];
attendees = [self attendees];
@ -121,10 +122,10 @@
if ([partmails length] > 0)
[row setObject:partmails forKey: @"c_partmails"];
if ([status isNotNull])
if (completed || [status isNotNull])
{
code = 0; /* NEEDS-ACTION */
if ([status isEqualToString: @"COMPLETED"])
if (completed || [status isEqualToString: @"COMPLETED"])
code = 1;
else if ([status isEqualToString: @"IN-PROCESS"])
code = 2;

View File

@ -41,6 +41,8 @@
#import <SOGo/SOGoDateFormatter.h>
#import <SOGo/SOGoUser.h>
#import <SOGo/SOGoUserDefaults.h>
#import <Appointments/iCalEntityObject+SOGo.h>
#import <Appointments/SOGoAppointmentFolder.h>
#import <Appointments/SOGoTaskObject.h>
@ -213,13 +215,12 @@
- (BOOL) statusDateDisabled
{
return ![status isEqualToString: @"COMPLETED"];
return !([status isEqualToString: @"COMPLETED"] || statusDate);
}
- (BOOL) statusPercentDisabled
{
return ([status length] == 0
|| [status isEqualToString: @"CANCELLED"]);
return ([status length] == 0 || [status isEqualToString: @"CANCELLED"]);
}
- (void) setStatusPercent: (NSString *) newStatusPercent
@ -311,11 +312,15 @@
hasDueDate = YES;
else
dueDate = [self newStartDate];
ASSIGN (statusDate, [todo completed]);
[statusDate setTimeZone: timeZone];
ASSIGN (status, [todo status]);
if ([status isEqualToString: @"COMPLETED"])
if ([status length] == 0 && statusDate)
{
ASSIGN (statusDate, [todo completed]);
[statusDate setTimeZone: timeZone];
ASSIGN(status, @"COMPLETED");
}
else
{