*/
// $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