summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--FS/FS/ClientAPI/MyAccount.pm20
-rw-r--r--fs_selfservice/FS-SelfService/cgi/ticket_summary.html5
-rw-r--r--httemplate/view/cust_main/tickets.html17
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!<FORM ACTION="$selfurl" METHOD="POST">! .
qq!<INPUT TYPE="hidden" NAME="session" VALUE="$session_id">! .
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;
}