Index: branches/2.8.x/CHANGELOG
===================================================================
--- branches/2.8.x/CHANGELOG	(revision 1952)
+++ branches/2.8.x/CHANGELOG	(revision 1953)
@@ -11,6 +11,8 @@
 ! = Update/Change
 ===============================================================================
 
+14 Aug-2013 Build 1953 M.v.d.Decken(DarkViper)
+# solved some problems with MultiLingual module
 12 Aug-2013 Build 1952 M.v.d.Decken(DarkViper)
 # solved an autoloading problem on upgrade in /framework/Password.php
 09 Aug-2013 Build 1951 M.v.d.Decken(DarkViper)
Index: branches/2.8.x/wb/admin/skel/themes/htt/pages_settings.htt
===================================================================
--- branches/2.8.x/wb/admin/skel/themes/htt/pages_settings.htt	(revision 1952)
+++ branches/2.8.x/wb/admin/skel/themes/htt/pages_settings.htt	(revision 1953)
@@ -2,32 +2,32 @@
 <script src="{WB_URL}/include/jquery/overlib_mini.js" type="text/javascript"></script>
 <script src="{ADMIN_URL}/pages/page_settings.js" type="text/javascript"></script>
 <div class="page-info">
-<table>
-<thead>
-  <tr>
-    <th class="description"></th>
-    <th class="id"></th>
-    <th></th>
-  </tr>
-</thead>
-<tbody>
-  <tr>
-	<td class="left nowrap"><h2>{HEADING_MODIFY_PAGE_SETTINGS}</h2></td>
-	<td class="left">PID: {PAGE_ID}</td>
-	<td class="right nowrap">
-		{TEXT_CURRENT_PAGE}:<strong>{PAGE_TITLE}</strong><br />
-		{MODIFY_LINK_BEFORE}{TEXT_MODIFY_PAGE}{MODIFY_LINK_AFTER}
-		<span class="{DISPLAY_MANAGE_SECTIONS}">
-		- {SECTIONS_LINK_BEFORE}{TEXT_MANAGE_SECTIONS}{SECTIONS_LINK_AFTER}
-		</span>
-		<br />
-		<span class="right {DISPLAY_MODIFIED}">
-			{TEXT_LAST_MODIFIED} {MODIFIED_BY}, {MODIFIED_WHEN}
-		</span>
-	</td>
-  </tr>
-</tbody>
-</table>
+	<table>
+		<thead>
+			<tr>
+				<th class="description"></th>
+				<th class="id"></th>
+				<th></th>
+			</tr>
+		</thead>
+		<tbody>
+			<tr>
+				<td class="left nowrap"><h2>{HEADING_MODIFY_PAGE_SETTINGS}</h2></td>
+				<td class="left">PID: {PAGE_ID}</td>
+				<td class="right nowrap">
+					{TEXT_CURRENT_PAGE}:<strong>{PAGE_TITLE}</strong><br />
+					{MODIFY_LINK_BEFORE}{TEXT_MODIFY_PAGE}{MODIFY_LINK_AFTER}
+					<span class="{DISPLAY_MANAGE_SECTIONS}">
+						- {SECTIONS_LINK_BEFORE}{TEXT_MANAGE_SECTIONS}{SECTIONS_LINK_AFTER}
+					</span>
+					<br />
+					<span class="right {DISPLAY_MODIFIED}">
+						{TEXT_LAST_MODIFIED} {MODIFIED_BY}, {MODIFIED_WHEN}
+					</span>
+				</td>
+			</tr>
+		</tbody>
+	</table>
 </div>
 
 <form name="settings" action="settings_save.php" method="post">
@@ -149,12 +149,14 @@
 		<!-- BEGIN show_page_code_block -->
 			<div>
 				<label for="page_code" class="overlib"
-					style="background-image: url({THEME_URL}/icons/help_16.png);"
-					{p_menu_page_code}>{TEXT_PAGE_CODE}:
+					style="background-image: url({THEME_URL}/icons/help_16.png);" {p_menu_page_code}>
+					<a href="{PAGE_CODE_UPDATE_URL}">{PAGE_CODE_LABEL_TEXT}: </a>
 				</label>
 				<select id="page_code" name="page_code" class="value_page_code">
 				<!-- BEGIN page_code_list_block -->
-						<option value="{VALUE}"{SELECTED} style="background: {FLAG_CODE_ICON} no-repeat center left; padding-left: 20px;">&nbsp;{PAGE_VALUE}</option>
+					<option value="{PAGE_CODE_VALUE}"{PAGE_CODE_SELECTED} style="background: {PAGE_CODE_ICON_URL} no-repeat center left; padding-left: 20px;">
+						{PAGE_CODE_PAGE_TITLE}
+					</option>
 				<!-- END page_code_list_block -->
 				</select>
 			</div>
Index: branches/2.8.x/wb/admin/pages/PageTree.php
===================================================================
--- branches/2.8.x/wb/admin/pages/PageTree.php	(revision 1952)
+++ branches/2.8.x/wb/admin/pages/PageTree.php	(revision 1953)
@@ -34,29 +34,29 @@
 class a_pages_PageTree
 {
 /** @var array language definitions */
-	private $_TEXT     = null;
+	protected $_TEXT     = null;
 /** @var array language definitions */
-	private $_MESSAGE  = null;
+	protected $_MESSAGE  = null;
 /** @var array language definitions */
-	private $_HEADING  = null;
+	protected $_HEADING  = null;
 /** @var object instance of the application object */
-	private $_oApp     = null;
+	protected $_oApp     = null;
 /** @var object instance of the database object */
-	private $_oDb      = null;
+	protected $_oDb      = null;
 /** @var array holds several values from the application global scope */	
-	private $_aReg     = array();
+	protected $_aReg     = array();
 /** @var string full HTML formattet list of pages */
-	private $_sOutput         = '';
+	protected $_sOutput         = '';
 /** @var integer number of all reachable pages */	
-	private $_iPagesTotal     = 0;
+	protected $_iPagesTotal     = 0;
 /** @var integer number of all writeable pages */	
-	private $_iPagesWriteable = 0;
+	protected $_iPagesWriteable = 0;
 /** @var integer index for toggle background color of the list */	
-	private $_iLineColor      = 0;
+	protected $_iLineColor      = 0;
 /** @var array entries to build a select list for parents */	
-	private $_aParentList     = array();
+	protected $_aParentList     = array();
 /** @var integer count all executed database requests passing all iterations. */
-	private $_queries = 0;
+	protected $_queries = 0;
 /**
  * constructor used to import some application constants and objects
  */	
@@ -98,9 +98,9 @@
  * a list with all possible parent pages
  * @return array
  */	
-	public function getParentList() {
+	public function getParentList($iTreeRoot = 0) {
 		if(!$this->_sOutput) {
-			$this->parseTree();
+			$this->parseTree($iTreeRoot);
 		}
 		return $this->_aParentList;
 	}
@@ -107,7 +107,7 @@
 /**
  * used to import some WB-constants and objects
  */	
-	private function _wbAdaptor()
+	protected function _wbAdaptor()
 	{
 		$this->_TEXT        = $GLOBALS['TEXT'];
 		$this->_MESSAGE     = $GLOBALS['MESSAGE'];
@@ -129,7 +129,7 @@
  * @param int use page-ID as root of the generated page tree. (default: 0)
  * @return string the whoole list
  */
-	private function _createTree($iTreeRoot = 0)
+	protected function _createTree($iTreeRoot = 0)
 	{
 		// compose the complete list
 		$sOutput = ''
@@ -167,7 +167,7 @@
  * @param bool $bRelative false if should be set to absolute value
  * @return string
  */
-	private function _Tabs($iTabsDiv = 0, $bRelative = true)
+	protected function _Tabs($iTabsDiv = 0, $bRelative = true)
 	{
 		static $iTabLevel = 0;
 		$iTabLevel = ($bRelative ? $iTabLevel + $iTabsDiv : $iTabsDiv);
@@ -179,29 +179,36 @@
  * @param integer $iParentKey
  * @return string SQL statement
  */			
-	private function _makeSql($iParentKey = 0)
+	protected function _makeSql($iParentKey = 0)
 	{
+		$sql  = 'SELECT ( SELECT COUNT(*) '
+		      .          'FROM `'.$this->_aReg['TABLE_PREFIX'].'pages` `x` '
+		      .          'WHERE x.`parent`=p.`page_id`'
+		      .        ') `children`, '
+		      .        's.`module`, MAX(s.`publ_start` + s.`publ_end`) published, p.`link`, '
+		      .        '(SELECT MAX(`position`) FROM `'.$this->_aReg['TABLE_PREFIX'].'pages` '
+		      .        'WHERE `parent`='.$iParentKey.') max_position, '
+		      .        '0 min_position, '
+		      .        'p.`position`, '
+		      .        'p.`page_id`, p.`parent`, p.`level`, p.`language`, p.`admin_groups`, '
+		      .        'p.`admin_users`, p.`viewing_groups`, p.`viewing_users`, p.`visibility`, '
+		      .        'p.`menu_title`, p.`page_title`, p.`page_trail` '
+		      . 'FROM `'.$this->_aReg['TABLE_PREFIX'].'pages` p '
+		      .    'INNER JOIN `'.$this->_aReg['TABLE_PREFIX'].'sections` s '
+		      .    'ON p.`page_id`=s.`page_id` ';
+//		if($iParentKey) {
+//
+//			$sql .= 'WHERE `root_parent`='.$iParentKey.' ';
+//		} else {
+//	// if tree based on root is requested (parent=0)
+			$sql .= 'WHERE `parent`='.$iParentKey.' ';
+//		}
+	// do not get pages with 'deleted' flag set on activated trashcan
 		if($this->_aReg['PAGE_TRASH'] != 'inline') {
-			$sUseTrash = ' AND `visibility`!=\'deleted\'';
-		}else { $sUseTrash = ''; }
-		$sql = 'SELECT ( SELECT COUNT(*) '
-		     .          'FROM `'.$this->_aReg['TABLE_PREFIX'].'pages` `x` '
-		     .          'WHERE x.`parent`=p.`page_id`'
-		     .        ') `children`, '
-		     .        's.`module`, MAX(s.`publ_start` + s.`publ_end`) published, p.`link`, '
-		     .        '(SELECT MAX(`position`) FROM `'.$this->_aReg['TABLE_PREFIX'].'pages` '
-		     .        'WHERE `parent`='.$iParentKey.') max_position, '
-		     .        '0 min_position, '
-		     .        'p.`position`, '
-		     .        'p.`page_id`, p.`parent`, p.`level`, p.`language`, p.`admin_groups`, '
-		     .        'p.`admin_users`, p.`viewing_groups`, p.`viewing_users`, p.`visibility`, '
-		     .        'p.`menu_title`, p.`page_title`, p.`page_trail` '
-		     . 'FROM `'.$this->_aReg['TABLE_PREFIX'].'pages` p '
-		     .    'INNER JOIN `'.$this->_aReg['TABLE_PREFIX'].'sections` s '
-		     .    'ON p.`page_id`=s.`page_id` '
-		     . 'WHERE `parent`='.$iParentKey.$sUseTrash.' '
-		     . 'GROUP BY p.`page_id` '
-		     . 'ORDER BY p.`position` ASC';
+			$sql .= 'AND `visibility`!=\'deleted\' ';
+		}
+		$sql .= 'GROUP BY p.`page_id` '
+		      . 'ORDER BY p.`position` ASC';
 		return $sql;
 	}
 /**
@@ -209,7 +216,7 @@
  * @param integer start iteration from this parent page ( 0 = root)
  * @return string all of the item lines 
  */	
-	private function _IterateTree($iParent = 0)
+	protected function _IterateTree($iParent = 0)
 	{
 		$sOutput = '';
 		// Get page list from database
@@ -261,7 +268,7 @@
  * @param type $aPage
  * @return string
  */
-	private function _createListItem($aPage)
+	protected function _createListItem($aPage)
 	{
 	// output the current item
 	// --- HEADER ------------------------------------------------------------------------
@@ -428,7 +435,7 @@
  * build a list of possible parent pages
  * @param array $aPage 
  */	
-	private function _addToParentList(array $aPage)
+	protected function _addToParentList(array $aPage)
 	{
 		if( ($aPage['level'] < ($this->_aReg['PAGE_LEVEL_LIMIT'] - 1))
 			&& $aPage['iswriteable'] 
@@ -435,15 +442,8 @@
 			&& ($aPage['visibility'] != 'deleted')
 			&& $this->_oApp->get_permission('pages_add') ) 
 		{
-			$aNewEntry = array();
-			$aNewEntry['ID']             = $aPage['page_id'];
-			$aNewEntry['TITLE']          = $aPage['menu_title'];
-			$aNewEntry['DISABLED']       = ($aPage['iswriteable'] ? 0 : 1);
-			$aNewEntry['PARENT']         = $aPage['parent'];
-			$aNewEntry['FLAG_ROOT_ICON'] = '';
-			$aNewEntry['LEVEL']          = $aPage['level'];
-			$aNewEntry['LANGUAGE']       = $aPage['language'];
-			$this->_aParentList[]        = $aNewEntry;
+			$aPage['disabled'] = ($aPage['iswriteable'] ? 0 : 1);
+			$this->_aParentList[] = $aPage;
 		}
 	}
 	
Index: branches/2.8.x/wb/admin/pages/SmallRawPageTree.php
===================================================================
--- branches/2.8.x/wb/admin/pages/SmallRawPageTree.php	(nonexistent)
+++ branches/2.8.x/wb/admin/pages/SmallRawPageTree.php	(revision 1953)
@@ -0,0 +1,94 @@
+<?php
+
+/**
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/**
+ * ParentPageTree.php
+ *
+ * @category     WbACP
+ * @package      WbACP_Pages
+ * @copyright    Manuela v.d.Decken <manuela@isteam.de>
+ * @author       Manuela v.d.Decken <manuela@isteam.de>
+ * @license      http://www.gnu.org/licenses/gpl.html   GPL License
+ * @version      0.0.1
+ * @revision     $Revision: $
+ * @link         $HeadURL: $
+ * @lastmodified $Date: $
+ * @since        File available since 05.08.2013
+ * @description  xyz
+ */
+
+class a_pages_SmallRawPageTree extends a_pages_PageTree{
+
+/**
+ * create a page tree as a well formatted, unordered list
+ * @param int use page-ID as root of the generated page tree. (default: 0)
+ * @return string the whoole list
+ */
+	protected function _createTree($iTreeRoot = 0)
+	{
+		// generate the page lines
+		$this->_IterateTree($iTreeRoot);
+		return '';
+	}
+/**
+ * iterate through all nodes which having subnodes
+ * @param integer start iteration from this parent page ( 0 = root)
+ * @return string all of the item lines
+ */
+	protected function _IterateTree($iParent = 0)
+	{
+		$sOutput = '';
+	// Get page list from database
+		if(($oPages = $this->_oDb->query($this->_makeSql($iParent))))
+		{
+			$this->_queries++;
+			$iMinPosition = 1;
+			while($aPage = $oPages->fetchRow(MYSQL_ASSOC))
+			{ // iterate through the current branch
+				if($this->_aReg['PAGE_LEVEL_LIMIT'] && ($aPage['level'] > $this->_aReg['PAGE_LEVEL_LIMIT'])) {
+					return '';
+				}
+				$aPage['min_position'] = ($aPage['position'] < $iMinPosition ? $aPage['position'] : $iMinPosition);
+				$this->_iLineColor = $this->_iPagesTotal++ % 2;
+				$aPage['iswriteable'] = false;
+				if( $this->_oApp->ami_group_member($aPage['admin_users']) ||
+					$this->_oApp->is_group_match($this->_oApp->get_groups_id(), $aPage['admin_groups']))
+				{
+					if(($aPage['visibility'] == 'deleted' && $this->_aReg['PAGE_TRASH'] == 'inline') ||
+					   ($aPage['visibility'] != 'deleted'))
+					{
+						$aPage['iswriteable'] = true;
+						$this->_iPagesWriteable++;
+					}
+				} else {
+					if($aPage['visibility'] == 'private') { continue; }
+				}
+			// add this item to the secondary list of parents
+				$this->_addToParentList($aPage);
+			// if there are children, iterate through this children now
+				if((bool)$aPage['children']) {
+					$this->_IterateTree($aPage['page_id']);
+				}
+			}
+		}
+		return $sOutput;
+	}
+
+
+} // end of class LanguagePageTree
Index: branches/2.8.x/wb/admin/pages/settings.php
===================================================================
--- branches/2.8.x/wb/admin/pages/settings.php	(revision 1952)
+++ branches/2.8.x/wb/admin/pages/settings.php	(revision 1953)
@@ -90,6 +90,7 @@
 //	$mLang->setLanguage(dirname(__FILE__).'/languages/', LANGUAGE, DEFAULT_LANGUAGE);
 	$mLang = Translate::getinstance();
 	$mLang->enableAddon('admin\pages');
+	$oDb = WbDatabase::getInstance();
 	$sDisabled = ' disabled="disabled"';
 	$sSelected = ' selected="selected"';
 	$sChecked  = ' checked="checked"';
@@ -417,93 +418,87 @@
 	} else {
 		$oTpl->set_var('DISPLAY_VIEWERS', 'display:none;');
 	}
-/*-- start multilanguage page_code 20090904 --------------------------------------------*/
-// Work-out if page languages feature is enabled
+/*-- start multilanguage page_code -----------------------------------------------------*/
 	$oTpl->set_block('main_block', 'show_page_code_block',  'show_page_code');
 	if( (defined('PAGE_LANGUAGES') && PAGE_LANGUAGES) &&
 		 isset($aCurrentPage['page_code']) && class_exists('m_MultiLingual_Lib'))
 	{
-		// workout field is set but module missing
-		$oTpl->set_var('TEXT_PAGE_CODE',
-						   '<a href="'.WB_URL.'/modules/MultiLingual/update_keys.php?page_id='.$page_id.'">'.$mLang->TEXT_PAGE_CODE.'</a>'
-		);
-	/*-- begin recursive function page_code list ---------------------------------------*/
-		function page_code_list($parent)
-		{
-			global $admin, $database, $oTpl, $aCurrentPage, $pageCode;
-			$default_language = DEFAULT_LANGUAGE;
-
-			$sql = 'SELECT * FROM `'.TABLE_PREFIX.'pages` '
-				 . 'WHERE `parent`='.$parent.' AND `language`=\''.$default_language.'\' '
-				 . 'ORDER BY `position` ASC';
-			$get_pages = $database->query($sql);
-
-			while($page = $get_pages->fetchRow(MYSQL_ASSOC))
-			{
-				if(($admin->page_is_visible($page)==false) && ($page['visibility'] <> 'none') ) { continue; }
-
-				$oTpl->set_var('FLAG_CODE_ICON',' none ');
-				if( $page['parent'] == 0 )
-				{
-					$oTpl->set_var('FLAG_CODE_ICON','url('.THEME_URL.'/images/flags/'.strtolower($page['language']).'.png)');
-				}
-
-				// If the current page cannot be parent, then its children neither
-				$list_next_level = true;
-				// Stop users from adding pages with a level of more than the set page level limit
-				if($page['level']+1 < PAGE_LEVEL_LIMIT)
-				{
-					$can_modify = ($admin->ami_group_member($page['admin_groups']) ||
-								   $admin->is_group_match($admin->get_user_id(), $page['admin_users']));
-					$title_prefix = '';
-					for($i = 1; $i <= $page['level']; $i++) { $title_prefix .= ' - - &nbsp;'; }
-					// $space = str_repeat('&nbsp;', 3);  $space.'&lt;'..'&gt;'
-					$oTpl->set_var(array(
-											'VALUE' => intval($page['page_code']),
-											'PAGE_VALUE' => $title_prefix.$page['menu_title'],
-											'PAGE_CODE' => $title_prefix.$page['page_id']
-											)
-									);
-					if($aCurrentPage['page_code'] == $page['page_code'])
-					{
-						$oTpl->set_var('SELECTED', ' selected="selected"');
-					} elseif($aCurrentPage['page_code'] == $page['page_code'])
-					{
-						$oTpl->set_var('SELECTED', ' disabled="disabled" class="disabled"');
-						$list_next_level=false;
-					} elseif($can_modify != true)
-					{
-						$oTpl->set_var('SELECTED', ' disabled="disabled" class="disabled"');
-					} else {
-						$oTpl->set_var('SELECTED', '');
-					}
-					$oTpl->parse('page_code_list', 'page_code_list_block', true);
-				}
-				if ($list_next_level)
-					page_code_list($page['page_id']);
-			}
+		$aTplBlockData = array();
+	// workout field is set but module missing
+		$aTplBlockData['PAGE_CODE_LABEL_TEXT'] = $mLang->TEXT_PAGE_CODE;
+		$aTplBlockData['PAGE_CODE_UPDATE_URL'] = WB_REL.'/modules/MultiLingual/update_keys.php?page_id='.$page_id;
+	// get the root element(level 0) of current page with same language  in same menu
+		$sql =  'SELECT `page_id` FROM `'.$oDb->TablePrefix.'pages` '
+		     .  'WHERE `language`=\''.DEFAULT_LANGUAGE.'\' '
+		     .         'AND `level`=0 ';
+		if(defined('MULTIPLE_MENUS') && MULTIPLE_MENUS == 'true') {
+			$sql .=    'AND `menu`='.$aCurrentPage['menu'].' ';
 		}
-	/*-- end recursive function page_code list -----------------------------------------*/
-		// Insert code_page values from page to modify
+		$sql .= 'ORDER BY `position` ASC';
+		$iLangStartPageId = $oDb->get_one($sql);
+	// read the tree of the found root element
+		$oPageList = new a_pages_SmallRawPageTree();
+		$aLangCodePagesList = $oPageList->getParentList($iLangStartPageId);
+	// create option list for the select box
 		$oTpl->set_block('show_page_code_block', 'page_code_list_block', 'page_code_list');
-		if($admin->get_permission('pages_add_l0') == true OR $aCurrentPage['level'] == 0) {
-			$selected = ($aCurrentPage['parent'] == 0 ? $sSelected : '');
-			$oTpl->set_var(array(
-					'VALUE' => 0,
-					'PAGE_CODE' => $mLang->TEXT_NONE,
-					'PAGE_VALUE' => '',
-					'SELECTED' => $selected
-				)
-			);
+		$aTplItemData = array();
+		$bPageCodeIsSelected = false;
+	// add 'no selection' option at top
+		if($admin->get_permission('pages_add_l0') OR !$aCurrentPage['level'])
+		{
+			$aTplItemData['PAGE_CODE_VALUE']      = 0;
+			$aTplItemData['PAGE_CODE_PAGE_TITLE'] = $mLang->TEXT_NONE;
+			$bPageCodeIsSelected = ($aCurrentPage['page_code'] == 0);
+			$aTplItemData['PAGE_CODE_SELECTED'] = ($bPageCodeIsSelected ? $sSelected : '');
+			$oTpl->set_var($aTplItemData);
 			$oTpl->parse('page_code_list', 'page_code_list_block', true);
+			$aTplItemData = array();
 		}
-		// get pagecode form this page_id
-		page_code_list(0);
+		$iLastEntryLevel = 0;
+		$bSkipChildren = false;
+	// loop through all items
+		while (list(, $aPage) = each($aLangCodePagesList)) 
+		{
+		// skip child pages where current user has no rights for
+			if($bSkipChildren && ($aPage['level'] > $iLastEntryLevel)) { continue; }
+			$bSkipChildren   = false;
+			$iLastEntryLevel = $aPage['level'];
+		//skip entry if it's not visible
+			if(($admin->page_is_visible($aPage)==false) && ($aPage['visibility'] <> 'none') ) { continue; }
+		// insert language flag on level 0
+			$sThemeRel = WB_REL.'/'.str_replace(WB_URL, '', THEME_URL).'/images/flags/'.strtolower($aPage['language']).'.png)';
+			$aTplItemData['PAGE_CODE_ICON_URL'] = ($aPage['level'] ? 'url('.$sThemeRel.')' : 'none');
+		// create indent chars
+			$sTitlePrefix = str_repeat('--&nbsp;', $aPage['level']).'&nbsp;';
+			$aTplItemData['PAGE_CODE_PAGE_TITLE'] = $sTitlePrefix . $aPage['menu_title'];
+			$aTplItemData['PAGE_CODE_VALUE']      = intval($aPage['page_code']);
+		// set SELECTED status of this entry
+			if( $aPage['page_id'] == $aCurrentPage['page_code']
+			    && $aCurrentPage['page_code'] != 0
+				&& !$bPageCodeIsSelected
+			  )
+			{ // 
+				$aTplItemData['PAGE_CODE_SELECTED'] = $sSelected;
+				$bPageCodeIsSelected = true;
+			} elseif(!$aPage['iswriteable'])
+			{ // 
+				$aTplItemData['PAGE_CODE_SELECTED'] = $sDisabled.' class="disabled"';
+				$bSkipChildren = true;
+			} else {
+				$aTplItemData['PAGE_CODE_SELECTED'] = '';
+			}
+		// output item data
+			$oTpl->set_var($aTplItemData);
+			$oTpl->parse('page_code_list', 'page_code_list_block', true);
+			$aTplItemData = array();
+		}
+	// output block data
+		$oTpl->set_var($aTplBlockData);
 		$oTpl->parse('show_page_code', 'show_page_code_block', true);
 	}else {
 		$oTpl->set_block('show_page_code', '');
 	}
-/*-- end multilanguage page_code 20090904 ----------------------------------------------*/
+/*-- end multilanguage page_code -------------------------------------------------------*/
 
 /*-- show list of parent pages ---------------------------------------------------------*/
 	$oTpl->set_block('main_block', 'parent_page_list_block', 'parent_page_list');
@@ -515,6 +510,7 @@
 					) );
 		$oTpl->parse('parent_page_list', 'parent_page_list_block', true);
 	}
+
 	parent_list(0);
 	$oTpl->set_var('DISPLAY_MODIFIED', ($modified_ts == 'Unknown' ? 'hide' : ''));
 
Index: branches/2.8.x/wb/admin/pages/index.php
===================================================================
--- branches/2.8.x/wb/admin/pages/index.php	(revision 1952)
+++ branches/2.8.x/wb/admin/pages/index.php	(revision 1953)
@@ -135,34 +135,39 @@
 	
 // --- build parent pages list -----------------------------------------------------------
 	$aParents = $oPageTree->getParentList();
-	$aFirstEntry = array();
-	$aFirstEntry['ID']             = 0;
-	$aFirstEntry['TITLE']          = $TEXT['NONE'];
-	$aFirstEntry['DISABLED']       = 0;
-	$aFirstEntry['PARENT']         = 99;
-	$aFirstEntry['FLAG_ROOT_ICON'] = '';
-	$aFirstEntry['LEVEL']          = 0;
-	$aFirstEntry['LANGUAGE']       = '';
-	array_unshift($aParents, $aFirstEntry);
+	$aNewEntry = array();
+	$aNewEntry['page_id']        = 0;
+	$aNewEntry['menu_title']     = $TEXT['NONE'];
+	$aNewEntry['disabled']       = 0;
+	$aNewEntry['parent']         = 99;
+	$aNewEntry['flag_root_icon'] = '';
+	$aNewEntry['level']          = 0;
+	$aNewEntry['language']       = '';
+	array_unshift($aParents, $aNewEntry);
 	reset($aParents);
 	$oTpl->set_block('main_block', 'parents_list_block', 'parents_list');
 	// walk through all items
 	while (list(, $aItem) = each($aParents)) {
 		if($admin->get_permission('pages_add')) {
+			$aNewEntry = array();
+			$aNewEntry['ID']             = $aItem['page_id'];
+			$aNewEntry['PARENT']         = $aItem['parent'];
+			$aNewEntry['LEVEL']          = $aItem['level'];
+			$aNewEntry['LANGUAGE']       = $aItem['language'];
+			$aNewEntry['FLAG_ROOT_ICON'] = '';
 			// modify item
-			$aItem['DISABLED'] = ($aItem['DISABLED'] ? ' disabled="disabled" class="disabled"' : '');
-			if(!$aItem['PARENT']) {
-				$aItem['FLAG_ROOT_ICON'] = ' style="background-image: url('.THEME_REL.'/images/flags/'
+			$aNewEntry['DISABLED'] = ($aItem['disabled'] ? ' disabled="disabled" class="disabled"' : '');
+			if(!$aItem['parent']) {
+				$aNewEntry['FLAG_ROOT_ICON'] = ' style="background-image: url('.THEME_REL.'/images/flags/'
 										 . strtolower($aItem['LANGUAGE']).'.png);"';
 			}
-			$aItem['TITLE'] = str_repeat('- ', $aItem['LEVEL']).$aItem['TITLE'];
+			$aNewEntry['TITLE'] = str_repeat('- ', $aItem['level']).$aItem['menu_title'];
 			// write block into template
-			$oTpl->set_var($aItem);
+			$oTpl->set_var($aNewEntry);
 			$oTpl->parse('parents_list', 'parents_list_block', true);
 		}
 	}
 	unset($aParents);
-	
 // --- build modules list ----------------------------------------------------------------
 	$bMatch = false;
 	$aModulePermissions = '\''.implode(',', $_SESSION['MODULE_PERMISSIONS']).'\'';
Index: branches/2.8.x/wb/admin/interface/version.php
===================================================================
--- branches/2.8.x/wb/admin/interface/version.php	(revision 1952)
+++ branches/2.8.x/wb/admin/interface/version.php	(revision 1953)
@@ -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', '1952');
+if(!defined('REVISION')) define('REVISION', '1953');
 if(!defined('SP')) define('SP', '');
Index: branches/2.8.x/wb/modules/MultiLingual/update_keys.php
===================================================================
--- branches/2.8.x/wb/modules/MultiLingual/update_keys.php	(revision 1952)
+++ branches/2.8.x/wb/modules/MultiLingual/update_keys.php	(revision 1953)
@@ -54,9 +54,7 @@
 require(WB_PATH.'/modules/admin.php');
 $temp_page_id =  intval( htmlentities($page_id ) );
 
-$mLang = ModLanguage::getInstance();
-$mLang->setLanguage(dirname(__FILE__).'/languages/', LANGUAGE, DEFAULT_LANGUAGE);
-
+$oTrans = Translate::getInstance();
 // check for page languages
 $oPageLang = new m_MultiLingual_Lib();
 $Result = $oPageLang->updateDefaultPagesCode(); 
@@ -64,5 +62,5 @@
 {
 	$admin->print_error($database->get_error(), ADMIN_URL.'/pages/settings.php?page_id='.$temp_page_id );
 } else {
-	$admin->print_success($mLang->MESSAGE_PAGES_UPDATE_SETTINGS, ADMIN_URL.'/pages/settings.php?page_id='.$temp_page_id );
+	$admin->print_success($oTrans->MESSAGE_PAGES_UPDATE_SETTINGS, ADMIN_URL.'/pages/settings.php?page_id='.$temp_page_id );
 }
