diff --git a/NEWS b/NEWS index e6fe36e0f..8947cccfd 100644 --- a/NEWS +++ b/NEWS @@ -9,7 +9,9 @@ - fixed search in message content; - added tooltips for toolbar buttons (English and French); - added checkmarks in live search options popup menus; +- added browser detection with recommanded alternatives; - initial support for resizable columns in tables; +- improved IE7 and Safari support: attendees selector; - countless bugfixes; 0.9.0-20070824 diff --git a/UI/Common/English.lproj/Localizable.strings b/UI/Common/English.lproj/Localizable.strings index f25d4d2f4..6d453e131 100644 --- a/UI/Common/English.lproj/Localizable.strings +++ b/UI/Common/English.lproj/Localizable.strings @@ -27,6 +27,11 @@ "Sorry, the user rights can not be configured for that object." = "Sorry, the user rights can not be configured for that object."; +"browserNotCompatible" = "We've detected that your browser version is currently not supported on this site. Our recommendation is to use Firefox. Link to download the most current version of this browser is provided bellow:"; +"alternativeBrowsers" = "Alternatively, you can also use the following compatible browsers"; +"alternativeBrowserSafari" = "Alternatively, you can also use Safari."; +"Download" = "Download"; + /* generic.js */ "Unable to subscribe to that folder!" = "Unable to subscribe to that folder!"; diff --git a/UI/Common/French.lproj/Localizable.strings b/UI/Common/French.lproj/Localizable.strings index 839c0bb88..7cd854ba0 100644 --- a/UI/Common/French.lproj/Localizable.strings +++ b/UI/Common/French.lproj/Localizable.strings @@ -28,6 +28,11 @@ "Sorry, the user rights can not be configured for that object." = "Sorry, the user rights can not be configured for that object."; +"browserNotCompatible" = "La version de votre navigateur Web n'est présentement pas supportée par ce site. Nous recommandons d'utiliser Firefox. Vous trouverez un lien vers la plus récente version de ce navigateur ci-dessous:"; +"alternativeBrowsers" = "Comme alternative, vous pouvez aussi utiliser les navigateurs suivants:"; +"alternativeBrowserSafari" = "Comme alternative, vous pouvez aussi utiliser Safari."; +"Download" = "Télécharger"; + /* generic.js */ "Unable to subscribe to that folder!" = "Impossible de s'abonner à ce dossier."; "You cannot subscribe to a folder that you own!" = "Impossible de vous abonner à un dossier qui vous appartient."; diff --git a/UI/Common/UIxPageFrame.h b/UI/Common/UIxPageFrame.h index 94fe9816f..7fe7837ae 100644 --- a/UI/Common/UIxPageFrame.h +++ b/UI/Common/UIxPageFrame.h @@ -23,6 +23,7 @@ #define UIXPAGEFRAME_H #import +#import @interface WOComponent (PopupExtension) @@ -56,6 +57,10 @@ - (void) setToolbar: (NSString *) newToolbar; - (NSString *) toolbar; +- (BOOL) isBrowserCompatible; +- (BOOL) isIE7Compatible; +- (BOOL) isMac; + @end #endif /* UIXPAGEFRAME_H */ diff --git a/UI/Common/UIxPageFrame.m b/UI/Common/UIxPageFrame.m index 267a653d8..193781ed9 100644 --- a/UI/Common/UIxPageFrame.m +++ b/UI/Common/UIxPageFrame.m @@ -258,4 +258,44 @@ return toolbar; } +/* browser/os identification */ + +- (BOOL) isCompatibleBrowser +{ + WEClientCapabilities *cc; + + cc = [[context request] clientCapabilities]; + + //NSLog(@"Browser = %@", [cc description]); + NSLog(@"User agent = %@", [cc userAgent]); + //NSLog(@"Browser major version = %i", [cc majorVersion]); + + return ( + ([[cc userAgentType] isEqualToString: @"IE"] && [cc majorVersion] >= 7) || + ([[cc userAgentType] isEqualToString: @"Mozilla"] && [cc majorVersion] >= 5) || + ([[cc userAgentType] isEqualToString: @"Safari"] && [cc majorVersion] >= 4) + ); +} + +- (BOOL) isIE7Compatible +{ + WEClientCapabilities *cc; + + cc = [[context request] clientCapabilities]; + + return ([cc isWindowsBrowser] && + ([[cc userAgent] rangeOfString: @"NT 5.1"].location != NSNotFound || + [[cc userAgent] rangeOfString: @"NT 6"].location != NSNotFound)); +} + +- (BOOL) isMac +{ + WEClientCapabilities *cc; + + cc = [[context request] clientCapabilities]; + + return [cc isMacBrowser]; +} + + @end /* UIxPageFrame */ diff --git a/UI/MainUI/SOGoUserHomePage.m b/UI/MainUI/SOGoUserHomePage.m index 910155833..032a615fa 100644 --- a/UI/MainUI/SOGoUserHomePage.m +++ b/UI/MainUI/SOGoUserHomePage.m @@ -221,6 +221,11 @@ static NSString *defaultModule = nil; date = [NSCalendarDate calendarDate]; [cookie setExpires: [date yesterday]]; [response addCookie: cookie]; + + [response setHeader: date forKey: @"Last-Modified"]; + [response setHeader: @"no-store, no-cache, must-revalidate, max-age=0" forKey: @"Cache-Control"]; + [response setHeader: @"post-check=0, pre-check=0" forKey: @"Cache-Control"]; + [response setHeader: @"no-cache" forKey: @"Pragma"]; return response; } diff --git a/UI/Scheduler/UIxComponentEditor.m b/UI/Scheduler/UIxComponentEditor.m index 5cfeecaf4..9046b3229 100644 --- a/UI/Scheduler/UIxComponentEditor.m +++ b/UI/Scheduler/UIxComponentEditor.m @@ -358,7 +358,7 @@ { NSArray *calendars; - calendars = [[self calendarList] valueForKey: @"folder"]; + calendars = [[self calendarList] valueForKey: @"nameInContainer"]; return [calendars componentsJoinedByString: @","]; } diff --git a/UI/Templates/ContactsUI/UIxContactView.wox b/UI/Templates/ContactsUI/UIxContactView.wox index adfdbeaca..888752b0d 100644 --- a/UI/Templates/ContactsUI/UIxContactView.wox +++ b/UI/Templates/ContactsUI/UIxContactView.wox @@ -20,7 +20,6 @@ /> + >
-

+


@@ -21,6 +21,6 @@
-
- + diff --git a/UI/Templates/UIxPageFrame.wox b/UI/Templates/UIxPageFrame.wox index ff1588e05..ada40f363 100644 --- a/UI/Templates/UIxPageFrame.wox +++ b/UI/Templates/UIxPageFrame.wox @@ -33,8 +33,9 @@ /> - -