Index: branches/2.8.x/CHANGELOG
===================================================================
--- branches/2.8.x/CHANGELOG	(revision 1663)
+++ branches/2.8.x/CHANGELOG	(revision 1664)
@@ -11,6 +11,9 @@
 ! = Update/Change
 ===============================================================================
 
+17 Apr-2012 Build 1664 Werner v.d.Decken(DarkViper)
++ added additional rights for AdminUsers/ViewerUsers in /pages/page_settings
+! /pages/settings2.php renamed into /pages/settings_save.php
 17 Apr-2012 Build 1663 Dietmar Woellbrink (Luisehahne)
 ! update round print.css for better output
 17 Apr-2012 Build 1662 Werner 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 1663)
+++ branches/2.8.x/wb/admin/skel/themes/htt/pages_settings.htt	(revision 1664)
@@ -1,7 +1,6 @@
 <!-- BEGIN main_block -->
-
 <script src="{ADMIN_URL}/pages/page_settings.js" type="text/javascript"></script>
-
+<link href="http://istmzw01.isteam.loc/WB28x-Branch/wb/templates/wb_theme/theme.css" rel="stylesheet" type="text/css" />
 <table summary="" cellpadding="5" cellspacing="0" border="0" align="center" width="100%" style="margin-bottom:10px;">
   <tr style="background:#f0f0f0;">
 	<td valign="middle" align="left"><h2>{HEADING_MODIFY_PAGE_SETTINGS}</h2></td>
@@ -10,169 +9,159 @@
 		{TEXT_CURRENT_PAGE}:
 		<b>{PAGE_TITLE}</b>
 		-
-		<a href="{ADMIN_URL}/pages/modify.php?page_id={PAGE_IDKEY}">{TEXT_MODIFY_PAGE}</a>
-		<font style="{DISPLAY_MANAGE_SECTIONS}">-</font>
-		<a href="{ADMIN_URL}/pages/sections.php?page_id={PAGE_IDKEY}" style="{DISPLAY_MANAGE_SECTIONS}">{TEXT_MANAGE_SECTIONS}</a>
+		<a href="{ADMIN_URL}/pages/modify.php?page_id={PAGE_ID}">{TEXT_MODIFY_PAGE}</a>
+		<span style="{DISPLAY_MANAGE_SECTIONS}">
+		- <a href="{ADMIN_URL}/pages/sections.php?page_id={PAGE_ID}">{TEXT_MANAGE_SECTIONS}</a>
+		</span>
 		<br />
-		<font style="color:#999;" class="{DISPLAY_MODIFIED}">
+		<span style="color:#999;" class="{DISPLAY_MODIFIED}">
 			{LAST_MODIFIED} {MODIFIED_BY} ({MODIFIED_BY_USERNAME}), {MODIFIED_WHEN}
-		</font>
+		</span>
 	</td>
   </tr>
 </table>
 
-<form name="settings" action="settings2.php" method="post">
-{FTAN}
-<input type="hidden" name="page_id" value="{PAGE_ID}" />
-<table summary="" cellpadding="2" cellspacing="0" border="0" width="100%" align="center">
-<tr>
-	<td width="100" height="20">{TEXT_PAGE_TITLE}:</td>
-	<td width="240" height="20">
-		<input type="text" name="page_title" value="{PAGE_TITLE}" style="width: 232px;" />
-	</td>
-	<td rowspan="10" valign="top" style="padding-left: 20px; padding-top: 8px;">
-		{TEXT_ADMINISTRATORS}:
-		<ul style="list-style-type: none; margin: 0; padding: 0;">
-			<!-- BEGIN group_list_block -->
-			<li>
-			<input type="checkbox" name="admin_groups[]" id="admin_group_{ID}" value="{ID}"{CHECKED}{DISABLED} />
-			<label for="admin_group_{TOGGLE}">{NAME}</label>
-			</li>
-			<!-- END group_list_block -->
-		</ul>
-	</td>
-	<td rowspan="10" valign="top" style="padding:8px 0 0 20px;">
-		<div id="allowed_viewers" style="{DISPLAY_VIEWERS}">
-			{TEXT_ALLOWED_VIEWERS}:
+<form name="settings" action="settings_save.php" method="post">
+	{FTAN}
+	<input type="hidden" name="page_id" value="{PAGE_IDKEY}" />
+	<div class="page-settings">
+		<div class="page-settings-leftcol"> <!-- left column -->
+			<div>
+				<label for="">{TEXT_PAGE_TITLE}:</label><input
+					type="text" name="page_title" value="{PAGE_TITLE}" />
+			</div>
+			<div>
+				<label for="">{TEXT_MENU_TITLE}:</label><input
+					type="text" name="menu_title" value="{MENU_TITLE}" />
+			</div>
+			<div>
+				<label for="">{TEXT_PARENT}:</label><select name="parent">
+				<!-- BEGIN parent_page_list_block -->
+					<option value="{ID}"{SELECTED} style="background: {FLAG_ROOT_ICON} no-repeat center left; padding-left: 20px;">{TITLE}</option>
+				<!-- END parent_page_list_block -->
+				</select>
+			</div>
+			<div>
+				<label for="">{TEXT_VISIBILITY}:</label><select
+					name="visibility" onchange="javascript: toggle_viewers();">
+					<option value="public"{PUBLIC_SELECTED}>{TEXT_PUBLIC}</option>
+					<option value="private"{PRIVATE_SELECTED}>{TEXT_PRIVATE}</option>
+					<option value="registered"{REGISTERED_SELECTED}>{TEXT_REGISTERED}</option>
+					<option value="hidden"{HIDDEN_SELECTED}>{TEXT_HIDDEN}</option>
+					<option value="none"{NO_VIS_SELECTED}>{TEXT_NONE}</option>
+				</select>
+			</div>
+			<div>
+				<label for="">{TEXT_DESCRIPTION}:</label><textarea
+					name="description" rows="14" cols="1">{DESCRIPTION}</textarea>
+			</div>
+			<div>
+				<label for="">{TEXT_KEYWORDS}:</label><textarea
+					name="keywords" rows="14" cols="1">{KEYWORDS}</textarea>
+			</div>
+			<div>
+				<label for="">{TEXT_TARGET}:</label><select
+					name="target" ><!--  value="{TARGET}" -->
+					<option value="_blank"{BLANK_SELECTED}>{TEXT_NEW_WINDOW}</option>
+					<option value="_self"{SELF_SELECTED}>{TEXT_SAME_WINDOW}</option>
+					<option value="_top"{TOP_SELECTED}>{TEXT_TOP_FRAME}</option>
+				</select>
+			</div>
+			<div>
+				<label for="">{TEXT_TEMPLATE}:</label><select
+					name="template">
+					<option value="">{TEXT_SYSTEM_DEFAULT}</option>
+					<option value="">----------------------</option>
+				<!-- BEGIN template_list_block -->
+					<option value="{VALUE}"{SELECTED}>{NAME}</option>
+				<!-- END template_list_block -->
+				</select>
+			</div>
+		<!-- BEGIN show_menu_list_block -->
+			<div>
+				<label for="">{TEXT_MENU}:</label><select
+					name="menu">
+				<!-- BEGIN menu_list_block -->
+					<option value="{VALUE}"{SELECTED}>{NAME}</option>
+				<!-- END menu_list_block -->
+				</select>
+			</div>
+		<!-- END show_menu_list_block -->
+			<div>
+				<label for="">{TEXT_LANGUAGE}:</label><select
+					name="language">
+				<!-- BEGIN language_list_block -->
+					<option value="{VALUE}"{SELECTED} style="background: {FLAG_LANG_ICONS} no-repeat center left; padding-left: 20px;">{NAME}</option>
+				<!-- END language_list_block -->
+				</select>
+			</div>
+		<!-- BEGIN show_page_code_block -->
+			<div>
+				<label for="">{TEXT_PAGE_CODE}:</label><select
+					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>
+				<!-- END page_code_list_block -->
+				</select>
+			</div>
+		<!-- END show_page_code_block -->
+			<div>
+				<label for="">{TEXT_SEARCHING}:</label><select
+					name="searching">
+					<option value="1"{SEARCHING_SELECTED_ON}>{TEXT_ENABLED}</option>
+					<option value="0"{SEARCHING_SELECTED_OFF}>{TEXT_DISABLED}</option>
+				</select>
+			</div>
+		</div>
+		<div class="page-settings-centercol"> <!-- center column -->
+			{TEXT_ADMINISTRATORS}<hr />
+			{TEXT_GROUP}<br />
+<!-- *** List of groups which can administrate this page *** -->
+			<ul style="list-style-type: none; margin: 0; padding: 0;">
+			<!-- BEGIN admin_group_list_block -->
+				<li>
+					<input type="checkbox" name="admin_groups[]" id="admin_group_{ID}" value="{ID}"{CHECKED}{DISABLED} />
+					<label for="admin_group_{ID}">{NAME}</label>
+				</li>
+			<!-- END admin_group_list_block -->
+			</ul>
+			<hr />
+			{TEXT_USER}<br />
+<!-- *** List of users which can administrate this page *** -->
+			<select name="admin_users[]" multiple="multiple" size="{USER_LIST_SIZE}">
+				<option value="0">--- {TEXT_NO_SELECTION} ---</option>
+			<!-- BEGIN admin_user_list_block -->
+				<option value="{ID}"{SELECTED}>{NAME}</option>
+			<!-- END admin_user_list_block -->
+			</select>
+		</div>
+
+		<div id="allowed_viewers" class="page-settings-rightcol" style="{DISPLAY_VIEWERS}"> <!-- right column -->
+			{TEXT_ALLOWED_VIEWERS}<hr />
+			{TEXT_GROUP}<br />
+<!-- *** List of groups which can see this page *** -->
 			<ul style="list-style-type:none;margin:0;padding:0;">
-				<!-- BEGIN group_list_block2 -->
+			<!-- BEGIN viewer_group_list_block -->
 				<li>
-				<input type="checkbox" name="viewing_groups[]" id="viewing_group_{ID}" value="{ID}"{CHECKED}{DISABLED} />
-				<label for="viewing_group_{TOGGLE}">{NAME}</label>
+					<input type="checkbox" name="viewing_groups[]" id="viewing_group_{ID}" value="{ID}"{CHECKED}{DISABLED} />
+					<label for="viewing_group_{ID}">{NAME}</label>
 				</li>
-				<!-- END group_list_block2 -->
+			<!-- END viewer_group_list_block -->
 			</ul>
+			<hr />
+			{TEXT_USER}<br />
+<!-- *** List of users which can see this page *** -->
+			<select name="viewing_users[]" multiple="multiple" size="{USER_LIST_SIZE}">
+				<option value="0">--- {TEXT_NO_SELECTION} ---</option>
+			<!-- BEGIN viewer_user_list_block -->
+				<option value="{ID}"{SELECTED}>{NAME}</option>
+			<!-- END viewer_user_list_block -->
+			</select>
 		</div>
-	</td>
-</tr>
-<tr>
-	<td width="100" height="20">{TEXT_MENU_TITLE}:</td>
-	<td width="240" height="20">
-		<input type="text" name="menu_title" value="{MENU_TITLE}" style="width: 232px;" />
-	</td>
-</tr>
-<tr>
-	<td width="100">{TEXT_PARENT}:</td>
-	<td width="240">
-		<select name="parent" style="width: 240px;" onchange="return disabled_hack_for_ie(this);">
-			<!-- BEGIN page_list_block2 -->
-			<option value="{ID}"{SELECTED} style="background: {FLAG_ROOT_ICON} no-repeat center left; padding-left: 20px;">{TITLE}</option>
-			<!-- END page_list_block2 -->
-		</select>
-	</td>
-</tr>
-<tr>
-	<td width="100">{TEXT_VISIBILITY}:</td>
-	<td width="240">
-		<select name="visibility" onchange="javascript: toggle_viewers();" style="width: 240px;">
-			<option value="public"{PUBLIC_SELECTED}>{TEXT_PUBLIC}</option>
-			<option value="private"{PRIVATE_SELECTED}>{TEXT_PRIVATE}</option>
-			<option value="registered"{REGISTERED_SELECTED}>{TEXT_REGISTERED}</option>
-			<option value="hidden"{HIDDEN_SELECTED}>{TEXT_HIDDEN}</option>
-			<option value="none"{NO_VIS_SELECTED}>{TEXT_NONE}</option>
-		</select>
-	</td>
-</tr>
-<tr>
-	<td width="100" valign="top">{TEXT_DESCRIPTION}:</td>
-	<td>
-		<textarea name="description" rows="10" cols="1" style="width:236px;height:50px;">{DESCRIPTION}</textarea>
-	</td>
-</tr>
-<tr>
-	<td width="100" valign="top">{TEXT_KEYWORDS}:</td>
-	<td>
-		<textarea name="keywords" rows="10" cols="1" style="width:236px;height:50px;">{KEYWORDS}</textarea>
-	</td>
-</tr>
-<tr>
-	<td>
-		{TEXT_TARGET}:
-	</td>
-	<td>
-		<select name="target" style="width: 240px;" ><!--  value="{TARGET}" -->
-			<option value="_blank"{BLANK_SELECTED}>{TEXT_NEW_WINDOW}</option>
-			<option value="_self"{SELF_SELECTED}>{TEXT_SAME_WINDOW}</option>
-			<option value="_top"{TOP_SELECTED}>{TEXT_TOP_FRAME}</option>
-		</select>
-	</td>
-</tr>
-<tr>
-	<td width="100">{TEXT_TEMPLATE}:</td>
-	<td width="240">
-		<select name="template" style="width: 240px;">
-			<option value="">{TEXT_SYSTEM_DEFAULT}</option>
-			<option value="">----------------------</option>
-			<!-- BEGIN template_list_block -->
-			<option value="{VALUE}"{SELECTED}>{NAME}</option>
-			<!-- END template_list_block -->
-		</select>
-	</td>
-</tr>
-<tr style="{DISPLAY_MENU_LIST}">
-	<td width="100">{TEXT_MENU}:</td>
-	<td width="240">
-		<select name="menu" style="width: 240px;">
-			<!-- BEGIN menu_list_block -->
-			<option value="{VALUE}"{SELECTED}>{NAME}</option>
-			<!-- END menu_list_block -->
-		</select>
-	</td>
-</tr>
-<tr style="{DISPLAY_LANGUAGE_LIST}">
-	<td width="100">{TEXT_LANGUAGE}:</td>
-	<td width="240">
-		<select name="language" style="width: 240px;">
-			<!-- BEGIN language_list_block -->
-			<option value="{VALUE}"{SELECTED} style="background: {FLAG_LANG_ICONS} no-repeat center left; padding-left: 20px;">{NAME}</option>
-			<!-- END language_list_block -->
-		</select>
-	</td>
-</tr>
-<!-- insert page_code 20090904-->
-<tr{DISPLAY_CODE_PAGE_LIST}>
-	<td width="100">{TEXT_PAGE_CODE}:</td>
-	<td class="list_page_code">
-		<select 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>
-			<!-- END page_code_list_block -->
-		</select>
-	</td>
-</tr>
-<!-- page code -->
-<tr>
-	<td width="100">{TEXT_SEARCHING}:</td>
-	<td width="240">
-		<select name="searching" style="width: 240px;">
-			<option value="1">{TEXT_ENABLED}</option>
-			<option value="0"{SEARCHING_DISABLED}>{TEXT_DISABLED}</option>
-		</select>
-	</td>
-</tr>
-<tr>
-	<td width="100">&nbsp;</td>
-	<td colspan="4">
-		<input type="submit" name="submit" value="{TEXT_SAVE} {SECTION_SETTINGS}" style="width: 117px;" />
-		<input type="reset" name="reset" value="{TEXT_RESET}" style="width: 117px;" />
-	</td>
-</tr>
-<tr>
-	<td>&nbsp;</td>
-	<td>&nbsp;</td>
-</tr>
-</table>
-
+		<div style="clear:both; padding-top: 1em;">
+			<input type="submit" name="submit" value="{TEXT_SAVE}" style="width: 117px;" />
+			<input type="reset" name="reset" value="{TEXT_RESET}" style="width: 117px;" />
+		</div>
+	</div>
 </form>
-
-<!-- END main_block -->
\ No newline at end of file
+<!-- END main_block -->
Index: branches/2.8.x/wb/admin/pages/settings2.php
===================================================================
--- branches/2.8.x/wb/admin/pages/settings2.php	(revision 1663)
+++ branches/2.8.x/wb/admin/pages/settings2.php	(nonexistent)
@@ -1,328 +0,0 @@
-<?php
-/**
- *
- * @category        admin
- * @package         pages
- * @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$
- *
- */
-/* */
-
-// Create new admin object and print admin header
-require('../../config.php');
-require_once(WB_PATH.'/framework/class.admin.php');
-
-// suppress to print the header, so no new FTAN will be set
-$admin = new admin('Pages', 'pages_settings',false);
-
-// Get page id
-if(!isset($_POST['page_id']) || !is_numeric($_POST['page_id']))
-{
-	header("Location: index.php");
-	exit(0);
-} else {
-	$page_id = (int)$_POST['page_id'];
-}
-
-/*
-if( (!($page_id = $admin->checkIDKEY('page_id', 0, $_SERVER['REQUEST_METHOD']))) )
-{
-	$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS']);
-}
-*/
-$pagetree_url = ADMIN_URL.'/pages/index.php';
-$target_url = ADMIN_URL.'/pages/settings.php?page_id='.$page_id;
-
-if (!$admin->checkFTAN())
-{
-	$admin->print_header();
-	$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS'],$target_url);
-}
-// After check print the header
-$admin->print_header();
-
-// Include the WB functions file
-require_once(WB_PATH.'/framework/functions.php');
-
-// Get values
-$page_title = str_replace(array("[[", "]]"), '', htmlspecialchars($admin->get_post_escaped('page_title')));
-$menu_title = str_replace(array("[[", "]]"), '', htmlspecialchars($admin->get_post_escaped('menu_title')));
-$page_code = intval($admin->get_post('page_code')) ;
-$description = str_replace(array("[[", "]]"), '', htmlspecialchars($admin->add_slashes($admin->get_post('description'))));
-$keywords = str_replace(array("[[", "]]"), '', htmlspecialchars($admin->add_slashes($admin->get_post('keywords'))));
-$parent = intval($admin->get_post('parent')); // fix secunia 2010-91-3
-$visibility = $admin->get_post_escaped('visibility');
-if (!in_array($visibility, array('public', 'private', 'registered', 'hidden', 'none'))) {$visibility = 'public';} // fix secunia 2010-93-3
-$template = preg_replace('/[^a-z0-9_-]/i', "", $admin->get_post('template')); // fix secunia 2010-93-3
-$template = (($template == DEFAULT_TEMPLATE ) ? '' : $template);
-$target = preg_replace("/\W/", "", $admin->get_post('target'));
-$admin_groups = $admin->get_post_escaped('admin_groups');
-$viewing_groups = $admin->get_post_escaped('viewing_groups');
-$searching = intval($admin->get_post('searching'));
-$language = strtoupper($admin->get_post('language'));
-$language = (preg_match('/^[A-Z]{2}$/', $language) ? $language : DEFAULT_LANGUAGE);
-$menu = intval($admin->get_post('menu')); // fix secunia 2010-91-3
-
-// Validate data
-if($page_title == '' || substr($page_title,0,1)=='.')
-{
-	$admin->print_error($MESSAGE['PAGES']['BLANK_PAGE_TITLE']);
-}
-if($menu_title == '' || substr($menu_title,0,1)=='.')
-{
-	$admin->print_error($MESSAGE['PAGES']['BLANK_MENU_TITLE']);
-}
-
-// Get existing perms
-// $database = new database();
-
-$sql = 'SELECT `parent`,`link`,`position`,`admin_groups`,`admin_users` FROM `'.TABLE_PREFIX.'pages` WHERE `page_id`='.$page_id;
-$results = $database->query($sql);
-
-$results_array = $results->fetchRow();
-$old_parent = $results_array['parent'];
-$old_link = $results_array['link'];
-$old_position = $results_array['position'];
-$old_admin_groups = explode(',', str_replace('_', '', $results_array['admin_groups']));
-$old_admin_users = explode(',', str_replace('_', '', $results_array['admin_users']));
-
-// Work-out if we should check for existing page_code
-$field_set = $database->field_exists(TABLE_PREFIX.'pages', 'page_code');
-
-$in_old_group = FALSE;
-foreach($admin->get_groups_id() as $cur_gid)
-{
-    if (in_array($cur_gid, $old_admin_groups))
-    {
-	$in_old_group = TRUE;
-    }
-}
-if((!$in_old_group) && !is_numeric(array_search($admin->get_user_id(), $old_admin_users)))
-{
-	$admin->print_error($MESSAGE['PAGES']['INSUFFICIENT_PERMISSIONS']);
-}
-
-// Setup admin groups
-$admin_groups[] = 1;
-//if(!in_array(1, $admin->get_groups_id())) {
-//	$admin_groups[] = implode(",",$admin->get_groups_id());
-//}
-$admin_groups = preg_replace("/[^\d,]/", "", implode(',', $admin_groups));
-// Setup viewing groups
-$viewing_groups[] = 1;
-//if(!in_array(1, $admin->get_groups_id())) {
-//	$viewing_groups[] = implode(",",$admin->get_groups_id());
-//}
-$viewing_groups = preg_replace("/[^\d,]/", "", implode(',', $viewing_groups));
-
-// If needed, get new order
-if($parent != $old_parent)
-{
-	// Include ordering class
-	require(WB_PATH.'/framework/class.order.php');
-	$order = new order(TABLE_PREFIX.'pages', 'position', 'page_id', 'parent');
-	// Get new order
-	$position = $order->get_new($parent);
-	// Clean new order
-	$order->clean($parent);
-} else {
-	$position = $old_position;
-}
-
-// Work out level and root parent
-if ($parent!='0')
-{
-	$level = level_count($parent)+1;
-	$root_parent = root_parent($parent);
-}
-else {
-	$level = '0';
-	$root_parent = '0';
-}
-
-// Work-out what the link should be
-if($parent == '0')
-{
-	$link = '/'.page_filename($menu_title);
-	// rename menu titles: index && intro to prevent clashes with intro page feature and WB core file /pages/index.php
-	if($link == '/index' || $link == '/intro')
-    {
-		$link .= '_' .$page_id;
-		$filename = WB_PATH.PAGES_DIRECTORY.'/'.page_filename($menu_title).'_'.$page_id .PAGE_EXTENSION;
-	} else {
-		$filename = WB_PATH.PAGES_DIRECTORY.'/'.page_filename($menu_title).PAGE_EXTENSION;
-	}
-} else {
-	$parent_section = '';
-	$parent_titles = array_reverse(get_parent_titles($parent));
-	foreach($parent_titles AS $parent_title)
-    {
-		$parent_section .= page_filename($parent_title).'/';
-	}
-	if($parent_section == '/')
-    {
-      $parent_section = '';
-    }
-	$link = '/'.$parent_section.page_filename($menu_title);
-	$filename = WB_PATH.PAGES_DIRECTORY.'/'.$parent_section.page_filename($menu_title).PAGE_EXTENSION;
-}
-
-// Check if a page with same page filename exists
-// $database = new database();
-$sql = 'SELECT `page_id`,`page_title` FROM `'.TABLE_PREFIX.'pages` WHERE `link` = "'.$link.'" AND `page_id` != '.$page_id;
-$get_same_page = $database->query($sql);
-
-if($get_same_page->numRows() > 0)
-{
-	$admin->print_error($MESSAGE['PAGES']['PAGE_EXISTS']);
-}
-
-// Update page with new order
-$sql = 'UPDATE `'.TABLE_PREFIX.'pages` SET `parent`='.$parent.', `position`='.$position.' WHERE `page_id`='.$page_id.'';
-// $database = new database();
-$database->query($sql);
-
-// Get page trail
-$page_trail = get_page_trail($page_id);
-
-// Update page settings in the pages table
-$sql  = 'UPDATE `'.TABLE_PREFIX.'pages` SET ';
-$sql .= '`parent` = '.$parent.', ';
-$sql .= '`page_title` = "'.$page_title.'", ';
-$sql .= '`menu_title` = "'.$menu_title.'", ';
-$sql .= '`menu` = '.$menu.', ';
-$sql .= '`level` = '.$level.', ';
-$sql .= '`page_trail` = "'.$page_trail.'", ';
-$sql .= '`root_parent` = '.$root_parent.', ';
-$sql .= '`link` = "'.$link.'", ';
-$sql .= '`template` = "'.$template.'", ';
-$sql .= '`target` = "'.$target.'", ';
-$sql .= '`description` = "'.$description.'", ';
-$sql .= '`keywords` = "'.$keywords.'", ';
-$sql .= '`position` = '.$position.', ';
-$sql .= '`visibility` = "'.$visibility.'", ';
-$sql .= '`searching` = '.$searching.', ';
-$sql .= '`language` = "'.$language.'", ';
-$sql .= '`admin_groups` = "'.$admin_groups.'", ';
-$sql .= '`viewing_groups` = "'.$viewing_groups.'"';
-$sql .= (defined('PAGE_LANGUAGES') && PAGE_LANGUAGES) && $field_set && (file_exists(WB_PATH.'/modules/mod_multilingual/update_keys.php')) ? ', `page_code` = '.(int)$page_code.' ' : ' ';
-$sql .= 'WHERE `page_id` = '.$page_id;
-$database->query($sql);
-
-$target_url = ADMIN_URL.'/pages/settings.php?page_id='.$page_id;
-if($database->is_error())
-{
-	$admin->print_error($database->get_error(), $target_url );
-}
-// Clean old order if needed
-if($parent != $old_parent)
-{
-	$order->clean($old_parent);
-}
-
-/* BEGIN page "access file" code */
-
-// Create a new file in the /pages dir if title changed
-if(!is_writable(WB_PATH.PAGES_DIRECTORY.'/'))
-{
-	$admin->print_error($MESSAGE['PAGES']['CANNOT_CREATE_ACCESS_FILE']);
-} else {
-    $old_filename = WB_PATH.PAGES_DIRECTORY.$old_link.PAGE_EXTENSION;
-	// First check if we need to create a new file
-	if(($old_link != $link) || (!file_exists($old_filename)))
-    {
-		// Delete old file
-		$old_filename = WB_PATH.PAGES_DIRECTORY.$old_link.PAGE_EXTENSION;
-		if(file_exists($old_filename))
-        {
-			unlink($old_filename);
-		}
-		// Create access file
-		create_access_file($filename,$page_id,$level);
-		// Move a directory for this page
-		if(file_exists(WB_PATH.PAGES_DIRECTORY.$old_link.'/') && is_dir(WB_PATH.PAGES_DIRECTORY.$old_link.'/'))
-        {
-			rename(WB_PATH.PAGES_DIRECTORY.$old_link.'/', WB_PATH.PAGES_DIRECTORY.$link.'/');
-		}
-		// Update any pages that had the old link with the new one
-		$old_link_len = strlen($old_link);
-        $sql = '';
-		$query_subs = $database->query("SELECT page_id,link,level FROM ".TABLE_PREFIX."pages WHERE link LIKE '%$old_link/%' ORDER BY LEVEL ASC");
-
-		if($query_subs->numRows() > 0)
-        {
-			while($sub = $query_subs->fetchRow())
-            {
-				// Double-check to see if it contains old link
-				if(substr($sub['link'], 0, $old_link_len) == $old_link)
-                {
-					// Get new link
-					$replace_this = $old_link;
-					$old_sub_link_len =strlen($sub['link']);
-					$new_sub_link = $link.'/'.substr($sub['link'],$old_link_len+1,$old_sub_link_len);
-					// Work out level
-					$new_sub_level = level_count($sub['page_id']);
-					// Update level and link
-					$database->query("UPDATE ".TABLE_PREFIX."pages SET link = '$new_sub_link', level = '$new_sub_level' WHERE page_id = '".$sub['page_id']."' LIMIT 1");
-					// Re-write the access file for this page
-					$old_subpage_file = WB_PATH.PAGES_DIRECTORY.$new_sub_link.PAGE_EXTENSION;
-					if(file_exists($old_subpage_file))
-                    {
-						unlink($old_subpage_file);
-					}
-					create_access_file(WB_PATH.PAGES_DIRECTORY.$new_sub_link.PAGE_EXTENSION, $sub['page_id'], $new_sub_level);
-				}
-			}
-		}
-	}
-}
-
-// Function to fix page trail of subs
-function fix_page_trail($parent,$root_parent)
-{
-	// Get objects and vars from outside this function
-	global $admin, $template, $database, $TEXT, $MESSAGE;
-	// Get page list from database
-	// $database = new database();
-	$query = "SELECT page_id FROM ".TABLE_PREFIX."pages WHERE parent = '$parent'";
-	$get_pages = $database->query($query);
-	// Insert values into main page list
-	if($get_pages->numRows() > 0)
-    {
-		while($page = $get_pages->fetchRow())
-        {
-			// Fix page trail
-
-			$database->query("UPDATE ".TABLE_PREFIX."pages SET ".($root_parent != 0 ?"root_parent = '$root_parent', ":"")." page_trail = '".get_page_trail($page['page_id'])."' WHERE page_id = '".$page['page_id']."'");
-			// Run this query on subs
-			fix_page_trail($page['page_id'],$root_parent);
-		}
-	}
-}
-
-// Fix sub-pages page trail
-fix_page_trail($page_id,$root_parent);
-
-/* END page "access file" code */
-
-//$pagetree_url = ADMIN_URL.'/pages/index.php';
-//$target_url = ADMIN_URL.'/pages/settings.php?page_id='.$page_id;
-// Check if there is a db error, otherwise say successful
-if($database->is_error())
-{
-	$admin->print_error($database->get_error(), $target_url );
-} else {
-	$admin->print_success($MESSAGE['PAGES']['SAVED_SETTINGS'], $target_url );
-}
-
-// Print admin footer
-$admin->print_footer();

Property changes on: branches/2.8.x/wb/admin/pages/settings2.php
___________________________________________________________________
Deleted: svn:eol-style
## -1 +0,0 ##
-native
\ No newline at end of property
Deleted: svn:executable
## -1 +0,0 ##
-*
\ No newline at end of property
Deleted: svn:keywords
## -1 +0,0 ##
-Date Revision Id HeadURL
\ No newline at end of property
Deleted: svn:mime-type
## -1 +0,0 ##
-text/plain
\ No newline at end of property
Index: branches/2.8.x/wb/admin/pages/settings.php
===================================================================
--- branches/2.8.x/wb/admin/pages/settings.php	(revision 1663)
+++ branches/2.8.x/wb/admin/pages/settings.php	(revision 1664)
@@ -23,17 +23,77 @@
 require_once(WB_PATH.'/framework/class.admin.php');
 $admin = new admin('Pages', 'pages_settings');
 // Include the WB functions file
-require_once(WB_PATH.'/framework/functions-utf8.php');
+//require_once(WB_PATH.'/framework/functions-utf8.php');
 
+/*-- Parent page list ------------------------------------------------------------------*/
+	function parent_list($parent)
+	{
+		global $admin, $database, $oTpl, $aCurrentPage, $field_set;
+		$sDisabled = ' disabled="disabled"';
+		$sSelected  = ' selected="selected"';
+
+		$sql = 'SELECT `page_id`, `level`, `parent`, `menu_title`, `page_title`, '
+		     .        '`language`, `admin_groups`, `admin_users`, `visibility`, '
+		     .        '`viewing_groups`, `viewing_users` '
+		     . 'FROM `'.TABLE_PREFIX.'pages` '
+			 . 'WHERE `parent`='.$parent.' '
+			 . 'ORDER BY `position` ASC';
+		$get_pages = $database->query($sql);
+
+		while($page = $get_pages->fetchRow(MYSQL_ASSOC))
+		{
+			if(!$admin->page_is_visible($page)) { continue; }
+			// if parent = 0 set flag_icon
+			$oTpl->set_var('FLAG_ROOT_ICON',' none ');
+			if( $page['parent'] == 0  && $field_set) {
+				$oTpl->set_var('FLAG_ROOT_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)
+			{
+			// Get user permisions
+				$can_modify = ($admin->ami_group_member($page['admin_groups']) ||
+				               $admin->is_group_match($admin->get_user_id(), $page['admin_users']));
+				// Title -'s prefix
+				$title_prefix = '';
+				for($i = 1; $i <= $page['level']; $i++) { $title_prefix .= ' - - &nbsp;'; }
+				$oTpl->set_var(array(
+							'ID' => $page['page_id'],
+							'TITLE' => ($title_prefix.$page['menu_title']),
+							'MENU-TITLE' => ($title_prefix.$page['menu_title']),
+							'PAGE-TITLE' => ($title_prefix.$page['page_title']),
+							'FLAG_ICON' => ' none ',
+							));
+				if($aCurrentPage['parent'] == $page['page_id']) {
+					$oTpl->set_var('SELECTED', $sSelected);
+				} elseif($aCurrentPage['page_id'] == $page['page_id']) {
+					$oTpl->set_var('SELECTED', $sDisabled.' class="disabled"');
+					$list_next_level=false;
+				} elseif($can_modify != true) {
+					$oTpl->set_var('SELECTED', $sDisabled.' class="disabled"');
+				} else {
+					$oTpl->set_var('SELECTED', '');
+				}
+				$oTpl->parse('parent_page_list', 'parent_page_list_block', true);
+			}
+			if ($list_next_level) {
+			  parent_list($page['page_id']);
+			}
+		}
+	} // end of function parent_list
+/* -------------------------------------------------------------------------------------*/
+	$sDisabled = ' disabled="disabled"';
+	$sSelected  = ' selected="selected"';
+	$sChecked   = ' checked="checked"';
+
 // Get page id
-if(!isset($_GET['page_id']) || !is_numeric($_GET['page_id']))
-{
-	header("Location: index.php");
-	exit(0);
-} else {
-	$page_id = $_GET['page_id'];
-}
-
+	$page_id = $_GET['page_id'] ? intval($_GET['page_id']) : 0;
+	if(!$page_id) {
+		header("Location: index.php");
+		exit(0);
+	}
 /*
 if( (!($page_id = $admin->checkIDKEY('page_id', 0, $_SERVER['REQUEST_METHOD']))) )
 {
@@ -41,588 +101,443 @@
 	exit();
 }
 */
-$sql = 'SELECT * FROM `'.TABLE_PREFIX.'pages` WHERE `page_id` = '.$page_id;
-$results = $database->query($sql);
-$results_array = $results->fetchRow();
-
-$old_admin_groups = explode(',', $results_array['admin_groups']);
-$old_admin_users = explode(',', $results_array['admin_users']);
-
-// Work-out if we should check for existing page_code
-$field_set = $database->field_exists(TABLE_PREFIX.'pages', 'page_code');
-
-$in_old_group = FALSE;
-foreach($admin->get_groups_id() as $cur_gid)
-{
-	if (in_array($cur_gid, $old_admin_groups))
-    {
-		$in_old_group = TRUE;
+/*-- get all details of current page ---------------------------------------------------*/
+	$sql = 'SELECT * FROM `'.TABLE_PREFIX.'pages` WHERE `page_id` = '.$page_id;
+	if( ($oPages = $database->query($sql)) ) {
+		$aCurrentPage = $oPages->fetchRow(MYSQL_ASSOC);
+		// Work-out if we should check for existing page_code
+		$field_set = isset($aCurrentPage['page_code']);
+		if( !$admin->ami_group_member($aCurrentPage['admin_groups']) &&
+			!$admin->is_group_match($admin->get_user_id(), $aCurrentPage['admin_users']) )
+		{
+			$admin->print_error($MESSAGE['PAGES_INSUFFICIENT_PERMISSIONS']);
+		}
+	}else {
+		$admin->print_header();
+		$admin->print_error($database->get_error());
 	}
-}
-if((!$in_old_group) && !is_numeric(array_search($admin->get_user_id(), $old_admin_users)))
-{
-	$admin->print_error($MESSAGE['PAGES']['INSUFFICIENT_PERMISSIONS']);
-}
-
-// Get page details
-/* $database = new database();  */
-$sql = 'SELECT * FROM `'.TABLE_PREFIX.'pages` WHERE `page_id`='.$page_id;
-$results = $database->query($sql);
-if($database->is_error()) {
-	$admin->print_header();
-	$admin->print_error($database->get_error());
-}
-if($results->numRows() == 0) {
-	$admin->print_header();
-	$admin->print_error($MESSAGE['PAGES']['NOT_FOUND']);
-}
-$results_array = $results->fetchRow();
-
+	if(!isset($aCurrentPage['page_code'])) {
+		$database->field_add(TABLE_PREFIX.'pages', 'page_code', 'INT NOT NULL DEFAULT \'0\'');
+	}
+	if($oPages->numRows() == 0) {
+		$admin->print_header();
+		$admin->print_error($MESSAGE['PAGES_NOT_FOUND']);
+	}
 // Get display name of person who last modified the page
-$user=$admin->get_user_details($results_array['modified_by']);
-
+	$user=$admin->get_user_details($aCurrentPage['modified_by']);
 // Convert the unix ts for modified_when to human a readable form
-if($results_array['modified_when'] != 0)
-{
-	$modified_ts = gmdate(TIME_FORMAT.', '.DATE_FORMAT, $results_array['modified_when']+TIMEZONE);
-} else {
-	$modified_ts = 'Unknown';
-}
-
+	if($aCurrentPage['modified_when'] != 0) {
+		$modified_ts = gmdate(TIME_FORMAT.', '.DATE_FORMAT, $aCurrentPage['modified_when']+TIMEZONE);
+	}else {
+		$modified_ts = 'Unknown';
+	}
 // Setup template object, parse vars to it, then parse it
 // Create new template object
-$template = new Template(dirname($admin->correct_theme_source('pages_settings.htt')));
-// $template->debug = true;
-$template->set_file('page', 'pages_settings.htt');
-$template->set_block('page', 'main_block', 'main');
-$template->set_var('FTAN', $admin->getFTAN());
+	$oTpl = new Template(dirname($admin->correct_theme_source('pages_settings.htt')), 'keep');
+	$oTpl->set_file('page', 'pages_settings.htt');
+	$oTpl->set_block('page', 'main_block', 'main');
+	$oTpl->set_var('FTAN', $admin->getFTAN());
+	$oTpl->set_var(array(
+			'PAGE_ID'              => $aCurrentPage['page_id'],
+			'PAGE_IDKEY'           => $admin->getIDKEY($aCurrentPage['page_id']),
+			'PAGE_TITLE'           => ($aCurrentPage['page_title']),
+			'MENU_TITLE'           => ($aCurrentPage['menu_title']),
+			'DESCRIPTION'          => ($aCurrentPage['description']),
+			'KEYWORDS'             => ($aCurrentPage['keywords']),
+			'MODIFIED_BY'          => $user['display_name'],
+			'MODIFIED_BY_USERNAME' => $user['username'],
+			'MODIFIED_WHEN'        => $modified_ts,
+			'ADMIN_URL'            => ADMIN_URL,
+			'WB_URL'               => WB_URL,
+			'THEME_URL'            => THEME_URL
+			));
+/*-- workout if we should show the "manage sections" link ------------------------------*/
+	$sql = 'SELECT COUNT(*) FROM `'.TABLE_PREFIX.'sections` '
+	     . 'WHERE `page_id`='.$page_id.' AND `module`=\'menu_link\'';
+	$sections_available = (intval($database->get_one($sql)) != 0);
+	if ($sections_available) {
+		$oTpl->set_var('DISPLAY_MANAGE_SECTIONS', 'display:none;');
+	} elseif(MANAGE_SECTIONS == 'enabled') {
+		$oTpl->set_var('TEXT_MANAGE_SECTIONS', $HEADING['MANAGE_SECTIONS']);
+	} else {
+		$oTpl->set_var('DISPLAY_MANAGE_SECTIONS', 'display:none;');
+	}
 
-$template->set_var(array(
-				'PAGE_ID' => $results_array['page_id'],
-				// 'PAGE_IDKEY' => $admin->getIDKEY($results_array['page_id']),
-				'PAGE_IDKEY' => $results_array['page_id'],
-				'PAGE_TITLE' => ($results_array['page_title']),
-				'MENU_TITLE' => ($results_array['menu_title']),
-				'DESCRIPTION' => ($results_array['description']),
-				'KEYWORDS' => ($results_array['keywords']),
-				'MODIFIED_BY' => $user['display_name'],
-				'MODIFIED_BY_USERNAME' => $user['username'],
-				'MODIFIED_WHEN' => $modified_ts,
-				'ADMIN_URL' => ADMIN_URL,
-				'WB_URL' => WB_URL,
-				'THEME_URL' => THEME_URL
-				)
-		);
+/*-- show visibility select box --------------------------------------------------------*/
+	$aVisibility = array();
+	$aVisibility['PUBLIC_SELECTED']     = ($aCurrentPage['visibility'] == 'public' ? $sSelected : '');
+	$aVisibility['PRIVATE_SELECTED']    = ($aCurrentPage['visibility'] == 'private' ? $sSelected : '');
+	$aVisibility['REGISTERED_SELECTED'] = ($aCurrentPage['visibility'] == 'registered' ? $sSelected : '');
+	$aVisibility['HIDDEN_SELECTED']     = ($aCurrentPage['visibility'] == 'hidden' ? $sSelected : '');
+	$aVisibility['NO_VIS_SELECTED']     = ($aCurrentPage['visibility'] == 'none' ? $sSelected : '');
+	$oTpl->set_var($aVisibility);
 
-// Work-out if we should show the "manage sections" link
-$sql = 'SELECT COUNT(*) FROM `'.TABLE_PREFIX.'sections` WHERE `page_id`='.$page_id.' AND `module`="menu_link"';
-$sections_available = (intval($database->get_one($sql)) != 0);
-if ($sections_available)
-{
-    $template->set_var('DISPLAY_MANAGE_SECTIONS', 'display:none;');
-} elseif(MANAGE_SECTIONS == 'enabled')
-{
-	$template->set_var('TEXT_MANAGE_SECTIONS', $HEADING['MANAGE_SECTIONS']);
-} else {
-	$template->set_var('DISPLAY_MANAGE_SECTIONS', 'display:none;');
-}
-
-// Visibility
-if($results_array['visibility'] == 'public') {
-	$template->set_var('PUBLIC_SELECTED', ' selected="selected"');
-} elseif($results_array['visibility'] == 'private') {
-	$template->set_var('PRIVATE_SELECTED', ' selected="selected"');
-} elseif($results_array['visibility'] == 'registered') {
-	$template->set_var('REGISTERED_SELECTED', ' selected="selected"');
-} elseif($results_array['visibility'] == 'hidden') {
-	$template->set_var('HIDDEN_SELECTED', ' selected="selected"');
-} elseif($results_array['visibility'] == 'none') {
-	$template->set_var('NO_VIS_SELECTED', ' selected="selected"');
-}
-// Group list 1 (admin_groups)
-	$admin_groups = explode(',', str_replace('_', '', $results_array['admin_groups']));
-
-	$sql = 'SELECT * FROM `'.TABLE_PREFIX.'groups`';
-    $get_groups = $database->query($sql);
-
-	$template->set_block('main_block', 'group_list_block', 'group_list');
-	// Insert admin group and current group first
-	$admin_group_name = $get_groups->fetchRow();
-	$template->set_var(array(
-									'ID' => 1,
-									'TOGGLE' => '',
-									'DISABLED' => ' disabled="disabled"',
-									'LINK_COLOR' => '000000',
-									'CURSOR' => 'default',
-									'NAME' => $admin_group_name['name'],
-									'CHECKED' => ' checked="checked"'
-									)
-							);
-	$template->parse('group_list', 'group_list_block', true);
-	while($group = $get_groups->fetchRow()) {
-		// check if the user is a member of this group
-		$flag_disabled = '';
-		$flag_checked =  '';
-		$flag_cursor =   'pointer';
-		$flag_color =    '';
-		if (in_array($group["group_id"], $admin->get_groups_id())) {
-			$flag_disabled = ''; //' disabled';
-			$flag_checked =  ''; //' checked';
-			$flag_cursor =   'default';
-			$flag_color =    '000000';
+/*-- admin group list block ------------------------------------------------------------*/
+	$aAdminGroups = explode(',', '1,'.$aCurrentPage['admin_groups']);
+	$sAdminGroups = implode(',', array_unique($aAdminGroups));
+	$sql = 'SELECT `group_id` `ID`, `name` `NAME`, `system_permissions` `permissions` '
+	     . 'FROM `'.TABLE_PREFIX.'groups` '
+	     . 'ORDER BY (`ID` NOT IN('.$sAdminGroups.')), `NAME`';
+	if( ($oGroups = $database->query($sql)))
+	{
+		$oTpl->set_block('main_block', 'admin_group_list_block', 'admin_group_list');
+		while( $aGroup = $oGroups->fetchRow(MYSQL_ASSOC))
+		{
+			if($aGroup['ID'] == 1) {
+			// never uncheck admin group
+				$aGroup['CHECKED'] = $sChecked;
+				$aGroup['DISABLED'] = $sDisabled;
+			}else {
+			// skip groups without system_permissions
+				if(!$admin->is_group_match('pages_modify', $aGroup['permissions'])) { continue; }
+			// check already selected groups
+				$bChecked = $admin->is_group_match($aGroup['ID'], $aCurrentPage['admin_groups']);
+			// disable selected groups where current user is not member of
+				$bDisabled = !$admin->ami_group_member($aGroup['ID']);
+				$aGroup['CHECKED']  = $bChecked ? $sChecked : '';
+				$aGroup['DISABLED'] = ($bChecked && $bDisabled) ? $sDisabled : '';
+			}
+			unset($aGroup['permissions']);
+			$oTpl->set_var($aGroup);
+			$oTpl->parse('admin_group_list', 'admin_group_list_block', true);
 		}
+	}
 
-		// Check if the group is allowed to edit pages
-		$system_permissions = explode(',', $group['system_permissions']);
-		if(is_numeric(array_search('pages_modify', $system_permissions))) {
-			$template->set_var(array(
-											'ID' => $group['group_id'],
-											'TOGGLE' => $group['group_id'],
-											'DISABLED' => $flag_disabled,
-											'LINK_COLOR' => $flag_color,
-											'CURSOR' => $flag_cursor,
-											'NAME' => $group['name'],
-											'CHECKED' => $flag_checked
-											)
-									);
-			if(is_numeric(array_search($group['group_id'], $admin_groups))) {
-				$template->set_var('CHECKED', ' checked="checked"');
-			} else {
-				if (!$flag_checked) $template->set_var('CHECKED', '');
+/*-- viewer group list block -----------------------------------------------------------*/
+	$aViewingGroups = explode(',', '1,'.$aCurrentPage['viewing_groups']);
+	$sViewingGroups = implode(',', array_unique($aViewingGroups));
+	$oTpl->set_block('main_block', 'viewer_group_list_block', 'viewer_group_list');
+	$sql = 'SELECT `group_id` `ID`, `name` `NAME` '
+		 . 'FROM `'.TABLE_PREFIX.'groups` '
+	     . 'ORDER BY (`ID` NOT IN('.$sViewingGroups.')), `NAME`';
+	if(($oGroups = $database->query($sql))) {
+		while($aGroup = $oGroups->fetchRow(MYSQL_ASSOC)) {
+			if($aGroup['ID'] == 1) {
+			// never uncheck admin group
+				$aGroup['CHECKED'] = $sChecked;
+				$aGroup['DISABLED'] = $sDisabled;
+			}else {
+			// check already selected groups
+				$bChecked = $admin->is_group_match($aGroup['ID'], $aCurrentPage['viewing_groups']);
+			// disable selected groups where current user is not member of
+				$bDisabled = !$admin->ami_group_member($aGroup['ID']);
+				$aGroup['CHECKED']  = $bChecked ? $sChecked : '';
+				$aGroup['DISABLED'] = ($bChecked && $bDisabled) ? $sDisabled : '';
 			}
-			$template->parse('group_list', 'group_list_block', true);
+			$oTpl->set_var($aGroup);
+			$oTpl->parse('viewer_group_list', 'viewer_group_list_block', true);
 		}
 	}
 
-// Group list 2 (viewing_groups)
-	$viewing_groups = explode(',', str_replace('_', '', $results_array['viewing_groups']));
+/*-- admin user list block -------------------------------------------------------------*/
+	$aAdminUsers = ($aCurrentPage['admin_users'] == ''
+	                ? array()
+	                : explode(',', $aCurrentPage['admin_users']));
+	$aAdminUsers = explode(',', $aCurrentPage['admin_users']);
+	$oTpl->set_block('main_block', 'admin_user_list_block', 'admin_user_list');
+	$sAllowedAdminUsers = trim(implode(',',$aAdminUsers));
+	$sAllowedAdminUsers = $sAllowedAdminUsers ? $sAllowedAdminUsers : '-1';
+	$sql = 'SELECT `user_id`, `display_name` '
+		 . 'FROM `'.TABLE_PREFIX.'users` '
+	     . 'WHERE `active`=1 '
+	     . 'ORDER BY (`user_id` NOT IN('.$sAllowedAdminUsers.')), `display_name`';
+	if( ($oUsers = $database->query($sql)) ) {
+		while($aUser = $oUsers->fetchRow(MYSQL_ASSOC)) {
+			if($aUser['user_id'] == 1) { continue; }
+			$oTpl->set_var(array(
+				'ID'        => $aUser['user_id'],
+				'NAME'      => $aUser['display_name'],
+			    'SELECTED'  => (in_array($aUser['user_id'], $aAdminUsers) ? $sSelected : ''),
+			));
+			$oTpl->parse('admin_user_list', 'admin_user_list_block', true);
+		}
+	}
 
-    $sql = 'SELECT * FROM `'.TABLE_PREFIX.'groups`';
-    $get_groups = $database->query($sql);
-
-	$template->set_block('main_block', 'group_list_block2', 'group_list2');
-	// Insert admin group and current group first
-	$admin_group_name = $get_groups->fetchRow();
-	$template->set_var(array(
-									'ID' => 1,
-									'TOGGLE' => '',
-									'DISABLED' => ' disabled="disabled"',
-									'LINK_COLOR' => '000000',
-									'CURSOR' => 'default',
-									'NAME' => $admin_group_name['name'],
-									'CHECKED' => ' checked="checked"'
-									)
-							);
-	$template->parse('group_list2', 'group_list_block2', true);
-
-	while($group = $get_groups->fetchRow())
-    {
-		// check if the user is a member of this group
-		$flag_disabled = '';
-		$flag_checked =  '';
-		$flag_cursor =   'pointer';
-		$flag_color =    '';
-		if (in_array($group["group_id"], $admin->get_groups_id()))
-        {
-			$flag_disabled = ''; //' disabled';
-			$flag_checked =  ''; //' checked';
-			$flag_cursor =   'default';
-			$flag_color =    '000000';
+/*-- viewer users list block -----------------------------------------------------------*/
+	$aViewingUsers = ($aCurrentPage['viewing_users'] == ''
+	                  ? array()
+	                  : explode(',', $aCurrentPage['viewing_users']));
+	$aViewingUsers = explode(',', $aCurrentPage['viewing_users']);
+	$oTpl->set_block('main_block', 'viewer_user_list_block', 'viewer_user_list');
+	$sAllowedViewingUsers = trim(implode(',',$aViewingUsers));
+	$sAllowedViewingUsers = $sAllowedViewingUsers ? $sAllowedViewingUsers : '-1';
+	$sql = 'SELECT `user_id`, `display_name` '
+		 . 'FROM `'.TABLE_PREFIX.'users` '
+	     . 'WHERE `active`=1 '
+	     . 'ORDER BY (`user_id` NOT IN('.$sAllowedViewingUsers.')), `display_name`';
+	if( ($oUsers = $database->query($sql)) ) {
+		while($aUser = $oUsers->fetchRow(MYSQL_ASSOC)) {
+			if($aUser['user_id'] == 1) { continue; }
+			$oTpl->set_var(array(
+				'ID'        => $aUser['user_id'],
+				'NAME'      => $aUser['display_name'],
+			    'SELECTED'  => (in_array($aUser['user_id'], $aViewingUsers) ? $sSelected : ''),
+			));
+			$oTpl->parse('viewer_user_list', 'viewer_user_list_block', true);
 		}
+	}
 
-		$template->set_var(array(
-										'ID' => $group['group_id'],
-										'TOGGLE' => $group['group_id'],
-										'DISABLED' => $flag_disabled,
-										'LINK_COLOR' => $flag_color,
-										'CURSOR' => $flag_cursor,
-										'NAME' => $group['name'],
-										'CHECKED' => $flag_checked
-										)
-								);
-		if(is_numeric(array_search($group['group_id'], $viewing_groups)))
-        {
-			$template->set_var('CHECKED', 'checked="checked"');
-		} else {
-			if (!$flag_checked) {$template->set_var('CHECKED', '');}
+/*-- size user lists -------------------------------------------------------------------*/
+	$aSkaleSizeOfList = array(0 => 5, 12 => 10, 25 => 20, 50 => 30, 75 => 40, 100 => 50);
+	$iListSize = 6;
+	if($oUsers) {
+		$iNumberOfUsers = $oUsers->numRows();
+		foreach($aSkaleSizeOfList as $key => $val){
+			if($iNumberOfUsers > $key) {
+				$iListSize = $val;
+			}else { break; }
 		}
+	}
+	$oTpl->set_var('USER_LIST_SIZE', $iListSize);
 
-		$template->parse('group_list2', 'group_list_block2', true);
-
+/*-- show private viewers block --------------------------------------------------------*/
+	if($aCurrentPage['visibility'] == 'private' OR $aCurrentPage['visibility'] == 'registered')
+	{
+		$oTpl->set_var('DISPLAY_VIEWERS', '');
+	} else {
+		$oTpl->set_var('DISPLAY_VIEWERS', 'display:none;');
 	}
-
-// Show private viewers
-if($results_array['visibility'] == 'private' OR $results_array['visibility'] == 'registered')
-{
-	$template->set_var('DISPLAY_VIEWERS', '');
-} else {
-	$template->set_var('DISPLAY_VIEWERS', 'display:none;');
-}
-
-//-- insert page_code 20090904-->
-$template->set_var('DISPLAY_CODE_PAGE_LIST', ' id="multi_lingual" style="display:none;"');
-
+/*-- start multilanguage page_code 20090904 --------------------------------------------*/
 // Work-out if page languages feature is enabled
-if((defined('PAGE_LANGUAGES') && PAGE_LANGUAGES) && $field_set && file_exists(WB_PATH.'/modules/mod_multilingual/update_keys.php') )
-{
-    // workout field is set but module missing
-    $TEXT['PAGE_CODE'] = empty($TEXT['PAGE_CODE']) ? 'Pagecode' : $TEXT['PAGE_CODE'];
-	$template->set_var( array(
-            'DISPLAY_CODE_PAGE_LIST' => ' id="multi_lingual"',
-            'TEXT_PAGE_CODE' => '<a href="'.WB_URL.'/modules/mod_multilingual/update_keys.php?page_id='.$page_id.'">'.$TEXT['PAGE_CODE'].'</a>'
-        )
-    );
+	$oTpl->set_block('main_block', 'show_page_code_block',  'show_page_code');
+	if( (defined('PAGE_LANGUAGES') && PAGE_LANGUAGES) &&
+		 isset($aCurrentPage['page_code']) &&
+		 file_exists(WB_PATH.'/modules/mod_multilingual/update_keys.php') )
+	{
+		// workout field is set but module missing
+		$TEXT['PAGE_CODE'] = empty($TEXT['PAGE_CODE']) ? 'Pagecode' : $TEXT['PAGE_CODE'];
+		$oTpl->set_var('TEXT_PAGE_CODE',
+						   '<a href="'.WB_URL.'/modules/mod_multilingual/update_keys.php?page_id='.
+						   $page_id.'">'.$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;
 
-	// Page_code list
-   /* 	$database = new database();  */
-	function page_code_list($parent)
-    {
-		global $admin, $database, $template, $results_array, $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);
 
-        $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; }
 
-		while($page = $get_pages->fetchRow())
-        {
-			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)');
+				}
 
-			$template->set_var('FLAG_CODE_ICON',' none ');
-			if( $page['parent'] == 0 )
-            {
-				$template->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)
-            {
-				// Get user perms
-				$admin_groups = explode(',', str_replace('_', '', $page['admin_groups']));
-				$admin_users = explode(',', str_replace('_', '', $page['admin_users']));
-
-				$in_group = FALSE;
-				foreach($admin->get_groups_id() as $cur_gid)
-                {
-					if (in_array($cur_gid, $admin_groups))
+				// 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'])
 					{
-						$in_group = TRUE;
+						$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(($in_group) OR is_numeric(array_search($admin->get_user_id(), $admin_users)))
-                {
-					$can_modify = true;
-				} else {
-					$can_modify = false;
-				}
-
-				$title_prefix = '';
-				for($i = 1; $i <= $page['level']; $i++) { $title_prefix .= ' - - &nbsp;'; }
-                // $space = str_repeat('&nbsp;', 3);  $space.'&lt;'..'&gt;'
-				$template->set_var(array(
-										'VALUE' => $page['page_code'],
-                                        'PAGE_VALUE' => $title_prefix.$page['menu_title'],
-										'PAGE_CODE' => $title_prefix.$page['page_id']
-										)
-								);
-				if($results_array['page_code'] == $page['page_code'])
-                {
-					$template->set_var('SELECTED', ' selected="selected"');
-				} elseif($results_array['page_code'] == $page['page_code'])
-                {
-					$template->set_var('SELECTED', ' disabled="disabled" class="disabled"');
-					$list_next_level=false;
-				} elseif($can_modify != true)
-                {
-					$template->set_var('SELECTED', ' disabled="disabled" class="disabled"');
-				} else {
-					$template->set_var('SELECTED', '');
-				}
-				$template->parse('page_code_list', 'page_code_list_block', true);
+				if ($list_next_level)
+					page_code_list($page['page_id']);
 			}
-			if ($list_next_level)
-				page_code_list($page['page_id']);
 		}
+	/*-- end recursive function page_code list -----------------------------------------*/
+		// Insert code_page values from page to modify
+		$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' => $TEXT['NONE'],
+					'PAGE_VALUE' => '',
+					'SELECTED' => $selected
+				)
+			);
+			$oTpl->parse('page_code_list', 'page_code_list_block', true);
+		}
+		// get pagecode form this page_id
+		page_code_list(0);
+		$oTpl->parse('show_page_code', 'show_page_code_block', true);
+	}else {
+		$oTpl->set_block('show_page_code', '');
 	}
+/*-- end multilanguage page_code 20090904 ----------------------------------------------*/
 
-	// Insert code_page values from page to modify
-	$template->set_block('main_block', 'page_code_list_block', 'page_code_list');
-	if($admin->get_permission('pages_add_l0') == true OR $results_array['level'] == 0) {
-		if($results_array['parent'] == 0) { $selected = ' selected'; } else { $selected = ''; }
-		$template->set_var(array(
-									'VALUE' => '',
-									'PAGE_CODE' => $TEXT['NONE'],
-                                    'PAGE_VALUE' => '',
-									'SELECTED' => $selected
-								)
-							);
-		$template->parse('page_code_list', 'page_code_list_block', true);
+/*-- show list of parent pages ---------------------------------------------------------*/
+	$oTpl->set_block('main_block', 'parent_page_list_block', 'parent_page_list');
+	if($admin->get_permission('pages_add_l0') == true OR $aCurrentPage['level'] == 0) {
+		$oTpl->set_var(array(
+					'ID' => '0',
+					'TITLE' => $TEXT['NONE'],
+					'SELECTED' => ($aCurrentPage['parent'] == 0 ? $sSelected : ''),
+					) );
+		$oTpl->parse('parent_page_list', 'parent_page_list_block', true);
 	}
-	// get pagecode form this page_id
-   	page_code_list(0);
-}
-//-- page code -->
+	parent_list(0);
+	$oTpl->set_var('DISPLAY_MODIFIED', ($modified_ts == 'Unknown' ? 'hide' : ''));
 
-// Parent page list
-/* $database = new database();  */
-function parent_list($parent)
-{
-	global $admin, $database, $template, $results_array,$field_set;
-
-    $sql = 'SELECT * FROM `'.TABLE_PREFIX.'pages` WHERE `parent` = '.$parent.' ORDER BY `position` ASC';
-    $get_pages = $database->query($sql);
-
-	while($page = $get_pages->fetchRow())
-    {
-		if($admin->page_is_visible($page)==false)
-        {
-          continue;
-        }
-
-		// if parent = 0 set flag_icon
-		$template->set_var('FLAG_ROOT_ICON',' none ');
-		if( $page['parent'] == 0  && $field_set)
-        {
-			$template->set_var('FLAG_ROOT_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)
-        {
-			// Get user perms
-			$admin_groups = explode(',', str_replace('_', '', $page['admin_groups']));
-			$admin_users = explode(',', str_replace('_', '', $page['admin_users']));
-			$in_group = FALSE;
-			foreach($admin->get_groups_id() as $cur_gid)
-            {
-				if (in_array($cur_gid, $admin_groups))
-                {
-					$in_group = TRUE;
+/*-- show list of templates ------------------------------------------------------------*/
+	$oTpl->set_block('main_block', 'template_list_block', 'template_list');
+	$sql = 'SELECT * FROM `'.TABLE_PREFIX.'addons` '
+	     . 'WHERE `type`=\'template\' AND `function`=\'template\' '
+	     . 'ORDER BY `name`';
+	if(($res_templates = $database->query($sql))) {
+		while($rec_template = $res_templates->fetchRow(MYSQL_ASSOC)) {
+			// Check if the user has perms to use this template
+			if($rec_template['directory'] == $aCurrentPage['template'] OR
+			   $admin->get_permission($rec_template['directory'], 'template'))
+			{
+				$oTpl->set_var('VALUE', $rec_template['directory']);
+				$oTpl->set_var('NAME', $rec_template['name']);
+				if($rec_template['directory'] == $aCurrentPage['template']) {
+					$oTpl->set_var('SELECTED', $sSelected);
+				} else {
+					$oTpl->set_var('SELECTED', '');
 				}
+				$oTpl->parse('template_list', 'template_list_block', true);
 			}
-			if(($in_group) OR is_numeric(array_search($admin->get_user_id(), $admin_users)))
-            {
-				$can_modify = true;
-			} else {
-				$can_modify = false;
-			}
-			// Title -'s prefix
-			$title_prefix = '';
-			for($i = 1; $i <= $page['level']; $i++) { $title_prefix .= ' - - &nbsp;'; }
-			$template->set_var(array(
-								'ID' => $page['page_id'],
-								'TITLE' => ($title_prefix.$page['menu_title']),
-								'MENU-TITLE' => ($title_prefix.$page['menu_title']),
-								'PAGE-TITLE' => ($title_prefix.$page['page_title']),
-								'FLAG_ICON' => ' none ',
-								));
-
-			if($results_array['parent'] == $page['page_id'])
-            {
-				$template->set_var('SELECTED', ' selected="selected"');
-			} elseif($results_array['page_id'] == $page['page_id'])
-            {
-				$template->set_var('SELECTED', ' disabled="disabled" class="disabled"');
-				$list_next_level=false;
-			} elseif($can_modify != true)
-            {
-				$template->set_var('SELECTED', ' disabled="disabled" class="disabled"');
-			} else {
-				$template->set_var('SELECTED', '');
-			}
-			$template->parse('page_list2', 'page_list_block2', true);
 		}
-		if ($list_next_level)
-        {
-          parent_list($page['page_id']);
-        }
-
 	}
-}
 
-$template->set_block('main_block', 'page_list_block2', 'page_list2');
-if($admin->get_permission('pages_add_l0') == true OR $results_array['level'] == 0) {
-	if($results_array['parent'] == 0)
-    {
-		$selected = ' selected="selected"';
-	} else { 
-		$selected = '';
+/*-- show menu select box --------------------------------------------------------------*/
+	$oTpl->set_block('main_block', 'show_menu_list_block', 'show_menu_list');
+	if(MULTIPLE_MENUS)
+	{
+	/*-- get menusettings from template info file --------------------------------------*/
+		function getTemplateInfo($sTpl = '') {
+			if(!$sTpl) { $sTpl = DEFAULT_TEMPLATE; }
+			$sTplFile = WB_PATH.'/templates/'.$sTpl.'/info.php';
+			if(is_readable($sTplFile)) { require_once($sTplFile); }
+			$menu = isset($menu) ? $menu : array();
+			return $menu;
+		}
+		$aMenu = getTemplateInfo($aCurrentPage['template']);
+		// set menu[1] as default if there's no entry in info.php
+		$aMenu[1] = (!isset($aMenu[1]) OR ($aMenu[1] == '')) ? $TEXT['MAIN'] : $aMenu[1];
+		$oTpl->set_block('show_menu_list_block', 'menu_list_block', 'menu_list');
+		foreach($aMenu as $iIndex => $sMenuName) {
+			$aVars = array();
+			$aVars['NAME']  = $sMenuName;
+			$aVars['VALUE'] = $iIndex;
+			$aVars['SELECTED'] = ($aCurrentPage['menu'] == $iIndex) ? $sSelected : '';
+			$oTpl->set_var($aVars);
+			$oTpl->parse('menu_list', 'menu_list_block', true);
+		}
+		$oTpl->parse('show_menu_list', 'show_menu_list_block', true);
+	}else {
+		$oTpl->set_block('show_menu_list', '');
 	}
-	$template->set_var(array(
-						'ID' => '0',
-						'TITLE' => $TEXT['NONE'],
-						'SELECTED' => $selected
-						) );
-	$template->parse('page_list2', 'page_list_block2', true);
-}
-parent_list(0);
 
-if($modified_ts == 'Unknown')
-{
-	$template->set_var('DISPLAY_MODIFIED', 'hide');
-} else {
-	$template->set_var('DISPLAY_MODIFIED', '');
-}
-
-// Templates list
-$template->set_block('main_block', 'template_list_block', 'template_list');
-
-$sql = 'SELECT * FROM `'.TABLE_PREFIX.'addons` WHERE `type` = "template" AND `function` = "template" order by `name`';
-if( ($res_templates = $database->query($sql)) )
-{
-	while($rec_template = $res_templates->fetchRow())
-    {
-		// Check if the user has perms to use this template
-		if($rec_template['directory'] == $results_array['template'] OR $admin->get_permission($rec_template['directory'], 'template') == true)
-        {
-			$template->set_var('VALUE', $rec_template['directory']);
-			$template->set_var('NAME', $rec_template['name']);
-			if($rec_template['directory'] == $results_array['template'])
-            {
-				$template->set_var('SELECTED', ' selected="selected"');
-			} else {
-				$template->set_var('SELECTED', '');
-			}
-			$template->parse('template_list', 'template_list_block', true);
+/*-- show language select box ----------------------------------------------------------*/
+	$sql = 'SELECT `directory`, `name` FROM `'.TABLE_PREFIX.'addons` '
+		 . 'WHERE `type`=\'language\' ';
+	if( !defined('PAGE_LANGUAGES') || !PAGE_LANGUAGES) {
+	// display only default and current language if site is single language only
+		$sql .= 'AND `directory`=\''.DEFAULT_LANGUAGE.'\' ';
+		if($aCurrentPage['language'] != DEFAULT_LANGUAGE) {
+			$sql .= 'AND `directory`=\''.$aCurrentPage['language'].'\' ';
 		}
 	}
-}
-
-// Menu list
-if(MULTIPLE_MENUS == false)
-{
-	$template->set_var('DISPLAY_MENU_LIST', 'display:none;');
-}
-// Include template info file (if it exists)
-if($results_array['template'] != '')
-{
-	$template_location = WB_PATH.'/templates/'.$results_array['template'].'/info.php';
-} else {
-	$template_location = WB_PATH.'/templates/'.DEFAULT_TEMPLATE.'/info.php';
-}
-if(file_exists($template_location))
-{
-	require($template_location);
-}
-// Check if $menu is set
-if(!isset($menu[1]) OR $menu[1] == '')
-{
-	// Make our own menu list
-	$menu[1] = $TEXT['MAIN'];
-}
-// Add menu options to the list
-$template->set_block('main_block', 'menu_list_block', 'menu_list');
-foreach($menu AS $number => $name)
-{
-	$template->set_var('NAME', $name);
-	$template->set_var('VALUE', $number);
-	if($results_array['menu'] == $number)
-    {
-		$template->set_var('SELECTED', ' selected="selected"');
-	} else {
-		$template->set_var('SELECTED', '');
+	$sql .= 'ORDER BY `name`';
+	if( ($oLanguages = $database->query($sql)) )
+	{
+		$aAvailLanguages = array();
+		while($aLanguage = $oLanguages->fetchRow(MYSQL_ASSOC)) {
+			$aAvailLanguages[$aLanguage['directory']] = $aLanguage['name'];
+		}
+		natsort($aAvailLanguages);
+		$oTpl->set_block('main_block', 'language_list_block', 'language_list');
+		foreach($aAvailLanguages as $key => $val) {
+			$oTpl->set_var(array(
+				'VALUE' => $key,
+				'NAME'  => $val,
+				'FLAG_LANG_ICONS' => 'url('.THEME_URL.'/images/flags/'.strtolower($key).'.png)',
+				'SELECTED' => ($aCurrentPage['language'] == $key ? $sSelected : ''),
+			));
+			$oTpl->parse('language_list', 'language_list_block', true);
+		}
 	}
-	$template->parse('menu_list', 'menu_list_block', true);
-}
 
-// Insert language values
-$template->set_block('main_block', 'language_list_block', 'language_list');
+/*-- show search activated box ---------------------------------------------------------*/
+	$oTpl->set_var('SEARCHING_SELECTED_ON',  ($aCurrentPage['searching'] == 0) ? '' : $sSelected);
+	$oTpl->set_var('SEARCHING_SELECTED_OFF', ($aCurrentPage['searching'] == 0) ? $sSelected : '');
 
-$sql = 'SELECT * FROM `'.TABLE_PREFIX.'addons` WHERE `type` = "language" ORDER BY `name`';
-if( ($res_languages = $database->query($sql)) )
-{
-	while($rec_language = $res_languages->fetchRow())
-    {
-		$l_codes[$rec_language['name']] = $rec_language['directory'];
-		$l_names[$rec_language['name']] = entities_to_7bit($rec_language['name']); // sorting-problem workaround
-	}
-	asort($l_names);
+/*-- show target select box ------------------------------------------------------------*/
+	$oTpl->set_var('TOP_SELECTED',   ($aCurrentPage['target'] == '_top'   ? $sSelected : ''));
+	$oTpl->set_var('SELF_SELECTED',  ($aCurrentPage['target'] == '_self'  ? $sSelected : ''));
+	$oTpl->set_var('BLANK_SELECTED', ($aCurrentPage['target'] == '_blank' ? $sSelected : ''));
 
-	foreach($l_names as $l_name=>$v)
-    {
-        $langIcons = (empty($l_codes[$l_name])) ? 'none' : strtolower($l_codes[$l_name]);
-		// Insert code and name
-		$template->set_var(array(
-								'VALUE' => $l_codes[$l_name],
-								'NAME' => $l_name,
-								'FLAG_LANG_ICONS' => 'url('.THEME_URL.'/images/flags/'.$langIcons.'.png)',
-								));
-		// Check if it is selected
-		if($results_array['language'] == $l_codes[$l_name])
-        {
-			$template->set_var('SELECTED', ' selected="selected"');
-		} else {
-			$template->set_var('SELECTED', '');
-		}
-		$template->parse('language_list', 'language_list_block', true);
-	}
-}
+/*-- insert all needed vars from language files ----------------------------------------*/
+	$oTpl->set_var(array(
+		'HEADING_MODIFY_PAGE_SETTINGS' => $HEADING['MODIFY_PAGE_SETTINGS'],
+		'TEXT_CURRENT_PAGE'            => $TEXT['CURRENT_PAGE'],
+		'TEXT_MODIFY'                  => $TEXT['MODIFY'],
+		'TEXT_MODIFY_PAGE'             => $HEADING['MODIFY_PAGE'],
+		'LAST_MODIFIED'                => $MESSAGE['PAGES_LAST_MODIFIED'],
+		'TEXT_PAGE_TITLE'              => $TEXT['PAGE_TITLE'],
+		'TEXT_MENU_TITLE'              => $TEXT['MENU_TITLE'],
+		'TEXT_TYPE'                    => $TEXT['TYPE'],
+		'TEXT_MENU'                    => $TEXT['MENU'],
+		'TEXT_PARENT'                  => $TEXT['PARENT'],
+		'TEXT_VISIBILITY'              => $TEXT['VISIBILITY'],
+		'TEXT_PUBLIC'                  => $TEXT['PUBLIC'],
+		'TEXT_PRIVATE'                 => $TEXT['PRIVATE'],
+		'TEXT_REGISTERED'              => $TEXT['REGISTERED'],
+		'TEXT_NONE'                    => $TEXT['NONE'],
+		'TEXT_HIDDEN'                  => $TEXT['HIDDEN'],
+		'TEXT_TEMPLATE'                => $TEXT['TEMPLATE'],
+		'TEXT_TARGET'                  => $TEXT['TARGET'],
+		'TEXT_SYSTEM_DEFAULT'          => $TEXT['SYSTEM_DEFAULT'],
+		'TEXT_PLEASE_SELECT'           => $TEXT['PLEASE_SELECT'],
+		'TEXT_NEW_WINDOW'              => $TEXT['NEW_WINDOW'],
+		'TEXT_SAME_WINDOW'             => $TEXT['SAME_WINDOW'],
+		'TEXT_TOP_FRAME'               => $TEXT['TOP_FRAME'],
+		'TEXT_ADMINISTRATORS'          => $TEXT['ADMINISTRATORS'],
+		'TEXT_ALLOWED_VIEWERS'         => $TEXT['ALLOWED_VIEWERS'],
+		'TEXT_USER'                    => $TEXT['USER'],
+		'TEXT_GROUP'                   => $TEXT['GROUP'],
+		'TEXT_DESCRIPTION'             => $TEXT['DESCRIPTION'],
+		'TEXT_KEYWORDS'                => $TEXT['KEYWORDS'],
+		'TEXT_SEARCHING'               => $TEXT['SEARCHING'],
+		'TEXT_LANGUAGE'                => $TEXT['LANGUAGE'],
+		'TEXT_ENABLED'                 => $TEXT['ENABLED'],
+		'TEXT_DISABLED'                => $TEXT['DISABLED'],
+		'TEXT_SAVE'                    => $TEXT['SAVE'],
+		'TEXT_RESET'                   => $TEXT['RESET'],
+		'LAST_MODIFIED'                => $MESSAGE['PAGES_LAST_MODIFIED'],
+		'HEADING_MODIFY_PAGE'          => $HEADING['MODIFY_PAGE'],
+		'TEXT_NO_SELECTION'            => $TEXT['NO_SELECTION'],
+	) );
 
-// Select disabled if searching is disabled
-if($results_array['searching'] == 0)
-{
-	$template->set_var('SEARCHING_DISABLED', ' selected="selected"');
-}
-// Select what the page target is
-switch ($results_array['target'])
-{
-	case '_top':
-		$template->set_var('TOP_SELECTED', ' selected="selected"');
-		break;
-	case '_self':
-		$template->set_var('SELF_SELECTED', ' selected="selected"');
-		break;
-	case '_blank':
-		$template->set_var('BLANK_SELECTED', ' selected="selected"');
-		break;
-}
+	$oTpl->parse('main', 'main_block', false);
+	$oTpl->pparse('output', 'page');
 
-// Insert language text
-$template->set_var(array(
-				'HEADING_MODIFY_PAGE_SETTINGS' => $HEADING['MODIFY_PAGE_SETTINGS'],
-				'TEXT_CURRENT_PAGE' => $TEXT['CURRENT_PAGE'],
-				'TEXT_MODIFY' => $TEXT['MODIFY'],
-				'TEXT_MODIFY_PAGE' => $HEADING['MODIFY_PAGE'],
-				'LAST_MODIFIED' => $MESSAGE['PAGES']['LAST_MODIFIED'],
-				'TEXT_PAGE_TITLE' => $TEXT['PAGE_TITLE'],
-				'TEXT_MENU_TITLE' => $TEXT['MENU_TITLE'],
-				'TEXT_TYPE' => $TEXT['TYPE'],
-				'TEXT_MENU' => $TEXT['MENU'],
-				'TEXT_PARENT' => $TEXT['PARENT'],
-				'TEXT_VISIBILITY' => $TEXT['VISIBILITY'],
-				'TEXT_PUBLIC' => $TEXT['PUBLIC'],
-				'TEXT_PRIVATE' => $TEXT['PRIVATE'],
-				'TEXT_REGISTERED' => $TEXT['REGISTERED'],
-				'TEXT_NONE' => $TEXT['NONE'],
-				'TEXT_HIDDEN' => $TEXT['HIDDEN'],
-				'TEXT_TEMPLATE' => $TEXT['TEMPLATE'],
-				'TEXT_TARGET' => $TEXT['TARGET'],
-				'TEXT_SYSTEM_DEFAULT' => $TEXT['SYSTEM_DEFAULT'],
-				'TEXT_PLEASE_SELECT' => $TEXT['PLEASE_SELECT'],
-				'TEXT_NEW_WINDOW' => $TEXT['NEW_WINDOW'],
-				'TEXT_SAME_WINDOW' => $TEXT['SAME_WINDOW'],
-				'TEXT_TOP_FRAME' => $TEXT['TOP_FRAME'],
-				'TEXT_ADMINISTRATORS' => $TEXT['ADMINISTRATORS'],
-				'TEXT_ALLOWED_VIEWERS' => $TEXT['ALLOWED_VIEWERS'],
-				'TEXT_DESCRIPTION' => $TEXT['DESCRIPTION'],
-				'TEXT_KEYWORDS' => $TEXT['KEYWORDS'],
-				'TEXT_SEARCHING' => $TEXT['SEARCHING'],
-				'TEXT_LANGUAGE' => $TEXT['LANGUAGE'],
-				'TEXT_ENABLED' => $TEXT['ENABLED'],
-				'TEXT_DISABLED' => $TEXT['DISABLED'],
-				'TEXT_SAVE' => $TEXT['SAVE'],
-				'TEXT_RESET' => $TEXT['RESET'],
-				'LAST_MODIFIED' => $MESSAGE['PAGES']['LAST_MODIFIED'],
-				'HEADING_MODIFY_PAGE' => $HEADING['MODIFY_PAGE']
-			) );
-
-$template->parse('main', 'main_block', false);
-$template->pparse('output', 'page');
-
 // Print admin footer
-$admin->print_footer();
+	$admin->print_footer();
 
 ?>
\ No newline at end of file
Index: branches/2.8.x/wb/admin/pages/settings_save.php
===================================================================
--- branches/2.8.x/wb/admin/pages/settings_save.php	(nonexistent)
+++ branches/2.8.x/wb/admin/pages/settings_save.php	(revision 1664)
@@ -0,0 +1,325 @@
+<?php
+/**
+ *
+ * @category        admin
+ * @package         pages
+ * @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$
+ *
+ */
+/* */
+
+// Create new admin object and print admin header
+require('../../config.php');
+require_once(WB_PATH.'/framework/class.admin.php');
+
+// suppress to print the header, so no new FTAN will be set
+$admin = new admin('Pages', 'pages_settings',false);
+
+// Get page id
+if(!isset($_POST['page_id']) || preg_match('/[^0-9a-f]/i',$_POST['page_id']))
+{
+	header("Location: index.php");
+	exit(0);
+} else {
+//	$page_id = $admin->checkIDKEY('page_id');
+//	$page_id = (int)$_POST['page_id'];
+	if((!($page_id = $admin->checkIDKEY('page_id')))) {
+		$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS'], ADMIN_URL.'/pages/index.php');
+	}
+}
+
+/*
+if( (!($page_id = $admin->checkIDKEY('page_id', 0, $_SERVER['REQUEST_METHOD']))) )
+{
+	$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS']);
+}
+*/
+$pagetree_url = ADMIN_URL.'/pages/index.php';
+$target_url = ADMIN_URL.'/pages/settings.php?page_id='.$page_id;
+
+if (!$admin->checkFTAN())
+{
+	$admin->print_header();
+	$admin->print_error($MESSAGE['GENERIC_SECURITY_ACCESS'],$target_url);
+}
+// After check print the header
+$admin->print_header();
+
+// Include the WB functions file
+require_once(WB_PATH.'/framework/functions.php');
+
+// Get values
+$page_title = str_replace(array("[[", "]]"), '', htmlspecialchars($admin->get_post_escaped('page_title')));
+$menu_title = str_replace(array("[[", "]]"), '', htmlspecialchars($admin->get_post_escaped('menu_title')));
+$page_code = intval($admin->get_post('page_code')) ;
+$description = str_replace(array("[[", "]]"), '', htmlspecialchars($admin->add_slashes($admin->get_post('description'))));
+$keywords = str_replace(array("[[", "]]"), '', htmlspecialchars($admin->add_slashes($admin->get_post('keywords'))));
+$parent = intval($admin->get_post('parent')); // fix secunia 2010-91-3
+$visibility = $admin->get_post_escaped('visibility');
+if (!in_array($visibility, array('public', 'private', 'registered', 'hidden', 'none'))) {$visibility = 'public';} // fix secunia 2010-93-3
+$template = preg_replace('/[^a-z0-9_-]/i', "", $admin->get_post('template')); // fix secunia 2010-93-3
+$template = (($template == DEFAULT_TEMPLATE ) ? '' : $template);
+$target = preg_replace("/\W/", "", $admin->get_post('target'));
+$aAdminGroups   = (isset($_POST['admin_groups']) ? $_POST['admin_groups'] : array(1));
+$aAdminUsers    = (isset($_POST['admin_users']) ? $_POST['admin_users'] : array());
+$aViewingGroups = (isset($_POST['viewing_groups']) ? $_POST['viewing_groups'] : array(1));
+$aViewingUsers  = (isset($_POST['viewing_users']) ? $_POST['viewing_users'] : array());
+$searching = intval($admin->get_post('searching'));
+$language = strtoupper($admin->get_post('language'));
+$language = (preg_match('/^[A-Z]{2}$/', $language) ? $language : DEFAULT_LANGUAGE);
+$menu = intval($admin->get_post('menu')); // fix secunia 2010-91-3
+$page_code = (isset($_POST['page_code']) ? intval($_POST['page_code']) : 0);
+// Validate data
+if($page_title == '' || substr($page_title,0,1)=='.')
+{
+	$admin->print_error($MESSAGE['PAGES']['BLANK_PAGE_TITLE']);
+}
+if($menu_title == '' || substr($menu_title,0,1)=='.')
+{
+	$admin->print_error($MESSAGE['PAGES']['BLANK_MENU_TITLE']);
+}
+
+// Get existing perms
+$sql = 'SELECT `parent`,`link`,`position`,`admin_groups`,`admin_users` FROM `'.TABLE_PREFIX.'pages` WHERE `page_id`='.$page_id;
+$results = $database->query($sql);
+
+$results_array = $results->fetchRow();
+$old_parent = $results_array['parent'];
+$old_link = $results_array['link'];
+$old_position = $results_array['position'];
+
+if(!$admin->ami_group_member($results_array['admin_groups']) &&
+   !$admin->is_group_match($admin->get_user_id(), $results_array['admin_users']))
+{
+	$admin->print_error($MESSAGE['PAGES']['INSUFFICIENT_PERMISSIONS']);
+}
+
+// Setup admin groups
+$aAdminGroups = (is_array($aAdminGroups) ? $aAdminGroups : array(1));
+array_unshift($aAdminGroups, 1);
+$sAdminGroups = implode(',', array_unique($aAdminGroups, SORT_REGULAR));
+$sAdminGroups = (preg_match('/^,|[^0-9,]|,,|,$/', $sAdminGroups) ? '1' : $sAdminGroups);
+
+$aAdminUsers = (is_array($aAdminUsers) ? $aAdminUsers : array());
+$sAdminUsers = implode(',', array_diff($aAdminUsers, array(0)));
+$sAdminUsers = (preg_match('/^,|[^0-9,]|,,|,$/', $sAdminUsers) ? array() : $sAdminUsers);
+
+$aViewingGroups = (is_array($aViewingGroups) ? $aViewingGroups : array(1));
+array_unshift($aViewingGroups, 1);
+$sViewingGroups = implode(',', array_unique($aViewingGroups, SORT_REGULAR));
+$sViewingGroups = (preg_match('/^,|[^0-9,]|,,|,$/', $sViewingGroups) ? '1' : $sViewingGroups);
+
+$aViewingUsers = (is_array($aViewingUsers) ? $aViewingUsers : array());
+$sViewingUsers = implode(',', array_diff($aViewingUsers, array(0)));
+$sViewingUsers = (preg_match('/^,|[^0-9,]|,,|,$/', $sViewingUsers) ? array() : $sViewingUsers);
+
+// If needed, get new order
+if($parent != $old_parent)
+{
+	// Include ordering class
+	require(WB_PATH.'/framework/class.order.php');
+	$order = new order(TABLE_PREFIX.'pages', 'position', 'page_id', 'parent');
+	// Get new order
+	$position = $order->get_new($parent);
+	// Clean new order
+	$order->clean($parent);
+} else {
+	$position = $old_position;
+}
+
+// Work out level and root parent
+if ($parent!='0')
+{
+	$level = level_count($parent)+1;
+	$root_parent = root_parent($parent);
+}
+else {
+	$level = '0';
+	$root_parent = '0';
+}
+
+// Work-out what the link should be
+if($parent == '0')
+{
+	$link = '/'.page_filename($menu_title);
+	// rename menu titles: index && intro to prevent clashes with intro page feature and WB core file /pages/index.php
+	if($link == '/index' || $link == '/intro')
+    {
+		$link .= '_' .$page_id;
+		$filename = WB_PATH.PAGES_DIRECTORY.'/'.page_filename($menu_title).'_'.$page_id .PAGE_EXTENSION;
+	} else {
+		$filename = WB_PATH.PAGES_DIRECTORY.'/'.page_filename($menu_title).PAGE_EXTENSION;
+	}
+} else {
+	$parent_section = '';
+	$parent_titles = array_reverse(get_parent_titles($parent));
+	foreach($parent_titles AS $parent_title)
+    {
+		$parent_section .= page_filename($parent_title).'/';
+	}
+	if($parent_section == '/')
+    {
+      $parent_section = '';
+    }
+	$link = '/'.$parent_section.page_filename($menu_title);
+	$filename = WB_PATH.PAGES_DIRECTORY.'/'.$parent_section.page_filename($menu_title).PAGE_EXTENSION;
+}
+
+// Check if a page with same page filename exists
+// $database = new database();
+$sql = 'SELECT `page_id`,`page_title` FROM `'.TABLE_PREFIX.'pages` WHERE `link` = "'.$link.'" AND `page_id` != '.$page_id;
+$get_same_page = $database->query($sql);
+
+if($get_same_page->numRows() > 0)
+{
+	$admin->print_error($MESSAGE['PAGES']['PAGE_EXISTS']);
+}
+
+// Update page with new order
+$sql = 'UPDATE `'.TABLE_PREFIX.'pages` SET `parent`='.$parent.', `position`='.$position.' WHERE `page_id`='.$page_id.'';
+// $database = new database();
+$database->query($sql);
+
+// Get page trail
+$page_trail = get_page_trail($page_id);
+
+// Update page settings in the pages table
+$sql = 'UPDATE `'.TABLE_PREFIX.'pages` '
+     . 'SET `parent`='.$parent.', '
+     .     '`page_title`=\''.$page_title.'\', '
+     .     '`menu_title`=\''.$menu_title.'\', '
+     .     '`menu`='.$menu.', '
+     .     '`level`='.$level.', '
+     .     '`page_trail`=\''.$page_trail.'\', '
+     .     '`root_parent`='.$root_parent.', '
+     .     '`link`=\''.$link.'\', '
+     .     '`template`=\''.$template.'\', '
+     .     '`target`=\''.$target.'\', '
+     .     '`description`=\''.$description.'\', '
+     .     '`keywords`=\''.$keywords.'\', '
+     .     '`position`='.$position.', '
+     .     '`visibility`=\''.$visibility.'\', '
+     .     '`searching`='.$searching.', '
+     .     '`language`=\''.$language.'\', '
+     .     '`admin_groups`=\''.$sAdminGroups.'\', '
+     .     '`admin_users`=\''.$sAdminUsers.'\', '
+     .     '`viewing_groups`=\''.$sViewingGroups.'\', '
+     .     '`viewing_users`=\''.$sViewingUsers.'\', '
+     .     '`page_code`='.$page_code.' '
+     . 'WHERE `page_id`='.$page_id;
+if(!$database->query($sql)) {
+	$target_url = ADMIN_URL.'/pages/settings.php?page_id='.$page_id;
+	$admin->print_error($database->get_error(), $target_url );
+}
+// Clean old order if needed
+if($parent != $old_parent)
+{
+	$order->clean($old_parent);
+}
+
+/* BEGIN page "access file" code */
+
+// Create a new file in the /pages dir if title changed
+if(!is_writable(WB_PATH.PAGES_DIRECTORY.'/'))
+{
+	$admin->print_error($MESSAGE['PAGES']['CANNOT_CREATE_ACCESS_FILE']);
+} else {
+    $old_filename = WB_PATH.PAGES_DIRECTORY.$old_link.PAGE_EXTENSION;
+	// First check if we need to create a new file
+	if(($old_link != $link) || (!file_exists($old_filename)))
+    {
+		// Delete old file
+		$old_filename = WB_PATH.PAGES_DIRECTORY.$old_link.PAGE_EXTENSION;
+		if(file_exists($old_filename))
+        {
+			unlink($old_filename);
+		}
+		// Create access file
+		create_access_file($filename,$page_id,$level);
+		// Move a directory for this page
+		if(file_exists(WB_PATH.PAGES_DIRECTORY.$old_link.'/') && is_dir(WB_PATH.PAGES_DIRECTORY.$old_link.'/'))
+        {
+			rename(WB_PATH.PAGES_DIRECTORY.$old_link.'/', WB_PATH.PAGES_DIRECTORY.$link.'/');
+		}
+		// Update any pages that had the old link with the new one
+		$old_link_len = strlen($old_link);
+        $sql = '';
+		$query_subs = $database->query("SELECT page_id,link,level FROM ".TABLE_PREFIX."pages WHERE link LIKE '%$old_link/%' ORDER BY LEVEL ASC");
+
+		if($query_subs->numRows() > 0)
+        {
+			while($sub = $query_subs->fetchRow())
+            {
+				// Double-check to see if it contains old link
+				if(substr($sub['link'], 0, $old_link_len) == $old_link)
+                {
+					// Get new link
+					$replace_this = $old_link;
+					$old_sub_link_len =strlen($sub['link']);
+					$new_sub_link = $link.'/'.substr($sub['link'],$old_link_len+1,$old_sub_link_len);
+					// Work out level
+					$new_sub_level = level_count($sub['page_id']);
+					// Update level and link
+					$database->query("UPDATE ".TABLE_PREFIX."pages SET link = '$new_sub_link', level = '$new_sub_level' WHERE page_id = '".$sub['page_id']."' LIMIT 1");
+					// Re-write the access file for this page
+					$old_subpage_file = WB_PATH.PAGES_DIRECTORY.$new_sub_link.PAGE_EXTENSION;
+					if(file_exists($old_subpage_file))
+                    {
+						unlink($old_subpage_file);
+					}
+					create_access_file(WB_PATH.PAGES_DIRECTORY.$new_sub_link.PAGE_EXTENSION, $sub['page_id'], $new_sub_level);
+				}
+			}
+		}
+	}
+}
+
+// Function to fix page trail of subs
+function fix_page_trail($parent,$root_parent)
+{
+	// Get objects and vars from outside this function
+	global $admin, $template, $database, $TEXT, $MESSAGE;
+	// Get page list from database
+	// $database = new database();
+	$query = "SELECT page_id FROM ".TABLE_PREFIX."pages WHERE parent = '$parent'";
+	$get_pages = $database->query($query);
+	// Insert values into main page list
+	if($get_pages->numRows() > 0)
+    {
+		while($page = $get_pages->fetchRow())
+        {
+			// Fix page trail
+
+			$database->query("UPDATE ".TABLE_PREFIX."pages SET ".($root_parent != 0 ?"root_parent = '$root_parent', ":"")." page_trail = '".get_page_trail($page['page_id'])."' WHERE page_id = '".$page['page_id']."'");
+			// Run this query on subs
+			fix_page_trail($page['page_id'],$root_parent);
+		}
+	}
+}
+
+// Fix sub-pages page trail
+fix_page_trail($page_id,$root_parent);
+
+/* END page "access file" code */
+
+//$pagetree_url = ADMIN_URL.'/pages/index.php';
+//$target_url = ADMIN_URL.'/pages/settings.php?page_id='.$page_id;
+// Check if there is a db error, otherwise say successful
+if($database->is_error())
+{
+	$admin->print_error($database->get_error(), $target_url );
+} else {
+	$admin->print_success($MESSAGE['PAGES']['SAVED_SETTINGS'], $target_url );
+}
+
+// Print admin footer
+$admin->print_footer();

Property changes on: branches/2.8.x/wb/admin/pages/settings_save.php
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+Date Author Id Revision HeadURL
\ No newline at end of property
Index: branches/2.8.x/wb/admin/pages/page_settings.js
===================================================================
--- branches/2.8.x/wb/admin/pages/page_settings.js	(revision 1663)
+++ branches/2.8.x/wb/admin/pages/page_settings.js	(revision 1664)
@@ -8,19 +8,5 @@
 var lastselectedindex = new Array();
 
 function disabled_hack_for_ie(sel) {
-	var sels = document.getElementsByTagName("select");
-	var i;
-	var sel_num_in_doc = 0;
-	for (i = 0; i <sels.length; i++) {
-		if (sel == sels[i]) {
-			sel_num_in_doc = i;
-		}
-	}
-	// never true for browsers that support option.disabled
-	if (sel.options[sel.selectedIndex].disabled) {
-		sel.selectedIndex = lastselectedindex[sel_num_in_doc];
-	} else {
-		lastselectedindex[sel_num_in_doc] = sel.selectedIndex;
-	}
 	return true;
 }
\ No newline at end of file
Index: branches/2.8.x/wb/admin/interface/version.php
===================================================================
--- branches/2.8.x/wb/admin/interface/version.php	(revision 1663)
+++ branches/2.8.x/wb/admin/interface/version.php	(revision 1664)
@@ -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', '1663');
+if(!defined('REVISION')) define('REVISION', '1664');
 if(!defined('SP')) define('SP', '');
