Index: branches/2.8.x/CHANGELOG
===================================================================
--- branches/2.8.x/CHANGELOG	(revision 1986)
+++ branches/2.8.x/CHANGELOG	(revision 1987)
@@ -11,6 +11,9 @@
 ! = Update/Change
 ===============================================================================
 
+19 Oct-2013 Build 1987 Dietmar Woellbrink (Luisehahne)
+! see Build 1986
+  also implemented in frontend account
 19 Oct-2013 Build 1986 Dietmar Woellbrink (Luisehahne)
 ! If the advanced option languages ​​Page was disabled or pages exist with one language only,
   then all available languages ​​are shown to be selected in the User-Settings implemented in backend 
Index: branches/2.8.x/wb/admin/interface/version.php
===================================================================
--- branches/2.8.x/wb/admin/interface/version.php	(revision 1986)
+++ branches/2.8.x/wb/admin/interface/version.php	(revision 1987)
@@ -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', '1986');
+if(!defined('REVISION')) define('REVISION', '1987');
 if(!defined('SP')) define('SP', '');
Index: branches/2.8.x/wb/account/htt/preferences.htt
===================================================================
--- branches/2.8.x/wb/account/htt/preferences.htt	(revision 1986)
+++ branches/2.8.x/wb/account/htt/preferences.htt	(revision 1987)
@@ -11,7 +11,7 @@
     <div class="details">
         <h3>{HEADING_MY_SETTINGS}</h3>
         <form name="details" action="{ACTION_URL}" method="post">
-            <input type="hidden" name="redirect" value="{HTTP_REFERER}" />
+            <input type="hidden" name="redirect" value="{REFERER_ID}" />
             <table>
             <tr>
                 <td>{TEXT_DISPLAY_NAME}:</td>
@@ -70,7 +70,7 @@
                     <button class="error" type="reset" name="reset" value="reset">{TEXT_RESET}</button>
                     <button type="submit" name="action" value="details">{MOD_PREFERENCE_SAVE_SETTINGS}</button>
         <!-- END show_detail_send_block -->
-                    <button type="button" value="cancel" onclick="javascript:window.location='{HTTP_REFERER}';">{TEXT_CANCEL}</button>
+                    <button type="{SUBMIT_BUTTON}" name="action" value="{VALUE_BUTTON}" onclick="javascript:window.location='{HTTP_REFERER}';">{TEXT_CANCEL}</button>
                 </td>
             </tr>
             </table>
Index: branches/2.8.x/wb/account/languages/EN.php
===================================================================
--- branches/2.8.x/wb/account/languages/EN.php	(revision 1986)
+++ branches/2.8.x/wb/account/languages/EN.php	(revision 1987)
@@ -30,7 +30,7 @@
 	'SAVE_EMAIL'    => 'save email',
 	'SAVE_PASSWORD' => 'save password',
 	'SAVE_LANGUAGE' => 'Switch language',
-	'SET_PREFERENCES_LANGUAGE' => 'Settings are possible only in your linguistic setting! You first have to change the language and start the settings anew!',
+	'SET_PREFERENCES_LANGUAGE' => 'For your language, there is no valid pages. Please select a valid language and switch to this language!',
 );
 $TEXT['USERNAME'] = 'Loginname';
 $HEADING['SIGNUP2_CONFIMED_REGISTRATION'] = 'Unlock account';
Index: branches/2.8.x/wb/account/languages/DE.php
===================================================================
--- branches/2.8.x/wb/account/languages/DE.php	(revision 1986)
+++ branches/2.8.x/wb/account/languages/DE.php	(revision 1987)
@@ -33,7 +33,7 @@
 	'SAVE_EMAIL' => 'Email speichern',
 	'SAVE_PASSWORD' => 'Passwort speichern',
 	'SAVE_LANGUAGE' => 'Sprache wechseln',
-	'SET_PREFERENCES_LANGUAGE' => 'Einstellungen sind nur in Ihrer Spracheinstellung möglich! Sie müssen zuerst die Sprache wechseln und die Einstellungen neu aufrufen!',
+	'SET_PREFERENCES_LANGUAGE' => 'Für deine Sprache existiert keine gültige Seite. Bitte wähle eine gültige Sprache aus und wechsele zu dieser Sprache!!',
 );
 
 $HEADING['SIGNUP2_CONFIMED_REGISTRATION'] = 'Kontofreischaltung';
Index: branches/2.8.x/wb/account/preferences_form.php
===================================================================
--- branches/2.8.x/wb/account/preferences_form.php	(revision 1986)
+++ branches/2.8.x/wb/account/preferences_form.php	(revision 1987)
@@ -23,6 +23,9 @@
 }
 /* -------------------------------------------------------- */
 
+$oReg  = WbAdaptor::getInstance();
+$mLang = Translate::getinstance();
+
 if($wb->is_authenticated() === false) {
 // User needs to login first
     header("Location: ".WB_URL."/account/login.php?redirect=".$wb->link);
@@ -46,7 +49,6 @@
 $sLanguage = LANGUAGE.'.php';
 
 $LanguageDir = WB_PATH .'/account/languages/';
-
 $sLanguageFile = ( file_exists($LanguageDir.$sUserLanguage.'.php') ? $LanguageDir.$sUserLanguage.'.php' : $LanguageDir.$sLanguage);
 $sLanguageFile = ( is_readable($sLanguageFile) ?  $sLanguageFile :  $LanguageDir.$sDefaultLanguage.'.php'   );
 // load module default language file (EN)
@@ -85,7 +87,7 @@
     default:
 // do nothing
 endswitch; // switch
-// require(dirname(__FILE__).'/save_preferences.php');
+
 // get existing values from database
 $sql  = "SELECT `display_name`,`email`,`language`,`timezone`,`date_format`,`time_format` ";
 $sql .= "FROM `".TABLE_PREFIX."users` ";
@@ -111,7 +113,21 @@
 $template->set_block('main_block', 'show_email_send_block', 'show_email_send');
 $template->set_block('main_block', 'show_password_send_block', 'show_password_send');
 
-if(($sUserLanguage != LANGUAGE) ) {
+$aLangAddons = array();
+$aLangBrowser = array();
+// default, if no information from client available
+$sAutoLanguage = DEFAULT_LANGUAGE;
+
+// read available languages from table addons
+$aLangAddons = $admin->getAvailableLanguages();
+
+$aLangUsed = array_flip(explode(',',$wb->getLanguagesInUsed()));
+$aLangUsed = array_intersect_key($aLangAddons, $aLangUsed);
+if( (sizeof($aLangUsed)<2) || !($oReg->PageLanguages) ){
+    $aLangUsed =  $aLangAddons;    
+}
+
+if( !(array_key_exists($sUserLanguage, $aLangUsed)) ) {
     $template->parse('show_detail_send', '');
     $template->parse('show_email_send', '');
     $template->parse('show_password_send', '');
@@ -122,14 +138,18 @@
 }
 
 // Insert language text and messages visibilty="hidden"
+// WB_URL.'/account/preferences.php'
 $template->set_var(array(
-    'HTTP_REFERER' => ( $wb->get_session('HTTP_REFERER')!='' ? $_SESSION['HTTP_REFERER'] : WB_URL),
+    'REFERER_ID' => ( $wb->get_session('HTTP_REFERER')!='' ? $_SESSION['HTTP_REFERER'] : WB_URL),
+    'HTTP_REFERER' => (!(array_key_exists($sUserLanguage, $aLangUsed)) ?WB_URL.'/account/preferences.php':( $wb->get_session('HTTP_REFERER')!='' ? $_SESSION['HTTP_REFERER'] : WB_URL)),
     'CSS_BLOCK'	=> $sIncludeHeadLinkCss,
     'TEXT_SAVE'	=> $TEXT['SAVE'],
     'TEXT_RESET' => $TEXT['RESET'],
-    'TEXT_CANCEL' => ($sUserLanguage!=LANGUAGE) ? $MOD_PREFERENCE['SAVE_LANGUAGE']:$TEXT['CANCEL'],
-    'MOD_PREFERENCE_SET_PREFERENCES_LANGUAGE' => ($sUserLanguage!=LANGUAGE) ? $MOD_PREFERENCE['SET_PREFERENCES_LANGUAGE']:'',
-    'DISPLAY_PREFERENCES_LANGUAGE' => ($sUserLanguage!=LANGUAGE) ? '':'display:none',
+    'SUBMIT_BUTTON' => (!(array_key_exists($sUserLanguage, $aLangUsed)) ?'submit':'button'),
+    'VALUE_BUTTON' => (!(array_key_exists($sUserLanguage, $aLangUsed)) ?'details':'cancel'),
+    'TEXT_CANCEL' => (!(array_key_exists($sUserLanguage, $aLangUsed)) ? $MOD_PREFERENCE['SAVE_LANGUAGE']:$TEXT['CANCEL']),
+    'MOD_PREFERENCE_SET_PREFERENCES_LANGUAGE' => !(array_key_exists($sUserLanguage, $aLangUsed)) ? $MOD_PREFERENCE['SET_PREFERENCES_LANGUAGE']:'',
+    'DISPLAY_PREFERENCES_LANGUAGE' => !(array_key_exists($sUserLanguage, $aLangUsed)) ? '':'display:none',
 	'TEXT_DISPLAY_NAME'	=> $TEXT['DISPLAY_NAME'],
     'TEXT_EMAIL' => $TEXT['EMAIL'],
     'TEXT_LANGUAGE' => $TEXT['LANGUAGE'],
@@ -142,28 +162,6 @@
     )
 );
 
-$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;
-
-//$sAutoLanguage = 'FR';
-$aLangUsed = array_flip(explode(',',$wb->GetLanguagesInUsed()));
-$aLangUsed = array_intersect_key($aLangAddons, $aLangUsed);
-//$sAutoLanguage = array_key_exists($sAutoLanguage,$aLangUsed) ? $sAutoLanguage : DEFAULT_LANGUAGE;
-
 // read available languages from table addons and assign it to the template
 $template->set_block('main_block', 'language_list_block', 'language_list');
 foreach( $aLangUsed as $sDirectory => $sName  )
Index: branches/2.8.x/wb/account/signup_form.php
===================================================================
--- branches/2.8.x/wb/account/signup_form.php	(revision 1986)
+++ branches/2.8.x/wb/account/signup_form.php	(revision 1987)
@@ -49,11 +49,11 @@
 if($_SESSION['display_form'])
 {
 
-$sIncludeHeadLinkCss = '';
-if( is_readable(WB_PATH .'/account/frontend.css')) {
-	$sIncludeHeadLinkCss .= '<link href="'.WB_URL.'/account/frontend.css"';
-	$sIncludeHeadLinkCss .= ' rel="stylesheet" type="text/css" media="screen" />'."\n";
-}
+    $sIncludeHeadLinkCss = '';
+    if( is_readable(WB_PATH .'/account/frontend.css')) {
+    	$sIncludeHeadLinkCss .= '<link href="'.WB_URL.'/account/frontend.css"';
+    	$sIncludeHeadLinkCss .= ' rel="stylesheet" type="text/css" media="screen" />'."\n";
+    }
 
 // set template file and assign module and template block
 	$oTpl = new Template(dirname(__FILE__).'/htt','keep');
@@ -121,36 +121,29 @@
 	);
 
 
-$aLangAddons = array();
-$aLangBrowser = array();
+    $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'];
-    }
-}
+    $aLangAddons = $admin->getAvailableLanguages();
 
 // default, if no information from client available
-$sAutoLanguage = DEFAULT_LANGUAGE;
+    $sAutoLanguage = DEFAULT_LANGUAGE;
 // detect client language
-if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
-	if(preg_match('/([a-z]{2})(?:-[a-z]{2})*/i', strtolower($_SERVER['HTTP_ACCEPT_LANGUAGE']), $matches)) {
-		$sAutoLanguage = strtoupper($matches[1]);
-	}
-}
+    if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
+    	if(preg_match('/([a-z]{2})(?:-[a-z]{2})*/i', strtolower($_SERVER['HTTP_ACCEPT_LANGUAGE']), $matches)) {
+    		$sAutoLanguage = strtoupper($matches[1]);
+    	}
+    }
+    
+    $sAutoLanguage=($wb->get_session('LANGUAGE')) ? $_SESSION['LANGUAGE'] : $sAutoLanguage;
 
-$sAutoLanguage=($wb->get_session('LANGUAGE')) ? $_SESSION['LANGUAGE'] : $sAutoLanguage;
-
-//$sAutoLanguage = 'NL';
-$aLangUsed = array_flip(explode(',',$wb->GetLanguagesInUsed()));
-$aLangUsed = array_intersect_key($aLangAddons, $aLangUsed);
-$sAutoLanguage = array_key_exists($sAutoLanguage,$aLangUsed) ? $sAutoLanguage : DEFAULT_LANGUAGE;
-//print '<pre style="text-align: left;"><strong>function '.__FUNCTION__.'( '.''.' );</strong>  basename: '.basename(__FILE__).'  line: '.__LINE__.' -> <br />';
-//print_r( $aLangUsed ); print '</pre>'; // flush ();sleep(10); die();
+    //$sAutoLanguage = 'NL';
+    $aLangUsed = array_flip(explode(',',$wb->getLanguagesInUsed()));
+    $aLangUsed = array_intersect_key($aLangAddons, $aLangUsed);
+    if( (sizeof($aLangUsed)<2) || !($oReg->PageLanguages) ){
+        $aLangUsed =  $aLangAddons;    
+    }
+    $sAutoLanguage = array_key_exists($sAutoLanguage,$aLangUsed) ? $sAutoLanguage : DEFAULT_LANGUAGE;
 //  read available languages from table addons and assign it to the template
     $oTpl->set_block('main_block', 'language_list_block', 'language_list');
     foreach( $aLangUsed as $sDirectory => $aName  )
