Index: branches/2.8.x/CHANGELOG
===================================================================
--- branches/2.8.x/CHANGELOG	(revision 1911)
+++ branches/2.8.x/CHANGELOG	(revision 1912)
@@ -12,6 +12,10 @@
 ===============================================================================
 
 
+07 Jun-2013 Build 1912 Dietmar Woellbrink (Luisehahne)
+! /admin/preferences/index.php change to new Translate class
+  languages only given for existing page languages
+!  /admin/settings/ change to new Translate class
 07 Jun-2013 Build 1911 Dietmar Woellbrink (Luisehahne)
 ! modules/menu_link/save.php coding new sql logic to replace adding an empty table row in add.php
 07 Jun-2013 Build 1910 Dietmar Woellbrink (Luisehahne)
Index: branches/2.8.x/wb/admin/interface/version.php
===================================================================
--- branches/2.8.x/wb/admin/interface/version.php	(revision 1911)
+++ branches/2.8.x/wb/admin/interface/version.php	(revision 1912)
@@ -51,5 +51,5 @@
 
 // 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.3');
-if(!defined('REVISION')) define('REVISION', '1911');
+if(!defined('REVISION')) define('REVISION', '1912');
 if(!defined('SP')) define('SP', '');
Index: branches/2.8.x/wb/admin/settings/save.php
===================================================================
--- branches/2.8.x/wb/admin/settings/save.php	(revision 1911)
+++ branches/2.8.x/wb/admin/settings/save.php	(revision 1912)
@@ -4,13 +4,13 @@
  * @category        admin
  * @package         settings
  * @author          WebsiteBaker Project
- * @copyright       2009-2012, WebsiteBaker Org. e.V.
- * @link			http://www.websitebaker2.org/
+ * @copyright       2009-2013, WebsiteBaker Org. e.V.
+ * @link            http://www.websitebaker.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$
+ * @filesource      $HeadURL$
  * @lastmodified    $Date$
  *
  */
@@ -186,9 +186,10 @@
     'page_spacer',
     'page_icon_dir',
     );
-$disallow_in_fields = array(
-    'pages_directory',
-    'media_directory',
+$aPreventFromUpdate = array(
+    'sp',
+    'version',
+//    'page_extension',
     'wb_version'
     );
 $StripCodeFromInput = array(
@@ -207,62 +208,72 @@
     );
 
 // Query current settings in the db, then loop through them and update the db with the new value
-$settings = array();
-$old_settings = array();
+//$settings = array();
+//$old_settings = array();
 // Query current settings in the db, then loop through them to get old values
 $sql  = 'SELECT `name`, `value` FROM `'.TABLE_PREFIX.'settings`';
 $sql .= 'ORDER BY `name`';
 
 if($res_settings = $database->query($sql)) {
-	$passed = false;
+	$iQueryStart = $database->getQueryCount;
 	while($setting = $res_settings->fetchRow(MYSQL_ASSOC))
 	{
+		$passed = false;
 		$setting_name = $setting['name'];
-		$old_settings[$setting_name] = $setting['value'];
-		$value = $admin->get_post($setting_name);
-		$value = isset($_POST[$setting_name]) ? $value : $old_settings[$setting_name] ;
+//		$old_settings = $setting['value'];
+//		$value = $admin->get_post($setting_name);
+		if(($value = $admin->get_post($setting_name)) === null) { continue; }
+//		$value = isset($_POST[$setting_name]) ? $value : $old_settings ;
 		switch ($setting_name) {
 			case 'default_timezone':
-		    	$value = (is_numeric($value) ? $value : 0);
-		    	$value = ( ($value >= -12 && $value <= 13) ? $value :0 ) * 3600;
-				$passed = true;
+				$value = intval($value);
+				$value = ( ($value >= -12 && $value <= 13) ? $value :0 ) * 3600;
+				$passed = ($value != $setting['value']);
 				break;
 			case 'string_dir_mode':
 				$value=$dir_mode;
-				$passed = true;
+				$passed = ($value != $setting['value']);
 				break;
 			case 'string_file_mode':
 				$value=$file_mode;
-	 			$passed = true;
-    			break;
+	 			$passed = ($value != $setting['value']);
+				break;
+			case 'page_extension':
+				$value = $admin->StripCodeFromText($value);
+				if(!preg_match('/^\.[a-z][a-z0-9]+$/siu', $value)) {
+					$value = '.php';
+				}
+				$passed = ($value != $setting['value']);
+				break;
 			case 'sec_anchor':
-                $value = $admin->StripCodeFromText($value);
-				$value=(($value=='') ? 'section_' : $value);
-	 			$passed = true;
+				$value = $admin->StripCodeFromText($value);
+				$value=(($value=='') ? 'Sec' : $value);
+	 			$passed = ($value != $setting['value']);
 				break;
 			case 'media_directory':
-				$value = ( (strpos($value,'/',0)===false) && ($value!= '') ) ? '/'.$value : rtrim($value,'/'); 
-	 			$passed = true;
+				$value = trim($value,'/');
+				$value = ( ($value != '')  ? '/'.$value : '/media' ); 
+	 			$passed = ($value != $setting['value']);
 				break;
-			case 'pages_directory':
-				if( ($database->get_one('SELECT COUNT(*) FROM `'.TABLE_PREFIX.'pages`'))==0 ) {
-					$value = rtrim($admin->StripCodeFromText($value));
-					$passed = true;
+			 case 'pages_directory':
+			 $sql = 'SELECT COUNT(*) FROM `'.TABLE_PREFIX.'pages`';
+			  if( !($database->get_one($sql)) ) {
+			   $value = rtrim($admin->StripCodeFromText($value));
+			   $passed = ($value != $setting['value']);
+			  }
+			  $value = trim($value,'/');
+			  $value = ( ($value != '')  ? '/'.$value : '' ); 
+			  break;
+			default :
+				 if($value == '')  {
+					$passed = ((in_array($setting_name, $allow_empty_values)) && ($value != $setting['value']));
 				} else {
-					$value = rtrim($old_settings[$setting_name]);
+					if(in_array($setting_name, $StripCodeFromInput) ) {
+						$value = trim($admin->StripCodeFromText($value));
+					}
+					$passed = (($value != '') && ($value != $setting['value']));
 				}
-				$value = ( (strpos($value,'/',0)===false) && ($value != '')  ? '/'.$value : rtrim($value,'/') ); 
 				break;
-			case 'wbmailer_smtp_auth':
-				$value = true ;
-	 			$passed = true;
-				break;
-			default :
-                $passed = in_array($setting_name, $allow_empty_values);
-                if(in_array($setting_name, $StripCodeFromInput) ) {
-                    $value = $admin->StripCodeFromText($value);
-                }
-				break;
 		}
 
 	    if (!in_array($setting_name, $allow_tags_in_fields))
@@ -269,8 +280,8 @@
 	    {
 	        $value = strip_tags($value);
 	    }
-
-	    if ( !in_array($value, $disallow_in_fields) && (isset($_POST[$setting_name]) || $passed == true) )
+		if( !in_array($setting_name, $aPreventFromUpdate) && $passed )
+//	    if ( !in_array($setting_name, $aPreventFromUpdate) && (isset($_POST[$setting_name]) || $passed == true) )
 	    {
 	        $value = trim($database->escapeString($value));
 	        $sql = 'UPDATE `'.TABLE_PREFIX.'settings` ';
@@ -282,11 +293,12 @@
 				if($database->is_error()) {
 					$admin->print_error($database->get_error, $js_back );
 				}
-	        }
+	        } 
 		}
 	}
+	$iQueriesDone = $database->getQueryCount - $iQueryStart;
+}
 
-}
 /**
  * now save search settings
  */
@@ -391,6 +403,7 @@
 if($database->is_error()) {
 	$admin->print_error($database->get_error, $js_back );
 } else {
+//	$admin->print_success($iQueriesDone.' Queries '.$MESSAGE['SETTINGS_SAVED'], $js_back );
 	$admin->print_success($MESSAGE['SETTINGS_SAVED'], $js_back );
 }
 $admin->print_footer();
Index: branches/2.8.x/wb/admin/settings/languages/EN.php
===================================================================
--- branches/2.8.x/wb/admin/settings/languages/EN.php	(revision 1911)
+++ branches/2.8.x/wb/admin/settings/languages/EN.php	(revision 1912)
@@ -12,4 +12,4 @@
 $TEXT['MODULES_DIRECTORY'] = 'Modules for upgrade';
 $HELP['ACTIVATION_MAIL'] = 'Registration per Activation-Mail (Enabled) or Directregistration (Disabled)';
 $HELP['REBUILD_ACCESS_FILES'] = '- Modules listet in the next field, will be upgraded too, (Comma separate list)';
-//
+$TEXT['SECTION_ID_PREFIX'] = 'Section-ID prefix';
Index: branches/2.8.x/wb/admin/settings/languages/DE.php
===================================================================
--- branches/2.8.x/wb/admin/settings/languages/DE.php	(revision 1911)
+++ branches/2.8.x/wb/admin/settings/languages/DE.php	(revision 1912)
@@ -13,4 +13,4 @@
 $TEXT['MODULES_DIRECTORY'] = 'Module für Aktualisierung';
 $HELP['ACTIVATION_MAIL'] = 'Registrierung per Aktivierungs-Mail (Eingeschaltet) oder Direktregistrierung (Ausgeschaltet)';
 $HELP['REBUILD_ACCESS_FILES'] = '- Aktualisiert auch nachfolgend eingetragene geprüfte Module, (Komma getrennte Liste)';
-//
+$TEXT['SECTION_ID_PREFIX'] = 'AbschnittsID Präfix';
Index: branches/2.8.x/wb/admin/settings/index.php
===================================================================
--- branches/2.8.x/wb/admin/settings/index.php	(revision 1911)
+++ branches/2.8.x/wb/admin/settings/index.php	(revision 1912)
@@ -4,8 +4,8 @@
  * @category        admin
  * @package         settings
  * @author          Ryan Djurovich, WebsiteBaker Project
- * @copyright       2009-2012, WebsiteBaker Org. e.V.
- * @link            http://www.websitebaker2.org/
+ * @copyright       2009-2013, WebsiteBaker Org. e.V.
+ * @link            http://www.websitebaker.org/
  * @license         http://www.gnu.org/licenses/gpl.html
  * @platform        WebsiteBaker 2.8.x
  * @requirements    PHP 5.2.2 and higher
@@ -57,13 +57,15 @@
 $oTpl->set_file('page',  'settings.htt');
 $oTpl->set_block('page', 'main_block', 'main');
 
-$mLang = ModLanguage::getInstance();
-$mLang->setLanguage(dirname(__FILE__).'/languages/', LANGUAGE, DEFAULT_LANGUAGE);
-
-$oTpl->set_var('FTAN', $admin->getFTAN());
+//$mLang = ModLanguage::getInstance();
+//$mLang->setLanguage(dirname(__FILE__).'/languages/', LANGUAGE, DEFAULT_LANGUAGE);
+$mLang = Translate::getinstance();
+$mLang->enableAddon('admin\settings');
 /*-- insert all needed vars from language files ----------------------------------------*/
 $oTpl->set_var($mLang->getLangArray());
 
+$oTpl->set_var('FTAN', $admin->getFTAN());
+
 // Query current settings in the db, then loop through them and print them
 $query = "SELECT * FROM `".TABLE_PREFIX."settings`";
 if($results = $database->query($query)) {
@@ -82,7 +84,7 @@
     	$oTpl->set_var('ADVANCED_FILE_PERMS_ID', 'file_perms_box');
     	$oTpl->set_var('BASIC_FILE_PERMS_ID', 'hide');
     	$oTpl->set_var('ADVANCED', 'yes');
-    	$oTpl->set_var('ADVANCED_BUTTON', '&lt;&lt; '.$TEXT['HIDE_ADVANCED']);
+    	$oTpl->set_var('ADVANCED_BUTTON', '&lt;&lt; '.$mLang->TEXT_HIDE_ADVANCED);
     	$oTpl->set_var('ADVANCED_LINK', 'index.php?advanced=no');
 
     } else {
@@ -91,7 +93,7 @@
     	$oTpl->set_var('ADVANCED_FILE_PERMS_ID', 'hide');
 
     	$oTpl->set_var('ADVANCED', 'no');
-    	$oTpl->set_var('ADVANCED_BUTTON', $TEXT['SHOW_ADVANCED'].' &gt;&gt;');
+    	$oTpl->set_var('ADVANCED_BUTTON', $mLang->TEXT_SHOW_ADVANCED.' &gt;&gt;');
     	$oTpl->set_var('ADVANCED_LINK', 'index.php?advanced=yes');
     }
 
@@ -104,75 +106,6 @@
 		'ADMIN_URL' => ADMIN_URL,
 	 ));
 
-	// Insert language headings
-	$oTpl->set_var(array(
-		'HEADING_GENERAL_SETTINGS' => $HEADING['GENERAL_SETTINGS'],
-		'HEADING_DEFAULT_SETTINGS' => $HEADING['DEFAULT_SETTINGS'],
-		'HEADING_SEARCH_SETTINGS' => $HEADING['SEARCH_SETTINGS'],
-		'HEADING_SERVER_SETTINGS' => $HEADING['SERVER_SETTINGS'],
-		'HEADING_WBMAILER_SETTINGS' => $HEADING['WBMAILER_SETTINGS'],
-		'HEADING_ADMINISTRATION_TOOLS' => $HEADING['ADMINISTRATION_TOOLS']
-		)
-	);
-
-	// Insert language textarea label
-	$oTpl->set_var(array(
-		'TEXT_WEBSITE_TITLE' => $TEXT['WEBSITE_TITLE'],
-		'TEXT_WEBSITE_DESCRIPTION' => $TEXT['WEBSITE_DESCRIPTION'],
-		'TEXT_WEBSITE_KEYWORDS' => $TEXT['WEBSITE_KEYWORDS'],
-		'TEXT_WEBSITE_HEADER' => $TEXT['WEBSITE_HEADER'],
-		'TEXT_WEBSITE_FOOTER' => $TEXT['WEBSITE_FOOTER'],
-		'TEXT_HEADER' => $TEXT['HEADER'],
-		'TEXT_FOOTER' => $TEXT['FOOTER'],
-		'TEXT_TEXT' => $TEXT['TEXT'],
-		'TEXT_RESULTS_HEADER' => $TEXT['RESULTS_HEADER'],
-		'TEXT_RESULTS_LOOP' => $TEXT['RESULTS_LOOP'],
-		'TEXT_RESULTS_FOOTER' => $TEXT['RESULTS_FOOTER'],
-		));
-
-	// Insert generell language
-    $oTpl->set_var(array(
-		'TEXT_SAVE' => $TEXT['SAVE'],
-		'TEXT_RESET' => $TEXT['RESET'],
-		'TEXT_ENABLED' => $TEXT['ENABLED'],
-		'TEXT_DISABLED' => $TEXT['DISABLED'],
-		'TEXT_DEFAULT' => $TEXT['DEFAULT'],
-		'TEXT_NO_RESULTS' => $TEXT['NO_RESULTS'],
-		'TEXT_PLEASE_SELECT' => $TEXT['PLEASE_SELECT'],
-		));
-
-// Insert language labels
-	$oTpl->set_var(array(
-		'TEXT_PAGE_TRASH' => $TEXT['PAGE_TRASH'],
-		'TEXT_PAGE_LANGUAGES' => $TEXT['PAGE_LANGUAGES'],
-		'TEXT_FRONTEND' => $TEXT['FRONTEND'],
-		'TEXT_LOGIN' => $TEXT['LOGIN'],
-		'TEXT_HOMEPAGE_REDIRECTION' => $TEXT['HOMEPAGE_REDIRECTION'],
-		'TEXT_SECTION_BLOCKS' => $TEXT['SECTION_BLOCKS'],
-		'TEXT_MANAGE' => $TEXT['MANAGE'],
-		'TEXT_SMART_LOGIN' => $TEXT['SMART_LOGIN'],
-		'TEXT_PHP_ERROR_LEVEL' => $TEXT['PHP_ERROR_LEVEL'],
-		'TEXT_WYSIWYG_STYLE' => $TEXT['WYSIWYG_STYLE'],
-		'TEXT_CHARSET' => $TEXT['CHARSET'],
-		'TEXT_REDIRECT_AFTER' => $TEXT['REDIRECT_AFTER'],
-		'TEXT_SIGNUP' => $TEXT['SIGNUP'].' '.$TEXT['GROUP'],
-		'TEXT_MULTILINGUAL' => $TEXT['MULTILINGUAL'],
-		'TEXT_HOME_FOLDERS' => $TEXT['HOME_FOLDERS'],
-		'TEXT_MANAGE_SECTIONS' => $HEADING['MANAGE_SECTIONS'],
-		'TEXT_MULTIPLE_MENUS' => $TEXT['MULTIPLE_MENUS'],
-		'TEXT_INLINE' => $TEXT['INLINE'],
-		'TEXT_SEPARATE' => $TEXT['SEPARATE'],
-		'TEXT_LANGUAGE' => $TEXT['LANGUAGE'],
-		'TEXT_TIMEZONE' => $TEXT['TIMEZONE'],
-		'TEXT_DATE_FORMAT' => $TEXT['DATE_FORMAT'],
-		'TEXT_TIME_FORMAT' => $TEXT['TIME_FORMAT'],
-		'TEXT_TEMPLATE' => $TEXT['TEMPLATE'],
-		'TEXT_THEME' => $TEXT['THEME'],
-		'TEXT_WYSIWYG_EDITOR' => $TEXT['WYSIWYG_EDITOR'],
-		'TEXT_PAGE_LEVEL_LIMIT' => $TEXT['PAGE_LEVEL_LIMIT'],
-		'TEXT_INTRO_PAGE' => $TEXT['INTRO_PAGE'],
-		));
-
 //  Insert permissions values
 	if($admin->get_permission('settings_advanced') != true)
 	{
@@ -293,7 +226,7 @@
     }
 
 //  Work-out if media home folder feature is enabled
-    $oTpl->set_var('TEXT_HOME_FOLDERS', $TEXT['HOME_FOLDERS']);
+    $oTpl->set_var('TEXT_HOME_FOLDERS', $mLang->TEXT_HOME_FOLDERS);
 	if(HOME_FOLDERS)
 	{
     	$oTpl->set_var(array(
@@ -450,7 +383,7 @@
     		}
     	} else {
     		$oTpl->set_var('ID', 'disabled');
-    		$oTpl->set_var('NAME', $MESSAGE['GROUPS']['NO_GROUPS_FOUND']);
+    		$oTpl->set_var('NAME', $mLang->MESSAGE_GROUPS_NO_GROUPS_FOUND);
     		$oTpl->parse('group_list', 'group_list_block', true);
     	}
 	}
@@ -503,7 +436,7 @@
     $oTpl->set_block('main_block', 'show_wysiwyg_block',        'show_wysiwyg');
     $oTpl->set_block('show_wysiwyg_block', 'editor_list_block', 'editor_list');
 	$file='none';
-	$module_name=$TEXT['NONE'];
+	$module_name=$mLang->TEXT_NONE;
 	$oTpl->set_var('FILE', $file);
 	$oTpl->set_var('NAME', $module_name);
 	$selected = (!defined('WYSIWYG_EDITOR') || $file == WYSIWYG_EDITOR) ? $sSelected : '';
@@ -775,8 +708,8 @@
 
 	$oTpl->set_var(array(
 	        'FILE' => '',
-			'TEXT_MODULE_ORDER' => $TEXT['MODULE_ORDER'],
-	        'NAME' => $TEXT['SYSTEM_DEFAULT'],
+			'TEXT_MODULE_ORDER' => $mLang->TEXT_MODULE_ORDER,
+	        'NAME' => $mLang->TEXT_SYSTEM_DEFAULT,
 	        'SELECTED' => $selected
 	    ));
 	$oTpl->parse('search_template_list', 'search_template_list_block', true);
@@ -800,16 +733,16 @@
 	}
 
 	// Insert search select
-    $oTpl->set_var(array(
-		'TEXT_REGISTERED' => $TEXT['REGISTERED'],
-		'TEXT_PUBLIC' => $TEXT['PUBLIC'],
-		'TEXT_PRIVATE' => $TEXT['PRIVATE'],
-		'TEXT_NONE' => $TEXT['NONE'],
-		'TEXT_MAX_EXCERPT' => $TEXT['MAX_EXCERPT'],
-		'TEXT_TIME_LIMIT' => $TEXT['TIME_LIMIT'],
-		'TEXT_VISIBILITY' => $TEXT['VISIBILITY'],
-		'TEXT_SEARCH' => $TEXT['SEARCH'],
-		));
+//    $oTpl->set_var(array(
+//		'TEXT_REGISTERED' => $mLang->TEXT_REGISTERED'],
+//		'TEXT_PUBLIC' => $mLang->TEXT_PUBLIC,
+//		'TEXT_PRIVATE' => $mLang->TEXT_PRIVATE'],
+//		'TEXT_NONE' => $mLang->TEXT_NONE'],
+//		'TEXT_MAX_EXCERPT' => $mLang->TEXT_MAX_EXCERPT'],
+//		'TEXT_TIME_LIMIT' => $mLang->TEXT_TIME_LIMIT'],
+//		'TEXT_VISIBILITY' => $mLang->TEXT_VISIBILITY'],
+//		'TEXT_SEARCH' => $mLang->TEXT_SEARCH'],
+//		));
 	if(SEARCH == 'private')
 	{
     	$oTpl->set_var(array(
@@ -847,19 +780,19 @@
     $oTpl->set_block('main_block', 'show_access_block','show_access');
 //  Work-out which wbmailer routine should be checked
 	$oTpl->set_var(array(
-		'TEXT_WBMAILER_DEFAULT_SETTINGS_NOTICE' => $TEXT['WBMAILER_DEFAULT_SETTINGS_NOTICE'],
-		'TEXT_WBMAILER_DEFAULT_SENDER_MAIL' => $TEXT['WBMAILER_DEFAULT_SENDER_MAIL'],
-		'TEXT_WBMAILER_DEFAULT_SENDER_NAME' => $TEXT['WBMAILER_DEFAULT_SENDER_NAME'],
-		'TEXT_WBMAILER_NOTICE' => $TEXT['WBMAILER_NOTICE'],
-		'TEXT_WBMAILER_FUNCTION' => $TEXT['WBMAILER_FUNCTION'],
-		'TEXT_WBMAILER_SMTP_HOST' => $TEXT['WBMAILER_SMTP_HOST'],
-		'TEXT_WBMAILER_PHP' => $TEXT['WBMAILER_PHP'],
-		'TEXT_WBMAILER_SMTP' => $TEXT['WBMAILER_SMTP'],
-		'TEXT_WBMAILER_SMTP_AUTH' => $TEXT['WBMAILER_SMTP_AUTH'],
-		'TEXT_WBMAILER_SMTP_AUTH_NOTICE' => $TEXT['REQUIRED'].' '.$TEXT['WBMAILER_SMTP_AUTH'],
-		'TEXT_WBMAILER_SMTP_USERNAME' => $TEXT['WBMAILER_SMTP_USERNAME'],
-		'TEXT_WBMAILER_SMTP_PASSWORD' => $TEXT['WBMAILER_SMTP_PASSWORD'],
-		'SMTP_AUTH_SELECTED' => $checked
+		'TEXT_WBMAILER_SMTP_AUTH_NOTICE' => $mLang->TEXT_REQUIRED.' '.$mLang->TEXT_WBMAILER_SMTP_AUTH,
+		'SMTP_AUTH_SELECTED' => $checked,
+		'TEXT_WBMAILER_DEFAULT_SETTINGS_NOTICE' => $mLang->TEXT_WBMAILER_DEFAULT_SETTINGS_NOTICE,
+		'TEXT_WBMAILER_DEFAULT_SENDER_MAIL' => $mLang->TEXT_WBMAILER_DEFAULT_SENDER_MAIL,
+		'TEXT_WBMAILER_DEFAULT_SENDER_NAME' => $mLang->TEXT_WBMAILER_DEFAULT_SENDER_NAME,
+		'TEXT_WBMAILER_NOTICE' => $mLang->TEXT_WBMAILER_NOTICE,
+		'TEXT_WBMAILER_FUNCTION' => $mLang->TEXT_WBMAILER_FUNCTION,
+		'TEXT_WBMAILER_SMTP_HOST' => $mLang->TEXT_WBMAILER_SMTP_HOST,
+		'TEXT_WBMAILER_PHP' => $mLang->TEXT_WBMAILER_PHP,
+		'TEXT_WBMAILER_SMTP' => $mLang->TEXT_WBMAILER_SMTP,
+		'TEXT_WBMAILER_SMTP_AUTH' => $mLang->TEXT_WBMAILER_SMTP_AUTH,
+		'TEXT_WBMAILER_SMTP_USERNAME' => $mLang->TEXT_WBMAILER_SMTP_USERNAME,
+		'TEXT_WBMAILER_SMTP_PASSWORD' => $mLang->TEXT_WBMAILER_SMTP_PASSWORD,
 		));
 
 	// Work-out if developer infos feature is enabled
@@ -1043,41 +976,12 @@
 
 // Insert language text and messages
 	$oTpl->set_var(array(
-		'TEXT_DEV_INFOS' => $TEXT['DEV_INFOS'],
-		'TEXT_PAGES_DIRECTORY' => $TEXT['PAGES_DIRECTORY'],
-		'TEXT_PAGE_ICON_DIR' => $TEXT['PAGE_ICON_DIR'],
-		'TEXT_MEDIA_DIRECTORY' => $TEXT['MEDIA_DIRECTORY'],
-		'TEXT_PAGE_EXTENSION' => $TEXT['PAGE_EXTENSION'],
-		'TEXT_PAGE_SPACER' => $TEXT['PAGE_SPACER'],
-		'TEXT_RENAME_FILES_ON_UPLOAD' => $TEXT['RENAME_FILES_ON_UPLOAD'],
-		'TEXT_APP_NAME' => $TEXT['APP_NAME'],
-		'TEXT_SESSION_IDENTIFIER' => $TEXT['SESSION_IDENTIFIER'],
-		'TEXT_SEC_ANCHOR' => $TEXT['SEC_ANCHOR'],
-		'TEXT_SERVER_OPERATING_SYSTEM' => $TEXT['SERVER_OPERATING_SYSTEM'],
-		'TEXT_LINUX_UNIX_BASED' => $TEXT['LINUX_UNIX_BASED'],
-		'TEXT_WINDOWS' => $TEXT['WINDOWS'],
-		'TEXT_ADMIN' => $TEXT['ADMIN'],
-		'TEXT_TYPE' => $TEXT['TYPE'],
-		'TEXT_DATABASE' => $TEXT['DATABASE'],
-		'TEXT_HOST' => $TEXT['HOST'],
-		'TEXT_USERNAME' => $TEXT['USERNAME'],
-		'TEXT_PASSWORD' => $TEXT['PASSWORD'],
-		'TEXT_NAME' => $TEXT['NAME'],
-		'TEXT_TABLE_PREFIX' => $TEXT['TABLE_PREFIX'],
-		'TEXT_CHANGES' => $TEXT['CHANGES'],
-		'TEXT_FILES' => strtoupper(substr($TEXT['FILES'], 0, 1)).substr($TEXT['FILES'], 1),
-		'TEXT_DIRECTORIES' => $TEXT['DIRECTORIES'],
-		'TEXT_FILESYSTEM_PERMISSIONS' => $TEXT['FILESYSTEM_PERMISSIONS'],
-		'TEXT_USER' => $TEXT['USER'],
-		'TEXT_GROUP' => $TEXT['GROUP'],
-		'TEXT_OTHERS' => $TEXT['OTHERS'],
-		'TEXT_READ' => $TEXT['READ'],
-		'TEXT_WRITE' => $TEXT['WRITE'],
-		'TEXT_EXECUTE' => $TEXT['EXECUTE'],
+		'TEXT_CHANGES' => $mLang->TEXT_CHANGES,
+		'TEXT_FILES' => strtoupper(substr($mLang->TEXT_FILES, 0, 1)).substr($mLang->TEXT_FILES, 1),
 		'TEXT_WARN_PAGE_LEAVE' => '',
-		'TEXT_WORLD_WRITEABLE_FILE_PERMISSIONS' => $TEXT['WORLD_WRITEABLE_FILE_PERMISSIONS'],
-		'MODE_SWITCH_WARNING' => $MESSAGE['SETTINGS_MODE_SWITCH_WARNING'],
-		'WORLD_WRITEABLE_WARNING' => $MESSAGE['SETTINGS_WORLD_WRITEABLE_WARNING'],
+		'TEXT_WORLD_WRITEABLE_FILE_PERMISSIONS' => $mLang->TEXT_WORLD_WRITEABLE_FILE_PERMISSIONS,
+		'MODE_SWITCH_WARNING' => $mLang->MESSAGE_SETTINGS_MODE_SWITCH_WARNING,
+		'WORLD_WRITEABLE_WARNING' => $mLang->MESSAGE_SETTINGS_WORLD_WRITEABLE_WARNING
 		));
 
 if($is_advanced && $admin->get_user_id()=='1')
Index: branches/2.8.x/wb/admin/preferences/index.php
===================================================================
--- branches/2.8.x/wb/admin/preferences/index.php	(revision 1911)
+++ branches/2.8.x/wb/admin/preferences/index.php	(revision 1912)
@@ -4,13 +4,13 @@
  * @category        admin
  * @package         preferences
  * @author          Ryan Djurovich, WebsiteBaker Project
- * @copyright       2009-2011, Website Baker Org. e.V.
- * @link			http://www.websitebaker2.org/
+ * @copyright       2009-2013, WebsiteBaker Org. e.V.
+ * @link            http://www.websitebaker.org/
  * @license         http://www.gnu.org/licenses/gpl.html
- * @platform        WebsiteBaker 2.8.x
+ * @platform        WebsiteBaker 2.8.4
  * @requirements    PHP 5.2.2 and higher
  * @version         $Id$
- * @filesource		$HeadURL$
+ * @filesource      $HeadURL$
  * @lastmodified    $Date$
  *
  */
@@ -22,7 +22,7 @@
 // put all inside a function to prevent global vars
 function build_page( &$admin, &$database )
 {
-	global $HEADING, $TEXT;
+//	global $HEADING, $TEXT;
 	include_once(WB_PATH.'/framework/functions-utf8.php');
 	// Setup template object, parse vars to it, then parse it
 	// Setup template object, parse vars to it, then parse it
@@ -30,6 +30,10 @@
 	$template = new Template(dirname($admin->correct_theme_source('preferences.htt')));
 	$template->set_file( 'page', 'preferences.htt' );
 	$template->set_block( 'page', 'main_block', 'main' );
+	$mLang = Translate::getinstance();
+	$mLang->enableAddon('admin\preferences');
+	$template->set_var($mLang->getLangArray());
+
 // 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();
@@ -44,21 +48,54 @@
 		}
 	}
 // 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() )
-		{
-	        $langIcons = (empty($rec_lang['directory'])) ? 'none' : strtolower($rec_lang['directory']);
-			$template->set_var('CODE',        $rec_lang['directory']);
-			$template->set_var('NAME',        $rec_lang['name']);
-			$template->set_var('FLAG',        THEME_URL.'/images/flags/'.$langIcons);
-			$template->set_var('SELECTED',    (LANGUAGE == $rec_lang['directory'] ? ' selected="selected"' : '') );
-			$template->parse('language_list', 'language_list_block', true);
-		}
-	}
+//	$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(MYSQL_ASSOC) )
+//		{
+//	        $langIcons = (empty($rec_lang['directory'])) ? 'none' : strtolower($rec_lang['directory']);
+//			$template->set_var('CODE',        $rec_lang['directory']);
+//			$template->set_var('NAME',        $rec_lang['name']);
+//			$template->set_var('FLAG',        THEME_URL.'/images/flags/'.$langIcons);
+//			$template->set_var('SELECTED',    (LANGUAGE == $rec_lang['directory'] ? ' selected="selected"' : '') );
+//			$template->parse('language_list', 'language_list_block', true);
+//		}
+//	}
+
+$aLangAddons = array();
+$aLangBrowser = array();
+
+// read available languages from table addons
+$sql  = 'SELECT * FROM `'.TABLE_PREFIX.'addons` ';
+$sql .= 'WHERE `type` = \'language\' ORDER BY `directory`';
+if( $oLang = $database->query($sql) )
+{
+    while( $aLang = $oLang->fetchRow(MYSQL_ASSOC) )
+    {
+        $aLangAddons[$aLang['directory']] = $aLang['name'];
+    }
+}
+
+// default, if no information from client available
+$sAutoLanguage = DEFAULT_LANGUAGE;
+
+$aLangUsed = array_flip(explode(',',$admin->GetLanguagesInUsed()));
+$aLangUsed = array_intersect_key($aLangAddons, $aLangUsed);
+$template->set_block('main_block', 'language_list_block', 'language_list');
+foreach( $aLangUsed as $sDirectory => $sName  )
+{
+	$langIcons = ( empty($sDirectory) ? 'none' : strtolower($sDirectory));
+
+	$template->set_var('CODE',        $sDirectory);
+	$template->set_var('NAME',        $sName);
+	$template->set_var('FLAG',        THEME_URL.'/images/flags/'.$langIcons);
+	$template->set_var('SELECTED',    ( $_SESSION['LANGUAGE'] == $sDirectory ? ' selected="selected"' : '') );
+
+	$template->parse('language_list', 'language_list_block', true);
+}
+
 // Insert default timezone values
 	$user_time = true;
 	include_once( ADMIN_PATH.'/interface/timezones.php' );
@@ -118,30 +155,15 @@
 	$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'             => ''
+	$template->set_var(array( 
+                              'EMPTY_STRING'             => ''
                             )
                       );
 // Parse template for preferences form
 	$template->parse('main', 'main_block', false);
 	$output = $template->finish($template->parse('output', 'page'));
+	$mLang->disableAddon();
+
 	return $output;
 }
 // test if valid $admin-object already exists (bit complicated about PHP4 Compatibility)
@@ -153,5 +175,3 @@
 }
 echo build_page($admin, $database);
 $admin->print_footer();
-
-?>
\ No newline at end of file
