merge of '968d106fbab318497571d45998864ccefcc20480'
and 'f633654a120834c13835a3ef41a1418e31efffe3' Monotone-Parent: 968d106fbab318497571d45998864ccefcc20480 Monotone-Parent: f633654a120834c13835a3ef41a1418e31efffe3 Monotone-Revision: 8491f20b4bac3508e0839201c1e6756c5df21835 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2008-07-16T21:49:36 Monotone-Branch: ca.inverse.sogo
This commit is contained in:
commit
4a9c837741
11
ChangeLog
11
ChangeLog
|
@ -1,3 +1,14 @@
|
||||||
|
2008-07-16 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
||||||
|
|
||||||
|
* UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions
|
||||||
|
-eventsBlocksAction]): take user participation status into account
|
||||||
|
again.
|
||||||
|
|
||||||
|
* SoObjects/Appointments/iCalEntityObject+SOGo.m
|
||||||
|
([iCalEntityObject
|
||||||
|
-quickRecordDateAsNumber:_datewithOffset:offsetforAllDay:allDay]):
|
||||||
|
enhanced method to do the special computations for all day events.
|
||||||
|
|
||||||
2008-07-16 Francis Lachapelle <flachapelle@inverse.ca>
|
2008-07-16 Francis Lachapelle <flachapelle@inverse.ca>
|
||||||
|
|
||||||
* UI/Contacts/UIxContactEditor.m ([BOOL isNew])
|
* UI/Contacts/UIxContactEditor.m ([BOOL isNew])
|
||||||
|
|
|
@ -1,3 +1,8 @@
|
||||||
|
2008-07-16 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
||||||
|
|
||||||
|
* iCalDateTime.m ([iCalDateTime -setDate:dateTime]): don't set
|
||||||
|
date in utc.
|
||||||
|
|
||||||
2008-07-14 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
2008-07-14 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
||||||
|
|
||||||
* ICalDateHolder.m: removed class module.
|
* ICalDateHolder.m: removed class module.
|
||||||
|
|
|
@ -48,8 +48,7 @@ static NSString *commaSeparator = nil;
|
||||||
unsigned int length;
|
unsigned int length;
|
||||||
NSRange subStringRange;
|
NSRange subStringRange;
|
||||||
|
|
||||||
foldedString = [NSMutableString new];
|
foldedString = [NSMutableString string];
|
||||||
[foldedString autorelease];
|
|
||||||
|
|
||||||
length = [self length];
|
length = [self length];
|
||||||
if (length < 76)
|
if (length < 76)
|
||||||
|
@ -80,8 +79,7 @@ static NSString *commaSeparator = nil;
|
||||||
NSEnumerator *rawValues;
|
NSEnumerator *rawValues;
|
||||||
NSString *tmpString, *rawValue, *newString;
|
NSString *tmpString, *rawValue, *newString;
|
||||||
|
|
||||||
values = [NSMutableArray new];
|
values = [NSMutableArray array];
|
||||||
[values autorelease];
|
|
||||||
|
|
||||||
if (!commaSeparator)
|
if (!commaSeparator)
|
||||||
[self _initCommaSeparator];
|
[self _initCommaSeparator];
|
||||||
|
@ -90,13 +88,11 @@ static NSString *commaSeparator = nil;
|
||||||
withString: commaSeparator];
|
withString: commaSeparator];
|
||||||
rawValues = [[tmpString componentsSeparatedByString: @","]
|
rawValues = [[tmpString componentsSeparatedByString: @","]
|
||||||
objectEnumerator];
|
objectEnumerator];
|
||||||
rawValue = [rawValues nextObject];
|
while ((rawValue = [rawValues nextObject]))
|
||||||
while (rawValue)
|
|
||||||
{
|
{
|
||||||
newString = [rawValue stringByReplacingString: commaSeparator
|
newString = [rawValue stringByReplacingString: commaSeparator
|
||||||
withString: @","];
|
withString: @","];
|
||||||
[values addObject: [newString stringByTrimmingSpaces]];
|
[values addObject: [newString stringByTrimmingSpaces]];
|
||||||
rawValue = [rawValues nextObject];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return values;
|
return values;
|
||||||
|
|
|
@ -118,15 +118,16 @@
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
utcTZ = [NSTimeZone timeZoneWithName: @"GMT"];
|
|
||||||
|
|
||||||
tmpTime = [dateTime copy];
|
tmpTime = [dateTime copy];
|
||||||
[tmpTime setTimeZone: utcTZ];
|
|
||||||
if (forAllDayEntity)
|
if (forAllDayEntity)
|
||||||
timeString = [tmpTime iCalFormattedDateString];
|
timeString = [tmpTime iCalFormattedDateString];
|
||||||
else
|
else
|
||||||
timeString = [NSString stringWithFormat: @"%@Z",
|
{
|
||||||
[tmpTime iCalFormattedDateTimeString]];
|
utcTZ = [NSTimeZone timeZoneWithName: @"GMT"];
|
||||||
|
[tmpTime setTimeZone: utcTZ];
|
||||||
|
timeString = [NSString stringWithFormat: @"%@Z",
|
||||||
|
[tmpTime iCalFormattedDateTimeString]];
|
||||||
|
}
|
||||||
[tmpTime release];
|
[tmpTime release];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -56,6 +56,7 @@
|
||||||
[(iCalDateTime *) [self uniqueChildWithTag: @"dtstart"]
|
[(iCalDateTime *) [self uniqueChildWithTag: @"dtstart"]
|
||||||
setDate: newStartDate];
|
setDate: newStartDate];
|
||||||
endDate = [newStartDate dateByAddingYears: 0 months: 0 days: days];
|
endDate = [newStartDate dateByAddingYears: 0 months: 0 days: days];
|
||||||
|
[endDate setTimeZone: [newStartDate timeZone]];
|
||||||
[(iCalDateTime *) [self uniqueChildWithTag: @"dtend"]
|
[(iCalDateTime *) [self uniqueChildWithTag: @"dtend"]
|
||||||
setDate: endDate];
|
setDate: endDate];
|
||||||
}
|
}
|
||||||
|
|
|
@ -64,7 +64,6 @@
|
||||||
#import <SOGo/SOGoUser.h>
|
#import <SOGo/SOGoUser.h>
|
||||||
#import <SOGo/SOGoUserFolder.h>
|
#import <SOGo/SOGoUserFolder.h>
|
||||||
#import <SOGo/SOGoWebDAVAclManager.h>
|
#import <SOGo/SOGoWebDAVAclManager.h>
|
||||||
#import <SOGo/iCalEntityObject+Utilities.h>
|
|
||||||
|
|
||||||
#import "iCalEntityObject+SOGo.h"
|
#import "iCalEntityObject+SOGo.h"
|
||||||
#import "SOGoAppointmentObject.h"
|
#import "SOGoAppointmentObject.h"
|
||||||
|
@ -566,6 +565,9 @@ static Class sogoAppointmentFolderKlass = Nil;
|
||||||
unsigned int count;
|
unsigned int count;
|
||||||
NSCalendarDate *date;
|
NSCalendarDate *date;
|
||||||
NSNumber *dateValue;
|
NSNumber *dateValue;
|
||||||
|
BOOL isAllDay;
|
||||||
|
|
||||||
|
isAllDay = [[_record objectForKey: @"c_isallday"] boolValue];
|
||||||
|
|
||||||
md = [[_record mutableCopy] autorelease];
|
md = [[_record mutableCopy] autorelease];
|
||||||
for (count = 0; count < 2; count++)
|
for (count = 0; count < 2; count++)
|
||||||
|
@ -573,8 +575,7 @@ static Class sogoAppointmentFolderKlass = Nil;
|
||||||
dateValue = [_record objectForKey: fields[count * 2]];
|
dateValue = [_record objectForKey: fields[count * 2]];
|
||||||
if (dateValue)
|
if (dateValue)
|
||||||
{
|
{
|
||||||
date = [NSCalendarDate dateWithTimeIntervalSince1970:
|
date = [NSCalendarDate dateWithTimeIntervalSince1970: (NSTimeInterval) [dateValue unsignedIntValue]];
|
||||||
(NSTimeInterval) [dateValue unsignedIntValue]];
|
|
||||||
if (date)
|
if (date)
|
||||||
{
|
{
|
||||||
[date setTimeZone: timeZone];
|
[date setTimeZone: timeZone];
|
||||||
|
@ -582,7 +583,7 @@ static Class sogoAppointmentFolderKlass = Nil;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
[self logWithFormat:@"missing '%@' in record?", fields[count * 2]];
|
[self logWithFormat: @"missing '%@' in record?", fields[count * 2]];
|
||||||
}
|
}
|
||||||
|
|
||||||
return md;
|
return md;
|
||||||
|
@ -926,9 +927,11 @@ static Class sogoAppointmentFolderKlass = Nil;
|
||||||
/* prepare mandatory fields */
|
/* prepare mandatory fields */
|
||||||
|
|
||||||
fields = [NSMutableArray arrayWithArray: _fields];
|
fields = [NSMutableArray arrayWithArray: _fields];
|
||||||
[fields addObject: @"c_uid"];
|
[fields addObjectUniquely: @"c_name"];
|
||||||
[fields addObject: @"c_startdate"];
|
[fields addObjectUniquely: @"c_uid"];
|
||||||
[fields addObject: @"c_enddate"];
|
[fields addObjectUniquely: @"c_startdate"];
|
||||||
|
[fields addObjectUniquely: @"c_enddate"];
|
||||||
|
[fields addObjectUniquely: @"c_isallday"];
|
||||||
|
|
||||||
if (logger)
|
if (logger)
|
||||||
[self debugWithFormat:@"should fetch (%@=>%@) ...", _startDate, _endDate];
|
[self debugWithFormat:@"should fetch (%@=>%@) ...", _startDate, _endDate];
|
||||||
|
|
|
@ -46,7 +46,9 @@ NSNumber *iCalDistantFutureNumber;
|
||||||
- (NSMutableDictionary *) quickRecord;
|
- (NSMutableDictionary *) quickRecord;
|
||||||
|
|
||||||
- (int) priorityNumber;
|
- (int) priorityNumber;
|
||||||
- (NSNumber *) quickRecordDateAsNumber: (NSCalendarDate *) _date;
|
- (NSNumber *) quickRecordDateAsNumber: (NSCalendarDate *) _date
|
||||||
|
withOffset: (int) offset
|
||||||
|
forAllDay: (BOOL) allDay;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
|
|
@ -24,10 +24,14 @@
|
||||||
#import <Foundation/NSEnumerator.h>
|
#import <Foundation/NSEnumerator.h>
|
||||||
#import <Foundation/NSString.h>
|
#import <Foundation/NSString.h>
|
||||||
#import <Foundation/NSValue.h>
|
#import <Foundation/NSValue.h>
|
||||||
|
#import <Foundation/NSTimeZone.h>
|
||||||
|
|
||||||
#import <NGCards/iCalCalendar.h>
|
#import <NGCards/iCalCalendar.h>
|
||||||
#import <NGCards/iCalPerson.h>
|
#import <NGCards/iCalPerson.h>
|
||||||
|
|
||||||
|
#import <NGObjWeb/WOApplication.h>
|
||||||
|
#import <NGObjWeb/WOContext+SoObjects.h>
|
||||||
|
|
||||||
#import <SoObjects/SOGo/NSArray+Utilities.h>
|
#import <SoObjects/SOGo/NSArray+Utilities.h>
|
||||||
#import <SoObjects/SOGo/SOGoUser.h>
|
#import <SoObjects/SOGo/SOGoUser.h>
|
||||||
|
|
||||||
|
@ -35,8 +39,31 @@
|
||||||
|
|
||||||
#import "iCalEntityObject+SOGo.h"
|
#import "iCalEntityObject+SOGo.h"
|
||||||
|
|
||||||
|
static int utcOffset = -1;
|
||||||
|
|
||||||
@implementation iCalEntityObject (SOGoExtensions)
|
@implementation iCalEntityObject (SOGoExtensions)
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
_computeAllDayOffset()
|
||||||
|
{
|
||||||
|
NSTimeZone *tz;
|
||||||
|
SOGoUser *user;
|
||||||
|
WOApplication *application;
|
||||||
|
int offset;
|
||||||
|
|
||||||
|
if (utcOffset == -1)
|
||||||
|
{
|
||||||
|
tz = [[NSCalendarDate date] timeZone];
|
||||||
|
utcOffset = [tz secondsFromGMT];
|
||||||
|
}
|
||||||
|
|
||||||
|
application = [WOApplication application];
|
||||||
|
user = [[application context] activeUser];
|
||||||
|
offset = utcOffset - [[user timeZone] secondsFromGMT];
|
||||||
|
|
||||||
|
return offset;
|
||||||
|
}
|
||||||
|
|
||||||
+ (void) initializeSOGoExtensions;
|
+ (void) initializeSOGoExtensions;
|
||||||
{
|
{
|
||||||
if (!iCalDistantFuture)
|
if (!iCalDistantFuture)
|
||||||
|
@ -140,10 +167,24 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSNumber *) quickRecordDateAsNumber: (NSCalendarDate *) _date
|
- (NSNumber *) quickRecordDateAsNumber: (NSCalendarDate *) _date
|
||||||
|
withOffset: (int) offset
|
||||||
|
forAllDay: (BOOL) allDay
|
||||||
{
|
{
|
||||||
return ((_date == iCalDistantFuture)
|
unsigned int seconds;
|
||||||
? iCalDistantFutureNumber
|
NSNumber *dateNumber;
|
||||||
: [NSNumber numberWithUnsignedInt: [_date timeIntervalSince1970]]);
|
|
||||||
|
if (_date == iCalDistantFuture)
|
||||||
|
dateNumber = iCalDistantFutureNumber;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
seconds = [_date timeIntervalSince1970] + offset;
|
||||||
|
if (allDay)
|
||||||
|
seconds += _computeAllDayOffset ();
|
||||||
|
|
||||||
|
dateNumber = [NSNumber numberWithUnsignedInt: seconds];
|
||||||
|
}
|
||||||
|
|
||||||
|
return dateNumber;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSMutableDictionary *) quickRecord
|
- (NSMutableDictionary *) quickRecord
|
||||||
|
|
|
@ -52,7 +52,7 @@
|
||||||
NSCalendarDate *startDate, *endDate;
|
NSCalendarDate *startDate, *endDate;
|
||||||
NSArray *attendees;
|
NSArray *attendees;
|
||||||
NSString *uid, *title, *location, *status;
|
NSString *uid, *title, *location, *status;
|
||||||
NSNumber *sequence, *dateNumber;
|
NSNumber *sequence;
|
||||||
id organizer;
|
id organizer;
|
||||||
id participants, partmails;
|
id participants, partmails;
|
||||||
NSMutableString *partstates;
|
NSMutableString *partstates;
|
||||||
|
@ -61,7 +61,7 @@
|
||||||
iCalAccessClass accessClass;
|
iCalAccessClass accessClass;
|
||||||
|
|
||||||
/* extract values */
|
/* extract values */
|
||||||
|
|
||||||
startDate = [self startDate];
|
startDate = [self startDate];
|
||||||
endDate = [self endDate];
|
endDate = [self endDate];
|
||||||
uid = [self uid];
|
uid = [self uid];
|
||||||
|
@ -108,56 +108,56 @@
|
||||||
if ([sequence isNotNull]) [row setObject: sequence forKey: @"c_sequence"];
|
if ([sequence isNotNull]) [row setObject: sequence forKey: @"c_sequence"];
|
||||||
|
|
||||||
if ([startDate isNotNull])
|
if ([startDate isNotNull])
|
||||||
[row setObject: [self quickRecordDateAsNumber: startDate]
|
|
||||||
forKey: @"c_startdate"];
|
|
||||||
if ([endDate isNotNull])
|
|
||||||
{
|
{
|
||||||
if (endDate == iCalDistantFuture)
|
if (isAllDay)
|
||||||
dateNumber = iCalDistantFutureNumber;
|
NSLog (@"start date...");
|
||||||
else
|
[row setObject: [self quickRecordDateAsNumber: startDate
|
||||||
{
|
withOffset: 0 forAllDay: isAllDay]
|
||||||
if (isAllDay)
|
forKey: @"c_startdate"];
|
||||||
i = 1;
|
|
||||||
else
|
|
||||||
i = 0;
|
|
||||||
dateNumber
|
|
||||||
= [NSNumber numberWithUnsignedInt:
|
|
||||||
[endDate timeIntervalSince1970] - i];
|
|
||||||
}
|
|
||||||
[row setObject: dateNumber forKey: @"c_enddate"];
|
|
||||||
}
|
}
|
||||||
|
if ([endDate isNotNull])
|
||||||
|
[row setObject: [self quickRecordDateAsNumber: endDate
|
||||||
|
withOffset: ((isAllDay) ? -1 : 0)
|
||||||
|
forAllDay: isAllDay]
|
||||||
|
forKey: @"c_enddate"];
|
||||||
|
|
||||||
if ([self isRecurrent]) {
|
if ([self isRecurrent])
|
||||||
NSCalendarDate *date;
|
{
|
||||||
|
NSCalendarDate *date;
|
||||||
date = [self lastPossibleRecurrenceStartDate];
|
|
||||||
if (!date) {
|
date = [self lastPossibleRecurrenceStartDate];
|
||||||
/* this could also be *nil*, but in the end it makes the fetchspecs
|
if (!date)
|
||||||
more complex - thus we set it to a "reasonable" distant future */
|
{
|
||||||
date = iCalDistantFuture;
|
/* this could also be *nil*, but in the end it makes the fetchspecs
|
||||||
|
more complex - thus we set it to a "reasonable" distant future */
|
||||||
|
date = iCalDistantFuture;
|
||||||
|
}
|
||||||
|
[row setObject: [self quickRecordDateAsNumber: date
|
||||||
|
withOffset: 0 forAllDay: NO]
|
||||||
|
forKey: @"c_cycleenddate"];
|
||||||
|
[row setObject: [self cycleInfo] forKey: @"c_cycleinfo"];
|
||||||
}
|
}
|
||||||
[row setObject:[self quickRecordDateAsNumber:date] forKey: @"c_cycleenddate"];
|
|
||||||
[row setObject:[self cycleInfo] forKey: @"c_cycleinfo"];
|
|
||||||
}
|
|
||||||
|
|
||||||
if ([participants length] > 0)
|
if ([participants length] > 0)
|
||||||
[row setObject: participants forKey: @"c_participants"];
|
[row setObject: participants forKey: @"c_participants"];
|
||||||
if ([partmails length] > 0)
|
if ([partmails length] > 0)
|
||||||
[row setObject: partmails forKey: @"c_partmails"];
|
[row setObject: partmails forKey: @"c_partmails"];
|
||||||
|
|
||||||
if ([status isNotNull]) {
|
if ([status isNotNull])
|
||||||
int code = 1;
|
{
|
||||||
|
int code = 1;
|
||||||
|
|
||||||
if ([status isEqualToString: @"TENTATIVE"])
|
if ([status isEqualToString: @"TENTATIVE"])
|
||||||
code = 2;
|
code = 2;
|
||||||
else if ([status isEqualToString: @"CANCELLED"])
|
else if ([status isEqualToString: @"CANCELLED"])
|
||||||
code = 0;
|
code = 0;
|
||||||
[row setObject:[NSNumber numberWithInt:code] forKey: @"c_status"];
|
[row setObject:[NSNumber numberWithInt:code] forKey: @"c_status"];
|
||||||
}
|
}
|
||||||
else {
|
else
|
||||||
/* confirmed by default */
|
{
|
||||||
[row setObject: [NSNumber numberWithInt:1] forKey: @"c_status"];
|
/* confirmed by default */
|
||||||
}
|
[row setObject: [NSNumber numberWithInt:1] forKey: @"c_status"];
|
||||||
|
}
|
||||||
|
|
||||||
[row setObject: [NSNumber numberWithUnsignedInt: accessClass]
|
[row setObject: [NSNumber numberWithUnsignedInt: accessClass]
|
||||||
forKey: @"c_classification"];
|
forKey: @"c_classification"];
|
||||||
|
|
|
@ -95,23 +95,23 @@
|
||||||
if ([sequence isNotNull]) [row setObject: sequence forKey: @"c_sequence"];
|
if ([sequence isNotNull]) [row setObject: sequence forKey: @"c_sequence"];
|
||||||
|
|
||||||
if ([startDate isNotNull])
|
if ([startDate isNotNull])
|
||||||
date = [self quickRecordDateAsNumber: startDate];
|
date = [self quickRecordDateAsNumber: startDate
|
||||||
|
withOffset: 0 forAllDay: NO];
|
||||||
else
|
else
|
||||||
date = [NSNull null];
|
date = [NSNull null];
|
||||||
[row setObject: date forKey: @"c_startdate"];
|
[row setObject: date forKey: @"c_startdate"];
|
||||||
|
|
||||||
if ([dueDate isNotNull])
|
if ([dueDate isNotNull])
|
||||||
date = [self quickRecordDateAsNumber: dueDate];
|
date = [self quickRecordDateAsNumber: dueDate
|
||||||
|
withOffset: 0 forAllDay: NO];
|
||||||
else
|
else
|
||||||
date = [NSNull null];
|
date = [NSNull null];
|
||||||
[row setObject: date forKey: @"c_enddate"];
|
[row setObject: date forKey: @"c_enddate"];
|
||||||
|
|
||||||
if ([self isRecurrent])
|
if ([self isRecurrent])
|
||||||
{
|
{
|
||||||
[row setObject: [self quickRecordDateAsNumber: iCalDistantFuture]
|
[row setObject: iCalDistantFutureNumber forKey: @"c_cycleenddate"];
|
||||||
forKey: @"c_cycleenddate"];
|
[row setObject: [self cycleInfo] forKey: @"c_cycleinfo"];
|
||||||
[row setObject: [self cycleInfo]
|
|
||||||
forKey: @"c_cycleinfo"];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ([participants length] > 0)
|
if ([participants length] > 0)
|
||||||
|
@ -119,46 +119,50 @@
|
||||||
if ([partmails length] > 0)
|
if ([partmails length] > 0)
|
||||||
[row setObject:partmails forKey: @"c_partmails"];
|
[row setObject:partmails forKey: @"c_partmails"];
|
||||||
|
|
||||||
if ([status isNotNull]) {
|
if ([status isNotNull])
|
||||||
code = 0; /* NEEDS-ACTION */
|
{
|
||||||
if ([status isEqualToString: @"COMPLETED"])
|
code = 0; /* NEEDS-ACTION */
|
||||||
code = 1;
|
if ([status isEqualToString: @"COMPLETED"])
|
||||||
else if ([status isEqualToString: @"IN-PROCESS"])
|
code = 1;
|
||||||
code = 2;
|
else if ([status isEqualToString: @"IN-PROCESS"])
|
||||||
else if ([status isEqualToString: @"CANCELLED"])
|
code = 2;
|
||||||
code = 3;
|
else if ([status isEqualToString: @"CANCELLED"])
|
||||||
[row setObject: [NSNumber numberWithInt: code] forKey: @"c_status"];
|
code = 3;
|
||||||
}
|
[row setObject: [NSNumber numberWithInt: code] forKey: @"c_status"];
|
||||||
else {
|
}
|
||||||
/* confirmed by default */
|
else
|
||||||
[row setObject:[NSNumber numberWithInt:1] forKey: @"c_status"];
|
{
|
||||||
}
|
/* confirmed by default */
|
||||||
|
[row setObject:[NSNumber numberWithInt:1] forKey: @"c_status"];
|
||||||
|
}
|
||||||
|
|
||||||
[row setObject: [NSNumber numberWithUnsignedInt: accessClass]
|
[row setObject: [NSNumber numberWithUnsignedInt: accessClass]
|
||||||
forKey: @"c_classification"];
|
forKey: @"c_classification"];
|
||||||
|
|
||||||
organizer = [self organizer];
|
organizer = [self organizer];
|
||||||
if (organizer) {
|
if (organizer)
|
||||||
NSString *email;
|
{
|
||||||
|
NSString *email;
|
||||||
|
|
||||||
email = [organizer valueForKey: @"rfc822Email"];
|
email = [organizer valueForKey: @"rfc822Email"];
|
||||||
if (email)
|
if (email)
|
||||||
[row setObject:email forKey: @"c_orgmail"];
|
[row setObject:email forKey: @"c_orgmail"];
|
||||||
}
|
}
|
||||||
|
|
||||||
/* construct partstates */
|
/* construct partstates */
|
||||||
count = [attendees count];
|
count = [attendees count];
|
||||||
partstates = [[NSMutableString alloc] initWithCapacity:count * 2];
|
partstates = [[NSMutableString alloc] initWithCapacity:count * 2];
|
||||||
for ( i = 0; i < count; i++) {
|
for (i = 0; i < count; i++)
|
||||||
iCalPerson *p;
|
{
|
||||||
iCalPersonPartStat stat;
|
iCalPerson *p;
|
||||||
|
iCalPersonPartStat stat;
|
||||||
|
|
||||||
p = [attendees objectAtIndex:i];
|
p = [attendees objectAtIndex:i];
|
||||||
stat = [p participationStatus];
|
stat = [p participationStatus];
|
||||||
if(i != 0)
|
if(i != 0)
|
||||||
[partstates appendString: @"\n"];
|
[partstates appendString: @"\n"];
|
||||||
[partstates appendFormat: @"%d", stat];
|
[partstates appendFormat: @"%d", stat];
|
||||||
}
|
}
|
||||||
[row setObject:partstates forKey: @"c_partstates"];
|
[row setObject:partstates forKey: @"c_partstates"];
|
||||||
[partstates release];
|
[partstates release];
|
||||||
|
|
||||||
|
|
|
@ -323,13 +323,12 @@ static NSArray *tasksFields = nil;
|
||||||
|
|
||||||
- (WOResponse *) eventsListAction
|
- (WOResponse *) eventsListAction
|
||||||
{
|
{
|
||||||
NSArray *oldEvent, *participants, *states;
|
NSArray *oldEvent;
|
||||||
NSEnumerator *events;
|
NSEnumerator *events;
|
||||||
NSMutableArray *newEvents, *newEvent;
|
NSMutableArray *newEvents, *newEvent;
|
||||||
unsigned int interval, i;
|
unsigned int interval;
|
||||||
BOOL isAllDay;
|
BOOL isAllDay;
|
||||||
NSString *sort, *ascending, *participant, *state;
|
NSString *sort, *ascending;
|
||||||
SOGoUser *user;
|
|
||||||
|
|
||||||
[self _setupContext];
|
[self _setupContext];
|
||||||
|
|
||||||
|
@ -346,40 +345,6 @@ static NSArray *tasksFields = nil;
|
||||||
interval = [[oldEvent objectAtIndex: 5] intValue];
|
interval = [[oldEvent objectAtIndex: 5] intValue];
|
||||||
[newEvent addObject: [self _formattedDateForSeconds: interval
|
[newEvent addObject: [self _formattedDateForSeconds: interval
|
||||||
forAllDay: isAllDay]];
|
forAllDay: isAllDay]];
|
||||||
|
|
||||||
participants = nil;
|
|
||||||
state = nil;
|
|
||||||
if ([[oldEvent objectAtIndex: 9] length] > 0 &&
|
|
||||||
[[oldEvent objectAtIndex: 10] length] > 0)
|
|
||||||
{
|
|
||||||
participants = [[oldEvent objectAtIndex: 9] componentsSeparatedByString: @"\n"];
|
|
||||||
states = [[oldEvent objectAtIndex: 10] componentsSeparatedByString: @"\n"];
|
|
||||||
for (i = 0; i < [participants count]; i++)
|
|
||||||
{
|
|
||||||
user = [SOGoUser userWithLogin: [oldEvent objectAtIndex: 11] roles: nil];
|
|
||||||
participant = [participants objectAtIndex: i];
|
|
||||||
if ([user hasEmail: participant]) {
|
|
||||||
switch ([[states objectAtIndex: i] intValue]) {
|
|
||||||
case iCalPersonPartStatNeedsAction:
|
|
||||||
state = @"needs-action";
|
|
||||||
break;
|
|
||||||
case iCalPersonPartStatAccepted:
|
|
||||||
state = @"accepted";
|
|
||||||
break;
|
|
||||||
case iCalPersonPartStatDeclined:
|
|
||||||
state = @"declined";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
[newEvent replaceObjectAtIndex: 9 withObject: state];
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (participants == nil || i == [participants count])
|
|
||||||
[newEvent replaceObjectAtIndex: 9 withObject: @""];
|
|
||||||
[newEvent removeObjectAtIndex: 11];
|
|
||||||
[newEvent removeObjectAtIndex: 10];
|
|
||||||
|
|
||||||
[newEvents addObject: newEvent];
|
[newEvents addObject: newEvent];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -440,6 +405,7 @@ _feedBlockWithMonthBasedData(NSMutableDictionary *block, unsigned int start,
|
||||||
cname: (NSString *) cName
|
cname: (NSString *) cName
|
||||||
onDay: (unsigned int) dayStart
|
onDay: (unsigned int) dayStart
|
||||||
recurrence: (BOOL) recurrence
|
recurrence: (BOOL) recurrence
|
||||||
|
userState: (iCalPersonPartStat) userState
|
||||||
{
|
{
|
||||||
NSMutableDictionary *block;
|
NSMutableDictionary *block;
|
||||||
|
|
||||||
|
@ -452,10 +418,47 @@ _feedBlockWithMonthBasedData(NSMutableDictionary *block, unsigned int start,
|
||||||
[block setObject: cName forKey: @"cname"];
|
[block setObject: cName forKey: @"cname"];
|
||||||
if (recurrence)
|
if (recurrence)
|
||||||
[block setObject: @"1" forKey: @"recurrence"];
|
[block setObject: @"1" forKey: @"recurrence"];
|
||||||
|
if (userState != iCalPersonPartStatOther)
|
||||||
|
[block setObject: [NSNumber numberWithInt: userState]
|
||||||
|
forKey: @"userState"];
|
||||||
|
|
||||||
return block;
|
return block;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline iCalPersonPartStat
|
||||||
|
_userStateInEvent (NSArray *event)
|
||||||
|
{
|
||||||
|
unsigned int count, max;
|
||||||
|
iCalPersonPartStat state;
|
||||||
|
NSString *partList, *stateList;
|
||||||
|
NSArray *participants, *states;
|
||||||
|
SOGoUser *user;
|
||||||
|
|
||||||
|
participants = nil;
|
||||||
|
state = iCalPersonPartStatOther;
|
||||||
|
|
||||||
|
partList = [event objectAtIndex: 9];
|
||||||
|
stateList = [event objectAtIndex: 10];
|
||||||
|
if ([partList length] && [stateList length])
|
||||||
|
{
|
||||||
|
participants = [partList componentsSeparatedByString: @"\n"];
|
||||||
|
states = [stateList componentsSeparatedByString: @"\n"];
|
||||||
|
count = 0;
|
||||||
|
max = [participants count];
|
||||||
|
while (state == iCalPersonPartStatOther && count < max)
|
||||||
|
{
|
||||||
|
user = [SOGoUser userWithLogin: [event objectAtIndex: 11]
|
||||||
|
roles: nil];
|
||||||
|
if ([user hasEmail: [participants objectAtIndex: count]])
|
||||||
|
state = [[states objectAtIndex: count] intValue];
|
||||||
|
else
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return state;
|
||||||
|
}
|
||||||
|
|
||||||
- (void) _fillBlocks: (NSArray *) blocks
|
- (void) _fillBlocks: (NSArray *) blocks
|
||||||
withEvent: (NSArray *) event
|
withEvent: (NSArray *) event
|
||||||
{
|
{
|
||||||
|
@ -465,6 +468,7 @@ _feedBlockWithMonthBasedData(NSMutableDictionary *block, unsigned int start,
|
||||||
NSMutableDictionary *eventBlock;
|
NSMutableDictionary *eventBlock;
|
||||||
NSString *eventCName;
|
NSString *eventCName;
|
||||||
BOOL recurrence;
|
BOOL recurrence;
|
||||||
|
iCalPersonPartStat userState;
|
||||||
|
|
||||||
startSecs = (unsigned int) [startDate timeIntervalSince1970];
|
startSecs = (unsigned int) [startDate timeIntervalSince1970];
|
||||||
endsSecs = (unsigned int) [endDate timeIntervalSince1970];
|
endsSecs = (unsigned int) [endDate timeIntervalSince1970];
|
||||||
|
@ -489,13 +493,15 @@ _feedBlockWithMonthBasedData(NSMutableDictionary *block, unsigned int start,
|
||||||
eventEnd = endsSecs;
|
eventEnd = endsSecs;
|
||||||
|
|
||||||
eventCName = [event objectAtIndex: 0];
|
eventCName = [event objectAtIndex: 0];
|
||||||
while (currentStart + dayLength < eventEnd)
|
userState = _userStateInEvent (event);
|
||||||
|
while (currentDayStart + dayLength < eventEnd)
|
||||||
{
|
{
|
||||||
eventBlock = [self _eventBlockWithStart: currentStart
|
eventBlock = [self _eventBlockWithStart: currentStart
|
||||||
end: currentDayStart + 86399
|
end: currentDayStart + dayLength - 1
|
||||||
cname: eventCName
|
cname: eventCName
|
||||||
onDay: currentDayStart
|
onDay: currentDayStart
|
||||||
recurrence: recurrence];
|
recurrence: recurrence
|
||||||
|
userState: userState];
|
||||||
[currentDay addObject: eventBlock];
|
[currentDay addObject: eventBlock];
|
||||||
currentDayStart += dayLength;
|
currentDayStart += dayLength;
|
||||||
currentStart = currentDayStart;
|
currentStart = currentDayStart;
|
||||||
|
@ -506,7 +512,8 @@ _feedBlockWithMonthBasedData(NSMutableDictionary *block, unsigned int start,
|
||||||
end: eventEnd
|
end: eventEnd
|
||||||
cname: eventCName
|
cname: eventCName
|
||||||
onDay: currentDayStart
|
onDay: currentDayStart
|
||||||
recurrence: recurrence];
|
recurrence: recurrence
|
||||||
|
userState: userState];
|
||||||
[currentDay addObject: eventBlock];
|
[currentDay addObject: eventBlock];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -906,22 +906,22 @@ DIV.event DIV.text
|
||||||
DIV.event.needs-action DIV.text
|
DIV.event.needs-action DIV.text
|
||||||
{ background-image: url("needs-action.png");
|
{ background-image: url("needs-action.png");
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
background-position: 98% 95%; }
|
background-position: top right; }
|
||||||
|
|
||||||
DIV.event.accepted DIV.text
|
DIV.event.accepted DIV.text
|
||||||
{ background-image: url("accepted.png");
|
{ background-image: url("accepted.png");
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
background-position: 98% 95%; }
|
background-position: top right; }
|
||||||
|
|
||||||
DIV.event.declined DIV.text
|
DIV.event.declined DIV.text
|
||||||
{ background-image: url("declined.png");
|
{ background-image: url("declined.png");
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
background-position: 98% 95%; }
|
background-position: top right; }
|
||||||
|
|
||||||
DIV.event.tentative DIV.text
|
DIV.event.tentative DIV.text
|
||||||
{ background-image: url("tentative.png");
|
{ background-image: url("tentative.png");
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
background-position: 98% 95%; }
|
background-position: top right; }
|
||||||
|
|
||||||
DIV#daysView DIV[class~="event"].starts0
|
DIV#daysView DIV[class~="event"].starts0
|
||||||
{ top: 0.000000%; }
|
{ top: 0.000000%; }
|
||||||
|
|
|
@ -23,6 +23,8 @@ var usersRightsWindowWidth = 502;
|
||||||
var eventsBlocks;
|
var eventsBlocks;
|
||||||
var calendarEvents = null;
|
var calendarEvents = null;
|
||||||
|
|
||||||
|
var userStates = [ "needs-action", "accepted", "declined", "tentative" ];
|
||||||
|
|
||||||
function newEvent(sender, type) {
|
function newEvent(sender, type) {
|
||||||
var day = $(sender).readAttribute("day");
|
var day = $(sender).readAttribute("day");
|
||||||
if (!day)
|
if (!day)
|
||||||
|
@ -389,12 +391,12 @@ function eventsListCallback(http) {
|
||||||
td = $(document.createElement("td"));
|
td = $(document.createElement("td"));
|
||||||
row.appendChild(td);
|
row.appendChild(td);
|
||||||
td.observe("mousedown", listRowMouseDownHandler, true);
|
td.observe("mousedown", listRowMouseDownHandler, true);
|
||||||
td.appendChild(document.createTextNode(data[i][11]));
|
td.appendChild(document.createTextNode(data[i][13]));
|
||||||
|
|
||||||
td = $(document.createElement("td"));
|
td = $(document.createElement("td"));
|
||||||
row.appendChild(td);
|
row.appendChild(td);
|
||||||
td.observe("mousedown", listRowMouseDownHandler, true);
|
td.observe("mousedown", listRowMouseDownHandler, true);
|
||||||
td.appendChild(document.createTextNode(data[i][12]));
|
td.appendChild(document.createTextNode(data[i][14]));
|
||||||
|
|
||||||
td = $(document.createElement("td"));
|
td = $(document.createElement("td"));
|
||||||
row.appendChild(td);
|
row.appendChild(td);
|
||||||
|
@ -762,7 +764,7 @@ function _drawCalendarAllDaysEvents(events) {
|
||||||
function newAllDayEventDIV(eventRep) {
|
function newAllDayEventDIV(eventRep) {
|
||||||
// cname, calendar, starts, lasts,
|
// cname, calendar, starts, lasts,
|
||||||
// startHour, endHour, title) {
|
// startHour, endHour, title) {
|
||||||
var eventDiv = document.createElement("div");
|
var eventDiv = $(document.createElement("div"));
|
||||||
var event = calendarEvents[eventRep.cname];
|
var event = calendarEvents[eventRep.cname];
|
||||||
if (!event.siblings)
|
if (!event.siblings)
|
||||||
event.siblings = [];
|
event.siblings = [];
|
||||||
|
@ -770,28 +772,31 @@ function newAllDayEventDIV(eventRep) {
|
||||||
eventDiv.cname = event[0];
|
eventDiv.cname = event[0];
|
||||||
eventDiv.calendar = event[1];
|
eventDiv.calendar = event[1];
|
||||||
|
|
||||||
$(eventDiv).addClassName("event");
|
eventDiv.addClassName("event");
|
||||||
for (var i = 1; i < 5; i++) {
|
if (eventRep.userState && userStates[eventRep.userState])
|
||||||
var shadowDiv = document.createElement("div");
|
eventDiv.addClassName(userStates[eventRep.userState]);
|
||||||
eventDiv.appendChild(shadowDiv);
|
|
||||||
$(shadowDiv).addClassName("shadow");
|
|
||||||
$(shadowDiv).addClassName("shadow" + i);
|
|
||||||
}
|
|
||||||
var innerDiv = document.createElement("div");
|
|
||||||
eventDiv.appendChild(innerDiv);
|
|
||||||
$(innerDiv).addClassName("eventInside");
|
|
||||||
$(innerDiv).addClassName("calendarFolder" + event[1]);
|
|
||||||
|
|
||||||
var gradientDiv = document.createElement("div");
|
for (var i = 1; i < 5; i++) {
|
||||||
|
var shadowDiv = $(document.createElement("div"));
|
||||||
|
eventDiv.appendChild(shadowDiv);
|
||||||
|
shadowDiv.addClassName("shadow");
|
||||||
|
shadowDiv.addClassName("shadow" + i);
|
||||||
|
}
|
||||||
|
var innerDiv = $(document.createElement("div"));
|
||||||
|
eventDiv.appendChild(innerDiv);
|
||||||
|
innerDiv.addClassName("eventInside");
|
||||||
|
innerDiv.addClassName("calendarFolder" + event[1]);
|
||||||
|
|
||||||
|
var gradientDiv = $(document.createElement("div"));
|
||||||
innerDiv.appendChild(gradientDiv);
|
innerDiv.appendChild(gradientDiv);
|
||||||
$(gradientDiv).addClassName("gradient");
|
gradientDiv.addClassName("gradient");
|
||||||
var gradientImg = document.createElement("img");
|
var gradientImg = document.createElement("img");
|
||||||
gradientDiv.appendChild(gradientImg);
|
gradientDiv.appendChild(gradientImg);
|
||||||
gradientImg.src = ResourcesURL + "/event-gradient.png";
|
gradientImg.src = ResourcesURL + "/event-gradient.png";
|
||||||
|
|
||||||
var textDiv = document.createElement("div");
|
var textDiv = $(document.createElement("div"));
|
||||||
innerDiv.appendChild(textDiv);
|
innerDiv.appendChild(textDiv);
|
||||||
$(textDiv).addClassName("text");
|
textDiv.addClassName("text");
|
||||||
textDiv.appendChild(document.createTextNode(event[3]));
|
textDiv.appendChild(document.createTextNode(event[3]));
|
||||||
|
|
||||||
eventDiv.observe("mousedown", listRowMouseDownHandler);
|
eventDiv.observe("mousedown", listRowMouseDownHandler);
|
||||||
|
@ -820,7 +825,7 @@ function _drawCalendarEvents(events) {
|
||||||
function newEventDIV(eventRep) {
|
function newEventDIV(eventRep) {
|
||||||
// cname, calendar, starts, lasts,
|
// cname, calendar, starts, lasts,
|
||||||
// startHour, endHour, title) {
|
// startHour, endHour, title) {
|
||||||
var eventDiv = document.createElement("div");
|
var eventDiv = $(document.createElement("div"));
|
||||||
var event = calendarEvents[eventRep.cname];
|
var event = calendarEvents[eventRep.cname];
|
||||||
if (!event.siblings)
|
if (!event.siblings)
|
||||||
event.siblings = [];
|
event.siblings = [];
|
||||||
|
@ -828,31 +833,33 @@ function newEventDIV(eventRep) {
|
||||||
eventDiv.cname = event[0];
|
eventDiv.cname = event[0];
|
||||||
eventDiv.calendar = event[1];
|
eventDiv.calendar = event[1];
|
||||||
|
|
||||||
$(eventDiv).addClassName("event");
|
eventDiv.addClassName("event");
|
||||||
// $(eventDiv).addClassName(eventClass(cname));
|
if (eventRep.userState && userStates[eventRep.userState])
|
||||||
$(eventDiv).addClassName("starts" + eventRep.start);
|
eventDiv.addClassName(userStates[eventRep.userState]);
|
||||||
$(eventDiv).addClassName("lasts" + eventRep.length);
|
|
||||||
for (var i = 1; i < 5; i++) {
|
|
||||||
var shadowDiv = document.createElement("div");
|
|
||||||
eventDiv.appendChild(shadowDiv);
|
|
||||||
$(shadowDiv).addClassName("shadow");
|
|
||||||
$(shadowDiv).addClassName("shadow" + i);
|
|
||||||
}
|
|
||||||
var innerDiv = document.createElement("div");
|
|
||||||
eventDiv.appendChild(innerDiv);
|
|
||||||
$(innerDiv).addClassName("eventInside");
|
|
||||||
$(innerDiv).addClassName("calendarFolder" + event[1]);
|
|
||||||
|
|
||||||
var gradientDiv = document.createElement("div");
|
eventDiv.addClassName("starts" + eventRep.start);
|
||||||
|
eventDiv.addClassName("lasts" + eventRep.length);
|
||||||
|
for (var i = 1; i < 5; i++) {
|
||||||
|
var shadowDiv = $(document.createElement("div"));
|
||||||
|
eventDiv.appendChild(shadowDiv);
|
||||||
|
shadowDiv.addClassName("shadow");
|
||||||
|
shadowDiv.addClassName("shadow" + i);
|
||||||
|
}
|
||||||
|
var innerDiv = $(document.createElement("div"));
|
||||||
|
eventDiv.appendChild(innerDiv);
|
||||||
|
innerDiv.addClassName("eventInside");
|
||||||
|
innerDiv.addClassName("calendarFolder" + event[1]);
|
||||||
|
|
||||||
|
var gradientDiv = $(document.createElement("div"));
|
||||||
innerDiv.appendChild(gradientDiv);
|
innerDiv.appendChild(gradientDiv);
|
||||||
$(gradientDiv).addClassName("gradient");
|
gradientDiv.addClassName("gradient");
|
||||||
var gradientImg = document.createElement("img");
|
var gradientImg = $(document.createElement("img"));
|
||||||
gradientDiv.appendChild(gradientImg);
|
gradientDiv.appendChild(gradientImg);
|
||||||
gradientImg.src = ResourcesURL + "/event-gradient.png";
|
gradientImg.src = ResourcesURL + "/event-gradient.png";
|
||||||
|
|
||||||
var textDiv = document.createElement("div");
|
var textDiv = $(document.createElement("div"));
|
||||||
innerDiv.appendChild(textDiv);
|
innerDiv.appendChild(textDiv);
|
||||||
$(textDiv).addClassName("text");
|
textDiv.addClassName("text");
|
||||||
// if (startHour) {
|
// if (startHour) {
|
||||||
// var headerSpan = document.createElement("span");
|
// var headerSpan = document.createElement("span");
|
||||||
// textDiv.appendChild(headerSpan);
|
// textDiv.appendChild(headerSpan);
|
||||||
|
@ -893,7 +900,7 @@ function _drawMonthCalendarEvents(events) {
|
||||||
function newMonthEventDIV(eventRep) {
|
function newMonthEventDIV(eventRep) {
|
||||||
// cname, calendar, starts, lasts,
|
// cname, calendar, starts, lasts,
|
||||||
// startHour, endHour, title) {
|
// startHour, endHour, title) {
|
||||||
var eventDiv = document.createElement("div");
|
var eventDiv = $(document.createElement("div"));
|
||||||
var event = calendarEvents[eventRep.cname];
|
var event = calendarEvents[eventRep.cname];
|
||||||
if (!event.siblings)
|
if (!event.siblings)
|
||||||
event.siblings = [];
|
event.siblings = [];
|
||||||
|
@ -901,28 +908,33 @@ function newMonthEventDIV(eventRep) {
|
||||||
eventDiv.cname = event[0];
|
eventDiv.cname = event[0];
|
||||||
eventDiv.calendar = event[1];
|
eventDiv.calendar = event[1];
|
||||||
|
|
||||||
$(eventDiv).addClassName("event");
|
eventDiv.addClassName("event");
|
||||||
for (var i = 1; i < 5; i++) {
|
if (eventRep.userState && userStates[eventRep.userState]) {
|
||||||
var shadowDiv = document.createElement("div");
|
eventDiv.addClassName(userStates[eventRep.userState]);
|
||||||
eventDiv.appendChild(shadowDiv);
|
log (eventDiv.getAttribute("class"));
|
||||||
$(shadowDiv).addClassName("shadow");
|
|
||||||
$(shadowDiv).addClassName("shadow" + i);
|
|
||||||
}
|
}
|
||||||
var innerDiv = document.createElement("div");
|
|
||||||
eventDiv.appendChild(innerDiv);
|
|
||||||
$(innerDiv).addClassName("eventInside");
|
|
||||||
$(innerDiv).addClassName("calendarFolder" + event[1]);
|
|
||||||
|
|
||||||
var gradientDiv = document.createElement("div");
|
for (var i = 1; i < 5; i++) {
|
||||||
|
var shadowDiv = $(document.createElement("div"));
|
||||||
|
eventDiv.appendChild(shadowDiv);
|
||||||
|
shadowDiv.addClassName("shadow");
|
||||||
|
shadowDiv.addClassName("shadow" + i);
|
||||||
|
}
|
||||||
|
var innerDiv = $(document.createElement("div"));
|
||||||
|
eventDiv.appendChild(innerDiv);
|
||||||
|
innerDiv.addClassName("eventInside");
|
||||||
|
innerDiv.addClassName("calendarFolder" + event[1]);
|
||||||
|
|
||||||
|
var gradientDiv = $(document.createElement("div"));
|
||||||
innerDiv.appendChild(gradientDiv);
|
innerDiv.appendChild(gradientDiv);
|
||||||
$(gradientDiv).addClassName("gradient");
|
gradientDiv.addClassName("gradient");
|
||||||
var gradientImg = document.createElement("img");
|
var gradientImg = document.createElement("img");
|
||||||
gradientDiv.appendChild(gradientImg);
|
gradientDiv.appendChild(gradientImg);
|
||||||
gradientImg.src = ResourcesURL + "/event-gradient.png";
|
gradientImg.src = ResourcesURL + "/event-gradient.png";
|
||||||
|
|
||||||
var textDiv = document.createElement("div");
|
var textDiv = $(document.createElement("div"));
|
||||||
innerDiv.appendChild(textDiv);
|
innerDiv.appendChild(textDiv);
|
||||||
$(textDiv).addClassName("textw");
|
textDiv.addClassName("textw");
|
||||||
|
|
||||||
var eventText;
|
var eventText;
|
||||||
if (event[7])
|
if (event[7])
|
||||||
|
@ -1265,8 +1277,8 @@ function changeWeekCalendarDisplayOfSelectedDay(node) {
|
||||||
var daysView = $("daysView");
|
var daysView = $("daysView");
|
||||||
var daysDiv = daysView.childNodesWithTag("div");
|
var daysDiv = daysView.childNodesWithTag("div");
|
||||||
var days = daysDiv[1].childNodesWithTag("div");
|
var days = daysDiv[1].childNodesWithTag("div");
|
||||||
var headerDiv = $("calendarHeader").childNodesWithTag("div")[1];
|
var headerDiv = $($("calendarHeader").childNodesWithTag("div")[1]);
|
||||||
var headerDays = $(headerDiv).childNodesWithTag("div");
|
var headerDays = headerDiv.childNodesWithTag("div");
|
||||||
|
|
||||||
for (var i = 0; i < days.length; i++) {
|
for (var i = 0; i < days.length; i++) {
|
||||||
if (days[i] == node
|
if (days[i] == node
|
||||||
|
|
Loading…
Reference in a new issue