Index: trunk/CHANGELOG
===================================================================
--- trunk/CHANGELOG	(revision 732)
+++ trunk/CHANGELOG	(revision 733)
@@ -11,7 +11,8 @@
 ! = Update/Change
 
 ------------------------------------- 2.7.0 -------------------------------------
-01-Feb-2008 Thomas Hornik
+01-Mar-2008 Thomas Hornik
+#	fixed ticket #562, applied changes from user tavitar with some own additions
 +	added check for AddDefaultCharset to install
 29-Feb-2008 Thomas Hornik
 #	fixed issue in pagename generation if AddDefaultCharset is set (as work-around).
Index: trunk/wb/admin/pages/settings.php
===================================================================
--- trunk/wb/admin/pages/settings.php	(revision 732)
+++ trunk/wb/admin/pages/settings.php	(revision 733)
@@ -161,8 +161,8 @@
 		$flag_cursor =   'pointer';
 		$flag_color =    '';
 		if (in_array($group["group_id"], $admin->get_groups_id())) {
-			$flag_disabled = ' disabled';
-			$flag_checked =  ' checked';
+			$flag_disabled = ''; //' disabled';
+			$flag_checked =  ''; //' checked';
 			$flag_cursor =   'default';
 			$flag_color =    '000000';
 		}
@@ -217,8 +217,8 @@
 		$flag_cursor =   'pointer';
 		$flag_color =    '';
 		if (in_array($group["group_id"], $admin->get_groups_id())) {
-			$flag_disabled = ' disabled';
-			$flag_checked =  ' checked';
+			$flag_disabled = ''; //' disabled';
+			$flag_checked =  ''; //' checked';
 			$flag_cursor =   'default';
 			$flag_color =    '000000';
 		}
Index: trunk/wb/admin/pages/index.php
===================================================================
--- trunk/wb/admin/pages/index.php	(revision 732)
+++ trunk/wb/admin/pages/index.php	(revision 733)
@@ -415,7 +415,7 @@
 		$flag_cursor =   'pointer';
 		$flag_color =    '';
 		if (in_array($group["group_id"], $admin->get_groups_id())) {
-			$flag_disabled = ' disabled';
+			$flag_disabled = ''; //' disabled';
 			$flag_checked =  ' checked';
 			$flag_cursor =   'default';
 			$flag_color =    '000000';
@@ -464,7 +464,7 @@
 		$flag_cursor =   'pointer';
 		$flag_color =    '';
 		if (in_array($group["group_id"], $admin->get_groups_id())) {
-			$flag_disabled = ' disabled';
+			$flag_disabled = ''; //' disabled';
 			$flag_checked =  ' checked';
 			$flag_cursor =   'default';
 			$flag_color =    '000000';
Index: trunk/wb/admin/pages/settings2.php
===================================================================
--- trunk/wb/admin/pages/settings2.php	(revision 732)
+++ trunk/wb/admin/pages/settings2.php	(revision 733)
@@ -86,15 +86,15 @@
 
 // Setup admin groups
 $admin_groups[] = 1;
-if(!in_array(1, $admin->get_groups_id())) {
-	$admin_groups[] = implode(",",$admin->get_groups_id());
-}
+//if(!in_array(1, $admin->get_groups_id())) {
+//	$admin_groups[] = implode(",",$admin->get_groups_id());
+//}
 $admin_groups = implode(',', $admin_groups);
 // Setup viewing groups
 $viewing_groups[] = 1;
-if(!in_array(1, $admin->get_groups_id())) {
-	$viewing_groups[] = implode(",",$admin->get_groups_id());
-}
+//if(!in_array(1, $admin->get_groups_id())) {
+//	$viewing_groups[] = implode(",",$admin->get_groups_id());
+//}
 $viewing_groups = implode(',', $viewing_groups);
 
 // If needed, get new order
Index: trunk/wb/admin/pages/add.php
===================================================================
--- trunk/wb/admin/pages/add.php	(revision 732)
+++ trunk/wb/admin/pages/add.php	(revision 733)
@@ -40,6 +40,18 @@
 $admin_groups = $admin->get_post('admin_groups');
 $viewing_groups = $admin->get_post('viewing_groups');
 
+// work-around: $viewing_groups contains group-numbers for both private _and_ registered - keep group-numbers which appears twice only
+$view_groups=array(); 
+foreach($viewing_groups as $a) {
+	if(isset($view_groups[$a])) $view_groups[$a]++;
+	else $view_groups[$a] = 1;
+}
+$viewing_groups=array();
+foreach($view_groups as $k=>$v) {
+	if($v==2)
+		$viewing_groups[]=$k;
+}
+
 if ($parent!=0) {
 	if (!$admin->get_page_permission($parent,'admin'))
 		$admin->print_error($MESSAGE['PAGES']['INSUFFICIENT_PERMISSIONS']);
@@ -54,15 +66,38 @@
 
 // Setup admin groups
 $admin_groups[] = 1;
-if(!in_array(1, $admin->get_groups_id())) {
-	$admin_groups[] = implode(",",$admin->get_groups_id());
-}
-$admin_groups = implode(',', $admin_groups);
+//if(!in_array(1, $admin->get_groups_id())) {
+//	$admin_groups[] = implode(",",$admin->get_groups_id());
+//}
 // Setup viewing groups
 $viewing_groups[] = 1;
+//if(!in_array(1, $admin->get_groups_id())) {
+//	$viewing_groups[] = implode(",",$admin->get_groups_id());
+//}
+
+// Check to see if page created has needed permissions
 if(!in_array(1, $admin->get_groups_id())) {
-	$viewing_groups[] = implode(",",$admin->get_groups_id());
+	$admin_perm_ok = false;
+	foreach ($admin_groups as $adm_group) {
+		if (in_array($adm_group, $admin->get_groups_id())) {
+			$admin_perm_ok = true;
+		}
+	}
+	if ($admin_perm_ok == false) {
+		$admin->print_error($MESSAGE['PAGES']['INSUFFICIENT_PERMISSIONS']);
+	}
+	$admin_perm_ok = false;
+	foreach ($viewing_groups as $view_group) {
+		if (in_array($view_group, $admin->get_groups_id())) {
+			$admin_perm_ok = true;
+		}
+	}
+	if ($admin_perm_ok == false) {
+		$admin->print_error($MESSAGE['PAGES']['INSUFFICIENT_PERMISSIONS']);
+	}
 }
+
+$admin_groups = implode(',', $admin_groups);
 $viewing_groups = implode(',', $viewing_groups);
 
 // Work-out what the link and page filename should be
