SF.net SVN: postfixadmin: [280] trunk
Brought to you by:
christian_boltz,
gingerdog
|
From: <chr...@us...> - 2007-12-30 01:32:30
|
Revision: 280
http://postfixadmin.svn.sourceforge.net/postfixadmin/?rev=280&view=rev
Author: christian_boltz
Date: 2007-12-29 17:32:33 -0800 (Sat, 29 Dec 2007)
Log Message:
-----------
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
Modified Paths:
--------------
trunk/common.php
trunk/functions.inc.php
trunk/login.php
trunk/templates/login.php
trunk/templates/users_login.php
trunk/users/login.php
Added Paths:
-----------
trunk/languages/language.php
Modified: trunk/common.php
===================================================================
--- trunk/common.php 2007-12-29 21:11:54 UTC (rev 279)
+++ trunk/common.php 2007-12-30 01:32:33 UTC (rev 280)
@@ -39,6 +39,7 @@
exit(0);
}
}
+require_once("$incpath/languages/language.php");
require_once("$incpath/functions.inc.php");
require_once("$incpath/languages/" . check_language () . ".lang");
Modified: trunk/functions.inc.php
===================================================================
--- trunk/functions.inc.php 2007-12-29 21:11:54 UTC (rev 279)
+++ trunk/functions.inc.php 2007-12-30 01:32:33 UTC (rev 280)
@@ -142,19 +142,29 @@
// check_language
// Action: checks what language the browser uses
// 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;
$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');
+ # TODO: use global $supported_languages (from languages/languages.php) instead
+
if(isset($_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++)
{
$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))
{
$lang = $lang_next;
@@ -165,8 +175,31 @@
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
// Action: checks if a string is valid and returns TRUE if this is the case.
@@ -374,7 +407,20 @@
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
// Action: Get all the properties of a domain.
Added: trunk/languages/language.php
===================================================================
--- trunk/languages/language.php (rev 0)
+++ trunk/languages/language.php 2007-12-30 01:32:33 UTC (rev 280)
@@ -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: */
+?>
Modified: trunk/login.php
===================================================================
--- trunk/login.php 2007-12-29 21:11:54 UTC (rev 279)
+++ trunk/login.php 2007-12-30 01:32:33 UTC (rev 280)
@@ -25,6 +25,7 @@
*
* fUsername
* fPassword
+ * lang
*/
require_once('common.php');
@@ -54,7 +55,13 @@
$fPassword = '';
if (isset ($_POST['fUsername'])) $fUsername = escape_string ($_POST['fUsername']);
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'");
if ($result['rows'] == 1)
{
Modified: trunk/templates/login.php
===================================================================
--- trunk/templates/login.php 2007-12-29 21:11:54 UTC (rev 279)
+++ trunk/templates/login.php 2007-12-30 01:32:33 UTC (rev 280)
@@ -14,6 +14,11 @@
<td><input class="flat" type="password" name="fPassword" /></td>
</tr>
<tr>
+ <td colspan="2">
+ <?php echo language_selector(); ?>
+ </td>
+ </tr>
+ <tr>
<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>
</div>
+<?php /* vim: set ft=php expandtab softtabstop=3 tabstop=3 shiftwidth=3: */ ?>
Modified: trunk/templates/users_login.php
===================================================================
--- trunk/templates/users_login.php 2007-12-29 21:11:54 UTC (rev 279)
+++ trunk/templates/users_login.php 2007-12-30 01:32:33 UTC (rev 280)
@@ -14,6 +14,11 @@
<td><input class="flat" type="password" name="fPassword" /></td>
</tr>
<tr>
+ <td colspan="2">
+ <?php echo language_selector(); ?>
+ </td>
+ </tr>
+ <tr>
<td colspan="2" class="hlp_center"><input class="button" type="submit" name="submit" value="<?php print $PALANG['pUsersLogin_button']; ?>" /></td>
</tr>
<tr>
Modified: trunk/users/login.php
===================================================================
--- trunk/users/login.php 2007-12-29 21:11:54 UTC (rev 279)
+++ trunk/users/login.php 2007-12-30 01:32:33 UTC (rev 280)
@@ -25,6 +25,7 @@
*
* fUsername
* fPassword
+ * lang
*/
require_once("../common.php");
@@ -41,7 +42,13 @@
{
$fUsername = escape_string ($_POST['fUsername']);
$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);
$query = "SELECT password FROM $table_mailbox WHERE username='$fUsername' AND active=$active";
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|