Fix for feature #3079
Monotone-Parent: 1de4349e78aa0e2e7b5b5f1107576ae89d90f64e Monotone-Revision: 56b6e4ca9c570a4e36d00e32127d539e82da7293 Monotone-Author: flachapelle@inverse.ca Monotone-Date: 2008-11-05T17:26:02 Monotone-Branch: ca.inverse.sogomaint-2.0.2
parent
d54abbdcfe
commit
5100d6611d
|
@ -57,7 +57,8 @@ SOGo_HEADER_FILES = \
|
||||||
NSDictionary+BSJSONAdditions.h \
|
NSDictionary+BSJSONAdditions.h \
|
||||||
NSScanner+BSJSONAdditions.h \
|
NSScanner+BSJSONAdditions.h \
|
||||||
\
|
\
|
||||||
WORequest+SOGo.h
|
WORequest+SOGo.h \
|
||||||
|
WOContext+SOGo.h
|
||||||
|
|
||||||
# SOGoCustomGroupFolder.m \
|
# SOGoCustomGroupFolder.m \
|
||||||
# SOGoGroupsFolder.m \
|
# SOGoGroupsFolder.m \
|
||||||
|
@ -101,7 +102,8 @@ SOGo_OBJC_FILES = \
|
||||||
NSDictionary+BSJSONAdditions.m \
|
NSDictionary+BSJSONAdditions.m \
|
||||||
NSScanner+BSJSONAdditions.m \
|
NSScanner+BSJSONAdditions.m \
|
||||||
\
|
\
|
||||||
WORequest+SOGo.m
|
WORequest+SOGo.m \
|
||||||
|
WOContext+SOGo.m
|
||||||
|
|
||||||
SOGo_RESOURCE_FILES = \
|
SOGo_RESOURCE_FILES = \
|
||||||
DAVReportMap.plist
|
DAVReportMap.plist
|
||||||
|
|
|
@ -0,0 +1,34 @@
|
||||||
|
/* WOContext+SOGo.h - this file is part of SOGo
|
||||||
|
*
|
||||||
|
* Copyright (C) 2008 Inverse inc.
|
||||||
|
*
|
||||||
|
* Author: Francis Lachapelle <flachapelle@inverse.ca>
|
||||||
|
*
|
||||||
|
* This file is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2, or (at your option)
|
||||||
|
* any later version.
|
||||||
|
*
|
||||||
|
* This file is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; see the file COPYING. If not, write to
|
||||||
|
* the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
|
* Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef WOCONTEXT_SOGo_H
|
||||||
|
#define WOCONTEXT_SOGo_H
|
||||||
|
|
||||||
|
#import <NGObjWeb/WOContext.h>
|
||||||
|
|
||||||
|
@interface WOContext (SOGoSOPEUtilities)
|
||||||
|
|
||||||
|
- (NSArray *)resourceLookupLanguages;
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
#endif /* WOcontext_SOGo_H */
|
|
@ -0,0 +1,53 @@
|
||||||
|
/* WOContext+SOGo.m - this file is part of SOGo
|
||||||
|
*
|
||||||
|
* Copyright (C) 2008 Inverse inc.
|
||||||
|
*
|
||||||
|
* Author: Francis Lachapelle <flachapelle@inverse.ca>
|
||||||
|
*
|
||||||
|
* This file is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2, or (at your option)
|
||||||
|
* any later version.
|
||||||
|
*
|
||||||
|
* This file is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; see the file COPYING. If not, write to
|
||||||
|
* the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
|
* Boston, MA 02111-1307, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#import <Foundation/NSArray.h>
|
||||||
|
#import <Foundation/NSDictionary.h>
|
||||||
|
|
||||||
|
#import <NGObjWeb/WOContext.h>
|
||||||
|
#import <NGObjWeb/WORequest.h>
|
||||||
|
#import <NGObjWeb/WOSession.h>
|
||||||
|
|
||||||
|
#import <SoObjects/SOGo/SOGoUser.h>
|
||||||
|
|
||||||
|
#import "WOContext+SOGo.h"
|
||||||
|
|
||||||
|
@implementation WOContext (SOGoSOPEUtilities)
|
||||||
|
|
||||||
|
- (NSArray *) resourceLookupLanguages
|
||||||
|
{
|
||||||
|
NSMutableArray *languages;
|
||||||
|
|
||||||
|
languages = [NSMutableArray array];
|
||||||
|
|
||||||
|
if (activeUser && [activeUser language])
|
||||||
|
[languages addObject: [activeUser language]];
|
||||||
|
|
||||||
|
if ([self hasSession])
|
||||||
|
[languages addObjectsFromArray: [[self session] languages]];
|
||||||
|
else
|
||||||
|
[languages addObjectsFromArray: [[self request] browserLanguages]];
|
||||||
|
|
||||||
|
return languages;
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
|
@ -20,6 +20,7 @@
|
||||||
* Boston, MA 02111-1307, USA.
|
* Boston, MA 02111-1307, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#import <Foundation/NSArray.h>
|
||||||
#import <Foundation/NSDictionary.h>
|
#import <Foundation/NSDictionary.h>
|
||||||
|
|
||||||
#import <NGObjWeb/SoObjectRequestHandler.h>
|
#import <NGObjWeb/SoObjectRequestHandler.h>
|
||||||
|
|
|
@ -6,3 +6,19 @@
|
||||||
"Password:" = "Wachtwoord:";
|
"Password:" = "Wachtwoord:";
|
||||||
|
|
||||||
"Connect" = "Inloggen";
|
"Connect" = "Inloggen";
|
||||||
|
|
||||||
|
"Wrong username or password." = "Wrong username or password.";
|
||||||
|
"cookiesNotEnabled" = "You cannot login because your browser's cookies are disabled. Please enable cookies in your browser's settings and try again.";
|
||||||
|
|
||||||
|
"browserNotCompatible" = "We've detected that your browser version is currently not supported on this site. Our recommendation is to use Firefox. Click on the link bellow to download the most current version of this browser.";
|
||||||
|
"alternativeBrowsers" = "Alternatively, you can also use the following compatible browsers";
|
||||||
|
"alternativeBrowserSafari" = "Alternatively, you can also use Safari.";
|
||||||
|
"Download" = "Download";
|
||||||
|
|
||||||
|
"Language:" = "Language:";
|
||||||
|
"choose" = "Choose ...";
|
||||||
|
"English" = "English";
|
||||||
|
"French" = "French";
|
||||||
|
"German" = "German";
|
||||||
|
"Italian" = "Italian";
|
||||||
|
"Spanish" = "Spanish";
|
|
@ -14,3 +14,11 @@
|
||||||
"alternativeBrowsers" = "Alternatively, you can also use the following compatible browsers";
|
"alternativeBrowsers" = "Alternatively, you can also use the following compatible browsers";
|
||||||
"alternativeBrowserSafari" = "Alternatively, you can also use Safari.";
|
"alternativeBrowserSafari" = "Alternatively, you can also use Safari.";
|
||||||
"Download" = "Download";
|
"Download" = "Download";
|
||||||
|
|
||||||
|
"Language:" = "Language:";
|
||||||
|
"choose" = "Choose ...";
|
||||||
|
"English" = "English";
|
||||||
|
"French" = "French";
|
||||||
|
"German" = "German";
|
||||||
|
"Italian" = "Italian";
|
||||||
|
"Spanish" = "Spanish";
|
|
@ -14,3 +14,11 @@
|
||||||
"alternativeBrowsers" = "Comme alternative, vous pouvez aussi utiliser les navigateurs suivants:";
|
"alternativeBrowsers" = "Comme alternative, vous pouvez aussi utiliser les navigateurs suivants:";
|
||||||
"alternativeBrowserSafari" = "Comme alternative, vous pouvez aussi utiliser Safari.";
|
"alternativeBrowserSafari" = "Comme alternative, vous pouvez aussi utiliser Safari.";
|
||||||
"Download" = "Télécharger";
|
"Download" = "Télécharger";
|
||||||
|
|
||||||
|
"Language:" = "Langue:";
|
||||||
|
"choose" = "Choisir ...";
|
||||||
|
"English" = "Anglais";
|
||||||
|
"French" = "Français";
|
||||||
|
"German" = "Allemand";
|
||||||
|
"Italian" = "Italien";
|
||||||
|
"Spanish" = "Espagnol";
|
|
@ -6,3 +6,19 @@
|
||||||
"Password:" = "Passwort:";
|
"Password:" = "Passwort:";
|
||||||
|
|
||||||
"Connect" = "Verbinden";
|
"Connect" = "Verbinden";
|
||||||
|
|
||||||
|
"Wrong username or password." = "Wrong username or password.";
|
||||||
|
"cookiesNotEnabled" = "You cannot login because your browser's cookies are disabled. Please enable cookies in your browser's settings and try again.";
|
||||||
|
|
||||||
|
"browserNotCompatible" = "We've detected that your browser version is currently not supported on this site. Our recommendation is to use Firefox. Click on the link bellow to download the most current version of this browser.";
|
||||||
|
"alternativeBrowsers" = "Alternatively, you can also use the following compatible browsers";
|
||||||
|
"alternativeBrowserSafari" = "Alternatively, you can also use Safari.";
|
||||||
|
"Download" = "Download";
|
||||||
|
|
||||||
|
"Language:" = "Language:";
|
||||||
|
"choose" = "Choose ...";
|
||||||
|
"English" = "English";
|
||||||
|
"French" = "French";
|
||||||
|
"German" = "German";
|
||||||
|
"Italian" = "Italian";
|
||||||
|
"Spanish" = "Spanish";
|
|
@ -13,3 +13,11 @@
|
||||||
"alternativeBrowsers" = "Alternativamente, puoi utilizzare questi browser compatibili";
|
"alternativeBrowsers" = "Alternativamente, puoi utilizzare questi browser compatibili";
|
||||||
"alternativeBrowserSafari" = "Alternativamente, puoi utilizzare Safari.";
|
"alternativeBrowserSafari" = "Alternativamente, puoi utilizzare Safari.";
|
||||||
"Download" = "Scarica";
|
"Download" = "Scarica";
|
||||||
|
|
||||||
|
"Language:" = "Language:";
|
||||||
|
"choose" = "Choose ...";
|
||||||
|
"English" = "English";
|
||||||
|
"French" = "French";
|
||||||
|
"German" = "German";
|
||||||
|
"Italian" = "Italian";
|
||||||
|
"Spanish" = "Spanish";
|
|
@ -26,6 +26,9 @@
|
||||||
#import <UI/SOGoUI/UIxComponent.h>
|
#import <UI/SOGoUI/UIxComponent.h>
|
||||||
|
|
||||||
@interface SOGoRootPage : UIxComponent
|
@interface SOGoRootPage : UIxComponent
|
||||||
|
{
|
||||||
|
id item;
|
||||||
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
|
|
@ -38,6 +38,8 @@
|
||||||
|
|
||||||
#import "SOGoRootPage.h"
|
#import "SOGoRootPage.h"
|
||||||
|
|
||||||
|
static NSArray *supportedLanguages = nil;
|
||||||
|
|
||||||
@interface SOGoRootPage (crashAdditions)
|
@interface SOGoRootPage (crashAdditions)
|
||||||
|
|
||||||
- (void) segfault;
|
- (void) segfault;
|
||||||
|
@ -46,6 +48,12 @@
|
||||||
|
|
||||||
@implementation SOGoRootPage
|
@implementation SOGoRootPage
|
||||||
|
|
||||||
|
+ (void) initialize
|
||||||
|
{
|
||||||
|
if (!supportedLanguages)
|
||||||
|
supportedLanguages = [NSArray arrayWithObjects: @"English", @"French", @"German", @"Italian", @"Spanish", nil];
|
||||||
|
}
|
||||||
|
|
||||||
/* accessors */
|
/* accessors */
|
||||||
|
|
||||||
- (NSString *) connectURL
|
- (NSString *) connectURL
|
||||||
|
@ -60,14 +68,16 @@
|
||||||
WORequest *request;
|
WORequest *request;
|
||||||
WOCookie *authCookie;
|
WOCookie *authCookie;
|
||||||
SOGoWebAuthenticator *auth;
|
SOGoWebAuthenticator *auth;
|
||||||
|
SOGoUser *user;
|
||||||
NSString *cookieValue, *cookieString;
|
NSString *cookieValue, *cookieString;
|
||||||
NSString *userName, *password;
|
NSString *userName, *password, *language;
|
||||||
|
|
||||||
auth = [[WOApplication application]
|
auth = [[WOApplication application]
|
||||||
authenticatorInContext: context];
|
authenticatorInContext: context];
|
||||||
request = [context request];
|
request = [context request];
|
||||||
userName = [request formValueForKey: @"userName"];
|
userName = [request formValueForKey: @"userName"];
|
||||||
password = [request formValueForKey: @"password"];
|
password = [request formValueForKey: @"password"];
|
||||||
|
language = [request formValueForKey: @"language"];
|
||||||
if ([auth checkLogin: userName password: password])
|
if ([auth checkLogin: userName password: password])
|
||||||
{
|
{
|
||||||
[self logWithFormat: @"successful login for user '%@'", userName];
|
[self logWithFormat: @"successful login for user '%@'", userName];
|
||||||
|
@ -80,6 +90,13 @@
|
||||||
value: cookieValue];
|
value: cookieValue];
|
||||||
[authCookie setPath: @"/"];
|
[authCookie setPath: @"/"];
|
||||||
[response addCookie: authCookie];
|
[response addCookie: authCookie];
|
||||||
|
|
||||||
|
if (language)
|
||||||
|
{
|
||||||
|
user = [SOGoUser userWithLogin: userName roles: nil];
|
||||||
|
[[user userDefaults] setObject: language forKey: @"Language"];
|
||||||
|
[[user userDefaults] synchronize];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -151,4 +168,34 @@
|
||||||
return ([[self loginSuffix] length]);
|
return ([[self loginSuffix] length]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (void) setItem: (id) _item
|
||||||
|
{
|
||||||
|
ASSIGN (item, _item);
|
||||||
|
}
|
||||||
|
|
||||||
|
- (id) item
|
||||||
|
{
|
||||||
|
return item;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (NSArray *) languages
|
||||||
|
{
|
||||||
|
return supportedLanguages;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (NSString *) language
|
||||||
|
{
|
||||||
|
return [SOGoUser language];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (NSString *) languageText
|
||||||
|
{
|
||||||
|
NSString *text;
|
||||||
|
|
||||||
|
text = [self labelForKey: item];
|
||||||
|
|
||||||
|
return text;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@end /* SOGoRootPage */
|
@end /* SOGoRootPage */
|
||||||
|
|
|
@ -16,3 +16,11 @@
|
||||||
"alternativeBrowsers" = "Alternativamente, también puede usar uno se los siguientes navegadores compatibles: ";
|
"alternativeBrowsers" = "Alternativamente, también puede usar uno se los siguientes navegadores compatibles: ";
|
||||||
"alternativeBrowserSafari" = "Alternativamente, puede usar Safari.";
|
"alternativeBrowserSafari" = "Alternativamente, puede usar Safari.";
|
||||||
"Download" = "Descarga";
|
"Download" = "Descarga";
|
||||||
|
|
||||||
|
"Language:" = "Language:";
|
||||||
|
"choose" = "Choose ...";
|
||||||
|
"English" = "English";
|
||||||
|
"French" = "French";
|
||||||
|
"German" = "German";
|
||||||
|
"Italian" = "Italian";
|
||||||
|
"Spanish" = "Spanish";
|
|
@ -23,6 +23,15 @@
|
||||||
<label><var:string label:value="Password:"/><br/>
|
<label><var:string label:value="Password:"/><br/>
|
||||||
<input class="textField" id="password"
|
<input class="textField" id="password"
|
||||||
name="password" type="password" var:value="password" /><br/></label>
|
name="password" type="password" var:value="password" /><br/></label>
|
||||||
|
<label><var:string label:value="Language:"/><br/>
|
||||||
|
<var:popup const:id="language" const:name="language"
|
||||||
|
list="languages"
|
||||||
|
item="item"
|
||||||
|
var:selection="item"
|
||||||
|
var:value="item"
|
||||||
|
string="languageText"
|
||||||
|
label:noSelectionString="choose"
|
||||||
|
/><br/></label>
|
||||||
<div id="loginButton">
|
<div id="loginButton">
|
||||||
<input class="button" id="submit" name="submit" type="submit" label:value="Connect" />
|
<input class="button" id="submit" name="submit" type="submit" label:value="Connect" />
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -19,6 +19,7 @@ function onLoginClick(event) {
|
||||||
var userNameField = $("userName");
|
var userNameField = $("userName");
|
||||||
var userName = userNameField.value;
|
var userName = userNameField.value;
|
||||||
var password = $("password").value;
|
var password = $("password").value;
|
||||||
|
var language = $("language").value;
|
||||||
|
|
||||||
if (userName.length > 0) {
|
if (userName.length > 0) {
|
||||||
startAnimation($("loginButton"), $("submit"));
|
startAnimation($("loginButton"), $("submit"));
|
||||||
|
@ -28,7 +29,9 @@ function onLoginClick(event) {
|
||||||
&& !userName.endsWith(loginSuffix))
|
&& !userName.endsWith(loginSuffix))
|
||||||
userName += loginSuffix;
|
userName += loginSuffix;
|
||||||
var url = $("connectForm").getAttribute("action");
|
var url = $("connectForm").getAttribute("action");
|
||||||
var parameters = ("userName=" + encodeURIComponent(userName) + "&password=" + encodeURIComponent(password));
|
var parameters = ("userName=" + encodeURIComponent(userName) +
|
||||||
|
"&password=" + encodeURIComponent(password) +
|
||||||
|
((language == "WONoSelectionString")?"":("&language=" + language)));
|
||||||
document.cookie = "";
|
document.cookie = "";
|
||||||
triggerAjaxRequest(url, onLoginCallback, null, parameters,
|
triggerAjaxRequest(url, onLoginCallback, null, parameters,
|
||||||
{ "Content-type": "application/x-www-form-urlencoded",
|
{ "Content-type": "application/x-www-form-urlencoded",
|
||||||
|
|
Loading…
Reference in New Issue