From 3805d9b6fef0f8627bd74066cfd28d279ae5341a Mon Sep 17 00:00:00 2001 From: mark Date: Wed, 24 Aug 2011 21:00:45 +0000 Subject: [PATCH] selfservice priority sort order, #14029 --- FS/FS/ClientAPI/MyAccount.pm | 20 +++++++++++++++++++- .../FS-SelfService/cgi/ticket_summary.html | 5 ----- httemplate/view/cust_main/tickets.html | 17 ++++++++++++++--- 3 files changed, 33 insertions(+), 9 deletions(-) diff --git a/FS/FS/ClientAPI/MyAccount.pm b/FS/FS/ClientAPI/MyAccount.pm index 6fa4c3d9e..7db49d55e 100644 --- a/FS/FS/ClientAPI/MyAccount.pm +++ b/FS/FS/ClientAPI/MyAccount.pm @@ -339,7 +339,25 @@ sub customer_info { $return{balance} = $cust_main->balance; } - $return{tickets} = [ ($cust_main->tickets) ]; + my @tickets = $cust_main->tickets; + # unavoidable false laziness w/ httemplate/view/cust_main/tickets.html + if ( FS::TicketSystem->selfservice_priority ) { + my $dir = $conf->exists('ticket_system-priority_reverse') ? -1 : 1; + $return{tickets} = [ + sort { + ( + ($a->{'_selfservice_priority'} eq '') <=> + ($b->{'_selfservice_priority'} eq '') + ) || + ( $dir * + ($b->{'_selfservice_priority'} <=> $a->{'_selfservice_priority'}) + ) + } @tickets + ]; + } + else { + $return{tickets} = \@tickets; + } unless ( $session->{'pkgnum'} ) { my @open = map { diff --git a/fs_selfservice/FS-SelfService/cgi/ticket_summary.html b/fs_selfservice/FS-SelfService/cgi/ticket_summary.html index 781b1e763..18226221d 100644 --- a/fs_selfservice/FS-SelfService/cgi/ticket_summary.html +++ b/fs_selfservice/FS-SelfService/cgi/ticket_summary.html @@ -10,11 +10,6 @@ my $col = $col1; my $can_set_priority = grep { exists($_->{'_selfservice_priority'}) } @tickets; if ( $can_set_priority ) { - use sort 'stable'; - @tickets = sort { - ($b->{'_selfservice_priority'} || 0) <=> - ($a->{'_selfservice_priority'} || 0) - } @tickets; $OUT .= qq!
! . qq!! . diff --git a/httemplate/view/cust_main/tickets.html b/httemplate/view/cust_main/tickets.html index 863c66be4..adfaead6e 100644 --- a/httemplate/view/cust_main/tickets.html +++ b/httemplate/view/cust_main/tickets.html @@ -133,11 +133,22 @@ my $new_link = FS::TicketSystem->href_new_ticket( $cust_main ); my $ss_priority = FS::TicketSystem->selfservice_priority; if ( $ss_priority ) { + my $dir = $conf->exists('ticket_system-priority_reverse') ? -1 : 1; use sort 'stable'; - no warnings 'uninitialized'; + # sort in the following way: @tickets = sort { - ($b->{'content'} eq $a->{'content'}) && - $b->{'_selfservice_priority'} <=> $a->{'_selfservice_priority'} + # within a severity level... + ( $a->{'content'} eq $b->{'content'} ) ? ( + # no-priority tickets sort last + ( + ($a->{'_selfservice_priority'} eq '') <=> + ($b->{'_selfservice_priority'} eq '') + ) || + # otherwise obey ticket_system-priority_reverse + ( $dir * + ($b->{'_selfservice_priority'} <=> $a->{'_selfservice_priority'}) + ) + ) : 0; # but don't rearrange between severity levels } @tickets; } -- 2.11.0