fixes #2201 for each filter we add the number of associated users

and the select is deactivated if no users are associated.
This commit is contained in:
Linty
2024-08-05 17:50:10 +02:00
parent 8c4b3fb7db
commit 316c20e5bd
3 changed files with 55 additions and 4 deletions
+10
View File
@@ -228,6 +228,16 @@ $( document ).ready(function() {
$(".advanced-filter-select").change(update_user_list);
$("#user_search").on("input", update_user_list);
// disables certain status, level and group filters if they do not have users
$(`
.advanced-filter-select[name="filter_status"] option:not(:selected),
.advanced-filter-select[name="filter_level"] option:not(:selected),
.advanced-filter-select[name="filter_group"] option:not(:selected)
`).each(function() {
if (!this.textContent.split(' ')[1]){
$(this).prop('disabled', true);
}
});
/*View manager*/
+3 -3
View File
@@ -293,7 +293,7 @@ $(document).ready(function() {
<div class="advanced-filter-select-container advanced-filter-item-container">
<select class="user-action-select advanced-filter-select" name="filter_status">
<option value="" label="" selected></option>
{html_options options=$pref_status_options}
{html_options options=$nb_users_by_status}
</select>
</div>
</div>
@@ -302,7 +302,7 @@ $(document).ready(function() {
<div class="advanced-filter-select-container advanced-filter-item-container">
<select class="user-action-select advanced-filter-select" name="filter_level" size="1">
<option value="" label="" selected></option>
{html_options options=$level_options}
{html_options options=$nb_users_by_level}
</select>
</div>
</div>
@@ -311,7 +311,7 @@ $(document).ready(function() {
<div class="advanced-filter-select-container advanced-filter-item-container">
<select class="user-action-select advanced-filter-select" name="filter_group">
<option value="" label="" selected></option>
{html_options options=$association_options}
{html_options options=$groups_for_filter}
</select>
</div>
</div>
+42 -1
View File
@@ -26,8 +26,10 @@ include(PHPWG_ROOT_PATH.'admin/include/user_tabs.inc.php');
$groups = array();
$query = '
SELECT id, name
SELECT id, name, COUNT(ug.user_id) as nb_users_of
FROM `'.GROUPS_TABLE.'`
LEFT JOIN `'. USER_GROUP_TABLE .'` ug ON id = ug.group_id
GROUP BY name
ORDER BY name ASC
;';
$result = pwg_query($query);
@@ -35,8 +37,11 @@ $result = pwg_query($query);
while ($row = pwg_db_fetch_assoc($result))
{
$groups[$row['id']] = $row['name'];
$groups_for_filter[$row['id']] = $row['nb_users_of'] ? $row['name'] . ' ('. $row['nb_users_of'] .')' : $row['name'];
}
$template->assign('groups_for_filter', $groups_for_filter);
// +-----------------------------------------------------------------------+
// | Dates for filtering |
// +-----------------------------------------------------------------------+
@@ -142,6 +147,23 @@ foreach (get_enums(USER_INFOS_TABLE, 'status') as $status)
$label_of_status[$status] = l10n('user_status_'.$status);
}
$query = '
SELECT
status,
COUNT(*) AS nb_users_of
FROM '. USER_INFOS_TABLE .'
WHERE user_id != '. $conf['guest_id'] .'
GROUP BY status
';
$result = pwg_query($query);
while($row = pwg_db_fetch_assoc($result))
{
$nb_users_by_status[$row['status']] = l10n('user_status_'.$row['status']) . ' ('. $row['nb_users_of'] .')';
}
$nb_users_by_status = array_merge($label_of_status, $nb_users_by_status);
$pref_status_options = $label_of_status;
// a simple "admin" can't set/remove statuses webmaster/admin
@@ -154,14 +176,33 @@ if ('admin' == $user['status'])
$template->assign('label_of_status', $label_of_status);
$template->assign('pref_status_options', $pref_status_options);
$template->assign('pref_status_selected', 'normal');
$template->assign('nb_users_by_status', $nb_users_by_status);
// user level options
foreach ($conf['available_permission_levels'] as $level)
{
$level_options[$level] = l10n(sprintf('Level %d', $level));
}
$query = '
SELECT
level,
COUNT(*) AS nb_users_of
FROM '. USER_INFOS_TABLE .'
WHERE user_id != '. $conf['guest_id'] .'
GROUP BY level
';
$result = pwg_query($query);
$nb_users_by_level = $level_options;
while($row = pwg_db_fetch_assoc($result))
{
$nb_users_by_level[$row['level']] = l10n(sprintf('Level %d', $row['level'])) . ' ('. $row['nb_users_of'] .')';
}
$template->assign('level_options', $level_options);
$template->assign('level_selected', $default_user['level']);
$template->assign('nb_users_by_level', $nb_users_by_level);
$query = '
SELECT id, name, is_default