Fix #110 : make user management table sortable

This commit is contained in:
Romain Neutron
2011-12-26 17:24:50 +01:00
parent 206bf058d5
commit 9f8dd943b3
4 changed files with 98 additions and 11 deletions

View File

@@ -128,10 +128,10 @@ class User_Query implements User_QueryInterface
const SORT_FIRSTNAME= 'usr_prenom';
const SORT_LASTNAME= 'usr_nom';
const SORT_COMPANY = 'societe';
const SORT_LOGIN = 'login';
const SORT_LOGIN = 'usr_login';
const SORT_EMAIL = 'usr_mail';
const SORT_ID = 'usr_id';
const SORT_CREATIONDATE = 'creationdate';
const SORT_CREATIONDATE = 'usr_creationdate';
const SORT_COUNTRY = 'pays';
const SORT_LASTMODEL = 'lastModel';
@@ -410,6 +410,8 @@ class User_Query implements User_QueryInterface
case self::SORT_COMPANY:
case self::SORT_LOGIN:
case self::SORT_EMAIL:
$sorter[$k] = ' usr.`' . $sort . '` COLLATE utf8_unicode_ci ';
break;
case self::SORT_ID:
case self::SORT_CREATIONDATE:
case self::SORT_COUNTRY:
@@ -430,7 +432,7 @@ class User_Query implements User_QueryInterface
$sorter[$k] .= ' ASC ';
break;
case self::ORD_DESC:
$sorter[$k] .= ' ASC ';
$sorter[$k] .= ' DESC ';
break;
}
}

View File

@@ -68,29 +68,75 @@
<table id="users" cellspacing="0" cellpadding="0" border="0" class="admintable">
<thead>
<tr>
<th style="text-align: center;">
<th style="text-align: center;" class="sortable {{ parm.srt == 'usr_id' ? 'sorted' : '' }} {{ parm.ord == 'asc' ? 'sort_asc' : 'sort_desc' }}">
{% trans 'admin::compte-utilisateur id utilisateur' %}
<span class="ord_notifier">
{{ parm.ord == 'asc' ? '&#x25bc;' : '&#x25B2;' }}
</span>
<input type="hidden" name="srt" value="usr_id" />
</th>
<th>
<th class="sortable {{ parm.srt == 'usr_login' ? 'sorted' : '' }} ">
<span>
{% trans 'admin::compte-utilisateur identifiant' %}
</span>
<span class="ord_notifier">
{{ parm.ord == 'asc' ? '&#x25bc;' : '&#x25B2;' }}
</span>
<input type="hidden" name="srt" value="usr_login" />
</th>
<th>
<th class="sortable {{ parm.srt == 'usr_nom' ? 'sorted' : '' }} {{ parm.ord == 'asc' ? 'sort_asc' : 'sort_desc' }}">
<span>
{% trans 'admin::compte-utilisateur nom/prenom' %}
</span>
<span class="ord_notifier">
{{ parm.ord == 'asc' ? '&#x25bc;' : '&#x25B2;' }}
</span>
<input type="hidden" name="srt" value="usr_nom" />
</th>
<th>
<th class="sortable {{ parm.srt == 'societe' ? 'sorted' : '' }} {{ parm.ord == 'asc' ? 'sort_asc' : 'sort_desc' }}">
<span>
{% trans 'admin::compte-utilisateur societe' %}
</span>
<span class="ord_notifier">
{{ parm.ord == 'asc' ? '&#x25bc;' : '&#x25B2;' }}
</span>
<input type="hidden" name="srt" value="societe" />
</th>
<th>
<th class="sortable {{ parm.srt == 'usr_mail' ? 'sorted' : '' }} {{ parm.ord == 'asc' ? 'sort_asc' : 'sort_desc' }}">
<span>
{% trans 'admin::compte-utilisateur email' %}
</span>
<span class="ord_notifier">
{{ parm.ord == 'asc' ? '&#x25bc;' : '&#x25B2;' }}
</span>
<input type="hidden" name="srt" value="usr_mail" />
</th>
<th>
<th class="sortable {{ parm.srt == 'pays' ? 'sorted' : '' }} {{ parm.ord == 'asc' ? 'sort_asc' : 'sort_desc' }}">
<span>
{% trans 'admin::compte-utilisateur pays' %}
</span>
<span class="ord_notifier">
{{ parm.ord == 'asc' ? '&#x25bc;' : '&#x25B2;' }}
</span>
<input type="hidden" name="srt" value="pays" />
</th>
<th>
<th class="sortable {{ parm.srt == 'lastModel' ? 'sorted' : '' }} {{ parm.ord == 'asc' ? 'sort_asc' : 'sort_desc' }}">
<span>
{% trans 'admin::compte-utilisateur dernier modele applique' %}
</span>
<span class="ord_notifier">
{{ parm.ord == 'asc' ? '&#x25bc;' : '&#x25B2;' }}
</span>
<input type="hidden" name="srt" value="lastModel" />
</th>
<th>
<th class="sortable {{ parm.srt == 'usr_creationdate' ? 'sorted' : '' }} {{ parm.ord == 'asc' ? 'sort_asc' : 'sort_desc' }}">
<span>
{% trans 'admin::compte-utilisateur date de creation' %}
</span>
<span class="ord_notifier">
{{ parm.ord == 'asc' ? '&#x25bc;' : '&#x25B2;' }}
</span>
<input type="hidden" name="srt" value="usr_creationdate" />
</th>
</tr>
</thead>

View File

@@ -18,6 +18,29 @@ $(document).ready(function(){
$(n).addClass('selected');
return true;
}
$('#users th.sortable').live('click', function(){
var $this = $(this);
var sort = $('input', $this).val();
if((sort == $('#users_page_form input[name="srt"]').val())
&& ($('#users_page_form input[name="ord"]').val() == 'asc'))
{
var ord = 'desc';
}
else
{
var ord = 'asc';
}
$('#users_page_form input[name="srt"]').val(sort);
$('#users_page_form input[name="ord"]').val(ord);
$('#users_page_form').trigger('submit');
}).live('mouseover', function(){$(this).addClass('hover');})
.live('mouseout', function(){$(this).removeClass('hover');});
var buttons = {};
buttons[language.create_user] = function(){

View File

@@ -141,4 +141,20 @@ table.admintable tbody .dropdown{
.users_col.options{
cursor:pointer;
color:#AFAFAF;
}
#users th.sortable span{
margin:0 5px;
}
#users th.sortable{
cursor:pointer;
}
#users th.sortable.hover,
#users th.sortable.sorted{
background-color:#F0AD30;
}
#users th.sortable span.ord_notifier{
display:none;
}
#users th.sortable.sorted span.ord_notifier{
display:inline;
}