Added UserList sort options

This commit is contained in:
Yung Han Khoe 2008-05-19 20:59:14 +00:00
parent bc88cb3183
commit 160ae78f61
2 changed files with 64 additions and 11 deletions

View file

@ -93,6 +93,16 @@ sub definition {
my $definition = shift;
my %properties;
my $i18n = WebGUI::International->new($session, 'Asset_UserList');
my %sortByOptions;
tie %sortByOptions, 'Tie::IxHash';
my $fields = $session->db->read("SELECT field.fieldName, field.label FROM userProfileField as field "
."left join userProfileCategory as cat USING(profileCategoryId) ORDER BY cat.sequenceNumber, field.sequenceNumber");
while (my $field = $fields->hashRef){
my $label = WebGUI::Operation::Shared::secureEval($session,$field->{label});
$sortByOptions{$field->{fieldName}} = $label;
}
tie %properties, 'Tie::IxHash';
%properties = (
templateId =>{
@ -137,6 +147,23 @@ sub definition {
label=>$i18n->get("showOnlyVisibleAsNamed label"),
hoverHelp=>$i18n->get('showOnlyVisibleAsNamed description'),
},
sortOrder =>{
fieldType=>"selectBox",
defaultValue=>'asc',
tab=>'display',
options=>{ asc => $i18n->get('ascending'),
desc => $i18n->get('descending') },
label=>$i18n->get('sort order'),
hoverHelp=>$i18n->get('sort order description'),
},
sortBy =>{
fieldType=>"selectBox",
defaultValue=>'lastName',
tab=>'display',
options=>\%sortByOptions,
label=>$i18n->get('sort by'),
hoverHelp=>$i18n->get('sort by description'),
},
);
push(@{$definition}, {
@ -294,18 +321,13 @@ sub view {
# $error->info("created constraint, time :".(time() - $start_time));
my $formOrderBy = $self->session->form->process('orderBy');
my $orderBy = 'userName';
my $orderType = $self->session->form->process('orderType') || 'asc';
my $orderBy = $self->session->form->process('orderBy') || $self->get('sortBy') || 'users.username';
my $orderType = $self->session->form->process('orderType') || $self->get('sortOrder') || 'asc';
my @orderByUserProperties = ('dateCreated', 'lastUpdated', 'karma', 'userId');
if ($formOrderBy){
if(isIn($formOrderBy,@profileFieldNames)){
$orderBy = $formOrderBy;
}elsif(isIn($formOrderBy,@orderByUserProperties)){
$orderBy = 'users.'.$formOrderBy;
}
}
my @orderByUserProperties = ('dateCreated', 'lastUpdated', 'karma', 'userId');
if(isIn($orderBy,@orderByUserProperties)){
$orderBy = 'users.'.$orderBy;
}
$sql .= " order by ".$orderBy." ".$orderType;
($defaultPublicProfile) = $self->session->db->quickArray("SELECT dataDefault FROM userProfileField WHERE fieldName='publicProfile'");

View file

@ -249,6 +249,37 @@ true for the 'email' profile field.|,
lastUpdated => 1081514049
},
'sort by' => {
message => q|Sort By|,
lastUpdated => 1109698614,
},
'sort order' => {
message => q|Sort Order|,
lastUpdated => 1109698614,
},
'sort by description' => {
message => q|By default, all users are displayed in a sorted order. Use this
field to choose by what field they are sorted.|,
lastUpdated => 1119070429,
},
'sort order description' => {
message => q|Sort in ascending or descending order.|,
lastUpdated => 1119070429,
},
'ascending' => {
message => q|Ascending|,
lastUpdated => 1113673328,
},
'descending' => {
message => q|Descending|,
lastUpdated => 1113673330,
},
};