Index: branches/2.8.x/CHANGELOG
===================================================================
--- branches/2.8.x/CHANGELOG	(revision 1434)
+++ branches/2.8.x/CHANGELOG	(revision 1435)
@@ -11,6 +11,9 @@
 ! = Update/Change
 
 ------------------------------------- 2.8.2 -------------------------------------
+17 Mae-2011 Build 1435 Dietmar Woellbrink (Luisehahne)
+# fix entities converting in select languages (Tks to the community)
+# see http://www.websitebaker2.org/forum/index.php/topic,20547.msg140512.html#msg140512
 13 Mae-2011 Build 1433 Dietmar Woellbrink (Luisehahne)
 # fixed bug : Call to undefined method wb::preprocess() 
 14 Feb-2011 Build 1432 Dietmar Woellbrink (Luisehahne)
Index: branches/2.8.x/wb/admin/interface/version.php
===================================================================
--- branches/2.8.x/wb/admin/interface/version.php	(revision 1434)
+++ branches/2.8.x/wb/admin/interface/version.php	(revision 1435)
@@ -52,6 +52,6 @@
 
 // check if defined to avoid errors during installation (redirect to admin panel fails if PHP error/warnings are enabled)
 if(!defined('VERSION')) define('VERSION', '2.8.2.RC5');
-if(!defined('REVISION')) define('REVISION', '1433');
+if(!defined('REVISION')) define('REVISION', '1435');
 
 ?>
Index: branches/2.8.x/wb/admin/settings/index.php
===================================================================
--- branches/2.8.x/wb/admin/settings/index.php	(revision 1434)
+++ branches/2.8.x/wb/admin/settings/index.php	(revision 1435)
@@ -155,27 +155,14 @@
 					 ));
 
 	// Insert language values
-	$result = $database->query("SELECT * FROM ".TABLE_PREFIX."addons WHERE type = 'language' ORDER BY name");
+	$result = $database->query("SELECT * FROM ".TABLE_PREFIX."addons WHERE type = 'language' ORDER BY directory");
 	if($result->numRows() > 0)
 	{
 		while($addon = $result->fetchRow()) {
-			$l_codes[$addon['name']] = $addon['directory'];
-			$l_names[$addon['name']] = entities_to_7bit($addon['name']); // sorting-problem workaround
-		}
-		asort($l_names);
-		foreach($l_names as $l_name=>$v) {
-			// Insert code and name
-			$template->set_var(array(
-									'CODE' => $l_codes[$l_name],
-									'NAME' => $l_name,
-									'FLAG' => THEME_URL.'/images/flags/'.strtolower($l_codes[$l_name]),
-									));
-			// Check if it is selected
-			if(DEFAULT_LANGUAGE == $l_codes[$l_name]) {
-				$template->set_var('SELECTED', ' selected="selected"');
-			} else {
-				$template->set_var('SELECTED', '');
-			}
+			$template->set_var('CODE',        $addon['directory']);
+			$template->set_var('NAME',        $addon['name']);
+			$template->set_var('FLAG',        THEME_URL.'/images/flags/'.strtolower($addon['directory']));
+			$template->set_var('SELECTED',    (DEFAULT_LANGUAGE == $addon['directory'] ? ' selected="selected"' : '') );
 			$template->parse('language_list', 'language_list_block', true);
 		}
 	}
Index: branches/2.8.x/wb/admin/preferences/index.php
===================================================================
--- branches/2.8.x/wb/admin/preferences/index.php	(revision 1434)
+++ branches/2.8.x/wb/admin/preferences/index.php	(revision 1435)
@@ -1,154 +1,154 @@
-<?php
-/**
- *
- * @category        admin
- * @package         preferences
- * @author          Independend-Software-Team
- * @author          WebsiteBaker Project
- * @copyright       2004-2009, Ryan Djurovich
- * @copyright       2009-2011, Website Baker Org. e.V.
- * @link			http://www.websitebaker2.org/
- * @license         http://www.gnu.org/licenses/gpl.html
- * @platform        WebsiteBaker 2.8.x
- * @requirements    PHP 5.2.2 and higher
- * @version         $Id$
- * @filesource		$HeadURL$
- * @lastmodified    $Date$
- *
- */
-
-// prevent this file from being accessed directly
-//if(defined('WB_PATH') == false) { exit("Cannot access this file directly"); }
-//Workaround if this is first page (WBAdmin in use)
-
-// put all inside a function to prevent global vars
-function build_page( &$admin, &$database )
-{
-	global $HEADING, $TEXT;
-	include_once(WB_PATH.'/framework/functions-utf8.php');
-// Create new template object, assign template file, start main-block
-	$template = new Template( THEME_PATH.'/templates' );
-	$template->set_file( 'page', 'preferences.htt' );
-	$template->set_block( 'page', 'main_block', 'main' );
-// read user-info from table users and assign it to template
-	$sql  = 'SELECT `display_name`, `username`, `email` FROM `'.TABLE_PREFIX.'users` ';
-	$sql .= 'WHERE `user_id` = '.(int)$admin->get_user_id();
-	if( $res_user = $database->query($sql) )
-	{
-		if( $rec_user = $res_user->fetchRow() )
-		{
-			$template->set_var('DISPLAY_NAME', $rec_user['display_name']);
-			$template->set_var('USERNAME',     $rec_user['username']);
-			$template->set_var('EMAIL',        $rec_user['email']);
-			$template->set_var('ADMIN_URL',    ADMIN_URL);
-		}
-	}
-// read available languages from table addons and assign it to the template
-	$sql  = 'SELECT * FROM `'.TABLE_PREFIX.'addons` ';
-	$sql .= 'WHERE `type` = "language" ORDER BY `directory`';
-	if( $res_lang = $database->query($sql) )
-	{
-		$template->set_block('main_block', 'language_list_block', 'language_list');
-		while( $rec_lang = $res_lang->fetchRow() )
-		{
-			$template->set_var('CODE',        $rec_lang['directory']);
-			$template->set_var('NAME',        $rec_lang['name']);
-			$template->set_var('FLAG',        THEME_URL.'/images/flags/'.strtolower($rec_lang['directory']));
-			$template->set_var('SELECTED',    (LANGUAGE == $rec_lang['directory'] ? ' selected="selected"' : '') );
-			$template->parse('language_list', 'language_list_block', true);
-		}
-	}
-// Insert default timezone values
-	$user_time = true;
-	include_once( ADMIN_PATH.'/interface/timezones.php' );
-	$template->set_block('main_block', 'timezone_list_block', 'timezone_list');
-	foreach( $TIMEZONES AS $hour_offset => $title )
-	{
-		$template->set_var('VALUE',    $hour_offset);
-		$template->set_var('NAME',     $title);
-		$template->set_var('SELECTED', ($admin->get_timezone() == ($hour_offset * 3600) ? ' selected="selected"' : '') );
-		$template->parse('timezone_list', 'timezone_list_block', true);
-	}
-// Insert date format list
-	include_once( ADMIN_PATH.'/interface/date_formats.php' );
-	$template->set_block('main_block', 'date_format_list_block', 'date_format_list');
-	foreach( $DATE_FORMATS AS $format => $title )
-	{
-		$format = str_replace('|', ' ', $format); // Add's white-spaces (not able to be stored in array key)
-		$template->set_var( 'VALUE', ($format != 'system_default' ? $format : 'system_default') );
-		$template->set_var( 'NAME',  $title );
-		if( (DATE_FORMAT == $format && !isset($_SESSION['USE_DEFAULT_DATE_FORMAT'])) ||
-			('system_default' == $format && isset($_SESSION['USE_DEFAULT_DATE_FORMAT'])) )
-		{
-			$template->set_var('SELECTED', ' selected="selected"');
-		}else {
-			$template->set_var('SELECTED', '');
-		}
-		$template->parse('date_format_list', 'date_format_list_block', true);
-	}
-// Insert time format list
-	include_once( ADMIN_PATH.'/interface/time_formats.php' );
-	$template->set_block('main_block', 'time_format_list_block', 'time_format_list');
-	foreach( $TIME_FORMATS AS $format => $title )
-	{
-		$format = str_replace('|', ' ', $format); // Add's white-spaces (not able to be stored in array key)
-		$template->set_var('VALUE', $format != 'system_default' ? $format : 'system_default' );
-		$template->set_var('NAME',  $title);
-		if( (TIME_FORMAT == $format && !isset($_SESSION['USE_DEFAULT_TIME_FORMAT'])) ||
-		    ('system_default' == $format && isset($_SESSION['USE_DEFAULT_TIME_FORMAT'])) )
-		{
-			$template->set_var('SELECTED', ' selected="selected"');
-		} else {
-			$template->set_var('SELECTED', '');
-		}
-		$template->parse('time_format_list', 'time_format_list_block', true);
-	}
-
-// assign systemvars to template
-	$template->set_var(array( 'ADMIN_URL'  => ADMIN_URL,
-	                          'WB_URL'     => WB_URL,
-                              'WB_PATH'    => WB_PATH,
-                              'THEME_URL'  => THEME_URL,
-		                      'ACTION_URL' => ADMIN_URL.'/preferences/save.php'
-                            )
-                      );
-	$template->set_var('FTAN', $admin->getFTAN());
-	$template->set_var('FORM_NAME', 'preferences_save');
-// assign language vars
-	$template->set_var(array( 'HEADING_MY_SETTINGS'      => $HEADING['MY_SETTINGS'],
-                              'HEADING_MY_EMAIL'         => $HEADING['MY_EMAIL'],
-                              'HEADING_MY_PASSWORD'      => $HEADING['MY_PASSWORD'],
-                              'TEXT_SAVE'                => $TEXT['SAVE'],
-                              'TEXT_RESET'               => $TEXT['RESET'],
-                              'TEXT_DISPLAY_NAME'        => $TEXT['DISPLAY_NAME'],
-                              'TEXT_USERNAME'            => $TEXT['USERNAME'],
-                              'TEXT_EMAIL'               => $TEXT['EMAIL'],
-                              'TEXT_LANGUAGE'            => $TEXT['LANGUAGE'],
-                              'TEXT_TIMEZONE'            => $TEXT['TIMEZONE'],
-                              'TEXT_DATE_FORMAT'         => $TEXT['DATE_FORMAT'],
-                              'TEXT_TIME_FORMAT'         => $TEXT['TIME_FORMAT'],
-                              'TEXT_CURRENT_PASSWORD'    => $TEXT['CURRENT_PASSWORD'],
-                              'TEXT_NEW_PASSWORD'        => $TEXT['NEW_PASSWORD'],
-                              'TEXT_RETYPE_NEW_PASSWORD' => $TEXT['RETYPE_NEW_PASSWORD'],
-							  'TEXT_NEW_PASSWORD'        => $TEXT['NEW_PASSWORD'],
-                              'TEXT_RETYPE_NEW_PASSWORD' => $TEXT['RETYPE_NEW_PASSWORD'],
-							  'TEXT_NEED_CURRENT_PASSWORD' => $TEXT['NEED_CURRENT_PASSWORD'],
-	                          'EMPTY_STRING'             => ''
-                            )
-                      );
-// Parse template for preferences form
-	$template->parse('main', 'main_block', false);
-	$output = $template->finish($template->parse('output', 'page'));
-	return $output;
-}
-// test if valid $admin-object already exists (bit complicated about PHP4 Compatibility)
-if( !(isset($admin) && is_object($admin) && (get_class($admin) == 'admin')) )
-{
-    require( '../../config.php' );
-	require_once( WB_PATH.'/framework/class.admin.php' );
-	$admin = new admin('Preferences');
-}
-echo build_page($admin, $database);
-$admin->print_footer();
-
+<?php
+/**
+ *
+ * @category        admin
+ * @package         preferences
+ * @author          Independend-Software-Team
+ * @author          WebsiteBaker Project
+ * @copyright       2004-2009, Ryan Djurovich
+ * @copyright       2009-2011, Website Baker Org. e.V.
+ * @link			http://www.websitebaker2.org/
+ * @license         http://www.gnu.org/licenses/gpl.html
+ * @platform        WebsiteBaker 2.8.x
+ * @requirements    PHP 5.2.2 and higher
+ * @version         $Id$
+ * @filesource		$HeadURL$
+ * @lastmodified    $Date$
+ *
+ */
+
+// prevent this file from being accessed directly
+//if(defined('WB_PATH') == false) { exit("Cannot access this file directly"); }
+//Workaround if this is first page (WBAdmin in use)
+
+// put all inside a function to prevent global vars
+function build_page( &$admin, &$database )
+{
+	global $HEADING, $TEXT;
+	include_once(WB_PATH.'/framework/functions-utf8.php');
+// Create new template object, assign template file, start main-block
+	$template = new Template( THEME_PATH.'/templates' );
+	$template->set_file( 'page', 'preferences.htt' );
+	$template->set_block( 'page', 'main_block', 'main' );
+// read user-info from table users and assign it to template
+	$sql  = 'SELECT `display_name`, `username`, `email` FROM `'.TABLE_PREFIX.'users` ';
+	$sql .= 'WHERE `user_id` = '.(int)$admin->get_user_id();
+	if( $res_user = $database->query($sql) )
+	{
+		if( $rec_user = $res_user->fetchRow() )
+		{
+			$template->set_var('DISPLAY_NAME', $rec_user['display_name']);
+			$template->set_var('USERNAME',     $rec_user['username']);
+			$template->set_var('EMAIL',        $rec_user['email']);
+			$template->set_var('ADMIN_URL',    ADMIN_URL);
+		}
+	}
+// read available languages from table addons and assign it to the template
+	$sql  = 'SELECT * FROM `'.TABLE_PREFIX.'addons` ';
+	$sql .= 'WHERE `type` = \'language\' ORDER BY `directory`';
+	if( $res_lang = $database->query($sql) )
+	{
+		$template->set_block('main_block', 'language_list_block', 'language_list');
+		while( $rec_lang = $res_lang->fetchRow() )
+		{
+			$template->set_var('CODE',        $rec_lang['directory']);
+			$template->set_var('NAME',        $rec_lang['name']);
+			$template->set_var('FLAG',        THEME_URL.'/images/flags/'.strtolower($rec_lang['directory']));
+			$template->set_var('SELECTED',    (LANGUAGE == $rec_lang['directory'] ? ' selected="selected"' : '') );
+			$template->parse('language_list', 'language_list_block', true);
+		}
+	}
+// Insert default timezone values
+	$user_time = true;
+	include_once( ADMIN_PATH.'/interface/timezones.php' );
+	$template->set_block('main_block', 'timezone_list_block', 'timezone_list');
+	foreach( $TIMEZONES AS $hour_offset => $title )
+	{
+		$template->set_var('VALUE',    $hour_offset);
+		$template->set_var('NAME',     $title);
+		$template->set_var('SELECTED', ($admin->get_timezone() == ($hour_offset * 3600) ? ' selected="selected"' : '') );
+		$template->parse('timezone_list', 'timezone_list_block', true);
+	}
+// Insert date format list
+	include_once( ADMIN_PATH.'/interface/date_formats.php' );
+	$template->set_block('main_block', 'date_format_list_block', 'date_format_list');
+	foreach( $DATE_FORMATS AS $format => $title )
+	{
+		$format = str_replace('|', ' ', $format); // Add's white-spaces (not able to be stored in array key)
+		$template->set_var( 'VALUE', ($format != 'system_default' ? $format : 'system_default') );
+		$template->set_var( 'NAME',  $title );
+		if( (DATE_FORMAT == $format && !isset($_SESSION['USE_DEFAULT_DATE_FORMAT'])) ||
+			('system_default' == $format && isset($_SESSION['USE_DEFAULT_DATE_FORMAT'])) )
+		{
+			$template->set_var('SELECTED', ' selected="selected"');
+		}else {
+			$template->set_var('SELECTED', '');
+		}
+		$template->parse('date_format_list', 'date_format_list_block', true);
+	}
+// Insert time format list
+	include_once( ADMIN_PATH.'/interface/time_formats.php' );
+	$template->set_block('main_block', 'time_format_list_block', 'time_format_list');
+	foreach( $TIME_FORMATS AS $format => $title )
+	{
+		$format = str_replace('|', ' ', $format); // Add's white-spaces (not able to be stored in array key)
+		$template->set_var('VALUE', $format != 'system_default' ? $format : 'system_default' );
+		$template->set_var('NAME',  $title);
+		if( (TIME_FORMAT == $format && !isset($_SESSION['USE_DEFAULT_TIME_FORMAT'])) ||
+		    ('system_default' == $format && isset($_SESSION['USE_DEFAULT_TIME_FORMAT'])) )
+		{
+			$template->set_var('SELECTED', ' selected="selected"');
+		} else {
+			$template->set_var('SELECTED', '');
+		}
+		$template->parse('time_format_list', 'time_format_list_block', true);
+	}
+
+// assign systemvars to template
+	$template->set_var(array( 'ADMIN_URL'  => ADMIN_URL,
+	                          'WB_URL'     => WB_URL,
+                              'WB_PATH'    => WB_PATH,
+                              'THEME_URL'  => THEME_URL,
+		                      'ACTION_URL' => ADMIN_URL.'/preferences/save.php'
+                            )
+                      );
+	$template->set_var('FTAN', $admin->getFTAN());
+	$template->set_var('FORM_NAME', 'preferences_save');
+// assign language vars
+	$template->set_var(array( 'HEADING_MY_SETTINGS'      => $HEADING['MY_SETTINGS'],
+                              'HEADING_MY_EMAIL'         => $HEADING['MY_EMAIL'],
+                              'HEADING_MY_PASSWORD'      => $HEADING['MY_PASSWORD'],
+                              'TEXT_SAVE'                => $TEXT['SAVE'],
+                              'TEXT_RESET'               => $TEXT['RESET'],
+                              'TEXT_DISPLAY_NAME'        => $TEXT['DISPLAY_NAME'],
+                              'TEXT_USERNAME'            => $TEXT['USERNAME'],
+                              'TEXT_EMAIL'               => $TEXT['EMAIL'],
+                              'TEXT_LANGUAGE'            => $TEXT['LANGUAGE'],
+                              'TEXT_TIMEZONE'            => $TEXT['TIMEZONE'],
+                              'TEXT_DATE_FORMAT'         => $TEXT['DATE_FORMAT'],
+                              'TEXT_TIME_FORMAT'         => $TEXT['TIME_FORMAT'],
+                              'TEXT_CURRENT_PASSWORD'    => $TEXT['CURRENT_PASSWORD'],
+                              'TEXT_NEW_PASSWORD'        => $TEXT['NEW_PASSWORD'],
+                              'TEXT_RETYPE_NEW_PASSWORD' => $TEXT['RETYPE_NEW_PASSWORD'],
+							  'TEXT_NEW_PASSWORD'        => $TEXT['NEW_PASSWORD'],
+                              'TEXT_RETYPE_NEW_PASSWORD' => $TEXT['RETYPE_NEW_PASSWORD'],
+							  'TEXT_NEED_CURRENT_PASSWORD' => $TEXT['NEED_CURRENT_PASSWORD'],
+	                          'EMPTY_STRING'             => ''
+                            )
+                      );
+// Parse template for preferences form
+	$template->parse('main', 'main_block', false);
+	$output = $template->finish($template->parse('output', 'page'));
+	return $output;
+}
+// test if valid $admin-object already exists (bit complicated about PHP4 Compatibility)
+if( !(isset($admin) && is_object($admin) && (get_class($admin) == 'admin')) )
+{
+    require( '../../config.php' );
+	require_once( WB_PATH.'/framework/class.admin.php' );
+	$admin = new admin('Preferences');
+}
+echo build_page($admin, $database);
+$admin->print_footer();
+
 ?>
\ No newline at end of file
Index: branches/2.8.x/wb/admin/languages/index.php
===================================================================
--- branches/2.8.x/wb/admin/languages/index.php	(revision 1434)
+++ branches/2.8.x/wb/admin/languages/index.php	(revision 1435)
@@ -35,7 +35,7 @@
 
 // Insert values into language list
 $template->set_block('main_block', 'language_list_block', 'language_list');
-$result = $database->query("SELECT * FROM ".TABLE_PREFIX."addons WHERE type = 'language' order by name");
+$result = $database->query("SELECT * FROM ".TABLE_PREFIX."addons WHERE type = 'language' order by directory");
 if($result->numRows() > 0) {
 	while($addon = $result->fetchRow()) {
 		$template->set_var('VALUE', $addon['directory']);
Index: branches/2.8.x/wb/account/preferences_form.php
===================================================================
--- branches/2.8.x/wb/account/preferences_form.php	(revision 1434)
+++ branches/2.8.x/wb/account/preferences_form.php	(revision 1435)
@@ -46,13 +46,15 @@
 		 *	storred in the field "directory" ...
 		 *
 		 */
-		$query = "SELECT directory, name from ".TABLE_PREFIX."addons where type='language' order by 'name'";
+		$query  = 'SELECT * FROM `'.TABLE_PREFIX.'addons` ';
+		$query .= 'WHERE `type` = \'language\' ORDER BY `directory`';
 		$result = $database->query($query);
 		if ($result) {
 			$options_html = "";
 			while($data = $result->fetchRow()) {
 				$sel = ($data['directory'] == LANGUAGE) ? " selected=\"selected\" " : "";
-				$options_html .= "<option value=\"".$data['directory']."\" ".$sel.">".$data['name']." (".$data['directory'].")</option>\n";
+				// $options_html .= "<option value=\"".$data['directory']."\" ".$sel.">".$data['name']." (".$data['directory'].")</option>\n";
+				$options_html .= "<option value=\"".$data['directory']."\" ".$sel." style=\"background: url(".THEME_URL.'/images/flags/'.strtolower($data['directory']).".png) no-repeat center left; padding-left: 20px;\">".$data['name']." (".$data['directory'].")</option>\n";
 			}
 			echo $options_html;
 		}
Index: branches/2.8.x/wb/framework/functions.php
===================================================================
--- branches/2.8.x/wb/framework/functions.php	(revision 1434)
+++ branches/2.8.x/wb/framework/functions.php	(revision 1435)
@@ -1173,11 +1173,11 @@
 		// read contents of the template language file into string
 		$data = @file_get_contents(WB_PATH.'/languages/'.str_replace('.php','',basename($file)).'.php');
 		// use regular expressions to fetch the content of the variable from the string
-		$language_name = get_variable_content('language_name', $data, false);
-		$language_code = get_variable_content('language_code', $data, false);
-		$language_author = get_variable_content('language_author', $data);
-		$language_version = get_variable_content('language_version', $data, false);
-		$language_platform = get_variable_content('language_platform', $data, false);
+		$language_name = get_variable_content('language_name', $data, false, false);
+		$language_code = get_variable_content('language_code', $data, false, false);
+		$language_author = get_variable_content('language_author', $data, false, false);
+		$language_version = get_variable_content('language_version', $data, false, false);
+		$language_platform = get_variable_content('language_platform', $data, false, false);
 
 		if(isset($language_name))
 		{
