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. |