ソースを参照

Group Manager - Permissions: Add filter for assigned/unassigned.

Nate 4 年 前
コミット
244b0f19e4
2 ファイル変更96 行追加32 行削除
  1. 42 0
      core/groups/app_languages.php
  2. 54 32
      core/groups/group_permissions.php

+ 42 - 0
core/groups/app_languages.php

@@ -1681,6 +1681,48 @@ $text['label-12-hour']['ru-ru'] = "12-часовой";
 $text['label-12-hour']['sv-se'] = "12-timmars";
 $text['label-12-hour']['uk-ua'] = "12-годинний";
 
+$text['label-assigned']['en-us'] = "Assigned";
+$text['label-assigned']['en-gb'] = "Assigned";
+$text['label-assigned']['ar-eg'] = "Assigned";
+$text['label-assigned']['de-at'] = "Assigned";
+$text['label-assigned']['de-ch'] = "Assigned";
+$text['label-assigned']['de-de'] = "Assigned";
+$text['label-assigned']['es-cl'] = "Assigned";
+$text['label-assigned']['es-mx'] = "Assigned";
+$text['label-assigned']['fr-ca'] = "Assigned";
+$text['label-assigned']['fr-fr'] = "Assigned";
+$text['label-assigned']['he-il'] = "Assigned";
+$text['label-assigned']['it-it'] = "Assigned";
+$text['label-assigned']['nl-nl'] = "Assigned";
+$text['label-assigned']['pl-pl'] = "Assigned";
+$text['label-assigned']['pt-br'] = "Assigned";
+$text['label-assigned']['pt-pt'] = "Assigned";
+$text['label-assigned']['ro-ro'] = "Assigned";
+$text['label-assigned']['ru-ru'] = "Assigned";
+$text['label-assigned']['sv-se'] = "Assigned";
+$text['label-assigned']['uk-ua'] = "Assigned";
+
+$text['label-unassigned']['en-us'] = "Unassigned";
+$text['label-unassigned']['en-gb'] = "Unassigned";
+$text['label-unassigned']['ar-eg'] = "Unassigned";
+$text['label-unassigned']['de-at'] = "Unassigned";
+$text['label-unassigned']['de-ch'] = "Unassigned";
+$text['label-unassigned']['de-de'] = "Unassigned";
+$text['label-unassigned']['es-cl'] = "Unassigned";
+$text['label-unassigned']['es-mx'] = "Unassigned";
+$text['label-unassigned']['fr-ca'] = "Unassigned";
+$text['label-unassigned']['fr-fr'] = "Unassigned";
+$text['label-unassigned']['he-il'] = "Unassigned";
+$text['label-unassigned']['it-it'] = "Unassigned";
+$text['label-unassigned']['nl-nl'] = "Unassigned";
+$text['label-unassigned']['pl-pl'] = "Unassigned";
+$text['label-unassigned']['pt-br'] = "Unassigned";
+$text['label-unassigned']['pt-pt'] = "Unassigned";
+$text['label-unassigned']['ro-ro'] = "Unassigned";
+$text['label-unassigned']['ru-ru'] = "Unassigned";
+$text['label-unassigned']['sv-se'] = "Unassigned";
+$text['label-unassigned']['uk-ua'] = "Unassigned";
+
 $text['header-user_setting-edit']['en-us'] = "User Setting";
 $text['header-user_setting-edit']['en-gb'] = "User Setting";
 $text['header-user_setting-edit']['ar-eg'] = "";

+ 54 - 32
core/groups/group_permissions.php

@@ -94,6 +94,9 @@
 		}
 	}
 
+//get the view preference
+	$view = $_REQUEST['view'];
+
 //get the http post data
 	if (is_array($_POST['group_permissions'])) {
 		$action = $_POST['action'];
@@ -233,7 +236,7 @@
 			$token = new token;
 			if (!$token->validate($_SERVER['PHP_SELF'])) {
 				message::add($text['message-invalid_token'],'negative');
-				header('Location: group_permissions.php?group_uuid='.urlencode($group_uuid).'&search='.urlencode($search));
+				header('Location: group_permissions.php?group_uuid='.urlencode($group_uuid).($view ? '&view='.urlencode($view) : null).($search ? '&search='.urlencode($search) : null));
 				exit;
 			}
 
@@ -264,10 +267,6 @@
 			exit;
 	}
 
-//get order and order by
-	//$order_by = $_GET["order_by"];
-	//$order = $_GET["order"];
-
 //create token
 	$object = new token;
 	$token = $object->create($_SERVER['PHP_SELF']);
@@ -287,7 +286,12 @@
 	}
 	echo 		"<form id='form_search' class='inline' method='get'>\n";
 	echo 		"<input type='hidden' name='group_uuid' value='".escape($group_uuid)."'>\n";
-	echo 		"<input type='text' class='txt list-search' name='search' id='search' value=\"".escape($search)."\" placeholder=\"".$text['label-search']."\" onkeydown='list_search_reset();'>";
+	echo 		"<select class='txt' style='margin-left: 15px; margin-right: 0;' id='view' name='view' onchange=\"document.getElementById('form_search').submit();\">\n";
+	echo 		"	<option value=''>".$text['label-all']."</option>\n";
+	echo 		"	<option value='assigned' ".($view == 'assigned' ? "selected='selected'" : null).">".$text['label-assigned']."</option>\n";
+	echo 		"	<option value='unassigned' ".($view == 'unassigned' ? "selected='selected'" : null).">".$text['label-unassigned']."</option>\n";
+	echo 		"</select>\n";
+	echo 		"<input type='text' class='txt list-search' style='margin-left: 0;' name='search' id='search' value=\"".escape($search)."\" placeholder=\"".$text['label-search']."\" onkeydown='list_search_reset();'>";
 	echo button::create(['label'=>$text['button-search'],'icon'=>$_SESSION['theme']['button_icon_search'],'type'=>'submit','id'=>'btn_search','collapse'=>'hide-sm-dn','style'=>($search != '' ? 'display: none;' : null)]);
 	echo button::create(['label'=>$text['button-reset'],'icon'=>$_SESSION['theme']['button_icon_reset'],'type'=>'button','id'=>'btn_reset','collapse'=>'hide-sm-dn','link'=>'group_permissions.php?group_uuid='.urlencode($group_uuid),'style'=>($search == '' ? 'display: none;' : null)]);
 	if (permission_exists('group_permission_edit')) {
@@ -304,6 +308,7 @@
 	echo "<form id='form_list' method='post'>\n";
 	echo "<input type='hidden' name='".$token['name']."' value='".$token['hash']."'>\n";
 	echo "<input type='hidden' name='group_uuid' value='".escape($group_uuid)."'>\n";
+	echo "<input type='hidden' name='view' value=\"".escape($view)."\">\n";
 	echo "<input type='hidden' name='search' value=\"".escape($search)."\">\n";
 	echo "<table class='list' style='margin-bottom: 25px;'>\n";
 	if (is_array($group_permissions) && @sizeof($group_permissions) != 0) {
@@ -311,19 +316,18 @@
 		foreach ($group_permissions as $row) {
 			$checked = ($row['permission_assigned'] === 'true') ? " checked=\"checked\"" : $checked = '';
 			$protected = ($row['permission_protected'] === 'true') ? " checked=\"checked\"" : '';
-			$application_name = strtolower($row['application_name']);
-			$label_application_name = ucwords(str_replace(['_','-'], " ", $row['application_name']));
-
-			$label_application_name = ucwords($label_application_name);
+			$application_name = strtolower(str_replace([' ','-'], '_', $row['application_name']));
+			$application_name_label = ucwords(str_replace(['_','-'], " ", $row['application_name']));
 
+			//application heading
 			if ($previous_application_name !== $row['application_name']) {
-				echo "		<tr>";
+				echo "		<tr class='heading_".$application_name."'>";
 				echo "			<td align='left' colspan='999'>&nbsp;</td>\n";
 				echo "		</tr>";
-				echo "		<tr>";
-				echo "			<td align='left' colspan='999' nowrap='nowrap'><b>".escape($label_application_name)."</b></td>\n";
+				echo "		<tr class='heading_".$application_name."'>";
+				echo "			<td align='left' colspan='999' nowrap='nowrap'><b>".escape($application_name_label)."</b></td>\n";
 				echo "		</tr>";
-				echo "		<tr class='list-header'>\n";
+				echo "		<tr class='list-header heading_".$application_name."'>\n";
 				if (permission_exists('group_permission_add') || permission_exists('group_permission_edit') || permission_exists('group_permission_delete')) {
 					echo "		<th class='checkbox'>\n";
 					echo "			<input type='checkbox' id='checkbox_all_".$application_name."' name='checkbox_all' onclick=\"list_all_toggle('".$application_name."');\">\n";
@@ -337,32 +341,50 @@
 					echo "		</th>\n";
 				}
 				echo "		</tr>\n";
-
+				$displayed_permissions[$application_name] = 0;
 			}
-			echo "<tr class='list-row'>\n";
-			if (permission_exists('group_permission_add') || permission_exists('group_permission_edit') || permission_exists('group_permission_delete')) {
-				echo "	<td class='checkbox'>\n";
-				echo "		<input type='checkbox' name='group_permissions[$x][checked]' id='checkbox_".$x."' class='checkbox_".$application_name."' value='true' ".$checked." onclick=\"if (!this.checked) { document.getElementById('checkbox_all_".$application_name."').checked = false; }\">\n";
-				echo "		<input type='hidden' name='group_permissions[$x][permission_uuid]' value='".escape($row['permission_uuid'])."' />\n";
-				echo "		<input type='hidden' name='group_permissions[$x][permission_name]' value='".escape($row['permission_name'])."' />\n";
-				echo "	</td>\n";
-			}
-			echo "	<td class='no-wrap' onclick=\"if (document.getElementById('checkbox_".$x."').checked) { document.getElementById('checkbox_".$x."').checked = false; document.getElementById('checkbox_all_".$application_name."').checked = false; } else { document.getElementById('checkbox_".$x."').checked = true; }\">";
-			echo "		".escape($row['permission_name']);
-			echo "	</td>\n";
-			if (permission_exists('group_permission_add') || permission_exists('group_permission_edit') || permission_exists('group_permission_delete')) {
-				echo "	<td>&nbsp;</td>\n";
-				echo "	<td class='checkbox'>\n";
-				echo "		<input type='checkbox' name='group_permissions[$x][permission_protected]' id='checkbox_protected_".$x."' class='checkbox_".$application_name."_protected' value='true' ".$protected." onclick=\"if (!this.checked) { document.getElementById('checkbox_all_".$application_name."_protected').checked = false; }\">\n";
+
+			//application permission
+			if (!$view || ($view == 'assigned' && $checked) || ($view == 'unassigned' && !$checked)) {
+				echo "<tr class='list-row'>\n";
+				if (permission_exists('group_permission_add') || permission_exists('group_permission_edit') || permission_exists('group_permission_delete')) {
+					echo "	<td class='checkbox'>\n";
+					echo "		<input type='checkbox' name='group_permissions[$x][checked]' id='checkbox_".$x."' class='checkbox_".$application_name."' value='true' ".$checked." onclick=\"if (!this.checked) { document.getElementById('checkbox_all_".$application_name."').checked = false; }\">\n";
+					echo "		<input type='hidden' name='group_permissions[$x][permission_uuid]' value='".escape($row['permission_uuid'])."' />\n";
+					echo "		<input type='hidden' name='group_permissions[$x][permission_name]' value='".escape($row['permission_name'])."' />\n";
+					echo "	</td>\n";
+				}
+				echo "	<td class='no-wrap' onclick=\"if (document.getElementById('checkbox_".$x."').checked) { document.getElementById('checkbox_".$x."').checked = false; document.getElementById('checkbox_all_".$application_name."').checked = false; } else { document.getElementById('checkbox_".$x."').checked = true; }\">";
+				echo "		".escape($row['permission_name']);
 				echo "	</td>\n";
+				if (permission_exists('group_permission_add') || permission_exists('group_permission_edit') || permission_exists('group_permission_delete')) {
+					echo "	<td>&nbsp;</td>\n";
+					echo "	<td class='checkbox'>\n";
+					echo "		<input type='checkbox' name='group_permissions[$x][permission_protected]' id='checkbox_protected_".$x."' class='checkbox_".$application_name."_protected' value='true' ".$protected." onclick=\"if (!this.checked) { document.getElementById('checkbox_all_".$application_name."_protected').checked = false; }\">\n";
+					echo "	</td>\n";
+				}
+				echo "</tr>\n";
+				$displayed_permissions[$application_name]++;
 			}
-			echo "</tr>\n";
 
-			//set the previous category
+			//set the previous application name
 			$previous_application_name = $row['application_name'];
 			$x++;
+
 		}
 		unset($group_permissions);
+
+		//hide application heading if no permissions displayed
+		if (is_array($displayed_permissions) && @sizeof($displayed_permissions) != 0) {
+			echo "<script>\n";
+			foreach ($displayed_permissions as $application_name => $permission_count) {
+				if (!$permission_count) {
+					echo "$('.heading_".$application_name."').hide();\n";
+				}
+			}
+			echo "</script>\n";
+		}
+
 	}
 
 	echo "</table>\n";