mirror of
https://github.com/inverse-inc/sogo.git
synced 2026-03-22 23:02:43 +00:00
(fix) handle default classification for tasks (fixes #3541)
This commit is contained in:
@@ -1722,37 +1722,6 @@ inRecurrenceExceptionsForEvent: (iCalEvent *) theEvent
|
||||
}
|
||||
}
|
||||
|
||||
- (void) _adjustClassificationInRequestCalendar: (iCalCalendar *) rqCalendar
|
||||
{
|
||||
SOGoUserDefaults *userDefaults;
|
||||
NSString *accessClass;
|
||||
NSArray *allObjects;
|
||||
id entity;
|
||||
|
||||
int i;
|
||||
|
||||
userDefaults = [[context activeUser] userDefaults];
|
||||
allObjects = [rqCalendar allObjects];
|
||||
|
||||
for (i = 0; i < [allObjects count]; i++)
|
||||
{
|
||||
entity = [allObjects objectAtIndex: i];
|
||||
|
||||
if ([entity respondsToSelector: @selector(accessClass)])
|
||||
{
|
||||
accessClass = [entity accessClass];
|
||||
|
||||
if (!accessClass || [accessClass length] == 0)
|
||||
{
|
||||
if ([entity isKindOfClass: [iCalEvent class]])
|
||||
[entity setAccessClass: [userDefaults calendarEventsDefaultClassification]];
|
||||
else if ([entity isKindOfClass: [iCalToDo class]])
|
||||
[entity setAccessClass: [userDefaults calendarTasksDefaultClassification]];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// iOS devices (and potentially others) send event invitations with no PARTSTAT defined.
|
||||
// This confuses DAV clients like Thunderbird, or event SOGo web. The RFC says:
|
||||
@@ -1969,7 +1938,7 @@ inRecurrenceExceptionsForEvent: (iCalEvent *) theEvent
|
||||
}
|
||||
|
||||
[self _adjustEventsInRequestCalendar: calendar];
|
||||
[self _adjustClassificationInRequestCalendar: calendar];
|
||||
[self adjustClassificationInRequestCalendar: calendar];
|
||||
[self _adjustPartStatInRequestCalendar: calendar];
|
||||
}
|
||||
|
||||
|
||||
@@ -93,6 +93,8 @@
|
||||
|
||||
- (void) snoozeAlarm: (unsigned int) minutes;
|
||||
|
||||
- (void) adjustClassificationInRequestCalendar: (iCalCalendar *) rqCalendar;
|
||||
|
||||
@end
|
||||
|
||||
#endif /* SOGOCALENDARCOMPONENT_H */
|
||||
|
||||
@@ -1394,4 +1394,36 @@
|
||||
// return values;
|
||||
// }
|
||||
|
||||
- (void) adjustClassificationInRequestCalendar: (iCalCalendar *) rqCalendar
|
||||
{
|
||||
SOGoUserDefaults *userDefaults;
|
||||
NSString *accessClass;
|
||||
NSArray *allObjects;
|
||||
id entity;
|
||||
|
||||
int i;
|
||||
|
||||
userDefaults = [[context activeUser] userDefaults];
|
||||
allObjects = [rqCalendar allObjects];
|
||||
|
||||
for (i = 0; i < [allObjects count]; i++)
|
||||
{
|
||||
entity = [allObjects objectAtIndex: i];
|
||||
|
||||
if ([entity respondsToSelector: @selector(accessClass)])
|
||||
{
|
||||
accessClass = [entity accessClass];
|
||||
|
||||
if (!accessClass || [accessClass length] == 0)
|
||||
{
|
||||
if ([entity isKindOfClass: [iCalEvent class]])
|
||||
[entity setAccessClass: [userDefaults calendarEventsDefaultClassification]];
|
||||
else if ([entity isKindOfClass: [iCalToDo class]])
|
||||
[entity setAccessClass: [userDefaults calendarTasksDefaultClassification]];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@end
|
||||
|
||||
@@ -24,6 +24,8 @@
|
||||
#import <Foundation/NSDate.h>
|
||||
#import <Foundation/NSException.h>
|
||||
|
||||
#import <NGObjWeb/WOResponse.h>
|
||||
#import <NGObjWeb/WOContext+SoObjects.h>
|
||||
#import <NGExtensions/NSObject+Logs.h>
|
||||
#import <NGExtensions/NSNull+misc.h>
|
||||
#import <NGCards/iCalCalendar.h>
|
||||
@@ -114,4 +116,17 @@
|
||||
|
||||
}
|
||||
|
||||
- (id) PUTAction: (WOContext *) _ctx
|
||||
{
|
||||
iCalCalendar *rqCalendar;
|
||||
WORequest *rq;
|
||||
|
||||
rq = [_ctx request];
|
||||
rqCalendar = [iCalCalendar parseSingleFromSource: [rq contentAsString]];
|
||||
[self adjustClassificationInRequestCalendar: rqCalendar];
|
||||
[rq setContent: [[rqCalendar versitString] dataUsingEncoding: [rq contentEncoding]]];
|
||||
|
||||
return [super PUTAction: _ctx];
|
||||
}
|
||||
|
||||
@end /* SOGoTaskObject */
|
||||
|
||||
Reference in New Issue
Block a user