parent
aee42f76f0
commit
41967d3eec
2
NEWS
2
NEWS
|
@ -8,7 +8,7 @@ Enhancements
|
|||
- [core] now possible to {un}subscribe to folders using sogo-tool
|
||||
|
||||
Bug fixes
|
||||
-
|
||||
- [web] respect SOGoLanguage and SOGoSupportedLanguages (#4169)
|
||||
|
||||
3.2.9 (2017-05-09)
|
||||
------------------
|
||||
|
|
|
@ -39,6 +39,7 @@
|
|||
SOGoEnableDomainBasedUID = NO;
|
||||
|
||||
SOGoLoginModule = "Mail";
|
||||
WODefaultLanguages = ();
|
||||
SOGoLanguage = "English";
|
||||
SOGoSupportedLanguages = (
|
||||
"Arabic",
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
#import <NGObjWeb/WORequest.h>
|
||||
|
||||
#import "SOGoDomainDefaults.h"
|
||||
#import "SOGoSystemDefaults.h"
|
||||
#import "SOGoUser.h"
|
||||
|
||||
#import "WOContext+SOGo.h"
|
||||
|
@ -31,14 +32,21 @@
|
|||
- (NSArray *) resourceLookupLanguages
|
||||
{
|
||||
NSMutableArray *languages;
|
||||
NSArray *browserLanguages;
|
||||
NSArray *browserLanguages, *supportedLanguages;
|
||||
SOGoSystemDefaults *sd;
|
||||
SOGoUser *user;
|
||||
NSString *language, *theme;
|
||||
|
||||
languages = [NSMutableArray array];
|
||||
user = [self activeUser];
|
||||
theme = [[self request] formValueForKey: @"theme"];
|
||||
|
||||
// Retrieve language parameter
|
||||
language = [[self request] formValueForKey: @"language"];
|
||||
if ([language length] > 0)
|
||||
[languages addObject: language];
|
||||
|
||||
// Retrieve theme argument
|
||||
theme = [[self request] formValueForKey: @"theme"];
|
||||
if ([theme length] > 0)
|
||||
{
|
||||
if ([theme hasSuffix: @"/"])
|
||||
|
@ -52,18 +60,28 @@
|
|||
|
||||
if (!user || [[user login] isEqualToString: @"anonymous"])
|
||||
{
|
||||
// Use browser's languages
|
||||
browserLanguages = [[self request] browserLanguages];
|
||||
[languages addObjectsFromArray: browserLanguages];
|
||||
}
|
||||
else
|
||||
{
|
||||
// Use user's language or domain's language
|
||||
language = [[user userDefaults] language];
|
||||
[languages addObject: language];
|
||||
language = [[user domainDefaults] language];
|
||||
[languages addObject: language];
|
||||
}
|
||||
|
||||
return languages;
|
||||
// Return the first language matching a supported language or the SOGoLanguage
|
||||
// default if none is matching.
|
||||
sd = [SOGoSystemDefaults sharedSystemDefaults];
|
||||
supportedLanguages = [sd supportedLanguages];
|
||||
language = [languages firstObjectCommonWithArray: supportedLanguages];
|
||||
if (!(language && [language isKindOfClass: [NSString class]]))
|
||||
language = [sd stringForKey: @"SOGoLanguage"];
|
||||
|
||||
return [NSArray arrayWithObject: language];
|
||||
}
|
||||
|
||||
@end
|
||||
|
|
|
@ -72,6 +72,11 @@
|
|||
|
||||
/* accessors */
|
||||
|
||||
- (NSString *) modulePath
|
||||
{
|
||||
return @"";
|
||||
}
|
||||
|
||||
//- (NSString *) connectURL
|
||||
//{
|
||||
// return [NSString stringWithFormat: @"%@/connect", [self applicationPath]];
|
||||
|
@ -525,6 +530,11 @@
|
|||
return item;
|
||||
}
|
||||
|
||||
- (NSString *) language
|
||||
{
|
||||
return [[context resourceLookupLanguages] objectAtIndex: 0];
|
||||
}
|
||||
|
||||
- (NSArray *) languages
|
||||
{
|
||||
return [[SOGoSystemDefaults sharedSystemDefaults] supportedLanguages];
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
>
|
||||
<script type="text/javascript">
|
||||
var cookieUsername = '<var:string var:value="cookieUsername" const:escapeHTML="NO"/>';
|
||||
var language = '<var:string var:value="language" const:escapeHTML="NO"/>';
|
||||
</script>
|
||||
|
||||
<!--
|
||||
|
@ -56,7 +57,7 @@
|
|||
<md-icon>language</md-icon>
|
||||
<md-input-container class="md-flex">
|
||||
<label><var:string label:value="choose"/></label>
|
||||
<md-select ng-model="app.creds.language">
|
||||
<md-select ng-model="app.creds.language" ng-change="app.changeLanguage($event)">
|
||||
<var:foreach list="languages" item="item">
|
||||
<md-option var:value="item">
|
||||
<var:string value="languageText"/>
|
||||
|
|
|
@ -13,20 +13,21 @@
|
|||
function LoginController($scope, $window, $timeout, Dialog, $mdDialog, Authentication) {
|
||||
var vm = this;
|
||||
|
||||
vm.creds = {
|
||||
username: $window.cookieUsername,
|
||||
password: null,
|
||||
rememberLogin: angular.isDefined($window.cookieUsername) && $window.cookieUsername.length > 0
|
||||
this.$onInit = function() {
|
||||
this.creds = {
|
||||
username: $window.cookieUsername,
|
||||
password: null,
|
||||
language: $window.language,
|
||||
rememberLogin: angular.isDefined($window.cookieUsername) && $window.cookieUsername.length > 0
|
||||
};
|
||||
this.loginState = false;
|
||||
|
||||
// Show login once everything is initialized
|
||||
this.showLogin = false;
|
||||
$timeout(function() { vm.showLogin = true; }, 100);
|
||||
};
|
||||
vm.login = login;
|
||||
vm.loginState = false;
|
||||
vm.showAbout = showAbout;
|
||||
|
||||
// Show login once everything is initialized
|
||||
vm.showLogin = false;
|
||||
$timeout(function() { vm.showLogin = true; }, 100);
|
||||
|
||||
function login() {
|
||||
this.login = function() {
|
||||
vm.loginState = 'authenticating';
|
||||
Authentication.login(vm.creds)
|
||||
.then(function(data) {
|
||||
|
@ -45,9 +46,9 @@
|
|||
vm.errorMessage = msg.error;
|
||||
});
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
function showAbout($event) {
|
||||
this.showAbout = function($event) {
|
||||
$mdDialog.show({
|
||||
targetEvent: $event,
|
||||
templateUrl: 'aboutBox.html',
|
||||
|
@ -60,7 +61,12 @@
|
|||
$mdDialog.hide();
|
||||
};
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
this.changeLanguage = function($event) {
|
||||
// Reload page
|
||||
$window.location.href = ApplicationBaseURL + 'login?language=' + this.creds.language;
|
||||
};
|
||||
}
|
||||
|
||||
angular
|
||||
|
|
Loading…
Reference in New Issue