]> err.no Git - scalable-opengroupware.org/blobdiff - UI/Scheduler/UIxCalInlineAptView.m
git-svn-id: http://svn.opengroupware.org/SOGo/inverse/trunk@1031 d1b88da0-ebda-0310...
[scalable-opengroupware.org] / UI / Scheduler / UIxCalInlineAptView.m
index f6d2ae33617c2647355b9c69320556f496430f4b..b989711f82a13732169639636e24f631e580f15e 100644 (file)
  */
 // $Id$
 
+#import <math.h>
+
 #import <Foundation/NSDictionary.h>
 
 #import <NGObjWeb/NGObjWeb.h>
+#import <SOGo/SOGoAuthenticator.h>
+#import <NGCards/iCalEntityObject.h>
 
 @interface UIxCalInlineAptView : WOComponent
 {
     [ms appendFormat:@" apt_prio%@", prio];
   }
   email = [[[self context] activeUser] email];
-  if ((s = [appointment valueForKey:@"orgmail"])) {
-    if ([s rangeOfString:email].length > 0) {
-      [ms appendString:@" apt_organizer"];
-    }
-    else {
-      [ms appendString:@" apt_other"];
-    }
-  }
-  if ((s = [appointment valueForKey:@"partmails"])) {
-    if ([s rangeOfString:email].length > 0) {
-      [ms appendString:@" apt_participant"];
+  s = [appointment valueForKey:@"orgmail"];
+  if ([s isNotNull])
+    {
+      if ([s rangeOfString: email].length > 0)
+        [ms appendString:@" apt_organizer"];
+      else
+        [ms appendString:@" apt_other"];
     }
-    else {
-      [ms appendString:@" apt_nonparticipant"];
+  s = [appointment valueForKey:@"partmails"];
+  if ([s isNotNull])
+    {
+      if ([s rangeOfString:email].length > 0)
+        [ms appendString:@" apt_participant"];
+      else
+        [ms appendString:@" apt_nonparticipant"];
     }
-  }
   ASSIGNCOPY(style, ms);
 }
 
   deltaStart = (([startDate hourOfDay] * 60 + [startDate minuteOfHour]
                  - dayStartHour * 60) / 15);
 
-  return [NSString stringWithFormat: @"appointment ownerIs%@ starts%d lasts%d",
-                   [appointment objectForKey: @"owner"],
+  return [NSString stringWithFormat: @"appointment starts%d lasts%d",
                    deltaStart, deltaLength, [startDate dayOfWeek]];
 }
 
 
 /* helpers */
 
+- (NSString *) startHour
+{
+  NSCalendarDate *start;
+
+  start = [appointment objectForKey: @"startDate"];
+
+  return [NSString stringWithFormat: @"%.2d:%.2d",
+                   [start hourOfDay], [start minuteOfHour]];
+}
+
 - (NSString *) title
 {
   return [formatter stringForObjectValue: appointment
                            referenceDate: [self referenceDate]];
 }
 
+- (BOOL) _userIsInTheCard: (NSString *) email
+{
+  NSString *orgMailString, *partMailsString;
+  NSArray *partMails;
+  BOOL userIsInTheCard;
+
+  orgMailString = [appointment objectForKey: @"orgmail"];
+  if ([orgMailString isNotNull] && [orgMailString isEqualToString: email])
+    userIsInTheCard = YES;
+  else
+    {
+      partMailsString = [appointment objectForKey: @"partmails"];
+      if ([partMailsString isNotNull])
+        {
+          partMails = [partMailsString componentsSeparatedByString: @"\n"];
+          userIsInTheCard = [partMails containsObject: email];
+        }
+      else
+        userIsInTheCard = NO;
+    }
+
+  return userIsInTheCard;
+}
+
+- (BOOL) titleShouldBeHidden
+{
+  BOOL shouldBeHidden;
+  SOGoUser *user;
+  SOGoAuthenticator *sAuth;
+
+  sAuth = [SOGoAuthenticator sharedSOGoAuthenticator];
+  user = [sAuth userInContext: context];
+
+  if ([[appointment objectForKey: @"owner"] isEqualToString: [user login]]
+      || ([[appointment objectForKey: @"classification"] intValue]
+          != iCalAccessConfidential))
+    shouldBeHidden = NO;
+  else
+    shouldBeHidden = ![self _userIsInTheCard: [user email]];
+
+  return shouldBeHidden;
+}
+
 @end