From 3f8bbe8c6012e60334002affded0c94151db20e3 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Mon, 9 Jun 2014 09:14:30 -0400 Subject: [PATCH 01/46] Applied patch from #2807 --- ActiveSync/NGVCard+ActiveSync.m | 15 ++++++++++++--- NEWS | 9 +++++++++ SOPE/NGCards/NGVCard.h | 3 +++ SOPE/NGCards/NGVCard.m | 19 +++++++++++++++++++ 4 files changed, 43 insertions(+), 3 deletions(-) diff --git a/ActiveSync/NGVCard+ActiveSync.m b/ActiveSync/NGVCard+ActiveSync.m index 9ac476969..bb4f29248 100644 --- a/ActiveSync/NGVCard+ActiveSync.m +++ b/ActiveSync/NGVCard+ActiveSync.m @@ -40,6 +40,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #import +#import + #include "NSDate+ActiveSync.h" #include "NSString+ActiveSync.h" @@ -199,6 +201,9 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. [s appendFormat: @"%@", o]; [s appendString: @""]; } + + if ((o = [self photo])) + [s appendFormat: @"%@", o]; return s; } @@ -285,13 +290,13 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. if ((o = [theValues objectForKey: @"Email1Address"])) { element = [self elementWithTag: @"email" ofType: @"work"]; - [element setSingleValue: o forKey: @""]; + [element setSingleValue: [o pureEMailAddress] forKey: @""]; } if ((o = [theValues objectForKey: @"Email2Address"])) { element = [self elementWithTag: @"email" ofType: @"home"]; - [element setSingleValue: o forKey: @""]; + [element setSingleValue: [o pureEMailAddress] forKey: @""]; } // SOGo currently only supports 2 email addresses ... but AS clients might send 3 @@ -299,7 +304,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. if ((o = [theValues objectForKey: @"Email3Address"])) { element = [self elementWithTag: @"email" ofType: @"three"]; - [element setSingleValue: o forKey: @""]; + [element setSingleValue: [o pureEMailAddress] forKey: @""]; } // Formatted name @@ -346,6 +351,10 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. if ((o = [theValues objectForKey: @"NickName"])) [self setNickname: o]; + + if ((o = [theValues objectForKey: @"Picture"])) + [self setPhoto: o]; + } @end diff --git a/NEWS b/NEWS index e9dd332da..c5d569491 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,12 @@ +2.2.6 (2014-XX-YY) +------------------ + +Enhancements + - contacts photos are now synchronized using ActiveSync (#2807) + +Bug fixes + + 2.2.5 (2014-06-05) ------------------ diff --git a/SOPE/NGCards/NGVCard.h b/SOPE/NGCards/NGVCard.h index 1d3696c63..9553da380 100644 --- a/SOPE/NGCards/NGVCard.h +++ b/SOPE/NGCards/NGVCard.h @@ -126,6 +126,9 @@ typedef enum - (void) setCategories: (NSArray *) newCategories; - (NSArray *) categories; +- (NSString *) photo; +- (void) setPhoto: (NSString *) _value; + // - (void) setN: (NGVCardName *) _v; // - (NGVCardName *) n; diff --git a/SOPE/NGCards/NGVCard.m b/SOPE/NGCards/NGVCard.m index db3833c6e..5f8028aa5 100644 --- a/SOPE/NGCards/NGVCard.m +++ b/SOPE/NGCards/NGVCard.m @@ -288,6 +288,25 @@ return [self uniqueChildWithTag: @"n"]; } +- (NSString *) photo +{ + NGVCardPhoto *photo; + + photo = (NGVCardPhoto *)[self uniqueChildWithTag: @"photo"]; + + return [[photo valuesAtIndex: 0 forKey: @""] objectAtIndex: 0]; +} + +- (void) setPhoto: (NSString *) _value +{ + CardElement *photo; + photo = [self uniqueChildWithTag: @"photo"]; + [photo setValue: 0 ofAttribute: @"encoding" to: @"BASE64"]; + + [photo setSingleValue: _value forKey: @""]; +} + + - (void) setOrg: (NSString *) anOrg units: (NSArray *) someUnits { From 0f04be2bcb003ff0b0c1099c524dffa3b40d0181 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Mon, 9 Jun 2014 09:25:06 -0400 Subject: [PATCH 02/46] Added patch from #2808 --- ActiveSync/NSString+ActiveSync.h | 1 + ActiveSync/NSString+ActiveSync.m | 17 ++++++++++ ActiveSync/SOGoActiveSyncDispatcher.m | 49 +++++++++++++++++++++++++-- NEWS | 1 + 4 files changed, 66 insertions(+), 2 deletions(-) diff --git a/ActiveSync/NSString+ActiveSync.h b/ActiveSync/NSString+ActiveSync.h index f3f95b07b..172d71eb1 100644 --- a/ActiveSync/NSString+ActiveSync.h +++ b/ActiveSync/NSString+ActiveSync.h @@ -47,6 +47,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - (NSCalendarDate *) calendarDate; - (NSString *) deviceId; - (NSString *) deviceType; +- (NSString *) attachmentName; - (NSString *) command; - (NSData *) convertHexStringToBytes; diff --git a/ActiveSync/NSString+ActiveSync.m b/ActiveSync/NSString+ActiveSync.m index b1fba0f4c..3d1a2b86b 100644 --- a/ActiveSync/NSString+ActiveSync.m +++ b/ActiveSync/NSString+ActiveSync.m @@ -186,6 +186,23 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. return s; } +// This method extracts the "AttachmentName" from a URI: +// +// /SOGo/Microsoft-Server-ActiveSync?Cmd=GetAttachment&User=sogo&DeviceId=HTCa04b4932597acd3f2dc1a918b9728&DeviceType=htcvision&AttachmentName=mail/TestFldr/8/2 +// +- (NSString *) attachmentName +{ + NSString *s; + + s = [self _valueForParameter: @"ATTACHMENTNAME="]; + + if (!s) + s = @"Unknown"; + + return s; +} + + // // // diff --git a/ActiveSync/SOGoActiveSyncDispatcher.m b/ActiveSync/SOGoActiveSyncDispatcher.m index 63e4b54ee..a6a9eb384 100644 --- a/ActiveSync/SOGoActiveSyncDispatcher.m +++ b/ActiveSync/SOGoActiveSyncDispatcher.m @@ -781,7 +781,51 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - (void) processGetAttachment: (id ) theDocumentElement inResponse: (WOResponse *) theResponse { + NSString *fileReference, *realCollectionId; + SOGoMicrosoftActiveSyncFolderType folderType; + + fileReference = [context objectForKey: @"AttachmentName"]; + + realCollectionId = [fileReference realCollectionIdWithFolderType: &folderType]; + + if (folderType == ActiveSyncMailFolder) + { + id currentFolder, currentCollection, currentBodyPart; + NSString *folderName, *messageName, *pathToPart; + SOGoMailAccounts *accountsFolder; + SOGoUserFolder *userFolder; + SOGoMailObject *mailObject; + + NSRange r1, r2; + + r1 = [realCollectionId rangeOfString: @"/"]; + r2 = [realCollectionId rangeOfString: @"/" options: 0 range: NSMakeRange(NSMaxRange(r1)+1, [realCollectionId length]-NSMaxRange(r1)-1)]; + + folderName = [realCollectionId substringToIndex: r1.location]; + messageName = [realCollectionId substringWithRange: NSMakeRange(NSMaxRange(r1), r2.location-r1.location-1)]; + pathToPart = [realCollectionId substringFromIndex: r2.location+1]; + + userFolder = [[context activeUser] homeFolderInContext: context]; + accountsFolder = [userFolder lookupName: @"Mail" inContext: context acquire: NO]; + currentFolder = [accountsFolder lookupName: @"0" inContext: context acquire: NO]; + + currentCollection = [currentFolder lookupName: [NSString stringWithFormat: @"folder%@", folderName] + inContext: context + acquire: NO]; + + mailObject = [currentCollection lookupName: messageName inContext: context acquire: NO]; + currentBodyPart = [mailObject lookupImap4BodyPartKey: pathToPart inContext: context]; + + [theResponse setHeader: [NSString stringWithFormat: @"%@/%@", [[currentBodyPart partInfo] objectForKey: @"type"], [[currentBodyPart partInfo] objectForKey: @"subtype"]] + forKey: @"Content-Type"]; + + [theResponse setContent: [currentBodyPart fetchBLOB] ]; + } + else + { + [theResponse setStatus: 500]; + } } // @@ -891,7 +935,6 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. fileReference = [[[(id)[theDocumentElement getElementsByTagName: @"FileReference"] lastObject] textValue] stringByUnescapingURL]; realCollectionId = [fileReference realCollectionIdWithFolderType: &folderType]; - realCollectionId = [self globallyUniqueIDToIMAPFolderName: realCollectionId type: folderType]; if (folderType == ActiveSyncMailFolder) { @@ -1826,6 +1869,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. deviceId = [[theRequest uri] deviceId]; [context setObject: deviceId forKey: @"DeviceId"]; [context setObject: [[theRequest uri] deviceType] forKey: @"DeviceType"]; + [context setObject: [[theRequest uri] attachmentName] forKey: @"AttachmentName"]; + cmdName = [[theRequest uri] command]; @@ -1869,7 +1914,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. { // We check if it's a Ping command with no body. // See http://msdn.microsoft.com/en-us/library/ee200913(v=exchg.80).aspx for details - if ([cmdName caseInsensitiveCompare: @"Ping"] != NSOrderedSame) + if ([cmdName caseInsensitiveCompare: @"Ping"] != NSOrderedSame && [cmdName caseInsensitiveCompare: @"GetAttachment"] != NSOrderedSame) return [NSException exceptionWithHTTPStatus: 500]; } diff --git a/NEWS b/NEWS index c5d569491..c6086a368 100644 --- a/NEWS +++ b/NEWS @@ -3,6 +3,7 @@ Enhancements - contacts photos are now synchronized using ActiveSync (#2807) + - implemented the GetAttachment ActiveSync command (#2808) Bug fixes From f48839bf55917cb3a9756134930206b7b15d0279 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Mon, 9 Jun 2014 09:34:00 -0400 Subject: [PATCH 03/46] Added (slightly modified) patch from #2806 --- ActiveSync/SOGoMailObject+ActiveSync.m | 21 ++++++++++++++++----- NEWS | 2 +- SoObjects/Mailer/SOGoMailObject.h | 1 + SoObjects/Mailer/SOGoMailObject.m | 5 +++++ 4 files changed, 23 insertions(+), 6 deletions(-) diff --git a/ActiveSync/SOGoMailObject+ActiveSync.m b/ActiveSync/SOGoMailObject+ActiveSync.m index 7b0a008a4..58dca5cf1 100644 --- a/ActiveSync/SOGoMailObject+ActiveSync.m +++ b/ActiveSync/SOGoMailObject+ActiveSync.m @@ -761,7 +761,7 @@ struct GlobalObjectId { // Flags [s appendString: @""]; - [s appendFormat: @"%d", 0]; + [s appendFormat: @"%d", ([self flagged] ? 2 : 0)]; [s appendString: @""]; // FIXME - support these in the future @@ -799,10 +799,21 @@ struct GlobalObjectId { if ((o = [theValues objectForKey: @"Flag"])) { - o = [o objectForKey: @"FlagStatus"]; - - if ([o intValue]) - [self addFlags: @"\\Flagged"]; + // We must handle empty flags -> {Flag = ""; } - some ActiveSync clients, like the HTC Desire + // will send an empty Flag message when "unflagging" a mail. + if (([o isKindOfClass: [NSMutableDictionary class]])) + { + if ((o = [o objectForKey: @"FlagStatus"])) + { + // 0 = The flag is cleared. + // 1 = The status is set to complete. + // 2 = The status is set to active. + if (([o isEqualToString: @"2"])) + [self addFlags: @"\\Flagged"]; + else + [self removeFlags: @"\\Flagged"]; + } + } else [self removeFlags: @"\\Flagged"]; } diff --git a/NEWS b/NEWS index c6086a368..a76c2668a 100644 --- a/NEWS +++ b/NEWS @@ -6,7 +6,7 @@ Enhancements - implemented the GetAttachment ActiveSync command (#2808) Bug fixes - + - better handling of empty "Flag" messages over ActiveSync (#2806) 2.2.5 (2014-06-05) ------------------ diff --git a/SoObjects/Mailer/SOGoMailObject.h b/SoObjects/Mailer/SOGoMailObject.h index 46c1d7c14..af52334ee 100644 --- a/SoObjects/Mailer/SOGoMailObject.h +++ b/SoObjects/Mailer/SOGoMailObject.h @@ -114,6 +114,7 @@ NSArray *SOGoMailCoreInfoKeys; - (NSException *) removeFlags:(id)_f; - (BOOL) isNewMail; /* \Recent */ +- (BOOL) flagged; /* \Flagged */ - (BOOL) read; /* \Unseen */ - (BOOL) replied; /* \Answered */ - (BOOL) forwarded; /* $forwarded */ diff --git a/SoObjects/Mailer/SOGoMailObject.m b/SoObjects/Mailer/SOGoMailObject.m index f2fa35eac..f99bcf49d 100644 --- a/SoObjects/Mailer/SOGoMailObject.m +++ b/SoObjects/Mailer/SOGoMailObject.m @@ -1464,6 +1464,11 @@ static BOOL debugSoParts = NO; return [self _hasFlag: @"seen"]; } +- (BOOL) flagged +{ + return [self _hasFlag: @"flagged"]; +} + - (BOOL) replied { return [self _hasFlag: @"answered"]; From 77dad178d11b36da07660a9b5f0dd8c7a74cad50 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Tue, 10 Jun 2014 08:45:35 -0400 Subject: [PATCH 04/46] Make sure we don't have '-' in table names. --- ActiveSync/SOGoActiveSyncDispatcher.m | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/ActiveSync/SOGoActiveSyncDispatcher.m b/ActiveSync/SOGoActiveSyncDispatcher.m index a6a9eb384..7f58e420a 100644 --- a/ActiveSync/SOGoActiveSyncDispatcher.m +++ b/ActiveSync/SOGoActiveSyncDispatcher.m @@ -1968,9 +1968,12 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. if ([parts count] == 5) { /* If "OCSFolderInfoURL" is properly configured, we must have 5 - parts in this url. */ + parts in this url. We strip the '-' character in case we have + this in the domain part - like foo@bar-zot.com */ ocFSTableName = [NSString stringWithFormat: @"sogo_cache_folder_%@", - [[user loginInDomain] asCSSIdentifier]]; + [[[user loginInDomain] asCSSIdentifier] + stringByReplacingOccurrencesOfString: @"-" + withString: @"_"]]; [parts replaceObjectAtIndex: 4 withObject: ocFSTableName]; folderTableURL = [NSURL URLWithString: [parts componentsJoinedByString: @"/"]]; From 1292c191eca61027b9856b04840105fde588d42c Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Tue, 10 Jun 2014 08:46:35 -0400 Subject: [PATCH 05/46] Make sure we don't have '-' in table names. --- OpenChange/MAPIStoreUserContext.m | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/OpenChange/MAPIStoreUserContext.m b/OpenChange/MAPIStoreUserContext.m index d0284eb6f..bad00b260 100644 --- a/OpenChange/MAPIStoreUserContext.m +++ b/OpenChange/MAPIStoreUserContext.m @@ -294,9 +294,12 @@ static NSMapTable *contextsTable = nil; if ([parts count] == 5) { /* If "OCSFolderInfoURL" is properly configured, we must have 5 - parts in this url. */ + parts in this url. We strip the '-' character in case we have + this in the domain part - like foo@bar-zot.com */ ocFSTableName = [NSString stringWithFormat: @"sogo_cache_folder_%@", - [username asCSSIdentifier]]; + [[[user loginInDomain] asCSSIdentifier] + stringByReplacingOccurrencesOfString: @"-" + withString: @"_"]]; [parts replaceObjectAtIndex: 4 withObject: ocFSTableName]; folderTableURL = [NSURL URLWithString: [parts componentsJoinedByString: @"/"]]; From 19a95a1818e34755bffd7c5f9dbd35e214123cac Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Tue, 10 Jun 2014 08:58:44 -0400 Subject: [PATCH 06/46] Applied fix from #2809 --- NEWS | 1 + UI/MailPartViewers/UIxMailPartHTMLViewer.m | 3 +++ 2 files changed, 4 insertions(+) diff --git a/NEWS b/NEWS index a76c2668a..b3350bcc5 100644 --- a/NEWS +++ b/NEWS @@ -7,6 +7,7 @@ Enhancements Bug fixes - better handling of empty "Flag" messages over ActiveSync (#2806) + - fixed Chinese charset handling (#2809) 2.2.5 (2014-06-05) ------------------ diff --git a/UI/MailPartViewers/UIxMailPartHTMLViewer.m b/UI/MailPartViewers/UIxMailPartHTMLViewer.m index df981a470..0b525680b 100644 --- a/UI/MailPartViewers/UIxMailPartHTMLViewer.m +++ b/UI/MailPartViewers/UIxMailPartHTMLViewer.m @@ -86,6 +86,9 @@ _xmlCharsetForCharset (NSString *charset) { @"windows-1251", XML_CHAR_ENCODING_ERROR}, // unsupported, will trigger windows-1251 -> utf8 conversion { @"windows-1257", XML_CHAR_ENCODING_ERROR}, // unsupported, will trigger windows-1257 -> utf8 conversion { @"gb2312", XML_CHAR_ENCODING_ERROR}, // unsupported, will trigger gb2312 -> utf8 conversion + { @"gbk", XML_CHAR_ENCODING_ERROR}, // unsupported, will trigger gb2312 -> utf8 conversion + { @"gb18030", XML_CHAR_ENCODING_ERROR}, // unsupported, will trigger gb2312 -> utf8 conversion + { @"big5", XML_CHAR_ENCODING_ERROR}, // unsupported, will trigger gb2312 -> utf8 conversion { @"euc-jp", XML_CHAR_ENCODING_EUC_JP}}; unsigned count; xmlCharEncoding encoding; From 91e3e19e40b843063cda21b84e6fcc072da2ad49 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Tue, 10 Jun 2014 11:04:27 -0400 Subject: [PATCH 07/46] Added the Ping ActiveSync command --- ActiveSync/SOGoActiveSyncDispatcher+Sync.m | 20 ++- ActiveSync/SOGoActiveSyncDispatcher.m | 170 +++++++++++++++++++-- NEWS | 1 + 3 files changed, 177 insertions(+), 14 deletions(-) diff --git a/ActiveSync/SOGoActiveSyncDispatcher+Sync.m b/ActiveSync/SOGoActiveSyncDispatcher+Sync.m index 3102e92e8..8c206baaf 100644 --- a/ActiveSync/SOGoActiveSyncDispatcher+Sync.m +++ b/ActiveSync/SOGoActiveSyncDispatcher+Sync.m @@ -123,6 +123,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. [o setTableUrl: [self folderTableURL]]; [o reloadIfNeeded]; + [[o properties] removeObjectForKey: @"SyncKey"]; [[o properties] removeObjectForKey: @"SyncCache"]; [[o properties] removeObjectForKey: @"DateCache"]; @@ -476,6 +477,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. lastServerKey: (NSString **) theLastServerKey { + NSMutableDictionary *folderMetadata; NSMutableString *s; BOOL more_available; @@ -602,12 +604,17 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. [s appendString: @""]; } } // for ... + + folderMetadata = [NSDictionary dictionaryWithObject: [theCollection davCollectionTag] + forKey: @"SyncKey"]; + [self _setFolderMetadata: folderMetadata + forKey: [NSString stringWithFormat: @"%@/%@", component_name, [theCollection nameInContainer]]]; } break; case ActiveSyncMailFolder: default: { - NSMutableDictionary *syncCache, *dateCache, *folderMetadata; + NSMutableDictionary *syncCache, *dateCache; SOGoSyncCacheObject *lastCacheObject, *aCacheObject; NSMutableArray *allCacheObjects, *sortedBySequence; @@ -782,11 +789,16 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. } if (more_available) - [folderMetadata setObject: [NSNumber numberWithBool: YES] forKey: @"MoreAvailable"]; + { + [folderMetadata setObject: [NSNumber numberWithBool: YES] forKey: @"MoreAvailable"]; + [folderMetadata setObject: *theLastServerKey forKey: @"SyncKey"]; + } else - [folderMetadata removeObjectForKey: @"MoreAvailable"]; + { + [folderMetadata removeObjectForKey: @"MoreAvailable"]; + [folderMetadata setObject: [theCollection davCollectionTag] forKey: @"SyncKey"]; + } - [self _setFolderMetadata: folderMetadata forKey: [theCollection nameInContainer]]; } // default: diff --git a/ActiveSync/SOGoActiveSyncDispatcher.m b/ActiveSync/SOGoActiveSyncDispatcher.m index 7f58e420a..13c0617de 100644 --- a/ActiveSync/SOGoActiveSyncDispatcher.m +++ b/ActiveSync/SOGoActiveSyncDispatcher.m @@ -122,6 +122,12 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include +@interface SOGoActiveSyncDispatcher (Sync) + +- (NSMutableDictionary *) _folderMetadataForKey: (NSString *) theFolderKey; + +@end + @implementation SOGoActiveSyncDispatcher - (id) init @@ -1261,30 +1267,73 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. } // -// Ping requests make a little sense because the request -// doesn't contain the SyncKey on the client. So we can't -// really know if something has changed on the server. What we -// do for now is simply return Status=5 with the HeartbeatInterval -// set at 60 seconds or we wait 60 seconds before responding with -// Status=1 +// +// +// +// 3540 +// +// +// mail%2Fsogo_680f_193506d5_0 +// Email +// +// +// vevent/personal +// Calendar +// +// +// vcard/personal +// Contacts +// +// +// mail%2Fsogo_680f_193506d5_1 +// Email +// +// +// mail%2Fsogo_680f_193506d5_2 +// Email +// +// +// vtodo/personal +// Tasks +// +// +// mail%2Fsogo_753e_193511a1_0 +// Email +// +// +// mail%2Fsogo_753e_193511a1_1 +// Email +// +// +// // - (void) processPing: (id ) theDocumentElement inResponse: (WOResponse *) theResponse { + NSString *collectionId, *realCollectionId, *syncKey; + NSMutableArray *foldersWithChanges, *allFoldersID; + SOGoMicrosoftActiveSyncFolderType folderType; + NSMutableDictionary *folderMetadata; SOGoSystemDefaults *defaults; + id aCollection; + NSArray *allCollections; + NSMutableString *s; + id collection; NSData *d; - int heartbeatInterval, defaultInterval, status; + + int i, j, heartbeatInterval, defaultInterval, internalInterval, status; defaults = [SOGoSystemDefaults sharedSystemDefaults]; defaultInterval = [defaults maximumPingInterval]; + internalInterval = [defaults internalSyncInterval]; if (theDocumentElement) heartbeatInterval = [[[(id)[theDocumentElement getElementsByTagName: @"HeartbeatInterval"] lastObject] textValue] intValue]; else heartbeatInterval = defaultInterval; - + if (heartbeatInterval > defaultInterval || heartbeatInterval == 0) { heartbeatInterval = defaultInterval; @@ -1295,15 +1344,116 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. status = 1; } - NSLog(@"Got Ping request with valid interval - sleeping for %d seconds.", heartbeatInterval); - sleep(heartbeatInterval); + // We build the list of folders to "ping". When the payload is empty, we use the list + // of "cached" folders. + allCollections = (id)[theDocumentElement getElementsByTagName: @"Folders"]; + allFoldersID = [NSMutableArray array]; + if (![allCollections count]) + { + SOGoMailAccounts *accountsFolder; + SOGoMailAccount *accountFolder; + SOGoUserFolder *userFolder; + NSArray *allValues; + + userFolder = [[context activeUser] homeFolderInContext: context]; + accountsFolder = [userFolder lookupName: @"Mail" inContext: context acquire: NO]; + accountFolder = [accountsFolder lookupName: @"0" inContext: context acquire: NO]; + + allValues = [[accountFolder imapFolderGUIDs] allValues]; + + for (i = 0; i < [allValues count]; i++) + [allFoldersID addObject: [NSString stringWithFormat: @"mail/%@", [allValues objectAtIndex: i]]]; + + + // FIXME: handle multiple GCS collecitons + [allFoldersID addObject: @"vcard/personal"]; + [allFoldersID addObject: @"vevent/personal"]; + [allFoldersID addObject: @"vtodo/personal"]; + } + else + { + for (i = 0; i < [allCollections count]; i++) + { + aCollection = [allCollections objectAtIndex: i]; + collectionId = [[(id) [aCollection getElementsByTagName: @"Id"] lastObject] textValue]; + [allFoldersID addObject: collectionId]; + } + } + + foldersWithChanges = [NSMutableArray array]; + + // We enter our loop detection change + for (i = 0; i < (heartbeatInterval/internalInterval); i++) + { + for (j = 0; j < [allFoldersID count]; j++) + { + collectionId = [allFoldersID objectAtIndex: j]; + realCollectionId = [collectionId realCollectionIdWithFolderType: &folderType]; + realCollectionId = [self globallyUniqueIDToIMAPFolderName: realCollectionId type: folderType]; + collection = [self collectionFromId: realCollectionId type: folderType]; + + switch (folderType) + { + case ActiveSyncContactFolder: + folderMetadata = [self _folderMetadataForKey: [NSString stringWithFormat: @"vcard/%@", [collection nameInContainer]]]; + break; + case ActiveSyncEventFolder: + folderMetadata = [self _folderMetadataForKey: [NSString stringWithFormat: @"vevent/%@", [collection nameInContainer]]]; + break; + case ActiveSyncTaskFolder: + folderMetadata = [self _folderMetadataForKey: [NSString stringWithFormat: @"vtodo/%@", [collection nameInContainer]]]; + break; + default: + folderMetadata = [self _folderMetadataForKey: [collection nameInContainer]]; + } + + syncKey = [folderMetadata objectForKey: @"SyncKey"]; + + if (![syncKey isEqualToString: [collection davCollectionTag]]) + { + [foldersWithChanges addObject: collectionId]; + } + } + + if ([foldersWithChanges count]) + { + NSLog(@"Change detected, we push the content."); + status = 2; + break; + } + else + { + NSLog(@"Sleeping %d seconds while detecting changes...", internalInterval); + sleep(internalInterval); + } + } + // We generate our response s = [NSMutableString string]; [s appendString: @""]; [s appendString: @""]; [s appendString: @""]; [s appendFormat: @"%d", status]; + + if ([foldersWithChanges count]) + { + [s appendString: @""]; + + for (i = 0; i < [foldersWithChanges count]; i++) + { + // A bit tricky here because we must call stringByEscapingURL on mail folders, but not on GCS ones. + // We do the same thing in -processFolderSync + collectionId = [foldersWithChanges objectAtIndex: i]; + + if ([collectionId hasPrefix: @"mail/"]) + collectionId = [collectionId stringByEscapingURL]; + + [s appendFormat: @"%@", collectionId]; + } + + [s appendString: @""]; + } if (status == 5) { diff --git a/NEWS b/NEWS index b3350bcc5..7af43b7c2 100644 --- a/NEWS +++ b/NEWS @@ -4,6 +4,7 @@ Enhancements - contacts photos are now synchronized using ActiveSync (#2807) - implemented the GetAttachment ActiveSync command (#2808) + - implemented the Ping ActiveSync command Bug fixes - better handling of empty "Flag" messages over ActiveSync (#2806) From 0133bb3b6bf13c81350b791be57c01d83356cba7 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Tue, 10 Jun 2014 13:07:14 -0400 Subject: [PATCH 08/46] Correctly update the cache on folder update/delete ops. --- ActiveSync/SOGoActiveSyncDispatcher.m | 28 ++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/ActiveSync/SOGoActiveSyncDispatcher.m b/ActiveSync/SOGoActiveSyncDispatcher.m index 13c0617de..6f115aa2d 100644 --- a/ActiveSync/SOGoActiveSyncDispatcher.m +++ b/ActiveSync/SOGoActiveSyncDispatcher.m @@ -415,10 +415,20 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. if (!error) { + NSString *syncKey, *key; + SOGoCacheGCSObject *o; NSMutableString *s; - NSString *syncKey; NSData *d; - + + // + // We mark the cache object as deleted + // + key = [NSString stringWithFormat: @"%@+%@", [context objectForKey: @"DeviceId"], [folderToDelete nameInContainer]]; + o = [SOGoCacheGCSObject objectWithName: key inContainer: nil]; + [o setTableUrl: [self folderTableURL]]; + [o reloadIfNeeded]; + [o delete]; + // // We update the FolderSync's synckey // @@ -490,10 +500,22 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // Handle new name exist if (!error) { + NSString *syncKey, *key; + SOGoCacheGCSObject *o; NSMutableString *s; - NSString *syncKey; NSData *d; + // + // We update our cache + // + key = [NSString stringWithFormat: @"%@+folder%@", [context objectForKey: @"DeviceId"], serverId]; + o = [SOGoCacheGCSObject objectWithName: key inContainer: nil]; + [o setTableUrl: [self folderTableURL]]; + [o reloadIfNeeded]; + + key = [NSString stringWithFormat: @"%@+%@", [context objectForKey: @"DeviceId"], [folderToUpdate nameInContainer]]; + [o changePathTo: key]; + // // We update the FolderSync's synckey // From 6b3a3f858baf2b73a7910a2039103f2976ebdc7c Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Mon, 9 Jun 2014 22:07:44 -0400 Subject: [PATCH 09/46] Update prototype.js to version 1.7.2 --- UI/WebServerResources/prototype.js | 2853 ++++++++++++++++------------ 1 file changed, 1648 insertions(+), 1205 deletions(-) diff --git a/UI/WebServerResources/prototype.js b/UI/WebServerResources/prototype.js index 083b4dfb4..5c7ed2bd4 100644 --- a/UI/WebServerResources/prototype.js +++ b/UI/WebServerResources/prototype.js @@ -1,4 +1,4 @@ -/* Prototype JavaScript framework, version 1.7.1 +/* Prototype JavaScript framework, version 1.7.2 * (c) 2005-2010 Sam Stephenson * * Prototype is freely distributable under the terms of an MIT-style license. @@ -8,7 +8,7 @@ var Prototype = { - Version: '1.7.1', + Version: '1.7.2', Browser: (function(){ var ua = navigator.userAgent; @@ -564,6 +564,11 @@ Object.extend(String.prototype, (function() { return function(match) { return template.evaluate(match) }; } + function isNonEmptyRegExp(regexp) { + return regexp.source && regexp.source !== '(?:)'; + } + + function gsub(pattern, replacement) { var result = '', source = this, match; replacement = prepareReplacement(replacement); @@ -571,7 +576,7 @@ Object.extend(String.prototype, (function() { if (Object.isString(pattern)) pattern = RegExp.escape(pattern); - if (!(pattern.length || pattern.source)) { + if (!(pattern.length || isNonEmptyRegExp(pattern))) { replacement = replacement(''); return replacement + source.split('').join(replacement) + replacement; } @@ -2807,13 +2812,32 @@ Ajax.PeriodicalUpdater = Class.create(Ajax.Base, { return element; } + var PROBLEMATIC_HAS_ATTRIBUTE_WITH_CHECKBOXES = (function () { + if (!HAS_EXTENDED_CREATE_ELEMENT_SYNTAX) { + return false; + } + var checkbox = document.createElement(''); + checkbox.checked = true; + var node = checkbox.getAttributeNode('checked'); + return !node || !node.specified; + })(); + function hasAttribute(element, attribute) { attribute = ATTRIBUTE_TRANSLATIONS.has[attribute] || attribute; var node = $(element).getAttributeNode(attribute); return !!(node && node.specified); } - GLOBAL.Element.Methods.Simulated.hasAttribute = hasAttribute; + function hasAttribute_IE(element, attribute) { + if (attribute === 'checked') { + return element.checked; + } + return hasAttribute(element, attribute); + } + + GLOBAL.Element.Methods.Simulated.hasAttribute = + PROBLEMATIC_HAS_ATTRIBUTE_WITH_CHECKBOXES ? + hasAttribute_IE : hasAttribute; function classNames(element) { return new Element.ClassNames(element); @@ -3263,6 +3287,7 @@ Ajax.PeriodicalUpdater = Class.create(Ajax.Base, { function checkElementPrototypeDeficiency(tagName) { if (typeof window.Element === 'undefined') return false; + if (!HAS_EXTENDED_CREATE_ELEMENT_SYNTAX) return false; var proto = window.Element.prototype; if (proto) { var id = '_' + (Math.random() + '').slice(2), @@ -4077,9 +4102,16 @@ Ajax.PeriodicalUpdater = Class.create(Ajax.Base, { function cumulativeScrollOffset(element) { var valueT = 0, valueL = 0; do { - valueT += element.scrollTop || 0; - valueL += element.scrollLeft || 0; - element = element.parentNode; + if (element === document.body) { + var bodyScrollNode = document.documentElement || document.body.parentNode || document.body; + valueT += !Object.isUndefined(window.pageYOffset) ? window.pageYOffset : bodyScrollNode.scrollTop || 0; + valueL += !Object.isUndefined(window.pageXOffset) ? window.pageXOffset : bodyScrollNode.scrollLeft || 0; + break; + } else { + valueT += element.scrollTop || 0; + valueL += element.scrollLeft || 0; + element = element.parentNode; + } } while (element); return new Element.Offset(valueL, valueT); } @@ -4455,589 +4487,1118 @@ Prototype.Selector = (function() { extendElement: Element.extend }; })(); +Prototype._original_property = window.Sizzle; /*! - * Sizzle CSS Selector Engine - * Copyright 2011, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * More information: http://sizzlejs.com/ + * Sizzle CSS Selector Engine v@VERSION + * http://sizzlejs.com/ + * + * Copyright 2013 jQuery Foundation, Inc. and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: @DATE */ -(function(){ +(function( window ) { -var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, +var i, + support, + Expr, + getText, + isXML, + compile, + select, + outermostContext, + sortInput, + hasDuplicate, + + setDocument, + document, + docElem, + documentIsHTML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + + expando = "sizzle" + -(new Date()), + preferredDoc = window.document, + dirruns = 0, done = 0, - toString = Object.prototype.toString, - hasDuplicate = false, - baseHasDuplicate = true, - rBackslash = /\\/g, - rNonWord = /\W/; + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + } + return 0; + }, -[0, 0].sort(function() { - baseHasDuplicate = false; - return 0; -}); + strundefined = typeof undefined, + MAX_NEGATIVE = 1 << 31, -var Sizzle = function( selector, context, results, seed ) { - results = results || []; - context = context || document; + hasOwn = ({}).hasOwnProperty, + arr = [], + pop = arr.pop, + push_native = arr.push, + push = arr.push, + slice = arr.slice, + indexOf = arr.indexOf || function( elem ) { + var i = 0, + len = this.length; + for ( ; i < len; i++ ) { + if ( this[i] === elem ) { + return i; + } + } + return -1; + }, - var origContext = context; + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", - if ( context.nodeType !== 1 && context.nodeType !== 9 ) { - return []; + + whitespace = "[\\x20\\t\\r\\n\\f]", + characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", + + identifier = characterEncoding.replace( "w", "w#" ), + + attributes = "\\[" + whitespace + "*(" + characterEncoding + ")" + whitespace + + "*(?:([*^$|!~]?=)" + whitespace + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + identifier + ")|)|)" + whitespace + "*\\]", + + pseudos = ":(" + characterEncoding + ")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|" + attributes.replace( 3, 8 ) + ")*)|.*)\\)|)", + + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), + + rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), + + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + characterEncoding + ")" ), + "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ), + "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), + "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rnative = /^[^{]+\{\s*\[native \w/, + + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rsibling = /[+~]/, + rescape = /'|\\/g, + + runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), + funescape = function( _, escaped, escapedWhitespace ) { + var high = "0x" + escaped - 0x10000; + return high !== high || escapedWhitespace ? + escaped : + high < 0 ? + String.fromCharCode( high + 0x10000 ) : + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }; + +try { + push.apply( + (arr = slice.call( preferredDoc.childNodes )), + preferredDoc.childNodes + ); + arr[ preferredDoc.childNodes.length ].nodeType; +} catch ( e ) { + push = { apply: arr.length ? + + function( target, els ) { + push_native.apply( target, slice.call(els) ); + } : + + function( target, els ) { + var j = target.length, + i = 0; + while ( (target[j++] = els[i++]) ) {} + target.length = j - 1; + } + }; +} + +function Sizzle( selector, context, results, seed ) { + var match, elem, m, nodeType, + i, groups, old, nid, newContext, newSelector; + + if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { + setDocument( context ); } + context = context || document; + results = results || []; + if ( !selector || typeof selector !== "string" ) { return results; } - var m, set, checkSet, extra, ret, cur, pop, i, - prune = true, - contextXML = Sizzle.isXML( context ), - parts = [], - soFar = selector; - - do { - chunker.exec( "" ); - m = chunker.exec( soFar ); - - if ( m ) { - soFar = m[3]; - - parts.push( m[1] ); - - if ( m[2] ) { - extra = m[3]; - break; - } - } - } while ( m ); - - if ( parts.length > 1 && origPOS.exec( selector ) ) { - - if ( parts.length === 2 && Expr.relative[ parts[0] ] ) { - set = posProcess( parts[0] + parts[1], context ); - - } else { - set = Expr.relative[ parts[0] ] ? - [ context ] : - Sizzle( parts.shift(), context ); - - while ( parts.length ) { - selector = parts.shift(); - - if ( Expr.relative[ selector ] ) { - selector += parts.shift(); - } - - set = posProcess( selector, set ); - } - } - - } else { - if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML && - Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) { - - ret = Sizzle.find( parts.shift(), context, contextXML ); - context = ret.expr ? - Sizzle.filter( ret.expr, ret.set )[0] : - ret.set[0]; - } - - if ( context ) { - ret = seed ? - { expr: parts.pop(), set: makeArray(seed) } : - Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML ); - - set = ret.expr ? - Sizzle.filter( ret.expr, ret.set ) : - ret.set; - - if ( parts.length > 0 ) { - checkSet = makeArray( set ); - - } else { - prune = false; - } - - while ( parts.length ) { - cur = parts.pop(); - pop = cur; - - if ( !Expr.relative[ cur ] ) { - cur = ""; - } else { - pop = parts.pop(); - } - - if ( pop == null ) { - pop = context; - } - - Expr.relative[ cur ]( checkSet, pop, contextXML ); - } - - } else { - checkSet = parts = []; - } - } - - if ( !checkSet ) { - checkSet = set; - } - - if ( !checkSet ) { - Sizzle.error( cur || selector ); - } - - if ( toString.call(checkSet) === "[object Array]" ) { - if ( !prune ) { - results.push.apply( results, checkSet ); - - } else if ( context && context.nodeType === 1 ) { - for ( i = 0; checkSet[i] != null; i++ ) { - if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) { - results.push( set[i] ); - } - } - - } else { - for ( i = 0; checkSet[i] != null; i++ ) { - if ( checkSet[i] && checkSet[i].nodeType === 1 ) { - results.push( set[i] ); - } - } - } - - } else { - makeArray( checkSet, results ); - } - - if ( extra ) { - Sizzle( extra, origContext, results, seed ); - Sizzle.uniqueSort( results ); - } - - return results; -}; - -Sizzle.uniqueSort = function( results ) { - if ( sortOrder ) { - hasDuplicate = baseHasDuplicate; - results.sort( sortOrder ); - - if ( hasDuplicate ) { - for ( var i = 1; i < results.length; i++ ) { - if ( results[i] === results[ i - 1 ] ) { - results.splice( i--, 1 ); - } - } - } - } - - return results; -}; - -Sizzle.matches = function( expr, set ) { - return Sizzle( expr, null, null, set ); -}; - -Sizzle.matchesSelector = function( node, expr ) { - return Sizzle( expr, null, null, [node] ).length > 0; -}; - -Sizzle.find = function( expr, context, isXML ) { - var set; - - if ( !expr ) { + if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) { return []; } - for ( var i = 0, l = Expr.order.length; i < l; i++ ) { - var match, - type = Expr.order[i]; + if ( documentIsHTML && !seed ) { - if ( (match = Expr.leftMatch[ type ].exec( expr )) ) { - var left = match[1]; - match.splice( 1, 1 ); + if ( (match = rquickExpr.exec( selector )) ) { + if ( (m = match[1]) ) { + if ( nodeType === 9 ) { + elem = context.getElementById( m ); + if ( elem && elem.parentNode ) { + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + } else { + if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) && + contains( context, elem ) && elem.id === m ) { + results.push( elem ); + return results; + } + } - if ( left.substr( left.length - 1 ) !== "\\" ) { - match[1] = (match[1] || "").replace( rBackslash, "" ); - set = Expr.find[ type ]( match, context, isXML ); + } else if ( match[2] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; - if ( set != null ) { - expr = expr.replace( Expr.match[ type ], "" ); - break; + } else if ( (m = match[3]) && support.getElementsByClassName && context.getElementsByClassName ) { + push.apply( results, context.getElementsByClassName( m ) ); + return results; + } + } + + if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { + nid = old = expando; + newContext = context; + newSelector = nodeType === 9 && selector; + + if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { + groups = tokenize( selector ); + + if ( (old = context.getAttribute("id")) ) { + nid = old.replace( rescape, "\\$&" ); + } else { + context.setAttribute( "id", nid ); + } + nid = "[id='" + nid + "'] "; + + i = groups.length; + while ( i-- ) { + groups[i] = nid + toSelector( groups[i] ); + } + newContext = rsibling.test( selector ) && testContext( context.parentNode ) || context; + newSelector = groups.join(","); + } + + if ( newSelector ) { + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch(qsaError) { + } finally { + if ( !old ) { + context.removeAttribute("id"); + } } } } } - if ( !set ) { - set = typeof context.getElementsByTagName !== "undefined" ? - context.getElementsByTagName( "*" ) : - []; + return select( selector.replace( rtrim, "$1" ), context, results, seed ); +} + +/** + * Create key-value caches of limited size + * @returns {Function(string, Object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var keys = []; + + function cache( key, value ) { + if ( keys.push( key + " " ) > Expr.cacheLength ) { + delete cache[ keys.shift() ]; + } + return (cache[ key + " " ] = value); + } + return cache; +} + +/** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created div and expects a boolean result + */ +function assert( fn ) { + var div = document.createElement("div"); + + try { + return !!fn( div ); + } catch (e) { + return false; + } finally { + if ( div.parentNode ) { + div.parentNode.removeChild( div ); + } + div = null; + } +} + +/** + * Adds the same handler for all of the specified attrs + * @param {String} attrs Pipe-separated list of attributes + * @param {Function} handler The method that will be applied + */ +function addHandle( attrs, handler ) { + var arr = attrs.split("|"), + i = attrs.length; + + while ( i-- ) { + Expr.attrHandle[ arr[i] ] = handler; + } +} + +/** + * Checks document order of two siblings + * @param {Element} a + * @param {Element} b + * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b + */ +function siblingCheck( a, b ) { + var cur = b && a, + diff = cur && a.nodeType === 1 && b.nodeType === 1 && + ( ~b.sourceIndex || MAX_NEGATIVE ) - + ( ~a.sourceIndex || MAX_NEGATIVE ); + + if ( diff ) { + return diff; } - return { set: set, expr: expr }; + if ( cur ) { + while ( (cur = cur.nextSibling) ) { + if ( cur === b ) { + return -1; + } + } + } + + return a ? 1 : -1; +} + +/** + * Returns a function to use in pseudos for input types + * @param {String} type + */ +function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for buttons + * @param {String} type + */ +function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for positionals + * @param {Function} fn + */ +function createPositionalPseudo( fn ) { + return markFunction(function( argument ) { + argument = +argument; + return markFunction(function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + while ( i-- ) { + if ( seed[ (j = matchIndexes[i]) ] ) { + seed[j] = !(matches[j] = seed[j]); + } + } + }); + }); +} + +/** + * Checks a node for validity as a Sizzle context + * @param {Element|Object=} context + * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value + */ +function testContext( context ) { + return context && typeof context.getElementsByTagName !== strundefined && context; +} + +support = Sizzle.support = {}; + +/** + * Detects XML nodes + * @param {Element|Object} elem An element or a document + * @returns {Boolean} True iff elem is a non-HTML XML node + */ +isXML = Sizzle.isXML = function( elem ) { + var documentElement = elem && (elem.ownerDocument || elem).documentElement; + return documentElement ? documentElement.nodeName !== "HTML" : false; }; -Sizzle.filter = function( expr, set, inplace, not ) { - var match, anyFound, - old = expr, - result = [], - curLoop = set, - isXMLFilter = set && set[0] && Sizzle.isXML( set[0] ); +/** + * Sets document-related variables once based on the current document + * @param {Element|Object} [doc] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ +setDocument = Sizzle.setDocument = function( node ) { + var hasCompare, + doc = node ? node.ownerDocument || node : preferredDoc, + parent = doc.defaultView; - while ( expr && set.length ) { - for ( var type in Expr.filter ) { - if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) { - var found, item, - filter = Expr.filter[ type ], - left = match[1]; - - anyFound = false; - - match.splice(1,1); - - if ( left.substr( left.length - 1 ) === "\\" ) { - continue; - } - - if ( curLoop === result ) { - result = []; - } - - if ( Expr.preFilter[ type ] ) { - match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter ); - - if ( !match ) { - anyFound = found = true; - - } else if ( match === true ) { - continue; - } - } - - if ( match ) { - for ( var i = 0; (item = curLoop[i]) != null; i++ ) { - if ( item ) { - found = filter( item, match, i, curLoop ); - var pass = not ^ !!found; - - if ( inplace && found != null ) { - if ( pass ) { - anyFound = true; - - } else { - curLoop[i] = false; - } - - } else if ( pass ) { - result.push( item ); - anyFound = true; - } - } - } - } - - if ( found !== undefined ) { - if ( !inplace ) { - curLoop = result; - } - - expr = expr.replace( Expr.match[ type ], "" ); - - if ( !anyFound ) { - return []; - } - - break; - } - } - } - - if ( expr === old ) { - if ( anyFound == null ) { - Sizzle.error( expr ); - - } else { - break; - } - } - - old = expr; + if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; } - return curLoop; + document = doc; + docElem = doc.documentElement; + + documentIsHTML = !isXML( doc ); + + if ( parent && parent !== parent.top ) { + if ( parent.addEventListener ) { + parent.addEventListener( "unload", function() { + setDocument(); + }, false ); + } else if ( parent.attachEvent ) { + parent.attachEvent( "onunload", function() { + setDocument(); + }); + } + } + + /* Attributes + ---------------------------------------------------------------------- */ + + support.attributes = assert(function( div ) { + div.className = "i"; + return !div.getAttribute("className"); + }); + + /* getElement(s)By* + ---------------------------------------------------------------------- */ + + support.getElementsByTagName = assert(function( div ) { + div.appendChild( doc.createComment("") ); + return !div.getElementsByTagName("*").length; + }); + + support.getElementsByClassName = rnative.test( doc.getElementsByClassName ) && assert(function( div ) { + div.innerHTML = "
"; + + div.firstChild.className = "i"; + return div.getElementsByClassName("i").length === 2; + }); + + support.getById = assert(function( div ) { + docElem.appendChild( div ).id = expando; + return !doc.getElementsByName || !doc.getElementsByName( expando ).length; + }); + + if ( support.getById ) { + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== strundefined && documentIsHTML ) { + var m = context.getElementById( id ); + return m && m.parentNode ? [m] : []; + } + }; + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute("id") === attrId; + }; + }; + } else { + delete Expr.find["ID"]; + + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id"); + return node && node.value === attrId; + }; + }; + } + + Expr.find["TAG"] = support.getElementsByTagName ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== strundefined ) { + return context.getElementsByTagName( tag ); + } + } : + function( tag, context ) { + var elem, + tmp = [], + i = 0, + results = context.getElementsByTagName( tag ); + + if ( tag === "*" ) { + while ( (elem = results[i++]) ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }; + + Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { + if ( typeof context.getElementsByClassName !== strundefined && documentIsHTML ) { + return context.getElementsByClassName( className ); + } + }; + + /* QSA/matchesSelector + ---------------------------------------------------------------------- */ + + + rbuggyMatches = []; + + rbuggyQSA = []; + + if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) { + assert(function( div ) { + div.innerHTML = ""; + + if ( div.querySelectorAll("[t^='']").length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); + } + + if ( !div.querySelectorAll("[selected]").length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); + } + + if ( !div.querySelectorAll(":checked").length ) { + rbuggyQSA.push(":checked"); + } + }); + + assert(function( div ) { + var input = doc.createElement("input"); + input.setAttribute( "type", "hidden" ); + div.appendChild( input ).setAttribute( "name", "D" ); + + if ( div.querySelectorAll("[name=d]").length ) { + rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); + } + + if ( !div.querySelectorAll(":enabled").length ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + div.querySelectorAll("*,:x"); + rbuggyQSA.push(",.*:"); + }); + } + + if ( (support.matchesSelector = rnative.test( (matches = docElem.webkitMatchesSelector || + docElem.mozMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector) )) ) { + + assert(function( div ) { + support.disconnectedMatch = matches.call( div, "div" ); + + matches.call( div, "[s!='']:x" ); + rbuggyMatches.push( "!=", pseudos ); + }); + } + + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); + + /* Contains + ---------------------------------------------------------------------- */ + hasCompare = rnative.test( docElem.compareDocumentPosition ); + + contains = hasCompare || rnative.test( docElem.contains ) ? + function( a, b ) { + var adown = a.nodeType === 9 ? a.documentElement : a, + bup = b && b.parentNode; + return a === bup || !!( bup && bup.nodeType === 1 && ( + adown.contains ? + adown.contains( bup ) : + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + )); + } : + function( a, b ) { + if ( b ) { + while ( (b = b.parentNode) ) { + if ( b === a ) { + return true; + } + } + } + return false; + }; + + /* Sorting + ---------------------------------------------------------------------- */ + + sortOrder = hasCompare ? + function( a, b ) { + + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; + if ( compare ) { + return compare; + } + + compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? + a.compareDocumentPosition( b ) : + + 1; + + if ( compare & 1 || + (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { + + if ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { + return -1; + } + if ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { + return 1; + } + + return sortInput ? + ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) : + 0; + } + + return compare & 4 ? -1 : 1; + } : + function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + var cur, + i = 0, + aup = a.parentNode, + bup = b.parentNode, + ap = [ a ], + bp = [ b ]; + + if ( !aup || !bup ) { + return a === doc ? -1 : + b === doc ? 1 : + aup ? -1 : + bup ? 1 : + sortInput ? + ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) : + 0; + + } else if ( aup === bup ) { + return siblingCheck( a, b ); + } + + cur = a; + while ( (cur = cur.parentNode) ) { + ap.unshift( cur ); + } + cur = b; + while ( (cur = cur.parentNode) ) { + bp.unshift( cur ); + } + + while ( ap[i] === bp[i] ) { + i++; + } + + return i ? + siblingCheck( ap[i], bp[i] ) : + + ap[i] === preferredDoc ? -1 : + bp[i] === preferredDoc ? 1 : + 0; + }; + + return doc; +}; + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + expr = expr.replace( rattributeQuotes, "='$1']" ); + + if ( support.matchesSelector && documentIsHTML && + ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && + ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { + + try { + var ret = matches.call( elem, expr ); + + if ( ret || support.disconnectedMatch || + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch(e) {} + } + + return Sizzle( expr, document, null, [elem] ).length > 0; +}; + +Sizzle.contains = function( context, elem ) { + if ( ( context.ownerDocument || context ) !== document ) { + setDocument( context ); + } + return contains( context, elem ); +}; + +Sizzle.attr = function( elem, name ) { + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + var fn = Expr.attrHandle[ name.toLowerCase() ], + val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? + fn( elem, name, !documentIsHTML ) : + undefined; + + return val !== undefined ? + val : + support.attributes || !documentIsHTML ? + elem.getAttribute( name ) : + (val = elem.getAttributeNode(name)) && val.specified ? + val.value : + null; }; Sizzle.error = function( msg ) { - throw "Syntax error, unrecognized expression: " + msg; + throw new Error( "Syntax error, unrecognized expression: " + msg ); }; -var Expr = Sizzle.selectors = { - order: [ "ID", "NAME", "TAG" ], +/** + * Document sorting and removing duplicates + * @param {ArrayLike} results + */ +Sizzle.uniqueSort = function( results ) { + var elem, + duplicates = [], + j = 0, + i = 0; - match: { - ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, - CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, - NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/, - ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/, - TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/, - CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/, - POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/, - PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/ - }, + hasDuplicate = !support.detectDuplicates; + sortInput = !support.sortStable && results.slice( 0 ); + results.sort( sortOrder ); - leftMatch: {}, - - attrMap: { - "class": "className", - "for": "htmlFor" - }, - - attrHandle: { - href: function( elem ) { - return elem.getAttribute( "href" ); - }, - type: function( elem ) { - return elem.getAttribute( "type" ); + if ( hasDuplicate ) { + while ( (elem = results[i++]) ) { + if ( elem === results[ i ] ) { + j = duplicates.push( i ); + } } - }, + while ( j-- ) { + results.splice( duplicates[ j ], 1 ); + } + } + + sortInput = null; + + return results; +}; + +/** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +getText = Sizzle.getText = function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( !nodeType ) { + while ( (node = elem[i++]) ) { + ret += getText( node ); + } + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + if ( typeof elem.textContent === "string" ) { + return elem.textContent; + } else { + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + + return ret; +}; + +Expr = Sizzle.selectors = { + + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + attrHandle: {}, + + find: {}, relative: { - "+": function(checkSet, part){ - var isPartStr = typeof part === "string", - isTag = isPartStr && !rNonWord.test( part ), - isPartStrNotTag = isPartStr && !isTag; - - if ( isTag ) { - part = part.toLowerCase(); - } - - for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) { - if ( (elem = checkSet[i]) ) { - while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {} - - checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ? - elem || false : - elem === part; - } - } - - if ( isPartStrNotTag ) { - Sizzle.filter( part, checkSet, true ); - } - }, - - ">": function( checkSet, part ) { - var elem, - isPartStr = typeof part === "string", - i = 0, - l = checkSet.length; - - if ( isPartStr && !rNonWord.test( part ) ) { - part = part.toLowerCase(); - - for ( ; i < l; i++ ) { - elem = checkSet[i]; - - if ( elem ) { - var parent = elem.parentNode; - checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false; - } - } - - } else { - for ( ; i < l; i++ ) { - elem = checkSet[i]; - - if ( elem ) { - checkSet[i] = isPartStr ? - elem.parentNode : - elem.parentNode === part; - } - } - - if ( isPartStr ) { - Sizzle.filter( part, checkSet, true ); - } - } - }, - - "": function(checkSet, part, isXML){ - var nodeCheck, - doneName = done++, - checkFn = dirCheck; - - if ( typeof part === "string" && !rNonWord.test( part ) ) { - part = part.toLowerCase(); - nodeCheck = part; - checkFn = dirNodeCheck; - } - - checkFn( "parentNode", part, doneName, checkSet, nodeCheck, isXML ); - }, - - "~": function( checkSet, part, isXML ) { - var nodeCheck, - doneName = done++, - checkFn = dirCheck; - - if ( typeof part === "string" && !rNonWord.test( part ) ) { - part = part.toLowerCase(); - nodeCheck = part; - checkFn = dirNodeCheck; - } - - checkFn( "previousSibling", part, doneName, checkSet, nodeCheck, isXML ); - } + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } }, - find: { - ID: function( match, context, isXML ) { - if ( typeof context.getElementById !== "undefined" && !isXML ) { - var m = context.getElementById(match[1]); - return m && m.parentNode ? [m] : []; - } - }, - - NAME: function( match, context ) { - if ( typeof context.getElementsByName !== "undefined" ) { - var ret = [], - results = context.getElementsByName( match[1] ); - - for ( var i = 0, l = results.length; i < l; i++ ) { - if ( results[i].getAttribute("name") === match[1] ) { - ret.push( results[i] ); - } - } - - return ret.length === 0 ? null : ret; - } - }, - - TAG: function( match, context ) { - if ( typeof context.getElementsByTagName !== "undefined" ) { - return context.getElementsByTagName( match[1] ); - } - } - }, preFilter: { - CLASS: function( match, curLoop, inplace, result, not, isXML ) { - match = " " + match[1].replace( rBackslash, "" ) + " "; + "ATTR": function( match ) { + match[1] = match[1].replace( runescape, funescape ); - if ( isXML ) { - return match; + match[3] = ( match[4] || match[5] || "" ).replace( runescape, funescape ); + + if ( match[2] === "~=" ) { + match[3] = " " + match[3] + " "; } - for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) { - if ( elem ) { - if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n\r]/g, " ").indexOf(match) >= 0) ) { - if ( !inplace ) { - result.push( elem ); - } - - } else if ( inplace ) { - curLoop[i] = false; - } - } - } - - return false; + return match.slice( 0, 4 ); }, - ID: function( match ) { - return match[1].replace( rBackslash, "" ); - }, + "CHILD": function( match ) { + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 what (child|of-type) + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 4 xn-component of xn+y argument ([+-]?\d*n|) + 5 sign of xn-component + 6 x of xn-component + 7 sign of y-component + 8 y of y-component + */ + match[1] = match[1].toLowerCase(); - TAG: function( match, curLoop ) { - return match[1].replace( rBackslash, "" ).toLowerCase(); - }, - - CHILD: function( match ) { - if ( match[1] === "nth" ) { - if ( !match[2] ) { + if ( match[1].slice( 0, 3 ) === "nth" ) { + if ( !match[3] ) { Sizzle.error( match[0] ); } - match[2] = match[2].replace(/^\+|\s*/g, ''); + match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); + match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); - var test = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec( - match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" || - !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]); - - match[2] = (test[1] + (test[2] || 1)) - 0; - match[3] = test[3] - 0; - } - else if ( match[2] ) { + } else if ( match[3] ) { Sizzle.error( match[0] ); } - match[0] = done++; - return match; }, - ATTR: function( match, curLoop, inplace, result, not, isXML ) { - var name = match[1] = match[1].replace( rBackslash, "" ); + "PSEUDO": function( match ) { + var excess, + unquoted = !match[5] && match[2]; - if ( !isXML && Expr.attrMap[name] ) { - match[1] = Expr.attrMap[name]; + if ( matchExpr["CHILD"].test( match[0] ) ) { + return null; } - match[4] = ( match[4] || match[5] || "" ).replace( rBackslash, "" ); + if ( match[3] && match[4] !== undefined ) { + match[2] = match[4]; - if ( match[2] === "~=" ) { - match[4] = " " + match[4] + " "; + } else if ( unquoted && rpseudo.test( unquoted ) && + (excess = tokenize( unquoted, true )) && + (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { + + match[0] = match[0].slice( 0, excess ); + match[2] = unquoted.slice( 0, excess ); } - return match; - }, - - PSEUDO: function( match, curLoop, inplace, result, not ) { - if ( match[1] === "not" ) { - if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) { - match[3] = Sizzle(match[3], null, null, curLoop); - - } else { - var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not); - - if ( !inplace ) { - result.push.apply( result, ret ); - } - - return false; - } - - } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) { - return true; - } - - return match; - }, - - POS: function( match ) { - match.unshift( true ); - - return match; + return match.slice( 0, 3 ); } }, - filters: { - enabled: function( elem ) { - return elem.disabled === false && elem.type !== "hidden"; + filter: { + + "TAG": function( nodeNameSelector ) { + var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); + return nodeNameSelector === "*" ? + function() { return true; } : + function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; }, - disabled: function( elem ) { + "CLASS": function( className ) { + var pattern = classCache[ className + " " ]; + + return pattern || + (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && + classCache( className, function( elem ) { + return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== strundefined && elem.getAttribute("class") || "" ); + }); + }, + + "ATTR": function( name, operator, check ) { + return function( elem ) { + var result = Sizzle.attr( elem, name ); + + if ( result == null ) { + return operator === "!="; + } + if ( !operator ) { + return true; + } + + result += ""; + + return operator === "=" ? result === check : + operator === "!=" ? result !== check : + operator === "^=" ? check && result.indexOf( check ) === 0 : + operator === "*=" ? check && result.indexOf( check ) > -1 : + operator === "$=" ? check && result.slice( -check.length ) === check : + operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 : + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : + false; + }; + }, + + "CHILD": function( type, what, argument, first, last ) { + var simple = type.slice( 0, 3 ) !== "nth", + forward = type.slice( -4 ) !== "last", + ofType = what === "of-type"; + + return first === 1 && last === 0 ? + + function( elem ) { + return !!elem.parentNode; + } : + + function( elem, context, xml ) { + var cache, outerCache, node, diff, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType; + + if ( parent ) { + + if ( simple ) { + while ( dir ) { + node = elem; + while ( (node = node[ dir ]) ) { + if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) { + return false; + } + } + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + + start = [ forward ? parent.firstChild : parent.lastChild ]; + + if ( forward && useCache ) { + outerCache = parent[ expando ] || (parent[ expando ] = {}); + cache = outerCache[ type ] || []; + nodeIndex = cache[0] === dirruns && cache[1]; + diff = cache[0] === dirruns && cache[2]; + node = nodeIndex && parent.childNodes[ nodeIndex ]; + + while ( (node = ++nodeIndex && node && node[ dir ] || + + (diff = nodeIndex = 0) || start.pop()) ) { + + if ( node.nodeType === 1 && ++diff && node === elem ) { + outerCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) { + diff = cache[1]; + + } else { + while ( (node = ++nodeIndex && node && node[ dir ] || + (diff = nodeIndex = 0) || start.pop()) ) { + + if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) { + if ( useCache ) { + (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ]; + } + + if ( node === elem ) { + break; + } + } + } + } + + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + } + }; + }, + + "PSEUDO": function( pseudo, argument ) { + var args, + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || + Sizzle.error( "unsupported pseudo: " + pseudo ); + + if ( fn[ expando ] ) { + return fn( argument ); + } + + if ( fn.length > 1 ) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? + markFunction(function( seed, matches ) { + var idx, + matched = fn( seed, argument ), + i = matched.length; + while ( i-- ) { + idx = indexOf.call( seed, matched[i] ); + seed[ idx ] = !( matches[ idx ] = matched[i] ); + } + }) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + pseudos: { + "not": markFunction(function( selector ) { + var input = [], + results = [], + matcher = compile( selector.replace( rtrim, "$1" ) ); + + return matcher[ expando ] ? + markFunction(function( seed, matches, context, xml ) { + var elem, + unmatched = matcher( seed, null, xml, [] ), + i = seed.length; + + while ( i-- ) { + if ( (elem = unmatched[i]) ) { + seed[i] = !(matches[i] = elem); + } + } + }) : + function( elem, context, xml ) { + input[0] = elem; + matcher( input, null, xml, results ); + return !results.pop(); + }; + }), + + "has": markFunction(function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + }), + + "contains": markFunction(function( text ) { + return function( elem ) { + return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; + }; + }), + + "lang": markFunction( function( lang ) { + if ( !ridentifier.test(lang || "") ) { + Sizzle.error( "unsupported lang: " + lang ); + } + lang = lang.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + var elemLang; + do { + if ( (elemLang = documentIsHTML ? + elem.lang : + elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { + + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; + } + } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); + return false; + }; + }), + + "target": function( elem ) { + var hash = window.location && window.location.hash; + return hash && hash.slice( 1 ) === elem.id; + }, + + "root": function( elem ) { + return elem === docElem; + }, + + "focus": function( elem ) { + return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); + }, + + "enabled": function( elem ) { + return elem.disabled === false; + }, + + "disabled": function( elem ) { return elem.disabled === true; }, - checked: function( elem ) { - return elem.checked === true; + "checked": function( elem ) { + var nodeName = elem.nodeName.toLowerCase(); + return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); }, - selected: function( elem ) { + "selected": function( elem ) { if ( elem.parentNode ) { elem.parentNode.selectedIndex; } @@ -5045,746 +5606,628 @@ var Expr = Sizzle.selectors = { return elem.selected === true; }, - parent: function( elem ) { - return !!elem.firstChild; - }, - - empty: function( elem ) { - return !elem.firstChild; - }, - - has: function( elem, i, match ) { - return !!Sizzle( match[3], elem ).length; - }, - - header: function( elem ) { - return (/h\d/i).test( elem.nodeName ); - }, - - text: function( elem ) { - var attr = elem.getAttribute( "type" ), type = elem.type; - return elem.nodeName.toLowerCase() === "input" && "text" === type && ( attr === type || attr === null ); - }, - - radio: function( elem ) { - return elem.nodeName.toLowerCase() === "input" && "radio" === elem.type; - }, - - checkbox: function( elem ) { - return elem.nodeName.toLowerCase() === "input" && "checkbox" === elem.type; - }, - - file: function( elem ) { - return elem.nodeName.toLowerCase() === "input" && "file" === elem.type; - }, - - password: function( elem ) { - return elem.nodeName.toLowerCase() === "input" && "password" === elem.type; - }, - - submit: function( elem ) { - var name = elem.nodeName.toLowerCase(); - return (name === "input" || name === "button") && "submit" === elem.type; - }, - - image: function( elem ) { - return elem.nodeName.toLowerCase() === "input" && "image" === elem.type; - }, - - reset: function( elem ) { - var name = elem.nodeName.toLowerCase(); - return (name === "input" || name === "button") && "reset" === elem.type; - }, - - button: function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && "button" === elem.type || name === "button"; - }, - - input: function( elem ) { - return (/input|select|textarea|button/i).test( elem.nodeName ); - }, - - focus: function( elem ) { - return elem === elem.ownerDocument.activeElement; - } - }, - setFilters: { - first: function( elem, i ) { - return i === 0; - }, - - last: function( elem, i, match, array ) { - return i === array.length - 1; - }, - - even: function( elem, i ) { - return i % 2 === 0; - }, - - odd: function( elem, i ) { - return i % 2 === 1; - }, - - lt: function( elem, i, match ) { - return i < match[3] - 0; - }, - - gt: function( elem, i, match ) { - return i > match[3] - 0; - }, - - nth: function( elem, i, match ) { - return match[3] - 0 === i; - }, - - eq: function( elem, i, match ) { - return match[3] - 0 === i; - } - }, - filter: { - PSEUDO: function( elem, match, i, array ) { - var name = match[1], - filter = Expr.filters[ name ]; - - if ( filter ) { - return filter( elem, i, match, array ); - - } else if ( name === "contains" ) { - return (elem.textContent || elem.innerText || Sizzle.getText([ elem ]) || "").indexOf(match[3]) >= 0; - - } else if ( name === "not" ) { - var not = match[3]; - - for ( var j = 0, l = not.length; j < l; j++ ) { - if ( not[j] === elem ) { - return false; - } + "empty": function( elem ) { + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeType < 6 ) { + return false; } - - return true; - - } else { - Sizzle.error( name ); } + return true; }, - CHILD: function( elem, match ) { - var type = match[1], - node = elem; + "parent": function( elem ) { + return !Expr.pseudos["empty"]( elem ); + }, - switch ( type ) { - case "only": - case "first": - while ( (node = node.previousSibling) ) { - if ( node.nodeType === 1 ) { - return false; - } - } + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, - if ( type === "first" ) { - return true; - } + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, - node = elem; + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, - case "last": - while ( (node = node.nextSibling) ) { - if ( node.nodeType === 1 ) { - return false; - } - } + "text": function( elem ) { + var attr; + return elem.nodeName.toLowerCase() === "input" && + elem.type === "text" && - return true; + ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); + }, - case "nth": - var first = match[2], - last = match[3]; + "first": createPositionalPseudo(function() { + return [ 0 ]; + }), - if ( first === 1 && last === 0 ) { - return true; - } + "last": createPositionalPseudo(function( matchIndexes, length ) { + return [ length - 1 ]; + }), - var doneName = match[0], - parent = elem.parentNode; + "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + }), - if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) { - var count = 0; - - for ( node = parent.firstChild; node; node = node.nextSibling ) { - if ( node.nodeType === 1 ) { - node.nodeIndex = ++count; - } - } - - parent.sizcache = doneName; - } - - var diff = elem.nodeIndex - last; - - if ( first === 0 ) { - return diff === 0; - - } else { - return ( diff % first === 0 && diff / first >= 0 ); - } + "even": createPositionalPseudo(function( matchIndexes, length ) { + var i = 0; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); } - }, + return matchIndexes; + }), - ID: function( elem, match ) { - return elem.nodeType === 1 && elem.getAttribute("id") === match; - }, - - TAG: function( elem, match ) { - return (match === "*" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match; - }, - - CLASS: function( elem, match ) { - return (" " + (elem.className || elem.getAttribute("class")) + " ") - .indexOf( match ) > -1; - }, - - ATTR: function( elem, match ) { - var name = match[1], - result = Expr.attrHandle[ name ] ? - Expr.attrHandle[ name ]( elem ) : - elem[ name ] != null ? - elem[ name ] : - elem.getAttribute( name ), - value = result + "", - type = match[2], - check = match[4]; - - return result == null ? - type === "!=" : - type === "=" ? - value === check : - type === "*=" ? - value.indexOf(check) >= 0 : - type === "~=" ? - (" " + value + " ").indexOf(check) >= 0 : - !check ? - value && result !== false : - type === "!=" ? - value !== check : - type === "^=" ? - value.indexOf(check) === 0 : - type === "$=" ? - value.substr(value.length - check.length) === check : - type === "|=" ? - value === check || value.substr(0, check.length + 1) === check + "-" : - false; - }, - - POS: function( elem, match, i, array ) { - var name = match[2], - filter = Expr.setFilters[ name ]; - - if ( filter ) { - return filter( elem, i, match, array ); + "odd": createPositionalPseudo(function( matchIndexes, length ) { + var i = 1; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); } - } + return matchIndexes; + }), + + "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }) } }; -var origPOS = Expr.match.POS, - fescape = function(all, num){ - return "\\" + (num - 0 + 1); - }; +Expr.pseudos["nth"] = Expr.pseudos["eq"]; -for ( var type in Expr.match ) { - Expr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) ); - Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, fescape) ); +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { + Expr.pseudos[ i ] = createInputPseudo( i ); +} +for ( i in { submit: true, reset: true } ) { + Expr.pseudos[ i ] = createButtonPseudo( i ); } -var makeArray = function( array, results ) { - array = Array.prototype.slice.call( array, 0 ); +function setFilters() {} +setFilters.prototype = Expr.filters = Expr.pseudos; +Expr.setFilters = new setFilters(); - if ( results ) { - results.push.apply( results, array ); - return results; +function tokenize( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ selector + " " ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); } - return array; -}; + soFar = selector; + groups = []; + preFilters = Expr.preFilter; -try { - Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType; + while ( soFar ) { -} catch( e ) { - makeArray = function( array, results ) { - var i = 0, - ret = results || []; + if ( !matched || (match = rcomma.exec( soFar )) ) { + if ( match ) { + soFar = soFar.slice( match[0].length ) || soFar; + } + groups.push( (tokens = []) ); + } - if ( toString.call(array) === "[object Array]" ) { - Array.prototype.push.apply( ret, array ); + matched = false; + + if ( (match = rcombinators.exec( soFar )) ) { + matched = match.shift(); + tokens.push({ + value: matched, + type: match[0].replace( rtrim, " " ) + }); + soFar = soFar.slice( matched.length ); + } + + for ( type in Expr.filter ) { + if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || + (match = preFilters[ type ]( match ))) ) { + matched = match.shift(); + tokens.push({ + value: matched, + type: type, + matches: match + }); + soFar = soFar.slice( matched.length ); + } + } + + if ( !matched ) { + break; + } + } + + return parseOnly ? + soFar.length : + soFar ? + Sizzle.error( selector ) : + tokenCache( selector, groups ).slice( 0 ); +} + +function toSelector( tokens ) { + var i = 0, + len = tokens.length, + selector = ""; + for ( ; i < len; i++ ) { + selector += tokens[i].value; + } + return selector; +} + +function addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + checkNonElements = base && dir === "parentNode", + doneName = done++; + + return combinator.first ? + function( elem, context, xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + return matcher( elem, context, xml ); + } + } + } : + + function( elem, context, xml ) { + var oldCache, outerCache, + newCache = [ dirruns, doneName ]; + + if ( xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + if ( matcher( elem, context, xml ) ) { + return true; + } + } + } + } else { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + outerCache = elem[ expando ] || (elem[ expando ] = {}); + if ( (oldCache = outerCache[ dir ]) && + oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { + + return (newCache[ 2 ] = oldCache[ 2 ]); + } else { + outerCache[ dir ] = newCache; + + if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { + return true; + } + } + } + } + } + }; +} + +function elementMatcher( matchers ) { + return matchers.length > 1 ? + function( elem, context, xml ) { + var i = matchers.length; + while ( i-- ) { + if ( !matchers[i]( elem, context, xml ) ) { + return false; + } + } + return true; + } : + matchers[0]; +} + +function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[i], results ); + } + return results; +} + +function condense( unmatched, map, filter, context, xml ) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + + for ( ; i < len; i++ ) { + if ( (elem = unmatched[i]) ) { + if ( !filter || filter( elem, context, xml ) ) { + newUnmatched.push( elem ); + if ( mapped ) { + map.push( i ); + } + } + } + } + + return newUnmatched; +} + +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { + if ( postFilter && !postFilter[ expando ] ) { + postFilter = setMatcher( postFilter ); + } + if ( postFinder && !postFinder[ expando ] ) { + postFinder = setMatcher( postFinder, postSelector ); + } + return markFunction(function( seed, results, context, xml ) { + var temp, i, elem, + preMap = [], + postMap = [], + preexisting = results.length, + + elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), + + matcherIn = preFilter && ( seed || !selector ) ? + condense( elems, preMap, preFilter, context, xml ) : + elems, + + matcherOut = matcher ? + postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + [] : + + results : + matcherIn; + + if ( matcher ) { + matcher( matcherIn, matcherOut, context, xml ); + } + + if ( postFilter ) { + temp = condense( matcherOut, postMap ); + postFilter( temp, [], context, xml ); + + i = temp.length; + while ( i-- ) { + if ( (elem = temp[i]) ) { + matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); + } + } + } + + if ( seed ) { + if ( postFinder || preFilter ) { + if ( postFinder ) { + temp = []; + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) ) { + temp.push( (matcherIn[i] = elem) ); + } + } + postFinder( null, (matcherOut = []), temp, xml ); + } + + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) && + (temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) { + + seed[temp] = !(results[temp] = elem); + } + } + } } else { - if ( typeof array.length === "number" ) { - for ( var l = array.length; i < l; i++ ) { - ret.push( array[i] ); - } - + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); } else { - for ( ; array[i]; i++ ) { - ret.push( array[i] ); - } + push.apply( results, matcherOut ); } } - - return ret; - }; + }); } -var sortOrder, siblingCheck; - -if ( document.documentElement.compareDocumentPosition ) { - sortOrder = function( a, b ) { - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) { - return a.compareDocumentPosition ? -1 : 1; - } - - return a.compareDocumentPosition(b) & 4 ? -1 : 1; - }; - -} else { - sortOrder = function( a, b ) { - if ( a === b ) { - hasDuplicate = true; - return 0; - - } else if ( a.sourceIndex && b.sourceIndex ) { - return a.sourceIndex - b.sourceIndex; - } - - var al, bl, - ap = [], - bp = [], - aup = a.parentNode, - bup = b.parentNode, - cur = aup; - - if ( aup === bup ) { - return siblingCheck( a, b ); - - } else if ( !aup ) { - return -1; - - } else if ( !bup ) { - return 1; - } - - while ( cur ) { - ap.unshift( cur ); - cur = cur.parentNode; - } - - cur = bup; - - while ( cur ) { - bp.unshift( cur ); - cur = cur.parentNode; - } - - al = ap.length; - bl = bp.length; - - for ( var i = 0; i < al && i < bl; i++ ) { - if ( ap[i] !== bp[i] ) { - return siblingCheck( ap[i], bp[i] ); - } - } - - return i === al ? - siblingCheck( a, bp[i], -1 ) : - siblingCheck( ap[i], b, 1 ); - }; - - siblingCheck = function( a, b, ret ) { - if ( a === b ) { - return ret; - } - - var cur = a.nextSibling; - - while ( cur ) { - if ( cur === b ) { - return -1; - } - - cur = cur.nextSibling; - } - - return 1; - }; -} - -Sizzle.getText = function( elems ) { - var ret = "", elem; - - for ( var i = 0; elems[i]; i++ ) { - elem = elems[i]; - - if ( elem.nodeType === 3 || elem.nodeType === 4 ) { - ret += elem.nodeValue; - - } else if ( elem.nodeType !== 8 ) { - ret += Sizzle.getText( elem.childNodes ); - } - } - - return ret; -}; - -(function(){ - var form = document.createElement("div"), - id = "script" + (new Date()).getTime(), - root = document.documentElement; - - form.innerHTML = ""; - - root.insertBefore( form, root.firstChild ); - - if ( document.getElementById( id ) ) { - Expr.find.ID = function( match, context, isXML ) { - if ( typeof context.getElementById !== "undefined" && !isXML ) { - var m = context.getElementById(match[1]); - - return m ? - m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? - [m] : - undefined : - []; - } - }; - - Expr.filter.ID = function( elem, match ) { - var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); - - return elem.nodeType === 1 && node && node.nodeValue === match; - }; - } - - root.removeChild( form ); - - root = form = null; -})(); - -(function(){ - - var div = document.createElement("div"); - div.appendChild( document.createComment("") ); - - if ( div.getElementsByTagName("*").length > 0 ) { - Expr.find.TAG = function( match, context ) { - var results = context.getElementsByTagName( match[1] ); - - if ( match[1] === "*" ) { - var tmp = []; - - for ( var i = 0; results[i]; i++ ) { - if ( results[i].nodeType === 1 ) { - tmp.push( results[i] ); - } - } - - results = tmp; - } - - return results; - }; - } - - div.innerHTML = ""; - - if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" && - div.firstChild.getAttribute("href") !== "#" ) { - - Expr.attrHandle.href = function( elem ) { - return elem.getAttribute( "href", 2 ); - }; - } - - div = null; -})(); - -if ( document.querySelectorAll ) { - (function(){ - var oldSizzle = Sizzle, - div = document.createElement("div"), - id = "__sizzle__"; - - div.innerHTML = "

"; - - if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) { - return; - } - - Sizzle = function( query, context, extra, seed ) { - context = context || document; - - if ( !seed && !Sizzle.isXML(context) ) { - var match = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec( query ); - - if ( match && (context.nodeType === 1 || context.nodeType === 9) ) { - if ( match[1] ) { - return makeArray( context.getElementsByTagName( query ), extra ); - - } else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) { - return makeArray( context.getElementsByClassName( match[2] ), extra ); - } - } - - if ( context.nodeType === 9 ) { - if ( query === "body" && context.body ) { - return makeArray( [ context.body ], extra ); - - } else if ( match && match[3] ) { - var elem = context.getElementById( match[3] ); - - if ( elem && elem.parentNode ) { - if ( elem.id === match[3] ) { - return makeArray( [ elem ], extra ); - } - - } else { - return makeArray( [], extra ); - } - } - - try { - return makeArray( context.querySelectorAll(query), extra ); - } catch(qsaError) {} - - } else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { - var oldContext = context, - old = context.getAttribute( "id" ), - nid = old || id, - hasParent = context.parentNode, - relativeHierarchySelector = /^\s*[+~]/.test( query ); - - if ( !old ) { - context.setAttribute( "id", nid ); - } else { - nid = nid.replace( /'/g, "\\$&" ); - } - if ( relativeHierarchySelector && hasParent ) { - context = context.parentNode; - } - - try { - if ( !relativeHierarchySelector || hasParent ) { - return makeArray( context.querySelectorAll( "[id='" + nid + "'] " + query ), extra ); - } - - } catch(pseudoError) { - } finally { - if ( !old ) { - oldContext.removeAttribute( "id" ); - } - } - } - } - - return oldSizzle(query, context, extra, seed); - }; - - for ( var prop in oldSizzle ) { - Sizzle[ prop ] = oldSizzle[ prop ]; - } - - div = null; - })(); -} - -(function(){ - var html = document.documentElement, - matches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector; - - if ( matches ) { - var disconnectedMatch = !matches.call( document.createElement( "div" ), "div" ), - pseudoWorks = false; - - try { - matches.call( document.documentElement, "[test!='']:sizzle" ); - - } catch( pseudoError ) { - pseudoWorks = true; - } - - Sizzle.matchesSelector = function( node, expr ) { - expr = expr.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']"); - - if ( !Sizzle.isXML( node ) ) { - try { - if ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) { - var ret = matches.call( node, expr ); - - if ( ret || !disconnectedMatch || - node.document && node.document.nodeType !== 11 ) { - return ret; - } - } - } catch(e) {} - } - - return Sizzle(expr, null, null, [node]).length > 0; - }; - } -})(); - -(function(){ - var div = document.createElement("div"); - - div.innerHTML = "
"; - - if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) { - return; - } - - div.lastChild.className = "e"; - - if ( div.getElementsByClassName("e").length === 1 ) { - return; - } - - Expr.order.splice(1, 0, "CLASS"); - Expr.find.CLASS = function( match, context, isXML ) { - if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) { - return context.getElementsByClassName(match[1]); - } - }; - - div = null; -})(); - -function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - - if ( elem ) { - var match = false; - - elem = elem[dir]; - - while ( elem ) { - if ( elem.sizcache === doneName ) { - match = checkSet[elem.sizset]; - break; - } - - if ( elem.nodeType === 1 && !isXML ){ - elem.sizcache = doneName; - elem.sizset = i; - } - - if ( elem.nodeName.toLowerCase() === cur ) { - match = elem; - break; - } - - elem = elem[dir]; - } - - checkSet[i] = match; - } - } -} - -function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - - if ( elem ) { - var match = false; - - elem = elem[dir]; - - while ( elem ) { - if ( elem.sizcache === doneName ) { - match = checkSet[elem.sizset]; - break; - } - - if ( elem.nodeType === 1 ) { - if ( !isXML ) { - elem.sizcache = doneName; - elem.sizset = i; - } - - if ( typeof cur !== "string" ) { - if ( elem === cur ) { - match = true; - break; - } - - } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) { - match = elem; +function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[0].type ], + implicitRelative = leadingRelative || Expr.relative[" "], + i = leadingRelative ? 1 : 0, + + matchContext = addCombinator( function( elem ) { + return elem === checkContext; + }, implicitRelative, true ), + matchAnyContext = addCombinator( function( elem ) { + return indexOf.call( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + return ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + (checkContext = context).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + } ]; + + for ( ; i < len; i++ ) { + if ( (matcher = Expr.relative[ tokens[i].type ]) ) { + matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; + } else { + matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); + + if ( matcher[ expando ] ) { + j = ++i; + for ( ; j < len; j++ ) { + if ( Expr.relative[ tokens[j].type ] ) { break; } } - - elem = elem[dir]; + return setMatcher( + i > 1 && elementMatcher( matchers ), + i > 1 && toSelector( + tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) + ).replace( rtrim, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), + j < len && toSelector( tokens ) + ); } - - checkSet[i] = match; + matchers.push( matcher ); } } + + return elementMatcher( matchers ); } -if ( document.documentElement.contains ) { - Sizzle.contains = function( a, b ) { - return a !== b && (a.contains ? a.contains(b) : true); - }; +function matcherFromGroupMatchers( elementMatchers, setMatchers ) { + var bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, outermost ) { + var elem, j, matcher, + matchedCount = 0, + i = "0", + unmatched = seed && [], + setMatched = [], + contextBackup = outermostContext, + elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), + dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), + len = elems.length; -} else if ( document.documentElement.compareDocumentPosition ) { - Sizzle.contains = function( a, b ) { - return !!(a.compareDocumentPosition(b) & 16); - }; + if ( outermost ) { + outermostContext = context !== document && context; + } + for ( ; i !== len && (elem = elems[i]) != null; i++ ) { + if ( byElement && elem ) { + j = 0; + while ( (matcher = elementMatchers[j++]) ) { + if ( matcher( elem, context, xml ) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + } + } + + if ( bySet ) { + if ( (elem = !matcher && elem) ) { + matchedCount--; + } + + if ( seed ) { + unmatched.push( elem ); + } + } + } + + matchedCount += i; + if ( bySet && i !== matchedCount ) { + j = 0; + while ( (matcher = setMatchers[j++]) ) { + matcher( unmatched, setMatched, context, xml ); + } + + if ( seed ) { + if ( matchedCount > 0 ) { + while ( i-- ) { + if ( !(unmatched[i] || setMatched[i]) ) { + setMatched[i] = pop.call( results ); + } + } + } + + setMatched = condense( setMatched ); + } + + push.apply( results, setMatched ); + + if ( outermost && !seed && setMatched.length > 0 && + ( matchedCount + setMatchers.length ) > 1 ) { + + Sizzle.uniqueSort( results ); + } + } + + if ( outermost ) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ selector + " " ]; + + if ( !cached ) { + if ( !match ) { + match = tokenize( selector ); + } + i = match.length; + while ( i-- ) { + cached = matcherFromTokens( match[i] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); + + cached.selector = selector; + } + return cached; +}; + +/** + * A low-level selection function that works with Sizzle's compiled + * selector functions + * @param {String|Function} selector A selector or a pre-compiled + * selector function built with Sizzle.compile + * @param {Element} context + * @param {Array} [results] + * @param {Array} [seed] A set of elements to match against + */ +select = Sizzle.select = function( selector, context, results, seed ) { + var i, tokens, token, type, find, + compiled = typeof selector === "function" && selector, + match = !seed && tokenize( (selector = compiled.selector || selector) ); + + results = results || []; + + if ( match.length === 1 ) { + + tokens = match[0] = match[0].slice( 0 ); + if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && + support.getById && context.nodeType === 9 && documentIsHTML && + Expr.relative[ tokens[1].type ] ) { + + context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; + if ( !context ) { + return results; + + } else if ( compiled ) { + context = context.parentNode; + } + + selector = selector.slice( tokens.shift().value.length ); + } + + i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; + while ( i-- ) { + token = tokens[i]; + + if ( Expr.relative[ (type = token.type) ] ) { + break; + } + if ( (find = Expr.find[ type ]) ) { + if ( (seed = find( + token.matches[0].replace( runescape, funescape ), + rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context + )) ) { + + tokens.splice( i, 1 ); + selector = seed.length && toSelector( tokens ); + if ( !selector ) { + push.apply( results, seed ); + return results; + } + + break; + } + } + } + } + + ( compiled || compile( selector, match ) )( + seed, + context, + !documentIsHTML, + results, + rsibling.test( selector ) && testContext( context.parentNode ) || context + ); + return results; +}; + + +support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; + +support.detectDuplicates = !!hasDuplicate; + +setDocument(); + +support.sortDetached = assert(function( div1 ) { + return div1.compareDocumentPosition( document.createElement("div") ) & 1; +}); + +if ( !assert(function( div ) { + div.innerHTML = ""; + return div.firstChild.getAttribute("href") === "#" ; +}) ) { + addHandle( "type|href|height|width", function( elem, name, isXML ) { + if ( !isXML ) { + return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); + } + }); +} + +if ( !support.attributes || !assert(function( div ) { + div.innerHTML = ""; + div.firstChild.setAttribute( "value", "" ); + return div.firstChild.getAttribute( "value" ) === ""; +}) ) { + addHandle( "value", function( elem, name, isXML ) { + if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { + return elem.defaultValue; + } + }); +} + +if ( !assert(function( div ) { + return div.getAttribute("disabled") == null; +}) ) { + addHandle( booleans, function( elem, name, isXML ) { + var val; + if ( !isXML ) { + return elem[ name ] === true ? name.toLowerCase() : + (val = elem.getAttributeNode( name )) && val.specified ? + val.value : + null; + } + }); +} + +if ( typeof define === "function" && define.amd ) { + define(function() { return Sizzle; }); +} else if ( typeof module !== "undefined" && module.exports ) { + module.exports = Sizzle; } else { - Sizzle.contains = function() { - return false; - }; + window.Sizzle = Sizzle; } -Sizzle.isXML = function( elem ) { - var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement; - - return documentElement ? documentElement.nodeName !== "HTML" : false; -}; - -var posProcess = function( selector, context ) { - var match, - tmpSet = [], - later = "", - root = context.nodeType ? [context] : context; - - while ( (match = Expr.match.PSEUDO.exec( selector )) ) { - later += match[0]; - selector = selector.replace( Expr.match.PSEUDO, "" ); - } - - selector = Expr.relative[selector] ? selector + "*" : selector; - - for ( var i = 0, l = root.length; i < l; i++ ) { - Sizzle( selector, root[i], tmpSet ); - } - - return Sizzle.filter( later, tmpSet ); -}; - - -window.Sizzle = Sizzle; - -})(); - -Prototype._original_property = window.Sizzle; +})( window ); ;(function(engine) { var extendElements = Prototype.Selector.extendElements; From 7f7e3cb06a6b8789a1cd1667fb62418fad02aac1 Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Tue, 10 Jun 2014 14:48:25 -0400 Subject: [PATCH 10/46] Fix folder name of new subscriptions Fixes #2801 --- NEWS | 1 + UI/MainUI/SOGoUserHomePage.m | 8 ++--- .../UIxContactsUserFolders.js | 29 ++++++------------- 3 files changed, 13 insertions(+), 25 deletions(-) diff --git a/NEWS b/NEWS index 7af43b7c2..fb1aa4abe 100644 --- a/NEWS +++ b/NEWS @@ -9,6 +9,7 @@ Enhancements Bug fixes - better handling of empty "Flag" messages over ActiveSync (#2806) - fixed Chinese charset handling (#2809) + - fixed folder name (calendars and contacts) of new subscriptions (#2801) 2.2.5 (2014-06-05) ------------------ diff --git a/UI/MainUI/SOGoUserHomePage.m b/UI/MainUI/SOGoUserHomePage.m index 1e2e361ae..95d7a72de 100644 --- a/UI/MainUI/SOGoUserHomePage.m +++ b/UI/MainUI/SOGoUserHomePage.m @@ -364,8 +364,7 @@ // We sort our array - this is pretty useful for the Web // interface of SOGo. - allUsers = [users - sortedArrayUsingSelector: @selector (caseInsensitiveDisplayNameCompare:)]; + allUsers = [users sortedArrayUsingSelector: @selector (caseInsensitiveDisplayNameCompare:)]; max = [allUsers count]; jsonResponse = [NSMutableArray arrayWithCapacity: max]; @@ -462,9 +461,8 @@ folderType = [self queryParameterForKey: @"type"]; userFolder = [self clientObject]; - folders - = [userFolder foldersOfType: folderType - forUID: [userFolder ownerInContext: context]]; + folders = [userFolder foldersOfType: folderType + forUID: [userFolder ownerInContext: context]]; result = [self _foldersResponseForResults: folders]; return result; diff --git a/UI/WebServerResources/UIxContactsUserFolders.js b/UI/WebServerResources/UIxContactsUserFolders.js index 6b2fb2712..2df373add 100644 --- a/UI/WebServerResources/UIxContactsUserFolders.js +++ b/UI/WebServerResources/UIxContactsUserFolders.js @@ -164,9 +164,9 @@ function foldersSearchCallback(http) { dd.innerHTML = ''; for (var i = 1; i < folders.length - 1; i++) - dd.appendChild (addFolderBranchToTree(d, user, folders[i], nodeId, i, false)); - dd.appendChild (addFolderBranchToTree(d, user, folders[folders.length-1], nodeId, - (folders.length - 1), true)); + dd.appendChild(addFolderBranchToTree(d, user, folders[i], nodeId, i, false)); + dd.appendChild(addFolderBranchToTree(d, user, folders[folders.length-1], nodeId, + (folders.length - 1), true)); //dd.update(str); for (var i = 1; i < folders.length; i++) { var sd = $("sd" + (nodeId + i)); @@ -193,13 +193,8 @@ function addFolderBranchToTree(tree, user, folder, nodeId, subId, isLast) { icon += 'calendar-folder-16x16.png'; var folderId = user + ":" + folderInfos[1].substr(1); - // name has the format "Foldername (Firstname Lastname )" // We sanitize the value to avoid XSS issues - var name = folderInfos[0].escapeHTML(); - - var pos = name.lastIndexOf(' ('); - if (pos > -1) - name = name.substring(0, pos); // strip the part with fullname and email + var name = folderInfos[0].escapeHTML(); var node = new dTreeNode(subId, nodeId, name, 0, '#', folderId, folderInfos[2] + '-folder', '', '', icon, icon); node._ls = isLast; @@ -223,25 +218,19 @@ function onConfirmFolderSelection(event) { var node = topNode.selectedEntry.parentNode; var folder = node.getAttribute("dataname"); var type = node.getAttribute("datatype"); - var folderName; if (window.opener.userFolderType == "user") { - var span = $(topNode.selectedEntry).down("SPAN.nodeName"); - var email = (span.innerHTML - .replace("<", "<", "g") - .replace(">", ">", "g")); - folderName = email.replace(/>,.*$/, ">", "g"); + var resource = $(topNode.selectedEntry).down("SPAN.nodeName"); + var description = (resource.innerHTML + .replace("<", "<", "g") + .replace(">", ">", "g")); + folderName = description.replace(/>,.*$/, ">", "g"); } else { var resource = $(topNode.selectedEntry).down("SPAN.nodeName"); - var user = $(node.parentNode.previousSibling).down("SPAN.nodeName"); - var email = (user.innerHTML - .replace("<", "<", "g") - .replace(">", ">", "g")); folderName = resource.innerHTML; folderName = folderName.replace(/>,.*(\))?$/, ">)$1", "g"); } - var data = { folderName: folderName, folder: folder, type: type, window: window }; if (parent$(accessToSubscribedFolder(folder))) window.alert(_("You have already subscribed to that folder!")); From 43ac57b671ecf4f0d81daf3e40fab856a5d3b52a Mon Sep 17 00:00:00 2001 From: Alexandre Cloutier Date: Tue, 10 Jun 2014 16:18:12 -0400 Subject: [PATCH 11/46] display the number of active tasks in calendar view --- .../Appointments/SOGoAppointmentFolder.h | 2 + .../Appointments/SOGoAppointmentFolder.m | 22 ++++++- UI/Scheduler/UIxCalendarSelector.m | 60 ++++++++++--------- .../SchedulerUI/UIxCalendarSelector.wox | 9 ++- 4 files changed, 61 insertions(+), 32 deletions(-) diff --git a/SoObjects/Appointments/SOGoAppointmentFolder.h b/SoObjects/Appointments/SOGoAppointmentFolder.h index ee703b1d5..b09241cfd 100644 --- a/SoObjects/Appointments/SOGoAppointmentFolder.h +++ b/SoObjects/Appointments/SOGoAppointmentFolder.h @@ -80,6 +80,8 @@ typedef enum { - (NSArray *) calendarUIDs; +- (NSString *) activeTasks; + /* vevent UID handling */ - (NSString *) resourceNameForEventUID: (NSString *) _uid; diff --git a/SoObjects/Appointments/SOGoAppointmentFolder.m b/SoObjects/Appointments/SOGoAppointmentFolder.m index 61cef70dc..a70a0eb16 100644 --- a/SoObjects/Appointments/SOGoAppointmentFolder.m +++ b/SoObjects/Appointments/SOGoAppointmentFolder.m @@ -522,7 +522,6 @@ static iCalEvent *iCalEventK = nil; { /* this is used for group calendars (this folder just returns itself) */ NSString *s; - s = [[self container] nameInContainer]; // [self logWithFormat:@"CAL UID: %@", s]; return [s isNotNull] ? [NSArray arrayWithObjects:&s count:1] : nil; @@ -3270,4 +3269,25 @@ firstInstanceCalendarDateRange: (NGCalendarDateRange *) fir return users; } +- (NSString *) activeTasks +{ + NSArray *tasksList; + NSString *activeTasks; + NSMutableArray *fields; + + fields = [NSMutableArray arrayWithObjects: @"c_component", @"c_status", nil]; + + tasksList = [self bareFetchFields: fields + from: nil + to: nil + title: nil + component: @"vtodo" + additionalFilters: @"c_status != 2 AND c_status != 3"]; + + activeTasks = [NSString stringWithFormat:@"(%d)", [tasksList count]]; + + return activeTasks; +} + + @end /* SOGoAppointmentFolder */ diff --git a/UI/Scheduler/UIxCalendarSelector.m b/UI/Scheduler/UIxCalendarSelector.m index 7da4392b3..196299fad 100644 --- a/UI/Scheduler/UIxCalendarSelector.m +++ b/UI/Scheduler/UIxCalendarSelector.m @@ -92,38 +92,42 @@ _intValueFromHex (NSString *hexString) SOGoAppointmentFolder *folder; NSMutableDictionary *calendar; unsigned int count, max; - NSString *folderName, *fDisplayName; + NSString *folderName, *fDisplayName, *fActiveTasks; NSNumber *isActive; - + if (!calendars) + { + co = [self clientObject]; + folders = [co subFolders]; + max = [folders count]; + calendars = [[NSMutableArray alloc] initWithCapacity: max]; + for (count = 0; count < max; count++) { - co = [self clientObject]; - folders = [co subFolders]; - max = [folders count]; - calendars = [[NSMutableArray alloc] initWithCapacity: max]; - for (count = 0; count < max; count++) - { - folder = [folders objectAtIndex: count]; - calendar = [NSMutableDictionary dictionary]; - folderName = [folder nameInContainer]; - fDisplayName = [folder displayName]; - if (fDisplayName == nil) - fDisplayName = @""; - if ([fDisplayName isEqualToString: [co defaultFolderName]]) - fDisplayName = [self labelForKey: fDisplayName]; - [calendar setObject: [NSString stringWithFormat: @"/%@", folderName] - forKey: @"id"]; - [calendar setObject: fDisplayName forKey: @"displayName"]; - [calendar setObject: folderName forKey: @"folder"]; - [calendar setObject: [folder calendarColor] forKey: @"color"]; - isActive = [NSNumber numberWithBool: [folder isActive]]; - [calendar setObject: isActive forKey: @"active"]; - [calendar setObject: [folder ownerInContext: context] - forKey: @"owner"]; - [calendars addObject: calendar]; - } + folder = [folders objectAtIndex: count]; + calendar = [NSMutableDictionary dictionary]; + folderName = [folder nameInContainer]; + fDisplayName = [folder displayName]; + if (fDisplayName == nil) + fDisplayName = @""; + if ([fDisplayName isEqualToString: [co defaultFolderName]]) + fDisplayName = [self labelForKey: fDisplayName]; + [calendar setObject: [NSString stringWithFormat: @"/%@", folderName] + forKey: @"id"]; + [calendar setObject: fDisplayName forKey: @"displayName"]; + [calendar setObject: folderName forKey: @"folder"]; + [calendar setObject: [folder calendarColor] forKey: @"color"]; + isActive = [NSNumber numberWithBool: [folder isActive]]; + [calendar setObject: isActive forKey: @"active"]; + [calendar setObject: [folder ownerInContext: context] + forKey: @"owner"]; + fActiveTasks = [folder activeTasks]; + if (fActiveTasks == nil) + fActiveTasks = @""; + [calendar setObject:fActiveTasks forKey:@"activeTasks" ]; + [calendars addObject: calendar]; } - + } + return calendars; } diff --git a/UI/Templates/SchedulerUI/UIxCalendarSelector.wox b/UI/Templates/SchedulerUI/UIxCalendarSelector.wox index 477a64513..e5f0b03e6 100644 --- a/UI/Templates/SchedulerUI/UIxCalendarSelector.wox +++ b/UI/Templates/SchedulerUI/UIxCalendarSelector.wox @@ -38,9 +38,12 @@ div.colorBox.calendarFolder
  • -
  • +
    + + + + +
    From ce07695a5597964354404557c9246eee5325abb2 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Tue, 10 Jun 2014 16:35:36 -0400 Subject: [PATCH 12/46] Make sure to keep the / path prefix --- ActiveSync/SOGoActiveSyncDispatcher.m | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/ActiveSync/SOGoActiveSyncDispatcher.m b/ActiveSync/SOGoActiveSyncDispatcher.m index 6f115aa2d..e84e7f966 100644 --- a/ActiveSync/SOGoActiveSyncDispatcher.m +++ b/ActiveSync/SOGoActiveSyncDispatcher.m @@ -513,7 +513,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. [o setTableUrl: [self folderTableURL]]; [o reloadIfNeeded]; - key = [NSString stringWithFormat: @"%@+%@", [context objectForKey: @"DeviceId"], [folderToUpdate nameInContainer]]; + key = [NSString stringWithFormat: @"/%@+%@", [context objectForKey: @"DeviceId"], [folderToUpdate nameInContainer]]; [o changePathTo: key]; // @@ -527,8 +527,6 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. [self _setFolderSyncKey: syncKey]; - // FIXME - TODO: We *MUST* update the path in our cache! See -changePathTo in SOGoCacheGCSObject - s = [NSMutableString string]; [s appendString: @""]; [s appendString: @""]; From de2ee2322af740251ac82ca06deb1f7585637024 Mon Sep 17 00:00:00 2001 From: Alexandre Cloutier Date: Wed, 11 Jun 2014 10:24:04 -0400 Subject: [PATCH 13/46] Change the NSString with NSNumber and add some JavaScript --- .../Appointments/SOGoAppointmentFolder.h | 2 +- .../Appointments/SOGoAppointmentFolder.m | 8 ++-- UI/Scheduler/UIxCalendarSelector.m | 6 +-- .../SchedulerUI/UIxCalendarSelector.wox | 6 +-- UI/WebServerResources/SchedulerUI.js | 44 ++++++++++--------- 5 files changed, 33 insertions(+), 33 deletions(-) diff --git a/SoObjects/Appointments/SOGoAppointmentFolder.h b/SoObjects/Appointments/SOGoAppointmentFolder.h index b09241cfd..05e760909 100644 --- a/SoObjects/Appointments/SOGoAppointmentFolder.h +++ b/SoObjects/Appointments/SOGoAppointmentFolder.h @@ -80,7 +80,7 @@ typedef enum { - (NSArray *) calendarUIDs; -- (NSString *) activeTasks; +- (NSNumber *) activeTasks; /* vevent UID handling */ diff --git a/SoObjects/Appointments/SOGoAppointmentFolder.m b/SoObjects/Appointments/SOGoAppointmentFolder.m index a70a0eb16..0a8746083 100644 --- a/SoObjects/Appointments/SOGoAppointmentFolder.m +++ b/SoObjects/Appointments/SOGoAppointmentFolder.m @@ -3269,11 +3269,11 @@ firstInstanceCalendarDateRange: (NGCalendarDateRange *) fir return users; } -- (NSString *) activeTasks +- (NSNumber *) activeTasks { NSArray *tasksList; - NSString *activeTasks; NSMutableArray *fields; + NSNumber *activeTasks; fields = [NSMutableArray arrayWithObjects: @"c_component", @"c_status", nil]; @@ -3284,8 +3284,8 @@ firstInstanceCalendarDateRange: (NGCalendarDateRange *) fir component: @"vtodo" additionalFilters: @"c_status != 2 AND c_status != 3"]; - activeTasks = [NSString stringWithFormat:@"(%d)", [tasksList count]]; - + activeTasks = [NSNumber numberWithInt:[tasksList count]]; + return activeTasks; } diff --git a/UI/Scheduler/UIxCalendarSelector.m b/UI/Scheduler/UIxCalendarSelector.m index 196299fad..fd9e99c76 100644 --- a/UI/Scheduler/UIxCalendarSelector.m +++ b/UI/Scheduler/UIxCalendarSelector.m @@ -92,8 +92,8 @@ _intValueFromHex (NSString *hexString) SOGoAppointmentFolder *folder; NSMutableDictionary *calendar; unsigned int count, max; - NSString *folderName, *fDisplayName, *fActiveTasks; - NSNumber *isActive; + NSString *folderName, *fDisplayName; + NSNumber *isActive, *fActiveTasks; if (!calendars) { @@ -122,7 +122,7 @@ _intValueFromHex (NSString *hexString) forKey: @"owner"]; fActiveTasks = [folder activeTasks]; if (fActiveTasks == nil) - fActiveTasks = @""; + fActiveTasks = 0; [calendar setObject:fActiveTasks forKey:@"activeTasks" ]; [calendars addObject: calendar]; } diff --git a/UI/Templates/SchedulerUI/UIxCalendarSelector.wox b/UI/Templates/SchedulerUI/UIxCalendarSelector.wox index e5f0b03e6..5b3bd488e 100644 --- a/UI/Templates/SchedulerUI/UIxCalendarSelector.wox +++ b/UI/Templates/SchedulerUI/UIxCalendarSelector.wox @@ -39,10 +39,8 @@ div.colorBox.calendarFolder >
  • - - - - + +
  • diff --git a/UI/WebServerResources/SchedulerUI.js b/UI/WebServerResources/SchedulerUI.js index 8a3a44215..ec3d7ce81 100644 --- a/UI/WebServerResources/SchedulerUI.js +++ b/UI/WebServerResources/SchedulerUI.js @@ -2900,27 +2900,29 @@ function configureDragHandles() { } function initCalendarSelector() { - var selector = $("calendarSelector"); - updateCalendarStatus(); // triggers the initial events refresh - selector.changeNotification = updateCalendarsList; - - var list = $("calendarList"); - list.on("mousedown", onCalendarSelectionChange); - list.on("dblclick", onCalendarModify); - list.on("selectstart", listRowMouseDownHandler); - list.attachMenu("calendarsMenu"); - - var items = list.childNodesWithTag("li"); - for (var i = 0; i < items.length; i++) { - var input = items[i].childNodesWithTag("input")[0]; - $(input).observe("click", clickEventWrapper(updateCalendarStatus)); - } - - var links = $("calendarSelectorButtons").childNodesWithTag("a"); - $(links[0]).observe("click", clickEventWrapper(onCalendarNew)); - $(links[1]).observe("click", clickEventWrapper(onCalendarWebAdd)); - $(links[2]).observe("click", clickEventWrapper(onCalendarAdd)); - $(links[3]).observe("click", clickEventWrapper(onCalendarRemove)); + var selector = $("calendarSelector"); + updateCalendarStatus(); // triggers the initial events refresh + selector.changeNotification = updateCalendarsList; + + var list = $("calendarList"); + list.on("mousedown", onCalendarSelectionChange); + list.on("dblclick", onCalendarModify); + list.on("selectstart", listRowMouseDownHandler); + list.attachMenu("calendarsMenu"); + + var items = list.childNodesWithTag("li"); + for (var i = 0; i < items.length; i++) { + var input = items[i].childNodesWithTag("input")[0]; + var activeTasks = items[i].childNodesWithTag("span")[0]; + $(input).observe("click", clickEventWrapper(updateCalendarStatus)); + $(activeTasks).innerHTML = "(" + activeTasks.innerText + ")"; + } + + var links = $("calendarSelectorButtons").childNodesWithTag("a"); + $(links[0]).observe("click", clickEventWrapper(onCalendarNew)); + $(links[1]).observe("click", clickEventWrapper(onCalendarWebAdd)); + $(links[2]).observe("click", clickEventWrapper(onCalendarAdd)); + $(links[3]).observe("click", clickEventWrapper(onCalendarRemove)); } function onCalendarSelectionChange(event) { From 0e182f84360aa35c87d39320cab08d7eaeb55d90 Mon Sep 17 00:00:00 2001 From: Alexandre Cloutier Date: Wed, 11 Jun 2014 11:25:17 -0400 Subject: [PATCH 14/46] Update SOGoAppointmentFolder.m Fix the status filtering from 2 to 1 --- SoObjects/Appointments/SOGoAppointmentFolder.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SoObjects/Appointments/SOGoAppointmentFolder.m b/SoObjects/Appointments/SOGoAppointmentFolder.m index 0a8746083..6f759a137 100644 --- a/SoObjects/Appointments/SOGoAppointmentFolder.m +++ b/SoObjects/Appointments/SOGoAppointmentFolder.m @@ -3282,7 +3282,7 @@ firstInstanceCalendarDateRange: (NGCalendarDateRange *) fir to: nil title: nil component: @"vtodo" - additionalFilters: @"c_status != 2 AND c_status != 3"]; + additionalFilters: @"c_status != 1 AND c_status != 3"]; activeTasks = [NSNumber numberWithInt:[tasksList count]]; From e7ddfb0546fcb70f1ac3401375656936ea00c380 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Wed, 11 Jun 2014 12:55:51 -0400 Subject: [PATCH 15/46] Fix for bug #2805 --- ActiveSync/SOGoActiveSyncDispatcher.m | 45 +++++++++++++++++++++------ NEWS | 1 + 2 files changed, 37 insertions(+), 9 deletions(-) diff --git a/ActiveSync/SOGoActiveSyncDispatcher.m b/ActiveSync/SOGoActiveSyncDispatcher.m index e84e7f966..b98ce3bd2 100644 --- a/ActiveSync/SOGoActiveSyncDispatcher.m +++ b/ActiveSync/SOGoActiveSyncDispatcher.m @@ -1899,9 +1899,9 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. value = [theDocumentElement getElementsByTagName: @"ReplaceMime"]; - // ReplaceMime isn't specified so we must NOT use the server copy + // ReplaceMime IS specified so we must NOT use the server copy // but rather take the data as-is from the client. - if (![value count]) + if ([value count]) { [self processSendMail: theDocumentElement inResponse: theResponse]; @@ -1921,11 +1921,12 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. NSData *data; NGMimeMessageGenerator *generator; - NGMimeBodyPart *bodyPart; + NGMimeBodyPart *bodyPart; NGMutableHashMap *map; NGMimeFileData *fdata; NSException *error; - id body; + + id body, bodyFromSmartForward; userFolder = [[context activeUser] homeFolderInContext: context]; accountsFolder = [userFolder lookupName: @"Mail" inContext: context acquire: NO]; @@ -1941,10 +1942,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. parser = [[NGMimeMessageParser alloc] init]; data = [[[[(id)[theDocumentElement getElementsByTagName: @"MIME"] lastObject] textValue] stringByDecodingBase64] dataUsingEncoding: NSUTF8StringEncoding]; messageFromSmartForward = [parser parsePartFromData: data]; - RELEASE(parser); - // We create a new MIME multipart/mixed message. The first part will be the text part // of our "smart forward" and the second part will be the message/rfc822 part of the // "smart forwarded" message. @@ -1954,11 +1953,39 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. messageToSend = [[[NGMimeMessage alloc] initWithHeader: map] autorelease]; body = [[[NGMimeMultipartBody alloc] initWithPart: messageToSend] autorelease]; - // First part + // First part - either a text/* or a multipart/*. If it's a multipart, + // we take the first part text/* part we see. map = [[[NGMutableHashMap alloc] initWithCapacity: 1] autorelease]; - [map setObject: @"text/plain" forKey: @"content-type"]; + bodyFromSmartForward = nil; + + if ([[messageFromSmartForward body] isKindOfClass: [NGMimeMultipartBody class]]) + { + NGMimeBodyPart *part; + NSArray *parts; + int i; + + parts = [[messageFromSmartForward body] parts]; + + for (i = 0; i < [parts count]; i++) + { + part = [parts objectAtIndex: i]; + + if ([[[part contentType] type] isEqualToString: @"text"]) + { + [map setObject: [[part contentType] stringValue] forKey: @"content-type"]; + bodyFromSmartForward = [part body]; + break; + } + } + } + else + { + [map setObject: [[messageFromSmartForward contentType] stringValue] forKey: @"content-type"]; + bodyFromSmartForward = [messageFromSmartForward body]; + } + bodyPart = [[[NGMimeBodyPart alloc] initWithHeader:map] autorelease]; - [bodyPart setBody: [messageFromSmartForward body]]; + [bodyPart setBody: bodyFromSmartForward]; [body addBodyPart: bodyPart]; // Second part diff --git a/NEWS b/NEWS index fb1aa4abe..c535e992a 100644 --- a/NEWS +++ b/NEWS @@ -10,6 +10,7 @@ Bug fixes - better handling of empty "Flag" messages over ActiveSync (#2806) - fixed Chinese charset handling (#2809) - fixed folder name (calendars and contacts) of new subscriptions (#2801) + - fixed the reply/forward operation over ActiveSync (#2805) 2.2.5 (2014-06-05) ------------------ From 5bb64916c6fc96bf20bc258a075c33413784ca01 Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Thu, 12 Jun 2014 09:09:08 -0400 Subject: [PATCH 16/46] Fix regression when attaching files to a reply --- NEWS | 1 + UI/MailerUI/UIxMailEditor.m | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/NEWS b/NEWS index c535e992a..5eb1e8fd1 100644 --- a/NEWS +++ b/NEWS @@ -11,6 +11,7 @@ Bug fixes - fixed Chinese charset handling (#2809) - fixed folder name (calendars and contacts) of new subscriptions (#2801) - fixed the reply/forward operation over ActiveSync (#2805) + - fixed regression when attaching files to a reply 2.2.5 (2014-06-05) ------------------ diff --git a/UI/MailerUI/UIxMailEditor.m b/UI/MailerUI/UIxMailEditor.m index 28de05922..f78843b53 100644 --- a/UI/MailerUI/UIxMailEditor.m +++ b/UI/MailerUI/UIxMailEditor.m @@ -644,8 +644,9 @@ static NSArray *infoKeys = nil; if (!attachmentAttrs || ![co imap4URL]) { [co fetchInfo]; - if (![co inReplyTo] && [co IMAP4ID] > -1) + if ((![co inReplyTo] || currentAttachment) && [co IMAP4ID] > -1) { + // When currentAttachment is defined, it means we just attached a new file to the mail mail = [[[SOGoMailObject alloc] initWithImap4URL: [co imap4URL] inContainer: [co container]] autorelease]; a = [mail fetchFileAttachmentKeys]; ASSIGN (attachmentAttrs, a); From d9b578b869da27b876f019bc10acf72839220fd3 Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Mon, 16 Jun 2014 09:52:29 -0400 Subject: [PATCH 17/46] Wait 20 seconds before deleting temporary forms Those temporary forms are created to download attachments. Fixes #2811 --- NEWS | 1 + UI/WebServerResources/MailerUI.js | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/NEWS b/NEWS index 5eb1e8fd1..1764f7ccf 100644 --- a/NEWS +++ b/NEWS @@ -12,6 +12,7 @@ Bug fixes - fixed folder name (calendars and contacts) of new subscriptions (#2801) - fixed the reply/forward operation over ActiveSync (#2805) - fixed regression when attaching files to a reply + - wait 20 seconds (instead of 2) before deleting temporary download forms (#2811) 2.2.5 (2014-06-05) ------------------ diff --git a/UI/WebServerResources/MailerUI.js b/UI/WebServerResources/MailerUI.js index 2c0575995..4f87b2a84 100644 --- a/UI/WebServerResources/MailerUI.js +++ b/UI/WebServerResources/MailerUI.js @@ -1749,7 +1749,7 @@ function download(url) { setTimeout(function () { form.remove(); div.remove(); - }, 2000); + }, 20000); } function saveAttachment(event) { From 8202d0588fb8e1774e502941fc01223fb9005334 Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Mon, 16 Jun 2014 10:20:02 -0400 Subject: [PATCH 18/46] Add documentation for SOGoSubscriptionFolderFormat Fixes #2799 --- Documentation/SOGo Installation Guide.odt | Bin 169561 -> 169764 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Documentation/SOGo Installation Guide.odt b/Documentation/SOGo Installation Guide.odt index aaaf940245d21228472dc67cf3b39e907702e435..068556826e55ba771794bdb9899daa2985594310 100644 GIT binary patch delta 48334 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 J$^U5e{{XXTUjYCB delta 48081 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 MKm{p~_>aZ^2mZGk@c;k- From 50c0b49a6fe210b438d2e5a7abac7219bdb15b8f Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Mon, 16 Jun 2014 11:00:39 -0400 Subject: [PATCH 19/46] Fix for bug #2813 --- NEWS | 1 + SoObjects/SOGo/SOGoGCSFolder.m | 29 ++++++++++++++++++----------- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/NEWS b/NEWS index 1764f7ccf..3abc862b0 100644 --- a/NEWS +++ b/NEWS @@ -13,6 +13,7 @@ Bug fixes - fixed the reply/forward operation over ActiveSync (#2805) - fixed regression when attaching files to a reply - wait 20 seconds (instead of 2) before deleting temporary download forms (#2811) + - avoid raising exceptions when the db is down and we try to access the preferences module (#2813) 2.2.5 (2014-06-05) ------------------ diff --git a/SoObjects/SOGo/SOGoGCSFolder.m b/SoObjects/SOGo/SOGoGCSFolder.m index 3f626bc61..b0110f58d 100644 --- a/SoObjects/SOGo/SOGoGCSFolder.m +++ b/SoObjects/SOGo/SOGoGCSFolder.m @@ -329,17 +329,24 @@ static NSArray *childRecordFields = nil; fc = [cm acquireOpenChannelForURL: folderLocation]; if (fc) { - sql - = [NSString stringWithFormat: (@"SELECT c_foldername FROM %@" - @" WHERE c_path = '%@'"), - [folderLocation gcsTableName], ocsPath]; - [fc evaluateExpressionX: sql]; - attrs = [fc describeResults: NO]; - row = [fc fetchAttributes: attrs withZone: NULL]; - if (row) - [self _setDisplayNameFromRow: row]; - [fc cancelFetch]; - [cm releaseChannel: fc]; + // We use an exception handler here in case the database is down when + // performing the query. This could have unexpected results. + NS_DURING + { + sql + = [NSString stringWithFormat: (@"SELECT c_foldername FROM %@" + @" WHERE c_path = '%@'"), + [folderLocation gcsTableName], ocsPath]; + [fc evaluateExpressionX: sql]; + attrs = [fc describeResults: NO]; + row = [fc fetchAttributes: attrs withZone: NULL]; + if (row) + [self _setDisplayNameFromRow: row]; + [fc cancelFetch]; + [cm releaseChannel: fc]; + } + NS_HANDLER; + NS_ENDHANDLER; } } From 333b561a5932acbe66d5b62c8963dd166b9de7f2 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Mon, 16 Jun 2014 15:30:26 -0400 Subject: [PATCH 20/46] Applied patch from bug #2736 --- SOPE/NGCards/NGCardsSaxHandler.m | 2 +- SOPE/NGCards/samples/vcf2xml.m | 8 ++++---- SoObjects/Mailer/NSString+Mail.m | 2 +- UI/MailPartViewers/UIxMailPartHTMLViewer.m | 10 +++++----- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/SOPE/NGCards/NGCardsSaxHandler.m b/SOPE/NGCards/NGCardsSaxHandler.m index 5314dee08..fca1a64e6 100644 --- a/SOPE/NGCards/NGCardsSaxHandler.m +++ b/SOPE/NGCards/NGCardsSaxHandler.m @@ -232,7 +232,7 @@ static NSArray *privilegedTagNames = nil; } - (void) characters: (unichar *) _chars - length: (int) _len + length: (NSUInteger) _len { if (_len && _chars) { diff --git a/SOPE/NGCards/samples/vcf2xml.m b/SOPE/NGCards/samples/vcf2xml.m index 3f56c2c88..31d61f026 100644 --- a/SOPE/NGCards/samples/vcf2xml.m +++ b/SOPE/NGCards/samples/vcf2xml.m @@ -217,10 +217,10 @@ printf("\n", [_localName cString]); } -- (void)characters:(unichar *)_chars length:(int)_len { +- (void)characters:(unichar *)_chars length:(NSUInteger)_len { NSString *str; id tmp; - unsigned i, len; + NSUInteger i, len; if (_len == 0) { [self indent]; @@ -228,7 +228,7 @@ return; } - for (i = 0; i < (unsigned)_len; i++) { + for (i = 0; i < _len; i++) { if (_chars[i] > 255) { NSLog(@"detected large char: o%04o d%03i h%04X", _chars[i], _chars[i], _chars[i]); @@ -246,7 +246,7 @@ [self indent]; printf("\"%s\"\n", [str cString]); } -- (void)ignorableWhitespace:(unichar *)_chars length:(int)_len { +- (void)ignorableWhitespace:(unichar *)_chars length:(NSUInteger)_len { NSString *data; id tmp; diff --git a/SoObjects/Mailer/NSString+Mail.m b/SoObjects/Mailer/NSString+Mail.m index 48c850b9e..1efdcb62f 100644 --- a/SoObjects/Mailer/NSString+Mail.m +++ b/SoObjects/Mailer/NSString+Mail.m @@ -430,7 +430,7 @@ } - (void) ignorableWhitespace: (unichar *) whitespaces - length: (int) length + length: (NSUInteger) length { showWhoWeAre(); } diff --git a/UI/MailPartViewers/UIxMailPartHTMLViewer.m b/UI/MailPartViewers/UIxMailPartHTMLViewer.m index 0b525680b..7160f6ba2 100644 --- a/UI/MailPartViewers/UIxMailPartHTMLViewer.m +++ b/UI/MailPartViewers/UIxMailPartHTMLViewer.m @@ -419,9 +419,9 @@ static NSData* _sanitizeContent(NSData *theData) } - (void) _appendStyle: (unichar *) _chars - length: (int) _len + length: (NSUInteger) _len { - unsigned int count, length; + NSUInteger count, length; unichar *start, *currentChar; start = _chars; @@ -688,7 +688,7 @@ static NSData* _sanitizeContent(NSData *theData) } - (void) characters: (unichar *) _chars - length: (int) _len + length: (NSUInteger) _len { showWhoWeAre(); if (!ignoredContent) @@ -712,7 +712,7 @@ static NSData* _sanitizeContent(NSData *theData) } - (void) ignorableWhitespace: (unichar *) _chars - length: (int) _len + length: (NSUInteger) _len { showWhoWeAre(); } @@ -735,7 +735,7 @@ static NSData* _sanitizeContent(NSData *theData) /* SaxLexicalHandler */ - (void) comment: (unichar *) _chars - length: (int) _len + length: (NSUInteger) _len { showWhoWeAre(); if (inStyle) From e048346cb715d03fe6bd32d837b96107fdb6d44b Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Thu, 19 Jun 2014 16:08:15 -0400 Subject: [PATCH 21/46] Include, in our private NS, all ACLs defined on a calendar collectiob --- .../Appointments/SOGoAppointmentFolder.m | 68 +++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/SoObjects/Appointments/SOGoAppointmentFolder.m b/SoObjects/Appointments/SOGoAppointmentFolder.m index 61cef70dc..c05eeb31f 100644 --- a/SoObjects/Appointments/SOGoAppointmentFolder.m +++ b/SoObjects/Appointments/SOGoAppointmentFolder.m @@ -230,6 +230,8 @@ static iCalEvent *iCalEventK = nil; abstract: NO withEquivalent: SoPerm_AddDocumentsImagesAndFiles asChildOf: davElement (@"write", XMLNS_WEBDAV)]; + + /* read-acl and write-acl are defined in RFC3744 */ [aclManager registerDAVPermission: davElement (@"admin", nsI) abstract: YES withEquivalent: nil @@ -242,6 +244,72 @@ static iCalEvent *iCalEventK = nil; abstract: YES withEquivalent: SoPerm_ChangePermissions asChildOf: davElement (@"admin", nsI)]; + + /* Default permissions for calendars. These are very important so that DAV client can + detect permission changes on calendars and reload all items, if necessary */ + + /* Public ones */ + [aclManager registerDAVPermission: davElement (@"viewwhole-public-records", nsI) + abstract: YES + withEquivalent: SOGoCalendarPerm_ViewWholePublicRecords + asChildOf: davElement (@"admin", nsI)]; + + [aclManager registerDAVPermission: davElement (@"viewdant-public-records", nsI) + abstract: YES + withEquivalent: SOGoCalendarPerm_ViewDAndTOfPublicRecords + asChildOf: davElement (@"admin", nsI)]; + + [aclManager registerDAVPermission: davElement (@"modify-public-records", nsI) + abstract: YES + withEquivalent: SOGoCalendarPerm_ModifyPublicRecords + asChildOf: davElement (@"admin", nsI)]; + + [aclManager registerDAVPermission: davElement (@"respondto-public-records", nsI) + abstract: YES + withEquivalent: SOGoCalendarPerm_RespondToPublicRecords + asChildOf: davElement (@"admin", nsI)]; + + /* Private ones */ + [aclManager registerDAVPermission: davElement (@"viewwhole-private-records", nsI) + abstract: YES + withEquivalent: SOGoCalendarPerm_ViewWholePrivateRecords + asChildOf: davElement (@"admin", nsI)]; + + [aclManager registerDAVPermission: davElement (@"viewdant-private-records", nsI) + abstract: YES + withEquivalent: SOGoCalendarPerm_ViewDAndTOfPrivateRecords + asChildOf: davElement (@"admin", nsI)]; + + [aclManager registerDAVPermission: davElement (@"modify-private-records", nsI) + abstract: YES + withEquivalent: SOGoCalendarPerm_ModifyPrivateRecords + asChildOf: davElement (@"admin", nsI)]; + + [aclManager registerDAVPermission: davElement (@"respondto-private-records", nsI) + abstract: YES + withEquivalent: SOGoCalendarPerm_RespondToPrivateRecords + asChildOf: davElement (@"admin", nsI)]; + + /* Condifential ones */ + [aclManager registerDAVPermission: davElement (@"viewwhole-confidential-records", nsI) + abstract: YES + withEquivalent: SOGoCalendarPerm_ViewWholeConfidentialRecords + asChildOf: davElement (@"admin", nsI)]; + + [aclManager registerDAVPermission: davElement (@"viewdant-confidential-records", nsI) + abstract: YES + withEquivalent: SOGoCalendarPerm_ViewDAndTOfConfidentialRecords + asChildOf: davElement (@"admin", nsI)]; + + [aclManager registerDAVPermission: davElement (@"modify-confidential-records", nsI) + abstract: YES + withEquivalent: SOGoCalendarPerm_ModifyConfidentialRecords + asChildOf: davElement (@"admin", nsI)]; + + [aclManager registerDAVPermission: davElement (@"respondto-confidential-records", nsI) + abstract: YES + withEquivalent: SOGoCalendarPerm_RespondToConfidentialRecords + asChildOf: davElement (@"admin", nsI)]; } return aclManager; From 9fa0b42e19c76184d4195a1530039dcad5cb5a80 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Fri, 20 Jun 2014 11:25:02 -0400 Subject: [PATCH 22/46] Ignore SCHEDULE-AGENT for Thunderbird/Lightning --- NEWS | 2 ++ .../Appointments/SOGoAppointmentObject.m | 25 ++++++++++++++++++- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/NEWS b/NEWS index 3abc862b0..42cc196d5 100644 --- a/NEWS +++ b/NEWS @@ -14,6 +14,8 @@ Bug fixes - fixed regression when attaching files to a reply - wait 20 seconds (instead of 2) before deleting temporary download forms (#2811) - avoid raising exceptions when the db is down and we try to access the preferences module (#2813) + - we now ignore the SCHEDULE-AGENT property when Thunderbird/Ligthning sends it to avoid + not-generating invitation responses for externally received IMIP messages 2.2.5 (2014-06-05) ------------------ diff --git a/SoObjects/Appointments/SOGoAppointmentObject.m b/SoObjects/Appointments/SOGoAppointmentObject.m index 1712ec7ea..0e397928f 100644 --- a/SoObjects/Appointments/SOGoAppointmentObject.m +++ b/SoObjects/Appointments/SOGoAppointmentObject.m @@ -1428,9 +1428,11 @@ inRecurrenceExceptionsForEvent: (iCalEvent *) theEvent // - (BOOL) _shouldScheduleEvent: (iCalPerson *) theOrganizer { + NSArray *userAgents; NSString *v; BOOL b; - + int i; + b = YES; if (theOrganizer && (v = [theOrganizer value: 0 ofAttribute: @"SCHEDULE-AGENT"])) @@ -1440,6 +1442,27 @@ inRecurrenceExceptionsForEvent: (iCalEvent *) theEvent b = NO; } + // + // If we have to deal with Thunderbird/Lightning, we always send invitation + // reponses, as Lightning v2.6 (at least this version) sets SCHEDULE-AGENT + // to NONE/CLIENT when responding to an external invitation received by + // SOGo - so no invitation responses are ever sent by Lightning. See + // https://bugzilla.mozilla.org/show_bug.cgi?id=865726 and + // https://bugzilla.mozilla.org/show_bug.cgi?id=997784 + // + userAgents = [[context request] headersForKey: @"User-Agent"]; + + for (i = 0; i < [userAgents count]; i++) + { + if ([[userAgents objectAtIndex: i] rangeOfString: @"Thunderbird"].location != NSNotFound && + [[userAgents objectAtIndex: i] rangeOfString: @"Lightning"].location != NSNotFound) + { + b = YES; + break; + } + } + + return b; } From eb3cc8916df223dae773243dcbcf65269e8b0451 Mon Sep 17 00:00:00 2001 From: Alexandre Cloutier Date: Fri, 20 Jun 2014 13:16:55 -0400 Subject: [PATCH 23/46] The multiColumns view --- .../English.lproj/Localizable.strings | 6 + .../Toolbars/SOGoAppointmentFolders.toolbar | 11 +- UI/Scheduler/UIxCalDayTable.h | 16 +- UI/Scheduler/UIxCalDayTable.m | 149 ++++++++-- UI/Scheduler/UIxCalListingActions.h | 1 + UI/Scheduler/UIxCalListingActions.m | 131 +++++++-- UI/Scheduler/UIxCalMulticolumnDayView.m | 41 ++- UI/Scheduler/UIxCalendarSelector.m | 52 ++-- UI/Templates/SchedulerUI/UIxCalDayTable.wox | 136 ++++++--- UI/Templates/SchedulerUI/UIxCalDayView.wox | 3 +- .../SchedulerUI/UIxCalMulticolumnDayView.wox | 129 +++------ UI/Templates/SchedulerUI/UIxCalWeekView.wox | 3 +- UI/WebServerResources/SchedulerUI.css | 66 ++++- UI/WebServerResources/SchedulerUI.js | 270 ++++++++++++++---- 14 files changed, 696 insertions(+), 318 deletions(-) diff --git a/UI/Scheduler/English.lproj/Localizable.strings b/UI/Scheduler/English.lproj/Localizable.strings index 32dc2db3d..8fb9bd5b0 100644 --- a/UI/Scheduler/English.lproj/Localizable.strings +++ b/UI/Scheduler/English.lproj/Localizable.strings @@ -542,6 +542,12 @@ vtodo_class2 = "(Confidential task)"; "tagWasRemoved" = "If you remove this calendar from synchronization, you'll need to reload the data on your mobile device.\nContinue?"; "DestinationCalendarError" = "The source and destination calendars are the same. Please try to copy to a different calendar."; "EventCopyError" = "The copy failed. Please try to copy to a difference calendar."; +"Please select at least one calendar" = "Please select at least one calendar"; +"notice:" = "notice:"; +"error:" = "error:"; +"success:" = "success:"; +"warning:" = "warning:"; + "Open Task..." = "Open Task..."; "Mark Completed" = "Mark Completed"; diff --git a/UI/Scheduler/Toolbars/SOGoAppointmentFolders.toolbar b/UI/Scheduler/Toolbars/SOGoAppointmentFolders.toolbar index 54a5eae10..14e5fcd5e 100644 --- a/UI/Scheduler/Toolbars/SOGoAppointmentFolders.toolbar +++ b/UI/Scheduler/Toolbars/SOGoAppointmentFolders.toolbar @@ -21,12 +21,11 @@ onclick = "return onDayOverview();"; image = "day-view.png"; tooltip = "Switch to day view"; }, - /* disabled until we fix the view */ - /* { link = "#"; - label="Multicolumn Day View"; - onclick = "return onMulticolumnDayOverview();"; - image = "day-view-multicolumn.png"; - tooltip = ""; }, */ + { link = "#"; + label="Multi-Columns View"; + onclick = "return onMulticolumnDayOverview();"; + image = "day-view-multicolumn.png"; + tooltip = "Switch to multi-columns day view"; }, { link = "#"; label="Week View"; onclick = "return onWeekOverview();"; diff --git a/UI/Scheduler/UIxCalDayTable.h b/UI/Scheduler/UIxCalDayTable.h index 88ab136e8..57d91e846 100644 --- a/UI/Scheduler/UIxCalDayTable.h +++ b/UI/Scheduler/UIxCalDayTable.h @@ -35,27 +35,27 @@ @interface UIxCalDayTable : UIxCalView { - unsigned int numberOfDays; - NSCalendarDate *startDate; - NSCalendarDate *currentTableDay; - NSString *currentTableHour; - NSMutableArray *daysToDisplay; - NSMutableArray *hoursToDisplay; - NSArray *weekDays; SOGoDateFormatter *dateFormatter; - NSString *timeFormat; + NSArray *weekDays; + NSString *currentView, *timeFormat, *currentTableHour; + NSCalendarDate *startDate, *currentTableDay; + NSMutableArray *daysToDisplay, *calendarsToDisplay, *currentCalendar, *hoursToDisplay; + unsigned int numberOfDays; } - (void) setNumberOfDays: (NSNumber *) aNumber; - (NSNumber *) numberOfDays; +- (NSString *) currentView; - (void) setStartDate: (NSCalendarDate *) aStartDate; - (NSCalendarDate *) startDate; - (NSCalendarDate *) endDate; - (NSArray *) daysToDisplay; +- (NSArray *) calendarsToDisplay; - (void) setCurrentTableDay: (NSCalendarDate *) aTableDay; - (NSCalendarDate *) currentTableDay; +- (NSMutableArray *) currentCalendar; @end diff --git a/UI/Scheduler/UIxCalDayTable.m b/UI/Scheduler/UIxCalDayTable.m index 174e1d1ea..7b05e06c5 100644 --- a/UI/Scheduler/UIxCalDayTable.m +++ b/UI/Scheduler/UIxCalDayTable.m @@ -55,9 +55,12 @@ ASSIGN (timeFormat, [ud timeFormat]); daysToDisplay = nil; + calendarsToDisplay = nil; hoursToDisplay = nil; numberOfDays = 1; startDate = nil; + currentView = nil; + currentCalendar = nil; currentTableDay = nil; currentTableHour = nil; weekDays = [locale objectForKey: NSShortWeekDayNameArray]; @@ -75,6 +78,9 @@ // [allAppointments release]; [weekDays release]; [daysToDisplay release]; + [calendarsToDisplay release]; + [currentView release]; + [currentCalendar release]; [hoursToDisplay release]; [dateFormatter release]; [timeFormat release]; @@ -119,6 +125,16 @@ return [endDate endOfDay]; } +- (void) setCurrentView: (NSString *) aView +{ + currentView = [NSString stringWithString:aView]; +} + +- (NSString *) currentView +{ + return currentView; +} + - (NSArray *) hoursToDisplay { unsigned int currentHour, lastHour; @@ -148,22 +164,67 @@ { NSCalendarDate *currentDate; int count; - + if (!daysToDisplay) + { + daysToDisplay = [NSMutableArray new]; + currentDate = [[self startDate] hour: [self dayStartHour] + minute: 0]; + + for (count = 0; count < numberOfDays; count++) { - daysToDisplay = [NSMutableArray new]; - currentDate = [[self startDate] hour: [self dayStartHour] - minute: 0]; - for (count = 0; count < numberOfDays; count++) - { - [daysToDisplay addObject: currentDate]; - currentDate = [currentDate tomorrow]; - } + [daysToDisplay addObject: currentDate]; + currentDate = [currentDate tomorrow]; } - + } + return daysToDisplay; } +- (NSArray *) calendarsToDisplay +{ + if (!calendarsToDisplay) { + int max=0, i; + NSArray *folders; + SOGoAppointmentFolders *co; + SOGoAppointmentFolder *folder; + NSMutableDictionary *calendar; + unsigned int count, foldersCount; + NSString *folderName, *fDisplayName; + NSNumber *isActive; + + co = [self clientObject]; + folders = [co subFolders]; + foldersCount = [folders count]; + calendarsToDisplay = [[NSMutableArray alloc] initWithCapacity: foldersCount]; + for (count = 0; count < foldersCount; count++) + { + folder = [folders objectAtIndex: count]; + isActive = [NSNumber numberWithBool: [folder isActive]]; + if ([isActive intValue] != 0) { + calendar = [NSMutableDictionary dictionary]; + folderName = [folder nameInContainer]; + fDisplayName = [folder displayName]; + if (fDisplayName == nil) + fDisplayName = @""; + if ([fDisplayName isEqualToString: [co defaultFolderName]]) + fDisplayName = [self labelForKey: fDisplayName]; + [calendar setObject: [NSString stringWithFormat: @"/%@", folderName] + forKey: @"id"]; + [calendar setObject: fDisplayName forKey: @"displayName"]; + [calendar setObject: folderName forKey: @"folder"]; + [calendar setObject: [folder calendarColor] forKey: @"color"]; + [calendar setObject: isActive forKey: @"active"]; + [calendar setObject: [folder ownerInContext: context] + forKey: @"owner"]; + [calendarsToDisplay addObject: calendar]; + } + } + } + + return calendarsToDisplay; +} + - (void) setCurrentTableDay: (NSCalendarDate *) aTableDay { currentTableDay = aTableDay; @@ -174,6 +235,16 @@ return currentTableDay; } +- (void) setCurrentCalendar: (NSMutableArray *) aCalendar +{ + currentCalendar = aCalendar; +} + +- (NSMutableArray *) currentCalendar +{ + return currentCalendar; +} + - (void) setCurrentTableHour: (NSString *) aTableHour { currentTableHour = aTableHour; @@ -226,6 +297,16 @@ return [dateFormatter shortFormattedDate: currentTableDay]; } +- (NSString *) labelForCalendar +{ + return [NSString stringWithFormat:[currentCalendar objectForKey:@"displayName"]]; +} + +- (NSString *) colorForCalendar +{ + return [NSString stringWithFormat:[currentCalendar objectForKey:@"color"]]; +} + // - (NSDictionary *) _adjustedAppointment: (NSDictionary *) anAppointment // forStart: (NSCalendarDate *) start // andEnd: (NSCalendarDate *) end @@ -318,7 +399,15 @@ - (NSString *) daysViewClasses { - return [NSString stringWithFormat: @"daysView daysViewFor%dDays", numberOfDays]; + NSString *daysView; + + if ([currentView isEqualToString:@"multicolumndayview"]) + daysView = @"daysView daysViewForMultipleDays"; + + else + daysView = [NSString stringWithFormat: @"daysView daysViewFor%dDays", numberOfDays]; + + return daysView; } - (NSString *) dayClasses @@ -326,19 +415,25 @@ NSMutableString *classes; unsigned int currentDayNbr, realDayOfWeek; - currentDayNbr = [daysToDisplay indexOfObject: currentTableDay]; - realDayOfWeek = [currentTableDay dayOfWeek]; - classes = [NSMutableString string]; - [classes appendFormat: @"day day%d", currentDayNbr]; - if (numberOfDays > 1) + if ([currentView isEqualToString:@"multicolumndayview"]) + [classes appendFormat:@"day dayColumn"]; + + else { + currentDayNbr = [daysToDisplay indexOfObject: currentTableDay]; + realDayOfWeek = [currentTableDay dayOfWeek]; + + [classes appendFormat: @"day day%d", currentDayNbr]; + + if (numberOfDays > 1) { if (realDayOfWeek == 0 || realDayOfWeek == 6) [classes appendString: @" weekEndDay"]; if ([currentTableDay isToday]) [classes appendString: @" dayOfToday"]; } - + } + return classes; } @@ -358,4 +453,24 @@ return cellClass; } +- (BOOL) isMultiColumnView +{ + BOOL flag = NO; + + if ([currentView isEqualToString:@"multicolumndayview"]) + flag = YES; + + return flag; +} + +- (BOOL) isNotMultiColumnView +{ + BOOL flag = NO; + + if ([currentView isEqualToString:@"dayview"] || [currentView isEqualToString:@"weekview"]) + flag = YES; + + return flag; +} + @end diff --git a/UI/Scheduler/UIxCalListingActions.h b/UI/Scheduler/UIxCalListingActions.h index 4f12d8cfe..41c27cecd 100644 --- a/UI/Scheduler/UIxCalListingActions.h +++ b/UI/Scheduler/UIxCalListingActions.h @@ -43,6 +43,7 @@ NSString *value; NSString *criteria; NSString *userLogin; + NSString *currentView; BOOL dayBasedView; WORequest *request; SOGoDateFormatter *dateFormatter; diff --git a/UI/Scheduler/UIxCalListingActions.m b/UI/Scheduler/UIxCalListingActions.m index 8670dc383..b3026d3ed 100644 --- a/UI/Scheduler/UIxCalListingActions.m +++ b/UI/Scheduler/UIxCalListingActions.m @@ -78,6 +78,8 @@ static NSArray *tasksFields = nil; #define maxBlocks (offsetBlocks * 2) // maximum number of blocks to search // for a free slot (10 days) +@class SOGoAppointment; + @implementation UIxCalListingActions + (void) initialize @@ -121,6 +123,7 @@ static NSArray *tasksFields = nil; ASSIGN (dateFormatter, [user dateFormatterInContext: context]); ASSIGN (userTimeZone, [[user userDefaults] timeZone]); dayBasedView = NO; + currentView = nil; } return self; @@ -239,6 +242,7 @@ static NSArray *tasksFields = nil; endDate = nil; param = [request formValueForKey: @"view"]; + currentView = param; dayBasedView = ![param isEqualToString: @"monthview"]; } } @@ -1044,47 +1048,116 @@ _computeBlocksPosition (NSArray *blocks) /* ... _computeBlocksMultiplier() ... */ } +- (NSArray *) _selectedCalendars { + SOGoAppointmentFolders *co; + SOGoAppointmentFolder *folder; + NSMutableArray *selectedCalendars; + NSArray *folders; + NSString *fDisplayName; + NSNumber *isActive; + unsigned int count, foldersCount; + int max=0, i; + + co = [self clientObject]; + folders = [co subFolders]; + foldersCount = [folders count]; + selectedCalendars = [[NSMutableArray alloc] initWithCapacity: foldersCount]; + for (count = 0; count < foldersCount; count++) + { + folder = [folders objectAtIndex: count]; + isActive = [NSNumber numberWithBool: [folder isActive]]; + if ([isActive intValue] != 0) { + fDisplayName = [folder displayName]; + if (fDisplayName == nil) + fDisplayName = @""; + if ([fDisplayName isEqualToString: [co defaultFolderName]]) + fDisplayName = [self labelForKey: fDisplayName]; + [selectedCalendars addObject: fDisplayName]; + } + } + return selectedCalendars; +} + - (WOResponse *) eventsBlocksAction { int count, max; NSArray *events, *event, *eventsBlocks; - NSMutableArray *allDayBlocks, *blocks, *currentDay; + NSMutableArray *allDayBlocks, *blocks, *currentDay, *calendars, *eventsByCalendars, *eventsForCalendar; NSNumber *eventNbr; BOOL isAllDay; + int i, j; [self _setupContext]; - [self _prepareEventBlocks: &blocks withAllDays: &allDayBlocks]; - events = [self _fetchFields: eventsFields - forComponentOfType: @"vevent"]; - eventsBlocks = [NSArray arrayWithObjects: events, allDayBlocks, blocks, nil]; - max = [events count]; - for (count = 0; count < max; count++) - { - event = [events objectAtIndex: count]; - // NSLog(@"***[UIxCalListingActions eventsBlocksAction] %i = %@ : %@ / %@ / %@", count, - // [event objectAtIndex: eventTitleIndex], - // [event objectAtIndex: eventStartDateIndex], - // [event objectAtIndex: eventEndDateIndex], - // [event objectAtIndex: eventRecurrenceIdIndex]); - eventNbr = [NSNumber numberWithUnsignedInt: count]; - isAllDay = [[event objectAtIndex: eventIsAllDayIndex] boolValue]; - if (dayBasedView && isAllDay) - [self _fillBlocks: allDayBlocks withEvent: event withNumber: eventNbr]; - else - [self _fillBlocks: blocks withEvent: event withNumber: eventNbr]; - } + events = [self _fetchFields: eventsFields forComponentOfType: @"vevent"]; - max = [blocks count]; - for (count = 0; count < max; count++) + if ([currentView isEqualToString: @"multicolumndayview"]) { - currentDay = [blocks objectAtIndex: count]; - [currentDay sortUsingSelector: @selector (compareEventByStart:)]; - [self _addBlocksWidth: currentDay]; + calendars = [self _selectedCalendars]; + eventsByCalendars = [NSMutableArray arrayWithCapacity:[calendars count]]; + for (i = 0; i < [calendars count]; i++) // For each calendar + { + eventsForCalendar = [NSMutableArray array]; + [self _prepareEventBlocks: &blocks withAllDays: &allDayBlocks]; + for (j = 0; j < [events count]; j++) { + if ([[[events objectAtIndex:j] objectAtIndex:2] isEqualToString:[calendars objectAtIndex:i]]) { + [eventsForCalendar addObject: [events objectAtIndex:j]]; + } + } + eventsBlocks = [NSArray arrayWithObjects:eventsForCalendar, allDayBlocks, blocks, nil]; + max = [eventsForCalendar count]; + for (count = 0; count < max; count++) + { + event = [eventsForCalendar objectAtIndex: count]; + eventNbr = [NSNumber numberWithUnsignedInt: count]; + isAllDay = [[event objectAtIndex: eventIsAllDayIndex] boolValue]; + if (dayBasedView && isAllDay) + [self _fillBlocks: allDayBlocks withEvent: event withNumber: eventNbr]; + else + [self _fillBlocks: blocks withEvent: event withNumber: eventNbr]; + } + max = [blocks count]; + for (count = 0; count < max; count++) + { + currentDay = [blocks objectAtIndex: count]; + [currentDay sortUsingSelector: @selector (compareEventByStart:)]; + [self _addBlocksWidth: currentDay]; + } + + [eventsByCalendars insertObject:eventsBlocks atIndex:i]; + } + return [self _responseWithData: eventsByCalendars]; + } + else + { + [self _prepareEventBlocks: &blocks withAllDays: &allDayBlocks]; + eventsBlocks = [NSArray arrayWithObjects: events, allDayBlocks, blocks, nil]; + max = [events count]; + for (count = 0; count < max; count++) + { + event = [events objectAtIndex: count]; + // NSLog(@"***[UIxCalListingActions eventsBlocksAction] %i = %@ : %@ / %@ / %@", count, + // [event objectAtIndex: eventTitleIndex], + // [event objectAtIndex: eventStartDateIndex], + // [event objectAtIndex: eventEndDateIndex], + // [event objectAtIndex: eventRecurrenceIdIndex]); + eventNbr = [NSNumber numberWithUnsignedInt: count]; + isAllDay = [[event objectAtIndex: eventIsAllDayIndex] boolValue]; + if (dayBasedView && isAllDay) + [self _fillBlocks: allDayBlocks withEvent: event withNumber: eventNbr]; + else + [self _fillBlocks: blocks withEvent: event withNumber: eventNbr]; + } + + max = [blocks count]; + for (count = 0; count < max; count++) + { + currentDay = [blocks objectAtIndex: count]; + [currentDay sortUsingSelector: @selector (compareEventByStart:)]; + [self _addBlocksWidth: currentDay]; + } + return [self _responseWithData: eventsBlocks]; } - - return [self _responseWithData: eventsBlocks]; - // timeIntervalSinceDate: } - (NSString *) _getStatusClassForStatusCode: (int) statusCode diff --git a/UI/Scheduler/UIxCalMulticolumnDayView.m b/UI/Scheduler/UIxCalMulticolumnDayView.m index 6c1683d1a..b96241686 100644 --- a/UI/Scheduler/UIxCalMulticolumnDayView.m +++ b/UI/Scheduler/UIxCalMulticolumnDayView.m @@ -39,25 +39,25 @@ - (id) init { if ((self = [super init])) - { -// allAppointments = nil; - subscriptionUsers = nil; - hoursToDisplay = nil; - currentTableUser = nil; - currentTableHour = nil; -// dateFormatter = [[SOGoDateFormatter alloc] -// initWithLocale: [self locale]]; - } - + { + // allAppointments = nil; + subscriptionUsers = nil; + hoursToDisplay = nil; + currentTableUser = nil; + currentTableHour = nil; + // dateFormatter = [[SOGoDateFormatter alloc] + // initWithLocale: [self locale]]; + } + return self; } - (void) dealloc { -// [allAppointments release]; + // [allAppointments release]; [subscriptionUsers release]; [hoursToDisplay release]; -// [dateFormatter release]; + // [dateFormatter release]; [super dealloc]; } @@ -188,16 +188,6 @@ /* fetching */ -// - (NSCalendarDate *) startDate -// { -// return [[self selectedDate] beginOfDay]; -// } - -// - (NSCalendarDate *) endDate -// { -// return [[self selectedDate] endOfDay]; -// } - // - (NSArray *) appointmentsForCurrentUser // { // NSMutableArray *filteredAppointments; @@ -292,4 +282,11 @@ * (100.0 / [users count]))]; } +- (id ) defaultAction +{ + [super setCurrentView: @"multicolumndayview"]; + + return self; +} + @end diff --git a/UI/Scheduler/UIxCalendarSelector.m b/UI/Scheduler/UIxCalendarSelector.m index 7da4392b3..d5d9a56b1 100644 --- a/UI/Scheduler/UIxCalendarSelector.m +++ b/UI/Scheduler/UIxCalendarSelector.m @@ -96,34 +96,34 @@ _intValueFromHex (NSString *hexString) NSNumber *isActive; if (!calendars) + { + co = [self clientObject]; + folders = [co subFolders]; + max = [folders count]; + calendars = [[NSMutableArray alloc] initWithCapacity: max]; + for (count = 0; count < max; count++) { - co = [self clientObject]; - folders = [co subFolders]; - max = [folders count]; - calendars = [[NSMutableArray alloc] initWithCapacity: max]; - for (count = 0; count < max; count++) - { - folder = [folders objectAtIndex: count]; - calendar = [NSMutableDictionary dictionary]; - folderName = [folder nameInContainer]; - fDisplayName = [folder displayName]; - if (fDisplayName == nil) - fDisplayName = @""; - if ([fDisplayName isEqualToString: [co defaultFolderName]]) - fDisplayName = [self labelForKey: fDisplayName]; - [calendar setObject: [NSString stringWithFormat: @"/%@", folderName] - forKey: @"id"]; - [calendar setObject: fDisplayName forKey: @"displayName"]; - [calendar setObject: folderName forKey: @"folder"]; - [calendar setObject: [folder calendarColor] forKey: @"color"]; - isActive = [NSNumber numberWithBool: [folder isActive]]; - [calendar setObject: isActive forKey: @"active"]; - [calendar setObject: [folder ownerInContext: context] - forKey: @"owner"]; - [calendars addObject: calendar]; - } + folder = [folders objectAtIndex: count]; + calendar = [NSMutableDictionary dictionary]; + folderName = [folder nameInContainer]; + fDisplayName = [folder displayName]; + if (fDisplayName == nil) + fDisplayName = @""; + if ([fDisplayName isEqualToString: [co defaultFolderName]]) + fDisplayName = [self labelForKey: fDisplayName]; + [calendar setObject: [NSString stringWithFormat: @"/%@", folderName] + forKey: @"id"]; + [calendar setObject: fDisplayName forKey: @"displayName"]; + [calendar setObject: folderName forKey: @"folder"]; + [calendar setObject: [folder calendarColor] forKey: @"color"]; + isActive = [NSNumber numberWithBool: [folder isActive]]; + [calendar setObject: isActive forKey: @"active"]; + [calendar setObject: [folder ownerInContext: context] + forKey: @"owner"]; + [calendars addObject: calendar]; } - + } + return calendars; } diff --git a/UI/Templates/SchedulerUI/UIxCalDayTable.wox b/UI/Templates/SchedulerUI/UIxCalDayTable.wox index 5bb9f63ee..3f488286d 100644 --- a/UI/Templates/SchedulerUI/UIxCalDayTable.wox +++ b/UI/Templates/SchedulerUI/UIxCalDayTable.wox @@ -7,51 +7,105 @@ xmlns:rsrc="OGo:url" xmlns:label="OGo:label">
    -

    -
    -
    + + + + +
    + +
    + +
    +
    +
    + + +
    + +
    +
    + +
    +
    +
    + + +
    + + +
    +
    +
    +
    +
    + + + + +
    + +
    +
    + +
    +
    +
    + + +
    + +
    +
    +
    +
    - + + +
    -
    -
    - -
    -
    -
    -
    - - - -
    -
    +
    + +
    +
    +
    + + + + +
    +
    + +
    + + + +
    +
    +
    +
    +
    +
    +
    +
    + + +
    +
    + +
    + + + +
    +
    +
    +
    +
    +
    +
    +
    diff --git a/UI/Templates/SchedulerUI/UIxCalDayView.wox b/UI/Templates/SchedulerUI/UIxCalDayView.wox index 676d65d54..83cf7c21c 100644 --- a/UI/Templates/SchedulerUI/UIxCalDayView.wox +++ b/UI/Templates/SchedulerUI/UIxCalDayView.wox @@ -40,6 +40,7 @@ className="UIxCalDayTable" startDate="startDate" const:CSSClass="dayOverview" - const:numberOfDays="1" /> + const:numberOfDays="1" + const:currentView="dayview"/>
    diff --git a/UI/Templates/SchedulerUI/UIxCalMulticolumnDayView.wox b/UI/Templates/SchedulerUI/UIxCalMulticolumnDayView.wox index 62ee604e3..862a0026b 100644 --- a/UI/Templates/SchedulerUI/UIxCalMulticolumnDayView.wox +++ b/UI/Templates/SchedulerUI/UIxCalMulticolumnDayView.wox @@ -5,40 +5,33 @@ xmlns:const="http://www.skyrix.com/od/constant" xmlns:rsrc="OGo:url" xmlns:label="OGo:label"> - + + + - - + + + + + + + + + + - + +
    -
    -
    -
    :00
    -
    -
    -
    -
    - -
    -
    -
    -
    -
    - -
    -
    -
    -
    -
    +
    - + \ No newline at end of file diff --git a/UI/Templates/SchedulerUI/UIxCalWeekView.wox b/UI/Templates/SchedulerUI/UIxCalWeekView.wox index 6b5debbb1..6e36775ef 100644 --- a/UI/Templates/SchedulerUI/UIxCalWeekView.wox +++ b/UI/Templates/SchedulerUI/UIxCalWeekView.wox @@ -40,6 +40,7 @@ className="UIxCalDayTable" startDate="startDate" const:CSSClass="weekOverview" - const:numberOfDays="7" /> + const:numberOfDays="7" + const:currentView="weekview"/>
    diff --git a/UI/WebServerResources/SchedulerUI.css b/UI/WebServerResources/SchedulerUI.css index 52eedff6b..c4cd4d8f7 100644 --- a/UI/WebServerResources/SchedulerUI.css +++ b/UI/WebServerResources/SchedulerUI.css @@ -392,7 +392,7 @@ DIV#daysView left: 0px; } DIV#daysView -{ top: 120px; +{ top: 97px; bottom: 0px; border-top: 1px solid #ccc; overflow: auto; @@ -400,11 +400,12 @@ DIV#daysView right: 0px;} DIV#calendarHeader -{ top: 50px; +{ top: 25px; border: 0px; - height: 100px; + height: 85px; right: 0px; } +DIV#calendarHeader DIV.calendarLabels, DIV#calendarHeader DIV.dayLabels, DIV#calendarHeader DIV.days { position: absolute; @@ -414,8 +415,16 @@ DIV#calendarHeader DIV.days /* 'right' is computed from JS code when daysView is first drawn */ overflow: hidden; } +DIV#calendarHeader DIV.calendarLabels +{ top: 11px; + height: 20px; + border-left: 1px solid #ccc; + text-align: center; + font-style:italic; + font-size:150%; +} DIV#calendarHeader DIV.dayLabels -{ top: 0px; +{ top: 32px; height: 35px; } DIV#calendarHeader DIV.dayLabels DIV.day @@ -432,7 +441,11 @@ DIV#calendarHeader DIV.dayLabels DIV#calendarHeader DIV.days { cursor: pointer; bottom: 0px; - top: 35px; } + top: 67px; + z-index:0; + border-bottom:1px solid #ccc; + background:white; + } DIV#calendarHeader DIV.day, DIV#daysView DIV.day @@ -530,7 +543,8 @@ DIV.monthView DIV.dayHeader text-align: right; cursor: pointer; color: #666; - -moz-user-select: none; } + -moz-user-select: none; + } DIV#monthDaysView DIV.selectedDay DIV.dayHeader { font-weight: bold; } @@ -540,7 +554,8 @@ DIV.monthView DIV.days cursor: pointer; bottom: 0px; left: 0px; - right: 0px; } + right: 0px; + } DIV.monthView DIV.day { position: absolute; @@ -1471,7 +1486,7 @@ DIV.event.draggable:hover DIV.rightDragGrip #ghostEndHour { bottom: -14px; } -DIV#nowLineDisplay +DIV.nowLineDisplay { position: relative; width: 100%; height: 2px; @@ -1486,3 +1501,38 @@ DIV#freeBusyReplicas DIV { display: inline-block; height: 2em; } TD.attendees A.button { float: left; left: 19px; margin-top: 5px; } + +DIV#calendarContent .alert-box { + color:#555; + border-radius:10px; + font-family:Tahoma,Geneva,Arial,sans-serif;font-size:11px; + padding:10px 10px 10px 36px; + margin:10px; +} + +DIV#calendarContent .alert-box span { + font-weight:bold; + text-transform:uppercase; +} + +.error { + background:#ffecec url('error.png') no-repeat 10px 50%; + border:1px solid #f5aca6; +} +.success { + background:#e9ffd9 url('success.png') no-repeat 10px 50%; + border:1px solid #a6ca8a; +} +.warning { + background:#fff8c4 url('warning.png') no-repeat 10px 50%; + border:1px solid #f2c779; +} +.notice { + background:#e3f7fc url('notice.png') no-repeat 10px 50%; + border:1px solid #8ed9f6; +} + + + + + diff --git a/UI/WebServerResources/SchedulerUI.js b/UI/WebServerResources/SchedulerUI.js index 8a3a44215..be7ced9b5 100644 --- a/UI/WebServerResources/SchedulerUI.js +++ b/UI/WebServerResources/SchedulerUI.js @@ -34,6 +34,8 @@ var categoriesStyleSheet = null; var clipboard = null; var eventsToCopy = []; + +// This should probably go in the generic.js function printView() { window.open("printView","","width=660,height=470"); @@ -43,6 +45,9 @@ function printView() { function newEvent(type, day, hour, duration) { var folder = null; + /* if (currentView == "multicolumndayview") { + Need to find where the click register is saved + }*/ if (UserDefaults['SOGoDefaultCalendar'] == 'personal') folder = $("calendarList").down("li"); else if (UserDefaults['SOGoDefaultCalendar'] == 'first') { @@ -911,8 +916,8 @@ function onDaySelect(node) { && day != currentDay); var td = $(node).getParentWithTagName("td"); - var table = $(td).getParentWithTagName("table"); - + + // var table = $(td).getParentWithTagName("table"); // log ("table.selected: " + table.selected); if (document.selectedDate) @@ -1589,7 +1594,7 @@ function refreshCalendarEvents(scrollEvent) { if (!currentDay) currentDay = todayDate.getDayString(); - if (currentView == "dayview") { + if (currentView == "dayview" || currentView == "multicolumndayview") { sd = currentDay; ed = sd; } @@ -1627,28 +1632,54 @@ function refreshCalendarEvents(scrollEvent) { "scrollEvent": scrollEvent}); } -function _parseEvents(list) { +function _parseEvents(list, calendars) { var newCalendarEvents = {}; - for (var i = 0; i < list.length; i++) { + if (currentView == "multicolumndayview") { + var list; + for (var i = 0; i < calendars.length; i++) { + list = calendars[i][0]; + for (var j = 0; j < list.length; j++) { + var event = list[j]; + var cname = event[0]; + var calendar = event[1]; + // log("parsed cname: " + cname + "; calendar: " + calendar); + var calendarDict = newCalendarEvents[calendar]; + if (!calendarDict) { + calendarDict = {}; + newCalendarEvents[calendar] = calendarDict; + } + var occurences = calendarDict[cname]; + if (!occurences) { + occurences = []; + calendarDict[cname] = occurences; + } + event.blocks = []; + occurences.push(event); + } + } + } + else { + for (var i = 0; i < list.length; i++) { var event = list[i]; var cname = event[0]; var calendar = event[1]; // log("parsed cname: " + cname + "; calendar: " + calendar); var calendarDict = newCalendarEvents[calendar]; if (!calendarDict) { - calendarDict = {}; - newCalendarEvents[calendar] = calendarDict; + calendarDict = {}; + newCalendarEvents[calendar] = calendarDict; } var occurences = calendarDict[cname]; if (!occurences) { - occurences = []; - calendarDict[cname] = occurences; + occurences = []; + calendarDict[cname] = occurences; } event.blocks = []; occurences.push(event); + } + } - return newCalendarEvents; } @@ -1680,15 +1711,28 @@ function refreshCalendarEventsCallback(http) { if (http.readyState == 4 && http.status == 200) { if (http.responseText.length > 0) { - var eventsBlocks = http.responseText.evalJSON(true); - calendarEvents = _parseEvents(eventsBlocks[0]); - if (currentView == "monthview") - _drawMonthCalendarEvents(eventsBlocks[2], eventsBlocks[0]); - else { - _drawCalendarAllDayEvents(eventsBlocks[1], eventsBlocks[0]); - _drawCalendarEvents(eventsBlocks[2], eventsBlocks[0]); - } - _setupEventsDragAndDrop(eventsBlocks[0]); + var eventsBlocks = http.responseText.evalJSON(true); + + if (currentView == "multicolumndayview") { + calendarEvents = _parseEvents(null, eventsBlocks); + _drawCalendarAllDayEvents(null, null, eventsBlocks); + _drawCalendarEvents(null, null, eventsBlocks); + for (var i = 0 ; i < eventsBlocks.length; i++) { + _setupEventsDragAndDrop(eventsBlocks[i][0]); + } + } + else { + calendarEvents = _parseEvents(eventsBlocks[0], null); + allDayEventsList = eventsBlocks[1]; + eventsList = eventsBlocks[2]; + if (currentView == "monthview") + _drawMonthCalendarEvents(eventsList, eventsBlocks[0], null); + else { + _drawCalendarAllDayEvents(allDayEventsList, eventsBlocks[0], null); + _drawCalendarEvents(eventsList, eventsBlocks[0], null); + } + _setupEventsDragAndDrop(eventsBlocks[0]); + } resetCategoriesStyles(); onWindowResize(null); } @@ -1851,20 +1895,37 @@ function newBaseEventDIV(eventRep, event, eventText) { return eventCell; } -function _drawCalendarAllDayEvents(events, eventsData) { +function _drawCalendarAllDayEvents(events, eventsData, columnsData) { var headerView = $("calendarHeader"); var subdivs = headerView.childNodesWithTag("div"); - var days = subdivs[1].childNodesWithTag("div"); - for (var i = 0; i < days.length; i++) { + + if (currentView == "multicolumndayview"){ + var days = subdivs[2].childNodesWithTag("div"); + for (var i = 0; i < days.length; i++) { + var parentDiv = days[i]; + var calendar = columnsData[i]; + var calendarAllDayEvents = calendar[1][0]; + var calendarAllDayEventsData = calendar[0]; + for (var j = 0; j < calendarAllDayEvents.length; j++) { + var eventRep = calendarAllDayEvents[j]; + var nbr = eventRep.nbr; + var eventCell = newAllDayEventDIV(eventRep, calendarAllDayEventsData[nbr]); + parentDiv.appendChild(eventCell); + } + } + } + else { + var days = subdivs[1].childNodesWithTag("div"); + for (var i = 0; i < days.length; i++) { var parentDiv = days[i]; for (var j = 0; j < events[i].length; j++) { - var eventRep = events[i][j]; - var nbr = eventRep.nbr; - var eventCell = newAllDayEventDIV(eventRep, eventsData[nbr]); - parentDiv.appendChild(eventCell); + var eventRep = events[i][j]; + var nbr = eventRep.nbr; + var eventCell = newAllDayEventDIV(eventRep, eventsData[nbr]); + parentDiv.appendChild(eventCell); } + } } - resizeCalendarHeaderDIV(); } @@ -1876,15 +1937,17 @@ function resizeCalendarHeaderDIV() { var daysView = $("daysView"); if (headerView && daysView) { /* consts */ - var headerViewBaseHeight = 70; - var daysViewBaseTop = 120; - var maxDelta = 80; + var headerViewBaseHeight = 90; + var daysViewBaseTop = 95; /* /consts */ var maxEventPerDay = 0; var subdivs = headerView.childNodesWithTag("div"); - var days = subdivs[1].childNodesWithTag("div"); + if (currentView == "multicolumndayview") + var days = subdivs[2].childNodesWithTag("div"); + else + var days = subdivs[1].childNodesWithTag("div"); for (var i = 0; i < days.length; i++) { var parentDiv = days[i]; var divs = parentDiv.childNodesWithTag("div"); @@ -1892,16 +1955,31 @@ function resizeCalendarHeaderDIV() { maxEventPerDay = divs.length; } } - - if (maxEventPerDay > 2) { - var delta = ((maxEventPerDay - 2) * 22) + 10; - if (delta > maxDelta) { - delta = maxDelta; - } - daysView.style.top = String(delta + daysViewBaseTop) + "px"; - headerView.style.height = String(delta + headerViewBaseHeight) + "px"; + if (maxEventPerDay > 0 && maxEventPerDay <= 4) { + var moveDaysView = (maxEventPerDay * 19.5); + var expendHeaderHeight = ((maxEventPerDay - 1) * 20); + var deltaMax = 60; + if (expendHeaderHeight > deltaMax){ + expendHeaderHeight = deltaMax; + moveDaysView = deltaMax; + } + daysView.style.top = String(daysViewBaseTop + moveDaysView) + "px"; + headerView.style.height = String(headerViewBaseHeight + expendHeaderHeight) + "px"; + } + + else if (maxEventPerDay > 4) { + var deltaMax = 60; + daysView.style.top = String(daysViewBaseTop + deltaMax + 19) + "px"; + headerView.style.height = String(headerViewBaseHeight + deltaMax) + "px"; } else { + var headerDays = document.getElementsByClassName("days")[0]; + headerDays.observe("mouseenter", function(event){ + headerDays.style.zIndex = "1"; + }); + headerDays.observe("mouseleave", function(event){ + headerDays.style.zIndex = "0"; + }); daysView.style.top = null; headerView.style.height = null; } @@ -1916,21 +1994,37 @@ function newAllDayEventDIV(eventRep, event) { return eventCell; } -function _drawCalendarEvents(events, eventsData) { +function _drawCalendarEvents(events, eventsData, columnsData) { var daysView = $("daysView"); var subdivs = daysView.childNodesWithTag("div"); for (var i = 0; i < subdivs.length; i++) { var subdiv = subdivs[i]; if (subdiv.hasClassName("days")) { var days = subdiv.childNodesWithTag("div"); - for (var j = 0; j < days.length; j++) { + if (currentView == "multicolumndayview") { + for (var j = 0; j < days.length; j++) { + var parentDiv = days[j].childNodesWithTag("div")[0]; + var calendar = columnsData[j]; + var calendarEvents = calendar[2][0]; + var calendarEventsData = calendar[0]; + for (var k = 0; k < calendarEvents.length; k++) { + var eventRep = calendarEvents[k]; + var nbr = eventRep.nbr; + var eventCell = newEventDIV(eventRep, calendarEventsData[nbr]); + parentDiv.appendChild(eventCell); + } + } + } + else { + for (var j = 0; j < days.length; j++) { var parentDiv = days[j].childNodesWithTag("div")[0]; for (var k = 0; k < events[j].length; k++) { - var eventRep = events[j][k]; - var nbr = eventRep.nbr; - var eventCell = newEventDIV(eventRep, eventsData[nbr]); - parentDiv.appendChild(eventCell); + var eventRep = events[j][k]; + var nbr = eventRep.nbr; + var eventCell = newEventDIV(eventRep, eventsData[nbr]); + parentDiv.appendChild(eventCell); } + } } } } @@ -2009,7 +2103,8 @@ function adjustCalendarHeaderDIV() { var delta = ch.clientWidth - dv.clientWidth - 1; var styleElement = document.createElement("style"); styleElement.type = "text/css"; - var selectors = ["DIV#calendarHeader DIV.dayLabels", + var selectors = ["DIV#calendarHeader DIV.calendarLabels", + "DIV#calendarHeader DIV.dayLabels", "DIV#calendarHeader DIV.days"]; var rule = ("right: " + delta + "px"); if (styleElement.styleSheet && styleElement.styleSheet.addRule) { @@ -2026,6 +2121,37 @@ function adjustCalendarHeaderDIV() { } } +function adjustMultiColumnCalendarHeaderDIV() { + + var ch = $("calendarHeader"); + var calendarLabels = ch.getElementsByClassName("calendarLabels")[0]; + var calendarsToDisplay = calendarLabels.getElementsByClassName("calendarsToDisplay"); + var dayLabels = ch.getElementsByClassName("dayLabels")[0].getElementsByClassName("dayColumn")[0]; + var days = ch.getElementsByClassName("days")[0].getElementsByClassName("dayColumn"); + var daysView = $("daysView").getElementsByClassName("dayColumn"); + + var nbCalendars = calendarsToDisplay.length; + + if (nbCalendars > 0) { + var width = 100/nbCalendars; + var left = 0; + var position = "absolute"; + for(var i=0; i < nbCalendars; i++){ + calendarsToDisplay[i].setStyle({ width: width + '%', left: left + '%', position: position}).show(); + days[i].setStyle({ width: width + '%', left: left + '%'}).show(); + daysView[i].setStyle({ width: width + '%', left: left + '%'}).show(); + left += width; + } + dayLabels.setStyle({ width: '100%'}).show(); + } + else { + $("calendarHeader").remove(); + $("daysView").remove(); + var htmlText = "
    " + _("notice:") + ""+_("Please go ahead and select calendars")+"
    "; + $("calendarContent").innerHTML = htmlText; + } +} + function calendarDisplayCallback(http) { var div = $("calendarView"); var daysView = $("daysView"); @@ -2054,6 +2180,9 @@ function calendarDisplayCallback(http) { currentView = http.callbackData["view"]; if (http.callbackData["day"]) currentDay = http.callbackData["day"]; + + if (currentView == "multicolumndayview") + adjustMultiColumnCalendarHeaderDIV(); // Initialize contextual menu var menu = new Array(onMenuNewEventClick, @@ -2067,10 +2196,7 @@ function calendarDisplayCallback(http) { onMenuRawEvent ); var observer; - if (currentView == 'dayview') { - observer = $("daysView"); - } - else if (currentView == 'weekview') { + if (currentView == 'dayview' || currentView == 'weekview' || currentView == 'multicolumndayview') { observer = $("daysView"); } else { @@ -2249,9 +2375,9 @@ function onHeaderClick(event) { function refreshCurrentFolder(id) { if (id == 'tasks') - refreshTasks(); + refreshTasks(); else - refreshEvents(); + refreshEvents(); } /* refreshes the "unifinder" list */ @@ -3367,24 +3493,42 @@ function drawNowLine() { d = "0" + d; var day = today.getFullYear() + "" + m + "" + d; var targets = $$("DIV#daysView DIV.days DIV.day[day=" + day - + "] DIV.clickableHourCell"); + + "] DIV.hourCells"); + } + else if (currentView == "multicolumndayview") { + var targets = $$("DIV#daysView DIV.hourCells"); } else if (currentView == "weekview") - var targets = $$("DIV#daysView DIV.days DIV.dayOfToday DIV.clickableHourCell"); + var targets = $$("DIV#daysView DIV.days DIV.dayOfToday DIV.hourCells"); - if (targets) { - var target = targets[hours]; + if (targets[0]) { + if (currentView == "multicolumndayview") { + var nbCalendars = targets.length; + for(var i = 0; i < nbCalendars; i++){ + var target = targets[i].getElementsByClassName("clickableHourCell")[hours]; - if (target) { - var div = $("nowLineDisplay"); + if (target) { + var div = targets[i].getElementsByClassName("nowLineDisplay")[0]; + if (!div) + div = new Element("div", {'class': 'nowLineDisplay'}); + + div.style.top = parseInt((minutes * target.offsetHeight / 60) - 1) + "px"; + target.insertBefore(div, target.firstChild); + } + } + } + else { + var target = targets[0].getElementsByClassName("clickableHourCell")[hours]; + if (target) { + var div = targets[0].getElementsByClassName("nowLineDisplay")[0]; if (!div) - div = new Element("div", {'id': 'nowLineDisplay'}); + div = new Element("div", {'class': 'nowLineDisplay'}); - div.style.top = parseInt((minutes * target.offsetHeight / 60) - 1) + "px"; - target.insertBefore(div, target.firstChild); - - setTimeout("drawNowLine ();", 60000); // 1 min. + div.style.top = parseInt((minutes * target.offsetHeight / 60) - 1) + "px"; + target.insertBefore(div, target.firstChild); + } } + setTimeout("drawNowLine ();", 60000); // 1 min. } } From 5b3de04fc19daef85749fe34b969724f78a6b7ab Mon Sep 17 00:00:00 2001 From: Alexandre Cloutier Date: Fri, 20 Jun 2014 13:27:04 -0400 Subject: [PATCH 24/46] Fix error from the last commit --- UI/Scheduler/UIxCalDayTable.m | 2 -- 1 file changed, 2 deletions(-) diff --git a/UI/Scheduler/UIxCalDayTable.m b/UI/Scheduler/UIxCalDayTable.m index 7b05e06c5..ef635d590 100644 --- a/UI/Scheduler/UIxCalDayTable.m +++ b/UI/Scheduler/UIxCalDayTable.m @@ -79,8 +79,6 @@ [weekDays release]; [daysToDisplay release]; [calendarsToDisplay release]; - [currentView release]; - [currentCalendar release]; [hoursToDisplay release]; [dateFormatter release]; [timeFormat release]; From 3523dc489f00c147279217faab9ad12504ca7340 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Mon, 23 Jun 2014 12:19:02 -0400 Subject: [PATCH 25/46] Fix for bug #2825 --- SoObjects/SOGo/GCSSpecialQueries+SOGoCacheObject.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SoObjects/SOGo/GCSSpecialQueries+SOGoCacheObject.m b/SoObjects/SOGo/GCSSpecialQueries+SOGoCacheObject.m index b0e9eea52..cef17775b 100644 --- a/SoObjects/SOGo/GCSSpecialQueries+SOGoCacheObject.m +++ b/SoObjects/SOGo/GCSSpecialQueries+SOGoCacheObject.m @@ -72,7 +72,7 @@ = (@"CREATE TABLE %@ (" @" c_path VARCHAR(255) PRIMARY KEY," @" c_parent_path VARCHAR(255)," - @" c_type TINYINT NOT NULL," + @" c_type TINYINT UNSIGNED NOT NULL," @" c_creationdate INT NOT NULL," @" c_lastmodified INT NOT NULL," @" c_version INT NOT NULL DEFAULT 0," From 22f5ed62fef337f9fa2f84318e3c24962ee3c207 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Wed, 25 Jun 2014 10:14:28 -0400 Subject: [PATCH 26/46] Fixed tests regarding default permissions on CalDAV collections --- Tests/Integration/test-davacl.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/Tests/Integration/test-davacl.py b/Tests/Integration/test-davacl.py index a254f25f9..a8a1a5bac 100755 --- a/Tests/Integration/test-davacl.py +++ b/Tests/Integration/test-davacl.py @@ -401,7 +401,17 @@ class DAVCalendarAclTest(DAVAclTest): else: expStatus = 207 privileges = self._currentUserPrivilegeSet(self.resource, expStatus) - self._comparePrivilegeSets(expectedPrivileges, privileges) + + # When comparing privileges on DAV collection, we remove all 'default' + # privileges on the collection. + privileges_set = set(privileges); + for x in ("public", "private", "confidential"): + privileges_set.discard("{urn:inverse:params:xml:ns:inverse-dav}viewwhole-%s-records" % x) + privileges_set.discard("{urn:inverse:params:xml:ns:inverse-dav}viewdant-%s-records" % x) + privileges_set.discard("{urn:inverse:params:xml:ns:inverse-dav}modify-%s-records" % x) + privileges_set.discard("{urn:inverse:params:xml:ns:inverse-dav}respondto-%s-records" %x) + + self._comparePrivilegeSets(expectedPrivileges, list(privileges_set)) def _testEventDAVAcl(self, event_class, right, error_code): icsClass = self.classToICSClass[event_class].lower() From 5419f411e5bae58cc17ab22b3b95a88efab74252 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Wed, 25 Jun 2014 15:05:25 -0400 Subject: [PATCH 27/46] Fix for bug #2734 --- ActiveSync/SOGoActiveSyncDispatcher+Sync.m | 63 +++++++++++++++++++--- ActiveSync/SOGoActiveSyncDispatcher.m | 40 ++++++++++++++ NEWS | 1 + 3 files changed, 98 insertions(+), 6 deletions(-) diff --git a/ActiveSync/SOGoActiveSyncDispatcher+Sync.m b/ActiveSync/SOGoActiveSyncDispatcher+Sync.m index 8c206baaf..024b2a2a7 100644 --- a/ActiveSync/SOGoActiveSyncDispatcher+Sync.m +++ b/ActiveSync/SOGoActiveSyncDispatcher+Sync.m @@ -126,6 +126,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. [[o properties] removeObjectForKey: @"SyncKey"]; [[o properties] removeObjectForKey: @"SyncCache"]; [[o properties] removeObjectForKey: @"DateCache"]; + [[o properties] removeObjectForKey: @"MoreAvailable"]; [[o properties] addEntriesFromDictionary: theFolderMetadata]; [o save]; @@ -477,21 +478,70 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. lastServerKey: (NSString **) theLastServerKey { - NSMutableDictionary *folderMetadata; + NSMutableDictionary *folderMetadata, *dateCache, *syncCache; NSMutableString *s; BOOL more_available; int i, max; + s = [NSMutableString string]; + + more_available = NO; + + if (theFolderType == ActiveSyncMailFolder && !([theSyncKey isEqualToString: @"-1"]) && theFilterType) + { + NSArray *allKeys; + NSString *key; + int softdelete_count; + + softdelete_count = 0; + + folderMetadata = [self _folderMetadataForKey: [theCollection nameInContainer]]; + dateCache = [folderMetadata objectForKey: @"DateCache"]; + syncCache = [folderMetadata objectForKey: @"SyncCache"]; + + allKeys = [dateCache allKeys]; + for (i = 0; i < [allKeys count]; i++) + { + key = [allKeys objectAtIndex: i]; + + if ([[dateCache objectForKey:key] compare: theFilterType] == NSOrderedAscending) + { + [s appendString: @""]; + [s appendFormat: @"%@", key]; + [s appendString: @""]; + + [syncCache removeObjectForKey: key]; + [dateCache removeObjectForKey: key]; + + softdelete_count++; + } + + if (softdelete_count >= theWindowSize) + { + [folderMetadata setObject: [NSNumber numberWithBool: YES] forKey: @"MoreAvailable"]; + [self _setFolderMetadata: folderMetadata forKey: [theCollection nameInContainer]]; + + more_available = YES; + *theLastServerKey = theSyncKey; + + // Since WindowSize is reached don't even try to add more to the response, let's just + // jump to the end and return the response immediately + goto return_response; + } + } + + [folderMetadata removeObjectForKey: @"MoreAvailable"]; + [self _setFolderMetadata: folderMetadata forKey: [theCollection nameInContainer]]; + } + // // No changes in the collection - 2.2.2.19.1.1 Empty Sync Request. // We check this and we don't generate any commands if we don't have to. // - if ([theSyncKey isEqualToString: [theCollection davCollectionTag]]) + if ([theSyncKey isEqualToString: [theCollection davCollectionTag]] && !([s length])) return; - s = [NSMutableString string]; - more_available = NO; switch (theFolderType) @@ -614,7 +664,6 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. case ActiveSyncMailFolder: default: { - NSMutableDictionary *syncCache, *dateCache; SOGoSyncCacheObject *lastCacheObject, *aCacheObject; NSMutableArray *allCacheObjects, *sortedBySequence; @@ -644,6 +693,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. [folderMetadata setObject: [NSMutableDictionary dictionary] forKey: @"SyncCache"]; [folderMetadata setObject: [NSMutableDictionary dictionary] forKey: @"DateCache"]; } + // Check whether GUID in cache is equal to the GUID from imap - this is to avoid cache corruptions if a folder has been renamed and a new folder // with the same name has been created but folderSync has not yet updated the cache if (!([[theCollection nameInContainer] isEqualToString: @@ -805,6 +855,8 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. break; } // switch (folderType) ... + return_response: + if ([s length]) { [theBuffer appendString: @""]; @@ -1008,7 +1060,6 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. davCollectionTag = [collection davCollectionTag]; } - // Generate the response buffer [theBuffer appendString: @""]; diff --git a/ActiveSync/SOGoActiveSyncDispatcher.m b/ActiveSync/SOGoActiveSyncDispatcher.m index b98ce3bd2..82c1868fc 100644 --- a/ActiveSync/SOGoActiveSyncDispatcher.m +++ b/ActiveSync/SOGoActiveSyncDispatcher.m @@ -64,6 +64,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #import #import #import +#import #import #import #import @@ -170,6 +171,41 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. return [o properties]; } +- (unsigned int) _softDeleteCountWithFilter: (NSCalendarDate *) theFilter + collectionId: (NSString *) theCollectionId +{ + NSMutableDictionary *dateCache; + NSMutableArray *sdUids; + SOGoCacheGCSObject *o; + NSArray *allKeys; + NSString *key; + + int i; + + sdUids = [NSMutableArray array]; + + if (theFilter) + { + o = [SOGoCacheGCSObject objectWithName: [NSString stringWithFormat: @"%@+folder%@", [context objectForKey: @"DeviceId"], theCollectionId] inContainer: nil]; + [o setObjectType: ActiveSyncGlobalCacheObject]; + [o setTableUrl: [self folderTableURL]]; + [o reloadIfNeeded]; + + dateCache = [[o properties] objectForKey: @"DateCache"]; + allKeys = [dateCache allKeys]; + + for (i = 0; i < [allKeys count]; i++) + { + key = [allKeys objectAtIndex: i]; + + if ([[dateCache objectForKey:key] compare: theFilter ] == NSOrderedAscending) + [sdUids addObject: [dateCache objectForKey:key]]; + } + } + + return [sdUids count]; +} + - (id) globallyUniqueIDToIMAPFolderName: (NSString *) theIdToTranslate type: (SOGoMicrosoftActiveSyncFolderType) theFolderType { @@ -919,6 +955,10 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. sortOrdering: @"REVERSE ARRIVAL" threaded: NO]; count = [uids count]; + + // Add the number of UIDs expected to "soft delete" + count += [self _softDeleteCountWithFilter: filter collectionId: realCollectionId]; + } else { diff --git a/NEWS b/NEWS index 42cc196d5..46be9433c 100644 --- a/NEWS +++ b/NEWS @@ -5,6 +5,7 @@ Enhancements - contacts photos are now synchronized using ActiveSync (#2807) - implemented the GetAttachment ActiveSync command (#2808) - implemented the Ping ActiveSync command + - added "soft deletes" support for ActiveSync (#2734) Bug fixes - better handling of empty "Flag" messages over ActiveSync (#2806) From d7d458a934b407bea6aa7e1818e71b5d544cf705 Mon Sep 17 00:00:00 2001 From: Alexandre Cloutier Date: Wed, 25 Jun 2014 17:39:48 -0400 Subject: [PATCH 28/46] multiColumns print view + bugFixes --- .../English.lproj/Localizable.strings | 2 + UI/Scheduler/UIxCalViewPrint.m | 7 +- UI/Templates/SchedulerUI/UIxCalViewPrint.wox | 10 + UI/WebServerResources/SchedulerUI.css | 7 +- UI/WebServerResources/SchedulerUI.js | 118 ++--- UI/WebServerResources/UIxCalViewPrint.css | 30 +- UI/WebServerResources/UIxCalViewPrint.js | 402 +++++++++++++++--- 7 files changed, 446 insertions(+), 130 deletions(-) diff --git a/UI/Scheduler/English.lproj/Localizable.strings b/UI/Scheduler/English.lproj/Localizable.strings index 8fb9bd5b0..d884803b3 100644 --- a/UI/Scheduler/English.lproj/Localizable.strings +++ b/UI/Scheduler/English.lproj/Localizable.strings @@ -155,6 +155,7 @@ "What to Print" = "What to Print"; "Options" = "Options"; "Tasks with no due date" = "Tasks with no due date"; +"Display working hours only" = "Display working hours only"; "Completed tasks" = "Completed Tasks"; /* Appointments */ @@ -313,6 +314,7 @@ "Repeat" = "Repeat"; "Daily" = "Daily"; +"Multi-Columns" = "Multi-Columns"; "Weekly" = "Weekly"; "Monthly" = "Monthly"; "Yearly" = "Yearly"; diff --git a/UI/Scheduler/UIxCalViewPrint.m b/UI/Scheduler/UIxCalViewPrint.m index af94b9792..72357161e 100644 --- a/UI/Scheduler/UIxCalViewPrint.m +++ b/UI/Scheduler/UIxCalViewPrint.m @@ -32,21 +32,22 @@ static NSArray *layoutItems = nil; { if (!layoutItems) { - layoutItems = [NSArray arrayWithObjects: @"LIST", @"Daily", @"Weekly", nil]; + layoutItems = [NSArray arrayWithObjects: @"LIST", @"Daily", @"Multi-Columns", @"Weekly", nil]; [layoutItems retain]; } } + - (id) init { item = nil; - return [super init]; + + return self; } - (void) dealloc { [item release]; - [super dealloc]; } /****************************************************************/ diff --git a/UI/Templates/SchedulerUI/UIxCalViewPrint.wox b/UI/Templates/SchedulerUI/UIxCalViewPrint.wox index cbee832c1..9dd381879 100644 --- a/UI/Templates/SchedulerUI/UIxCalViewPrint.wox +++ b/UI/Templates/SchedulerUI/UIxCalViewPrint.wox @@ -81,6 +81,16 @@ + + + + + + string="itemPrintLayoutText" selection="parentPrintLayout" />
    +
    +
    - + diff --git a/UI/WebServerResources/UIxCalViewPrint.js b/UI/WebServerResources/UIxCalViewPrint.js index f385d7991..1fa1b6ddd 100644 --- a/UI/WebServerResources/UIxCalViewPrint.js +++ b/UI/WebServerResources/UIxCalViewPrint.js @@ -130,6 +130,9 @@ function addCalendarsColor () { if (allCalendars.children[i].down("input").checked){ folderName = allCalendars.children[i].getAttribute("id").substr(1); color = allColors["sogo1:Calendar/" + folderName]; + if (!color) { + color = "#AAAAAA"; + } appendStyleElement(folderName, color); } } @@ -210,11 +213,11 @@ function refreshEventsCallback(http) { $("rightFrameEvents").innerHTML = ""; if ($("printLayoutList").value == "0" && eventsBlocks.length > 0) { _drawEventsCells(eventsBlocks); - adjustFrames(); } else { updateDisplayView(null, currentPreview); } + adjustFrames(); } } else From 0fb7135335810a31c8936a3e58680f93c550b0c2 Mon Sep 17 00:00:00 2001 From: Alexandre Cloutier Date: Mon, 30 Jun 2014 13:36:12 -0400 Subject: [PATCH 39/46] bugfixes --- UI/Scheduler/UIxCalListingActions.m | 12 ++++-------- UI/WebServerResources/SchedulerUI.js | 15 ++++++++------- UI/WebServerResources/UIxCalViewPrint.js | 11 ++++++++--- UI/WebServerResources/error.png | Bin 0 -> 712 bytes UI/WebServerResources/notice.png | Bin 0 -> 476 bytes UI/WebServerResources/success.png | Bin 0 -> 704 bytes UI/WebServerResources/warning.png | Bin 0 -> 483 bytes 7 files changed, 20 insertions(+), 18 deletions(-) create mode 100755 UI/WebServerResources/error.png create mode 100755 UI/WebServerResources/notice.png create mode 100755 UI/WebServerResources/success.png create mode 100755 UI/WebServerResources/warning.png diff --git a/UI/Scheduler/UIxCalListingActions.m b/UI/Scheduler/UIxCalListingActions.m index 7c34b8f71..607dc9062 100644 --- a/UI/Scheduler/UIxCalListingActions.m +++ b/UI/Scheduler/UIxCalListingActions.m @@ -1051,7 +1051,7 @@ _computeBlocksPosition (NSArray *blocks) SOGoAppointmentFolder *folder; NSMutableArray *selectedCalendars; NSArray *folders; - NSString *fDisplayName; + NSString *fUID; NSNumber *isActive; unsigned int count, foldersCount; int max=0, i; @@ -1065,12 +1065,8 @@ _computeBlocksPosition (NSArray *blocks) folder = [folders objectAtIndex: count]; isActive = [NSNumber numberWithBool: [folder isActive]]; if ([isActive intValue] != 0) { - fDisplayName = [folder displayName]; - if (fDisplayName == nil) - fDisplayName = @""; - if ([fDisplayName isEqualToString: [co defaultFolderName]]) - fDisplayName = [self labelForKey: fDisplayName]; - [selectedCalendars addObject: fDisplayName]; + fUID = [folder nameInContainer]; + [selectedCalendars addObject: fUID]; } } return selectedCalendars; @@ -1098,7 +1094,7 @@ _computeBlocksPosition (NSArray *blocks) eventsForCalendar = [NSMutableArray array]; [self _prepareEventBlocks: &blocks withAllDays: &allDayBlocks]; for (j = 0; j < [events count]; j++) { - if ([[[events objectAtIndex:j] objectAtIndex:2] isEqualToString:[calendars objectAtIndex:i]]) { + if ([[[events objectAtIndex:j] objectAtIndex:1] isEqualToString:[calendars objectAtIndex:i]]) { [eventsForCalendar addObject: [events objectAtIndex:j]]; } } diff --git a/UI/WebServerResources/SchedulerUI.js b/UI/WebServerResources/SchedulerUI.js index 8d2004357..75a5c89c7 100644 --- a/UI/WebServerResources/SchedulerUI.js +++ b/UI/WebServerResources/SchedulerUI.js @@ -417,13 +417,14 @@ function deleteEvent() { } function deleteEventFromListConfirm() { - if (document.deleteEventAjaxRequest) { - document.deleteEventAjaxRequest.aborted = true; - document.deleteEventAjaxRequest.abort(); - } - - _batchDeleteEvents(); - disposeDialog(); + if (document.deleteEventAjaxRequest) { + document.deleteEventAjaxRequest.aborted = true; + document.deleteEventAjaxRequest.abort(); + } + + _batchDeleteEvents(); + refreshTasks(); + disposeDialog(); } function deleteEventFromViewConfirm() { diff --git a/UI/WebServerResources/UIxCalViewPrint.js b/UI/WebServerResources/UIxCalViewPrint.js index 1fa1b6ddd..2eb382f73 100644 --- a/UI/WebServerResources/UIxCalViewPrint.js +++ b/UI/WebServerResources/UIxCalViewPrint.js @@ -123,15 +123,20 @@ function previewDisplayCallback(http) { } function addCalendarsColor () { - var activeCalendarsId = []; var allCalendars = window.parent$("calendarList"); var allColors = window.parentvar("UserSettings")['Calendar']['FolderColors']; + for (var i = 0; i < allCalendars.children.length; i++) { if (allCalendars.children[i].down("input").checked){ + owner = allCalendars.children[i].getAttribute("owner"); folderName = allCalendars.children[i].getAttribute("id").substr(1); - color = allColors["sogo1:Calendar/" + folderName]; + + color = allColors[owner + ":Calendar/" + folderName]; if (!color) { - color = "#AAAAAA"; + if(folderName.split("_")[1]) + color = allColors[owner + ":Calendar/" + folderName.split("_")[1]]; + else + color = "#AAAAAA"; } appendStyleElement(folderName, color); } diff --git a/UI/WebServerResources/error.png b/UI/WebServerResources/error.png new file mode 100755 index 0000000000000000000000000000000000000000..a9dd94184f2c3c754020366d8d5fa6dee5ea7319 GIT binary patch literal 712 zcmV;(0yq7MP)cmsS?wo4lcYIkX2Dcyy(gr(!z))qnE_>z+|`^|pe%+A?E5D`uS<~R{0gyT4v z0EW3|v|8&ZRe6v|@Ic6nK{L);6-EAAaHNBu6^!3dTQgPGKV&goz5;~h3JFbveSwF} zo7XZV75}+d{6kS=CQYf0#&DMh`|I?_Ck%MLs8jy63maVs7tN+Uxk28Sn0pRiM2HBB8w6JrE*aWP+Y zZDJfw*H%NNr3Tg>P5>Pu%`JdQ?|@-8bNet`>Of!XgS~#qe>=PCb=5(&sOe!in*rZ3IU@BMR`PJ-Vj@Qc(lL?V;`0000bIzyoa218B+vYtI8}%>;4T1%2%TWW(?E`@hxe1$*fMUAY8x-xPo31aH+*k1$W~DX2%0=)aByR0a>v`qx#|A&cNIB z09C63WyS<>*8yO?=j7D|eCrm4?o_DtLXg|z;LzRL%rb=227vMbT(;`x*}>raHJkZU zpy&c)#6gSF@Av-&cH!pZ)G>U==;hZCVzX18|!UgwoR0(?lR&`$L8MdcVSiGAbR4va7Ys6)pdYK*^2lL?024*cH7T) zDtcWOUr?uM_Z9@(5t%0bgpeBLQjQ~P?6$6#1{$`#M;)&Z z0|X`@L=mnxas|ZI(*J-!8;YutT&63NP9>7@=7#2|tk1CYBg^Y6gA2vQiMy{XB% z3by3dhL+KDeP^>Olo+!abX(tAYfN`^HzwPY9dGB}jaE&6-VX_FZs=?XMRI3)2eNj} zis`xzN@*R>dLDzBPV8j*L^eXgIqB>KFfrV-zdKEJ8Z!(7rfJr3w|m6jHg$O13t_QT zJeihGFyM5eDG{$$tFSD~M^>@+dkr_ESI|~&LZMK=wU@UrJ2wkXd0aZdfCCDYsO!4; ze0~aAS;NY&6{JWPPPHG0s;U@Ueu@{RS8zfOs7<5N2?l_<3^xv5#>~tNrVfqcXrdnv z`|tVk>(YBXD2@R!_%N0E&Q5?MR!hb@9r<<#ilQJK4&zbpeT3C87HdCodwB%BnS1{N zJ~pwabb=LpTwB*FN?gIKeY!HwYi?dT^(T>w zNv2u&`&`RKvQ6norZKLlYE&+{8;sfuwTeA&EOAHV(W-c-knB3jeh4qIFZ9jEu*dGp mq>u@;D8-;c_IjQF2`~VU=ra3;9NQxR0000d@1Dh0^Abt>J0}4S=#35+0g@P6V3!7jm2o@Ip1A-Qo60Jil1dI3w z1kwpAnpz7J5HwZTML}g}-@S4e!WK>u*b9d_oOABs-C}~fGtPvMkMl~y%ud$AUf+2__O`bBi z|6gEgj@hfu@;&(S6pDTR4w4`)4SC8aJ1Q7Gee>ATEn;s2{(OVx6u*8Kg19t!D5LDb zDY1Nd>Q1&h-S)yX^xs2c0_rVZKiCt*rO87XWwoQ-=;jbxo2Rc|gS~agCLwD Date: Mon, 30 Jun 2014 13:57:10 -0400 Subject: [PATCH 40/46] fix infinite loop bug --- UI/WebServerResources/SchedulerUI.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/UI/WebServerResources/SchedulerUI.js b/UI/WebServerResources/SchedulerUI.js index 75a5c89c7..da44ad6d5 100644 --- a/UI/WebServerResources/SchedulerUI.js +++ b/UI/WebServerResources/SchedulerUI.js @@ -1106,6 +1106,7 @@ function eventsListCallback(http) { function activeTasksCallback(http) { if (http.readyState == 4 && http.status == 200) { if (http.responseText.length > 0) { + document.activeTasksAjaxRequest = null; var data = http.responseText.evalJSON(true); var list = $("calendarList"); @@ -1115,7 +1116,6 @@ function activeTasksCallback(http) { var number = data[id]; var input = items[i].childNodesWithTag("input")[0]; var activeTasks = items[i].childNodesWithTag("span")[0]; - $(input).observe("click", clickEventWrapper(updateCalendarStatus)); if (number == "0") { activeTasks.innerHTML = ""; } @@ -2360,6 +2360,10 @@ function _loadTasksHref(href) { document.tasksListAjaxRequest.aborted = true; document.tasksListAjaxRequest.abort(); } + if (document.activeTasksAjaxRequest) { + document.activeTasksAjaxRequest.aborted = true; + document.activeTasksAjaxRequest.abort(); + } url = ApplicationBaseURL + "/" + href; urlActiveTasks = ApplicationBaseURL + "/activeTasks"; @@ -2372,7 +2376,7 @@ function _loadTasksHref(href) { document.tasksListAjaxRequest = triggerAjaxRequest(url, tasksListCallback, selectedIds); - triggerAjaxRequest(urlActiveTasks, activeTasksCallback); + document.activeTasksAjaxRequest = triggerAjaxRequest(urlActiveTasks, activeTasksCallback); return true; } From 660f39a980513bf9bcff14bdc8d74dd092c50717 Mon Sep 17 00:00:00 2001 From: Alexandre Cloutier Date: Mon, 30 Jun 2014 14:13:52 -0400 Subject: [PATCH 41/46] delete notice and put grey background for multi-columns view --- UI/Scheduler/English.lproj/Localizable.strings | 4 ---- UI/WebServerResources/SchedulerUI.js | 4 ++-- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/UI/Scheduler/English.lproj/Localizable.strings b/UI/Scheduler/English.lproj/Localizable.strings index d884803b3..ecb4a9135 100644 --- a/UI/Scheduler/English.lproj/Localizable.strings +++ b/UI/Scheduler/English.lproj/Localizable.strings @@ -545,10 +545,6 @@ vtodo_class2 = "(Confidential task)"; "DestinationCalendarError" = "The source and destination calendars are the same. Please try to copy to a different calendar."; "EventCopyError" = "The copy failed. Please try to copy to a difference calendar."; "Please select at least one calendar" = "Please select at least one calendar"; -"notice:" = "notice:"; -"error:" = "error:"; -"success:" = "success:"; -"warning:" = "warning:"; "Open Task..." = "Open Task..."; diff --git a/UI/WebServerResources/SchedulerUI.js b/UI/WebServerResources/SchedulerUI.js index da44ad6d5..58b7df137 100644 --- a/UI/WebServerResources/SchedulerUI.js +++ b/UI/WebServerResources/SchedulerUI.js @@ -2184,8 +2184,8 @@ function adjustMultiColumnCalendarHeaderDIV() { else { $("calendarHeader").remove(); $("daysView").remove(); - var htmlText = "
    " + _("notice:") + ""+_("Please go ahead and select calendars")+"
    "; - $("calendarContent").innerHTML = htmlText; + $("calendarContent").style.height = "100%"; + $("calendarContent").style.background = "#E7E7E7"; } } From 899a1eb026503165436a333110fa6eb73522c5a6 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Wed, 2 Jul 2014 08:39:01 -0400 Subject: [PATCH 42/46] Updated NEWS file --- NEWS | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/NEWS b/NEWS index d83925097..eacf6984c 100644 --- a/NEWS +++ b/NEWS @@ -1,11 +1,15 @@ 2.2.6 (2014-XX-YY) ------------------ +New features + - add new 'multi-columns' calendar view (#1948) + Enhancements - contacts photos are now synchronized using ActiveSync (#2807) - implemented the GetAttachment ActiveSync command (#2808) - implemented the Ping ActiveSync command - added "soft deletes" support for ActiveSync (#2734) + - now display the active tasks next to calendar names (#2760) Bug fixes - better handling of empty "Flag" messages over ActiveSync (#2806) From 55422b5f037b1c410c25a685afa6d3077c3fce21 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Wed, 2 Jul 2014 10:11:13 -0400 Subject: [PATCH 43/46] Fixed typo --- NEWS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NEWS b/NEWS index eacf6984c..35507d0b5 100644 --- a/NEWS +++ b/NEWS @@ -19,7 +19,7 @@ Bug fixes - fixed regression when attaching files to a reply - wait 20 seconds (instead of 2) before deleting temporary download forms (#2811) - avoid raising exceptions when the db is down and we try to access the preferences module (#2813) - - we now ignore the SCHEDULE-AGENT property when Thunderbird/Ligthning sends it to avoid + - we now ignore the SCHEDULE-AGENT property when Thunderbird/Lightning sends it to avoid not-generating invitation responses for externally received IMIP messages - improved charset handling over ActiveSync (#2810) From 9c3c2cb92657809945eeaf25310039173efb58b0 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Wed, 2 Jul 2014 11:23:57 -0400 Subject: [PATCH 44/46] Updated the doc for the release --- Documentation/SOGo Installation Guide.odt | Bin 169764 -> 161353 bytes ...SOGo Mozilla Thunderbird Configuration.odt | Bin 25340 -> 23154 bytes ...Native Microsoft Outlook Configuration.odt | Bin 32969 -> 30776 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/Documentation/SOGo Installation Guide.odt b/Documentation/SOGo Installation Guide.odt index 068556826e55ba771794bdb9899daa2985594310..81fbe08834bcd75c0d62c248e796b68fe1b0654f 100644 GIT binary patch delta 158584 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

    KBaH&y~N-;)^1LU#1`Dc_MpEMAPxJ0F# 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 TJ_Eu)sxBiUbB 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 z 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 B0;d1~ delta 23046 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 VL7)K>BwUvYX<|fzBL)AJ^B)u&&NTo4 diff --git a/Documentation/SOGo Native Microsoft Outlook Configuration.odt b/Documentation/SOGo Native Microsoft Outlook Configuration.odt index e143bfd417f848a442ecfc9fa5ef06b5556ab0aa..7651f52ed4eaa213111effeb4efbfc6ac94f2392 100644 GIT binary patch delta 24832 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 SH#;l{G~*2;hPT^q>Hh(*LyxTh delta 27077 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 Date: Wed, 2 Jul 2014 11:32:06 -0400 Subject: [PATCH 45/46] Updated for the release --- NEWS | 2 +- Version | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/NEWS b/NEWS index 35507d0b5..4b233c364 100644 --- a/NEWS +++ b/NEWS @@ -1,4 +1,4 @@ -2.2.6 (2014-XX-YY) +2.2.6 (2014-07-02) ------------------ New features diff --git a/Version b/Version index 4c9634b2e..01f882667 100644 --- a/Version +++ b/Version @@ -4,4 +4,4 @@ MAJOR_VERSION=2 MINOR_VERSION=2 -SUBMINOR_VERSION=5 +SUBMINOR_VERSION=6 From 6e13f1547719c5f3bfc6149d9a038de90c284cb2 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Wed, 2 Jul 2014 11:32:18 -0400 Subject: [PATCH 46/46] Update ChangeLog --- ChangeLog | 451 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 451 insertions(+) diff --git a/ChangeLog b/ChangeLog index 40ae66810..7c75ed5a7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,454 @@ +commit 5dd2088d42388b397e8cc3fde35455b2455f7f3e +Author: Ludovic Marcotte +Date: Wed Jul 2 11:32:06 2014 -0400 + + Updated for the release + +M NEWS +M Version + +commit 9c3c2cb92657809945eeaf25310039173efb58b0 +Author: Ludovic Marcotte +Date: Wed Jul 2 11:23:57 2014 -0400 + + Updated the doc for the release + +M Documentation/SOGo Installation Guide.odt +M Documentation/SOGo Mozilla Thunderbird Configuration.odt +M Documentation/SOGo Native Microsoft Outlook Configuration.odt + +commit 55422b5f037b1c410c25a685afa6d3077c3fce21 +Author: Ludovic Marcotte +Date: Wed Jul 2 10:11:13 2014 -0400 + + Fixed typo + +M NEWS + +commit 899a1eb026503165436a333110fa6eb73522c5a6 +Author: Ludovic Marcotte +Date: Wed Jul 2 08:39:01 2014 -0400 + + Updated NEWS file + +M NEWS + +commit 660f39a980513bf9bcff14bdc8d74dd092c50717 +Author: Alexandre Cloutier +Date: Mon Jun 30 14:13:52 2014 -0400 + + delete notice and put grey background for multi-columns view + +M UI/Scheduler/English.lproj/Localizable.strings +M UI/WebServerResources/SchedulerUI.js + +commit 8335c388308d381afc8b4b544f0b9b88e2140c25 +Author: Alexandre Cloutier +Date: Mon Jun 30 13:57:10 2014 -0400 + + fix infinite loop bug + +M UI/WebServerResources/SchedulerUI.js + +commit 0fb7135335810a31c8936a3e58680f93c550b0c2 +Author: Alexandre Cloutier +Date: Mon Jun 30 13:36:12 2014 -0400 + + bugfixes + +M UI/Scheduler/UIxCalListingActions.m +M UI/WebServerResources/SchedulerUI.js +M UI/WebServerResources/UIxCalViewPrint.js +A UI/WebServerResources/error.png +A UI/WebServerResources/notice.png +A UI/WebServerResources/success.png +A UI/WebServerResources/warning.png + +commit 6b58e034f3db20f3433eccfd425f0e57349aeced +Author: Alexandre Cloutier +Date: Mon Jun 30 10:42:07 2014 -0400 + + printView display the parentView by default + +M UI/Scheduler/UIxCalViewPrint.h +M UI/Scheduler/UIxCalViewPrint.m +M UI/Templates/SchedulerUI/UIxCalViewPrint.wox +M UI/WebServerResources/UIxCalViewPrint.js + +commit ff015afde8700b0a4163c89ce4b9cdca5f6261e5 +Author: Ludovic Marcotte +Date: Mon Jun 30 10:35:55 2014 -0400 + + Fixed indent + +M UI/PreferencesUI/UIxPreferences.m + +commit 6da03bc75ca64a79785001897eb629b6250b2cb8 +Author: Ludovic Marcotte +Date: Sat Jun 28 08:31:07 2014 -0400 + + Cleaned up code for older gcc + +M UI/Scheduler/UIxCalListingActions.m + +commit 2b119c63e0bd0fa96361369152a5aface05ffe32 +Author: Alexandre Cloutier +Date: Fri Jun 27 17:21:18 2014 -0400 + + Applied comments + +M UI/Scheduler/UIxCalDayTable.m +M UI/Scheduler/UIxCalListingActions.m + +commit 5b61df8ca4035d3bd66bb024a1f5b62cd6054a84 +Author: Alexandre Cloutier +Date: Fri Jun 27 17:00:32 2014 -0400 + + activeTasks updates dynamically + +M UI/Scheduler/UIxCalListingActions.m +M UI/Scheduler/product.plist +M UI/WebServerResources/SchedulerUI.js + +commit 5b9c7e07d1d6b6eba1901d3fa40ee22cbbf73ead +Author: Alexandre Cloutier +Date: Thu Jun 26 21:22:12 2014 -0400 + + text wraping and text alignment in list view + +M UI/WebServerResources/UIxCalViewPrint.css +M UI/WebServerResources/generic.css + +commit 7a69bc46eb5c2300e93d4b85c6954638a4271132 +Author: Alexandre Cloutier +Date: Thu Jun 26 16:42:05 2014 -0400 + + applied comments + +M SoObjects/Appointments/SOGoAppointmentFolder.m +M UI/Scheduler/UIxCalendarSelector.m +M UI/WebServerResources/SchedulerUI.js + +commit 302e40a1c3c1f13578499d82e40c75e50beff79e +Author: Alexandre Cloutier +Date: Thu Jun 26 16:08:47 2014 -0400 + + bugFix#2823 + +M SoObjects/Mailer/SOGoDraftObject.m +M SoObjects/SOGo/SOGoParentFolder.m +M UI/PreferencesUI/UIxPreferences.m +M UI/Templates/PreferencesUI/UIxPreferences.wox +M UI/WebServerResources/UIxPreferences.js + +commit b6be4e6e2fb8e00c8f0b29e4f493936d0fcfbb2e +Author: Ludovic Marcotte +Date: Thu Jun 26 11:01:16 2014 -0400 + + Applied patch from bug #2810 + +M ActiveSync/SOGoMailObject+ActiveSync.m +M NEWS + +commit dabd8d3282c1e1f4a4d3622637c7952e1e295cb5 +Author: Alexandre Cloutier +Date: Thu Jun 26 10:05:48 2014 -0400 + + Fix list view printing with multiColumns view + +M UI/WebServerResources/UIxCalViewPrint.js + +commit d7d458a934b407bea6aa7e1818e71b5d544cf705 +Author: Alexandre Cloutier +Date: Wed Jun 25 17:39:48 2014 -0400 + + multiColumns print view + bugFixes + +M UI/Scheduler/English.lproj/Localizable.strings +M UI/Scheduler/UIxCalViewPrint.m +M UI/Templates/SchedulerUI/UIxCalViewPrint.wox +M UI/WebServerResources/SchedulerUI.css +M UI/WebServerResources/SchedulerUI.js +M UI/WebServerResources/UIxCalViewPrint.css +M UI/WebServerResources/UIxCalViewPrint.js + +commit 5419f411e5bae58cc17ab22b3b95a88efab74252 +Author: Ludovic Marcotte +Date: Wed Jun 25 15:05:25 2014 -0400 + + Fix for bug #2734 + +M ActiveSync/SOGoActiveSyncDispatcher+Sync.m +M ActiveSync/SOGoActiveSyncDispatcher.m +M NEWS + +commit 22f5ed62fef337f9fa2f84318e3c24962ee3c207 +Author: Ludovic Marcotte +Date: Wed Jun 25 10:14:28 2014 -0400 + + Fixed tests regarding default permissions on CalDAV collections + +M Tests/Integration/test-davacl.py + +commit 3523dc489f00c147279217faab9ad12504ca7340 +Author: Ludovic Marcotte +Date: Mon Jun 23 12:19:02 2014 -0400 + + Fix for bug #2825 + +M SoObjects/SOGo/GCSSpecialQueries+SOGoCacheObject.m + +commit 5b3de04fc19daef85749fe34b969724f78a6b7ab +Author: Alexandre Cloutier +Date: Fri Jun 20 13:27:04 2014 -0400 + + Fix error from the last commit + +M UI/Scheduler/UIxCalDayTable.m + +commit eb3cc8916df223dae773243dcbcf65269e8b0451 +Author: Alexandre Cloutier +Date: Fri Jun 20 13:16:55 2014 -0400 + + The multiColumns view + +M UI/Scheduler/English.lproj/Localizable.strings +M UI/Scheduler/Toolbars/SOGoAppointmentFolders.toolbar +M UI/Scheduler/UIxCalDayTable.h +M UI/Scheduler/UIxCalDayTable.m +M UI/Scheduler/UIxCalListingActions.h +M UI/Scheduler/UIxCalListingActions.m +M UI/Scheduler/UIxCalMulticolumnDayView.m +M UI/Scheduler/UIxCalendarSelector.m +M UI/Templates/SchedulerUI/UIxCalDayTable.wox +M UI/Templates/SchedulerUI/UIxCalDayView.wox +M UI/Templates/SchedulerUI/UIxCalMulticolumnDayView.wox +M UI/Templates/SchedulerUI/UIxCalWeekView.wox +M UI/WebServerResources/SchedulerUI.css +M UI/WebServerResources/SchedulerUI.js + +commit 9fa0b42e19c76184d4195a1530039dcad5cb5a80 +Author: Ludovic Marcotte +Date: Fri Jun 20 11:25:02 2014 -0400 + + Ignore SCHEDULE-AGENT for Thunderbird/Lightning + +M NEWS +M SoObjects/Appointments/SOGoAppointmentObject.m + +commit e048346cb715d03fe6bd32d837b96107fdb6d44b +Author: Ludovic Marcotte +Date: Thu Jun 19 16:08:15 2014 -0400 + + Include, in our private NS, all ACLs defined on a calendar collectiob + +M SoObjects/Appointments/SOGoAppointmentFolder.m + +commit 333b561a5932acbe66d5b62c8963dd166b9de7f2 +Author: Ludovic Marcotte +Date: Mon Jun 16 15:30:26 2014 -0400 + + Applied patch from bug #2736 + +M SOPE/NGCards/NGCardsSaxHandler.m +M SOPE/NGCards/samples/vcf2xml.m +M SoObjects/Mailer/NSString+Mail.m +M UI/MailPartViewers/UIxMailPartHTMLViewer.m + +commit 50c0b49a6fe210b438d2e5a7abac7219bdb15b8f +Author: Ludovic Marcotte +Date: Mon Jun 16 11:00:39 2014 -0400 + + Fix for bug #2813 + +M NEWS +M SoObjects/SOGo/SOGoGCSFolder.m + +commit 8202d0588fb8e1774e502941fc01223fb9005334 +Author: Francis Lachapelle +Date: Mon Jun 16 10:20:02 2014 -0400 + + Add documentation for SOGoSubscriptionFolderFormat + + Fixes #2799 + +M Documentation/SOGo Installation Guide.odt + +commit d9b578b869da27b876f019bc10acf72839220fd3 +Author: Francis Lachapelle +Date: Mon Jun 16 09:52:29 2014 -0400 + + Wait 20 seconds before deleting temporary forms + + Those temporary forms are created to download attachments. + Fixes #2811 + +M NEWS +M UI/WebServerResources/MailerUI.js + +commit 5bb64916c6fc96bf20bc258a075c33413784ca01 +Author: Francis Lachapelle +Date: Thu Jun 12 09:09:08 2014 -0400 + + Fix regression when attaching files to a reply + +M NEWS +M UI/MailerUI/UIxMailEditor.m + +commit e7ddfb0546fcb70f1ac3401375656936ea00c380 +Author: Ludovic Marcotte +Date: Wed Jun 11 12:55:51 2014 -0400 + + Fix for bug #2805 + +M ActiveSync/SOGoActiveSyncDispatcher.m +M NEWS + +commit 0e182f84360aa35c87d39320cab08d7eaeb55d90 +Author: Alexandre Cloutier +Date: Wed Jun 11 11:25:17 2014 -0400 + + Update SOGoAppointmentFolder.m + + Fix the status filtering from 2 to 1 + +M SoObjects/Appointments/SOGoAppointmentFolder.m + +commit de2ee2322af740251ac82ca06deb1f7585637024 +Author: Alexandre Cloutier +Date: Wed Jun 11 10:24:04 2014 -0400 + + Change the NSString with NSNumber and add some JavaScript + +M SoObjects/Appointments/SOGoAppointmentFolder.h +M SoObjects/Appointments/SOGoAppointmentFolder.m +M UI/Scheduler/UIxCalendarSelector.m +M UI/Templates/SchedulerUI/UIxCalendarSelector.wox +M UI/WebServerResources/SchedulerUI.js + +commit ce07695a5597964354404557c9246eee5325abb2 +Author: Ludovic Marcotte +Date: Tue Jun 10 16:35:36 2014 -0400 + + Make sure to keep the / path prefix + +M ActiveSync/SOGoActiveSyncDispatcher.m + +commit 43ac57b671ecf4f0d81daf3e40fab856a5d3b52a +Author: Alexandre Cloutier +Date: Tue Jun 10 16:18:12 2014 -0400 + + display the number of active tasks in calendar view + +M SoObjects/Appointments/SOGoAppointmentFolder.h +M SoObjects/Appointments/SOGoAppointmentFolder.m +M UI/Scheduler/UIxCalendarSelector.m +M UI/Templates/SchedulerUI/UIxCalendarSelector.wox + +commit 7f7e3cb06a6b8789a1cd1667fb62418fad02aac1 +Author: Francis Lachapelle +Date: Tue Jun 10 14:48:25 2014 -0400 + + Fix folder name of new subscriptions + + Fixes #2801 + +M NEWS +M UI/MainUI/SOGoUserHomePage.m +M UI/WebServerResources/UIxContactsUserFolders.js + +commit 6b3a3f858baf2b73a7910a2039103f2976ebdc7c +Author: Francis Lachapelle +Date: Mon Jun 9 22:07:44 2014 -0400 + + Update prototype.js to version 1.7.2 + +M UI/WebServerResources/prototype.js + +commit 0133bb3b6bf13c81350b791be57c01d83356cba7 +Author: Ludovic Marcotte +Date: Tue Jun 10 13:07:14 2014 -0400 + + Correctly update the cache on folder update/delete ops. + +M ActiveSync/SOGoActiveSyncDispatcher.m + +commit 91e3e19e40b843063cda21b84e6fcc072da2ad49 +Author: Ludovic Marcotte +Date: Tue Jun 10 11:04:27 2014 -0400 + + Added the Ping ActiveSync command + +M ActiveSync/SOGoActiveSyncDispatcher+Sync.m +M ActiveSync/SOGoActiveSyncDispatcher.m +M NEWS + +commit 19a95a1818e34755bffd7c5f9dbd35e214123cac +Author: Ludovic Marcotte +Date: Tue Jun 10 08:58:44 2014 -0400 + + Applied fix from #2809 + +M NEWS +M UI/MailPartViewers/UIxMailPartHTMLViewer.m + +commit 1292c191eca61027b9856b04840105fde588d42c +Author: Ludovic Marcotte +Date: Tue Jun 10 08:46:35 2014 -0400 + + Make sure we don't have '-' in table names. + +M OpenChange/MAPIStoreUserContext.m + +commit 77dad178d11b36da07660a9b5f0dd8c7a74cad50 +Author: Ludovic Marcotte +Date: Tue Jun 10 08:45:35 2014 -0400 + + Make sure we don't have '-' in table names. + +M ActiveSync/SOGoActiveSyncDispatcher.m + +commit f48839bf55917cb3a9756134930206b7b15d0279 +Author: Ludovic Marcotte +Date: Mon Jun 9 09:34:00 2014 -0400 + + Added (slightly modified) patch from #2806 + +M ActiveSync/SOGoMailObject+ActiveSync.m +M NEWS +M SoObjects/Mailer/SOGoMailObject.h +M SoObjects/Mailer/SOGoMailObject.m + +commit 0f04be2bcb003ff0b0c1099c524dffa3b40d0181 +Author: Ludovic Marcotte +Date: Mon Jun 9 09:25:06 2014 -0400 + + Added patch from #2808 + +M ActiveSync/NSString+ActiveSync.h +M ActiveSync/NSString+ActiveSync.m +M ActiveSync/SOGoActiveSyncDispatcher.m +M NEWS + +commit 3f8bbe8c6012e60334002affded0c94151db20e3 +Author: Ludovic Marcotte +Date: Mon Jun 9 09:14:30 2014 -0400 + + Applied patch from #2807 + +M ActiveSync/NGVCard+ActiveSync.m +M NEWS +M SOPE/NGCards/NGVCard.h +M SOPE/NGCards/NGVCard.m + +commit 6b6ec8a2ae0f453dd0a127d8cf37082c80449c94 +Author: Francis Lachapelle +Date: Thu Jun 5 13:35:17 2014 -0400 + + Update ChangeLog + +M ChangeLog + commit ad30df26af2c95f91ad42fd02a3b45ada115502b Author: Francis Lachapelle Date: Thu Jun 5 13:34:40 2014 -0400