mirror of
https://github.com/postfixadmin/postfixadmin.git
synced 2024-09-19 19:22:14 +02:00
Summary: Added language selector to login form
functions.inc.php: - function check_language - new optional parameter $use_post (needed by login.php) - check for language cookie - check for $_POST['lang'] - removed substr() call because it made pt-br translation unuseable - new function language_selector - returns a HTML dropdown language selector - new function safecookie - similar to safeget, but for cookies templates/login.php, templates/users_login.php: - display language selector dropdown login.php, users/login.php: - check for selected language - set cookie if user selected non-default language languages/language.php: (NEW FILE) - list of supported languages - language names taken from phpMyAdmin login form common.php: - include languages/language.php git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@280 a1433add-5e2c-0410-b055-b7f2511e0802
This commit is contained in:
parent
44dbfb5e26
commit
f217f0c1bb
@ -39,6 +39,7 @@ if(isset($CONF['configured'])) {
|
|||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
require_once("$incpath/languages/language.php");
|
||||||
require_once("$incpath/functions.inc.php");
|
require_once("$incpath/functions.inc.php");
|
||||||
require_once("$incpath/languages/" . check_language () . ".lang");
|
require_once("$incpath/languages/" . check_language () . ".lang");
|
||||||
|
|
||||||
|
@ -142,19 +142,29 @@ function _flash_string($type, $string) {
|
|||||||
// check_language
|
// check_language
|
||||||
// Action: checks what language the browser uses
|
// Action: checks what language the browser uses
|
||||||
// Call: check_language
|
// Call: check_language
|
||||||
|
// Parameter: $use_post - set to 1 if $_POST should NOT be read
|
||||||
//
|
//
|
||||||
function check_language ()
|
function check_language ($use_post = 1)
|
||||||
{
|
{
|
||||||
global $CONF;
|
global $CONF;
|
||||||
$lang = $CONF['default_language'];
|
$lang = $CONF['default_language'];
|
||||||
$supported_languages = array ('bg', 'ca', 'cn', 'cs', 'da', 'de', 'en', 'es', 'et', 'eu', 'fi', 'fo', 'fr', 'hu', 'is', 'it', 'mk', 'nl', 'nn', 'pl', 'pt-br', 'ru', 'sl', 'sv', 'tr', 'tw');
|
$supported_languages = array ('bg', 'ca', 'cn', 'cs', 'da', 'de', 'en', 'es', 'et', 'eu', 'fi', 'fo', 'fr', 'hu', 'is', 'it', 'mk', 'nl', 'nn', 'pl', 'pt-br', 'ru', 'sl', 'sv', 'tr', 'tw');
|
||||||
|
# TODO: use global $supported_languages (from languages/languages.php) instead
|
||||||
|
|
||||||
if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE']))
|
if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE']))
|
||||||
{
|
{
|
||||||
$lang_array = preg_split ('/(\s*,\s*)/', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
|
$lang_array = preg_split ('/(\s*,\s*)/', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
|
||||||
|
if (safecookie('lang')) {
|
||||||
|
array_unshift($lang_array, safecookie('lang')); # prefer language from cookie
|
||||||
|
}
|
||||||
|
if ( $use_post && safepost('lang')) {
|
||||||
|
array_unshift($lang_array, safepost('lang')); # but prefer $_POST['lang'] even more
|
||||||
|
}
|
||||||
|
|
||||||
for($i = 0; $i < count($lang_array); $i++)
|
for($i = 0; $i < count($lang_array); $i++)
|
||||||
{
|
{
|
||||||
$lang_next = $lang_array[$i];
|
$lang_next = $lang_array[$i];
|
||||||
$lang_next = strtolower(substr(trim($lang_next), 0, 2));
|
$lang_next = strtolower(trim($lang_next));
|
||||||
if(in_array($lang_next, $supported_languages))
|
if(in_array($lang_next, $supported_languages))
|
||||||
{
|
{
|
||||||
$lang = $lang_next;
|
$lang = $lang_next;
|
||||||
@ -165,7 +175,30 @@ function check_language ()
|
|||||||
return $lang;
|
return $lang;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// language_selector
|
||||||
|
// Action: returns a language selector dropdown with the browser (or cookie) language preselected
|
||||||
|
// Call: language_selector()
|
||||||
|
//
|
||||||
|
function language_selector()
|
||||||
|
{
|
||||||
|
global $supported_languages; # from languages/languages.php
|
||||||
|
|
||||||
|
$current_lang = check_language();
|
||||||
|
|
||||||
|
$selector = '<select name="lang" xml:lang="en" dir="ltr">';
|
||||||
|
|
||||||
|
foreach($supported_languages as $lang => $lang_name) {
|
||||||
|
if ($lang == $current_lang) {
|
||||||
|
$selected = ' selected="selected"';
|
||||||
|
} else {
|
||||||
|
$selected = '';
|
||||||
|
}
|
||||||
|
$selector .= "<option value='$lang'$selected>$lang_name</option>";
|
||||||
|
}
|
||||||
|
$selector .= "</select>";
|
||||||
|
return $selector;
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// check_string
|
// check_string
|
||||||
@ -374,6 +407,19 @@ function safeserver ($param, $default="") {
|
|||||||
return $retval;
|
return $retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* safecookie
|
||||||
|
* @see safeget()
|
||||||
|
* @param String $param
|
||||||
|
* @param String $default (optional)
|
||||||
|
* @return String value from $_COOKIE[$param] or $default
|
||||||
|
*/
|
||||||
|
function safecookie ($param, $default="") {
|
||||||
|
$retval=$default;
|
||||||
|
if (isset($_COOKIE[$param])) $retval=$_COOKIE[$param];
|
||||||
|
return $retval;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// get_domain_properties
|
// get_domain_properties
|
||||||
|
37
languages/language.php
Normal file
37
languages/language.php
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
<?php if( !defined('POSTFIXADMIN') ) die( "This file cannot be used standalone." ); ?>
|
||||||
|
<?php
|
||||||
|
# List of supported languages
|
||||||
|
$supported_languages = array(
|
||||||
|
'bg' => 'Български - Bulgarian',
|
||||||
|
'ca' => 'Català - Catalan',
|
||||||
|
'cn' => '中文 - Chinese simplified (gb2312)',
|
||||||
|
'tw' => '中文 - Chinese traditional',
|
||||||
|
'cs' => 'Česky - Czech',
|
||||||
|
'da' => 'Dansk - Danish',
|
||||||
|
'de' => 'Deutsch - German',
|
||||||
|
'en' => 'English',
|
||||||
|
'es' => 'Español - Spanish',
|
||||||
|
'et' => 'Eesti - Estonian',
|
||||||
|
'eu' => 'Euskara - Basque',
|
||||||
|
'fi' => 'Suomi - Finnish',
|
||||||
|
'fo' => 'Faroese',
|
||||||
|
'fr' => 'Français - French',
|
||||||
|
'hr' => 'Hrvatski - Croatian',
|
||||||
|
'hu' => 'Magyar - Hungarian',
|
||||||
|
'is' => 'Icelandic',
|
||||||
|
'it' => 'Italiano - Italian',
|
||||||
|
'lt' => 'Lietuvių - Lithuanian',
|
||||||
|
'mk' => 'Macedonian - Macedonian',
|
||||||
|
'nl' => 'Nederlands - Dutch',
|
||||||
|
'nn' => 'Norsk - Norwegian',
|
||||||
|
'pl' => 'Polski - Polish',
|
||||||
|
'pt-br' => 'Português - Brazilian portuguese',
|
||||||
|
'ru' => 'Русский - Russian',
|
||||||
|
'sk' => 'Slovenčina - Slovak',
|
||||||
|
'sl' => 'Slovenščina - Slovenian',
|
||||||
|
'sv' => 'Svenska - Swedish',
|
||||||
|
'tr' => 'Türkçe - Turkish',
|
||||||
|
);
|
||||||
|
|
||||||
|
/* vim: set expandtab ft=php softtabstop=4 tabstop=4 shiftwidth=4: */
|
||||||
|
?>
|
@ -25,6 +25,7 @@
|
|||||||
*
|
*
|
||||||
* fUsername
|
* fUsername
|
||||||
* fPassword
|
* fPassword
|
||||||
|
* lang
|
||||||
*/
|
*/
|
||||||
|
|
||||||
require_once('common.php');
|
require_once('common.php');
|
||||||
@ -54,6 +55,12 @@ if ($_SERVER['REQUEST_METHOD'] == "POST")
|
|||||||
$fPassword = '';
|
$fPassword = '';
|
||||||
if (isset ($_POST['fUsername'])) $fUsername = escape_string ($_POST['fUsername']);
|
if (isset ($_POST['fUsername'])) $fUsername = escape_string ($_POST['fUsername']);
|
||||||
if (isset ($_POST['fPassword'])) $fPassword = escape_string ($_POST['fPassword']);
|
if (isset ($_POST['fPassword'])) $fPassword = escape_string ($_POST['fPassword']);
|
||||||
|
$lang = safepost('lang');
|
||||||
|
|
||||||
|
if ( $lang != check_language(0) ) { # only set cookie if language selection was changed
|
||||||
|
setcookie('lang', $lang, time() + 60*60*24*30); # language cookie, lifetime 30 days
|
||||||
|
# (language preference cookie is processed even if username and/or password are invalid)
|
||||||
|
}
|
||||||
|
|
||||||
$result = db_query ("SELECT password FROM $table_admin WHERE username='$fUsername' AND active='1'");
|
$result = db_query ("SELECT password FROM $table_admin WHERE username='$fUsername' AND active='1'");
|
||||||
if ($result['rows'] == 1)
|
if ($result['rows'] == 1)
|
||||||
|
@ -13,6 +13,11 @@
|
|||||||
<td><?php print $PALANG['pLogin_password'] . ":"; ?></td>
|
<td><?php print $PALANG['pLogin_password'] . ":"; ?></td>
|
||||||
<td><input class="flat" type="password" name="fPassword" /></td>
|
<td><input class="flat" type="password" name="fPassword" /></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="2">
|
||||||
|
<?php echo language_selector(); ?>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan="2" class="hlp_center"><input class="button" type="submit" name="submit" value="<?php print $PALANG['pLogin_button']; ?>" /></td>
|
<td colspan="2" class="hlp_center"><input class="button" type="submit" name="submit" value="<?php print $PALANG['pLogin_button']; ?>" /></td>
|
||||||
</tr>
|
</tr>
|
||||||
@ -31,3 +36,4 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
<?php /* vim: set ft=php expandtab softtabstop=3 tabstop=3 shiftwidth=3: */ ?>
|
||||||
|
@ -13,6 +13,11 @@
|
|||||||
<td><?php print $PALANG['pUsersLogin_password'] . ":"; ?></td>
|
<td><?php print $PALANG['pUsersLogin_password'] . ":"; ?></td>
|
||||||
<td><input class="flat" type="password" name="fPassword" /></td>
|
<td><input class="flat" type="password" name="fPassword" /></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="2">
|
||||||
|
<?php echo language_selector(); ?>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan="2" class="hlp_center"><input class="button" type="submit" name="submit" value="<?php print $PALANG['pUsersLogin_button']; ?>" /></td>
|
<td colspan="2" class="hlp_center"><input class="button" type="submit" name="submit" value="<?php print $PALANG['pUsersLogin_button']; ?>" /></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
*
|
*
|
||||||
* fUsername
|
* fUsername
|
||||||
* fPassword
|
* fPassword
|
||||||
|
* lang
|
||||||
*/
|
*/
|
||||||
|
|
||||||
require_once("../common.php");
|
require_once("../common.php");
|
||||||
@ -41,6 +42,12 @@ if ($_SERVER['REQUEST_METHOD'] == "POST")
|
|||||||
{
|
{
|
||||||
$fUsername = escape_string ($_POST['fUsername']);
|
$fUsername = escape_string ($_POST['fUsername']);
|
||||||
$fPassword = escape_string ($_POST['fPassword']);
|
$fPassword = escape_string ($_POST['fPassword']);
|
||||||
|
$lang = safepost('lang');
|
||||||
|
|
||||||
|
if ( $lang != check_language(0) ) { # only set cookie if language selection was changed
|
||||||
|
setcookie('lang', $lang, time() + 60*60*24*30); # language cookie, lifetime 30 days
|
||||||
|
# (language preference cookie is processed even if username and/or password are invalid)
|
||||||
|
}
|
||||||
|
|
||||||
$active = db_get_boolean(True);
|
$active = db_get_boolean(True);
|
||||||
$query = "SELECT password FROM $table_mailbox WHERE username='$fUsername' AND active=$active";
|
$query = "SELECT password FROM $table_mailbox WHERE username='$fUsername' AND active=$active";
|
||||||
|
Loading…
Reference in New Issue
Block a user