[self configureFormatters];
componentsData = [NSMutableDictionary new];
}
+
return self;
}
- (void) dealloc
{
[componentsData release];
- [appointments release];
- [allDayApts release];
- [appointment release];
- [currentDay release];
- [aptFormatter release];
- [aptTooltipFormatter release];
- [privateAptFormatter release];
+ [appointments release];
+ [allDayApts release];
+ [appointment release];
+ [currentDay release];
+ [aptFormatter release];
+ [aptTooltipFormatter release];
+ [privateAptFormatter release];
[privateAptTooltipFormatter release];
[super dealloc];
}
return [[self startDate] tomorrow];
}
-- (NSArray *) activeCalendarFolders
+- (SOGoAppointmentFolder *) _aptFolder: (NSString *) folder
+ withClientObject: (SOGoAppointmentFolder *) clientObject
{
- NSUserDefaults *ud;
- NSEnumerator *calendarUIDs;
- SOGoAppointmentFolder *currentFolder;
- NSMutableArray *folders;
- NSString *currentUID;
- SoSecurityManager *securityManager;
-
- securityManager = [SoSecurityManager sharedSecurityManager];
-
- folders = [NSMutableArray array];
- ud = [[context activeUser] userDefaults];
- calendarUIDs = [[[ud stringForKey: @"calendaruids"]
- componentsSeparatedByString: @","] objectEnumerator];
- currentUID = [calendarUIDs nextObject];
- while (currentUID)
+ SOGoAppointmentFolder *aptFolder;
+ NSArray *folderParts;
+
+ if ([folder isEqualToString: @"/"])
+ aptFolder = clientObject;
+ else
{
- if (![currentUID hasPrefix: @"-"])
- {
- currentFolder = [[self clientObject] lookupCalendarFolderForUID: currentUID];
- if (currentFolder
- && ![securityManager validatePermission: SoPerm_AccessContentsInformation
- onObject: currentFolder
- inContext: context])
- [folders addObject: currentFolder];
- }
- currentUID = [calendarUIDs nextObject];
+ folderParts = [folder componentsSeparatedByString: @":"];
+ aptFolder
+ = [clientObject lookupCalendarFolderForUID:
+ [folderParts objectAtIndex: 0]];
}
- return folders;
+ return aptFolder;
+}
+
+- (NSArray *) _activeCalendarFolders
+{
+ NSMutableArray *activeFolders;
+ NSEnumerator *folders;
+ NSDictionary *currentFolderDict;
+ SOGoAppointmentFolder *currentFolder, *clientObject;
+
+ activeFolders = [NSMutableArray new];
+ [activeFolders autorelease];
+
+ clientObject = [self clientObject];
+
+ folders = [[clientObject calendarFoldersInContext: context]
+ objectEnumerator];
+ currentFolderDict = [folders nextObject];
+ while (currentFolderDict)
+ {
+ if ([[currentFolderDict objectForKey: @"active"] boolValue])
+ {
+ currentFolder
+ = [self _aptFolder: [currentFolderDict objectForKey: @"folder"]
+ withClientObject: clientObject];
+ [activeFolders addObject: currentFolder];
+ }
+
+ currentFolderDict = [folders nextObject];
+ }
+
+ return activeFolders;
}
- (NSArray *) _fetchCoreInfosForComponent: (NSString *) component
if (!infos)
{
infos = [NSMutableArray array];
- folders = [[self activeCalendarFolders] objectEnumerator];
+ folders = [[self _activeCalendarFolders] objectEnumerator];
currentFolder = [folders nextObject];
while (currentFolder)
{
return [self queryParametersBySettingSelectedDate: currentDay];
}
-/* calendarUIDs */
-
-- (NSString *) formattedCalendarUIDs
-{
- return [[[self clientObject] calendarUIDs]
- componentsJoinedByString: @", "];
-}
-
/* Actions */
- (NSString *) _userFolderURI