]> err.no Git - scalable-opengroupware.org/blobdiff - UI/Scheduler/UIxCalView.m
git-svn-id: http://svn.opengroupware.org/SOGo/inverse/trunk@1043 d1b88da0-ebda-0310...
[scalable-opengroupware.org] / UI / Scheduler / UIxCalView.m
index 74b683280949d9153a5c5db412cb1745015e788f..726fca518f2dc0222f04ee809754c75ac3eebdb0 100644 (file)
@@ -57,19 +57,20 @@ static BOOL shouldDisplayWeekend = NO;
       [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];
 }
@@ -446,37 +447,54 @@ static BOOL shouldDisplayWeekend = NO;
   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
@@ -490,7 +508,7 @@ static BOOL shouldDisplayWeekend = NO;
   if (!infos)
     {
       infos = [NSMutableArray array];
-      folders = [[self activeCalendarFolders] objectEnumerator];
+      folders = [[self _activeCalendarFolders] objectEnumerator];
       currentFolder = [folders nextObject];
       while (currentFolder)
         {
@@ -576,14 +594,6 @@ static BOOL shouldDisplayWeekend = NO;
   return [self queryParametersBySettingSelectedDate: currentDay];
 }
 
-/* calendarUIDs */
-
-- (NSString *) formattedCalendarUIDs
-{
-  return [[[self clientObject] calendarUIDs]
-           componentsJoinedByString: @", "];
-}
-
 /* Actions */
 
 - (NSString *) _userFolderURI