fixes #2201 better implementation for the number of associated users

removed the javascript part to directly manage disabling an option via the tpl in a foreach and data in php
This commit is contained in:
Linty
2024-08-07 12:41:52 +02:00
parent adf45edb2d
commit bfe1e85801
3 changed files with 32 additions and 17 deletions

View File

@@ -228,17 +228,6 @@ $( 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*/
if ($("#displayCompact").is(":checked")) {

View File

@@ -293,7 +293,13 @@ $(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=$nb_users_by_status}
{foreach from=$nb_users_by_status key=status_value item=status}
{if isset($status.name) and isset($status.counter)}
<option value="{$status_value}">{$status.name} ({$status.counter})</option>
{else}
<option value="{$status_value}" disabled>{$status}</option>
{/if}
{/foreach}
</select>
</div>
</div>
@@ -302,7 +308,13 @@ $(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=$nb_users_by_level}
{foreach from=$nb_users_by_level key=level_value item=level}
{if isset($level.name) and isset($level.counter)}
<option value="{$level_value}">{$level.name} ({$level.counter})</option>
{else}
<option value="{$level_value}" disabled>{$level}</option>
{/if}
{/foreach}
</select>
</div>
</div>
@@ -311,7 +323,11 @@ $(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=$groups_for_filter}
{foreach from=$groups_for_filter item=group}
<option value="{$group.id}" {if 0 == $group.counter}disabled{/if}>
{$group.name}{if $group.counter > 0} ({$group.counter}){/if}
</option>
{/foreach}
</select>
</div>
</div>

View File

@@ -37,7 +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'];
$groups_for_filter[] = array(
'id' => $row['id'],
'name' => $row['name'],
'counter' => $row['nb_users_of']
);
}
$template->assign('groups_for_filter', $groups_for_filter);
@@ -159,7 +163,10 @@ SELECT
$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[$row['status']] = array(
'name' => l10n('user_status_'.$row['status']),
'counter' => $row['nb_users_of'],
);
}
$nb_users_by_status = array_merge($label_of_status, $nb_users_by_status);
@@ -197,7 +204,10 @@ $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'] .')';
$nb_users_by_level[$row['level']] = array(
'name' => l10n(sprintf('Level %d', $row['level'])),
'counter' => $row['nb_users_of']
);
}
$template->assign('level_options', $level_options);