ticket display sort order, #13199
[freeside.git] / httemplate / view / cust_main / tickets.html
1 <FORM METHOD="GET" NAME="CreateTicketForm" STYLE="display:inline">
2 <SCRIPT TYPE="text/javascript">
3 function updateTicketLink() {
4   var link = document.getElementById('CreateTicketLink');
5   var selector = document.getElementById('Queue')
6   link.href = "<% $new_base.'?'.
7     join(';', map(
8       { ($_ eq 'Queue') ? () : "$_=$new_param{$_}"} 
9     keys %new_param),'Queue=') %>" + selector.options[selector.selectedIndex].value;
10 }
11 </SCRIPT>
12 <A id="CreateTicketLink" HREF="<% $new_link %>"><% mt('Create new ticket') |h %></A>
13  <% mt('in queue') |h %> 
14 %# fetch list of queues in which the user can create tickets
15 % my %queues = FS::TicketSystem->queues('', 'CreateTicket');
16 % if( $conf->exists('ticket_system-force_default_queueid') ) {
17 <B><% $queues{$new_param{'Queue'}} %></B>
18 <INPUT TYPE="hidden" NAME="Queue" VALUE="<% $new_param{'Queue'} %>">
19 % }
20 % else {
21 <SELECT NAME="Queue" id="Queue" onchange="updateTicketLink()">
22 % foreach my $queueid ( sort { $queues{$a} cmp $queues{$b} } keys %queues ) {
23     <OPTION VALUE="<% $queueid %>"
24             <% $queueid == $new_param{'Queue'} ? 'SELECTED' : '' %>
25     ><% $queues{$queueid} |h %>
26 % }
27 </SELECT>
28 <SCRIPT DEFER TYPE="text/javascript">updateTicketLink();</SCRIPT>
29 % }
30 </FORM>
31 <BR>
32
33 (<A HREF="<% $open_link %>"><% mt("View $openlabel tickets for this customer") |h %></A>)
34 (<A HREF="<% $res_link  %>"><% mt('View resolved tickets for this customer') |h %></A>)
35 <BR><BR>
36
37 <& /elements/table-grid.html &>
38 % my $bgcolor1 = '#eeeeee';
39 %   my $bgcolor2 = '#ffffff';
40 %   my $bgcolor = '';
41
42 <TR>
43   <TH CLASS="grid" BGCOLOR="#cccccc"><% mt('#') |h %></TH>
44   <TH CLASS="grid" BGCOLOR="#cccccc"><% mt('Subject') |h %></TH>
45   <TH CLASS="grid" BGCOLOR="#cccccc"><% mt('Status') |h %></TH>
46   <TH CLASS="grid" BGCOLOR="#cccccc"><% mt('Queue') |h %></TH>
47   <TH CLASS="grid" BGCOLOR="#cccccc"><% mt('Owner') |h %></TH>
48   <TH CLASS="grid" BGCOLOR="#cccccc"><% mt('Due') |h %></TH>
49   <TH CLASS="grid" BGCOLOR="#cccccc"><% mt('Estimated Time') |h %></TH>
50   <TH CLASS="grid" BGCOLOR="#cccccc"><% mt('Priority') |h %></TH>
51 % if ( $ss_priority ) {
52   <TH CLASS="grid" BGCOLOR="#cccccc"><% mt('Customer Priority') |h %></TH>
53 % }
54 </TR>
55
56 % foreach my $ticket ( @tickets ) {
57 %     my $href = FS::TicketSystem->href_ticket($ticket->{id});
58 %     if ( $bgcolor eq $bgcolor1 ) {
59 %       $bgcolor = $bgcolor2;
60 %     } else {
61 %       $bgcolor = $bgcolor1;
62 %     }
63
64   <TR>
65   
66     <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
67       <A HREF=<%$href%>><% $ticket->{id} %></A>
68     </TD>
69   
70     <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
71       <A HREF=<%$href%>><% $ticket->{subject} %></A>
72     </TD>
73   
74     <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
75       <% $ticket->{status} %>
76     </TD>
77   
78     <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
79       <% $ticket->{queue} %>
80     </TD>
81   
82     <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
83       <% $ticket->{owner} %>
84     </TD>
85
86     <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
87       <% $date_formatter->($ticket->{due}) %>
88     </TD>
89
90     <TD ALIGN="right" CLASS="grid" BGCOLOR="<% $bgcolor %>">
91       <% $ticket->{timeestimated} %>
92     </TD>
93   
94     <TD ALIGN="right" CLASS="grid" BGCOLOR="<% $bgcolor %>">
95       <% $ticket->{content}
96            ? $ticket->{content}.' ('.$ticket->{priority}.')'
97            : $ticket->{priority}
98       %>
99     </TD>
100
101 %   if ( $ss_priority ) {
102     <TD ALIGN="right" CLASS="grid" BGCOLOR="<% $bgcolor %>">
103       <% $ticket->{"CF.{$ss_priority}"} %>
104     </TD>
105 %   }
106
107   </TR>
108
109 % } 
110
111 </TABLE>
112
113 <%init>
114 use Date::Format 'time2str';
115 use Date::Parse 'str2time';
116
117 my( $conf ) = new FS::Conf;
118 my( $cust_main ) = @_;
119 my( @tickets )  = $cust_main->tickets;
120
121 my $open_link = FS::TicketSystem->href_customer_tickets($cust_main->custnum);
122 my $openlabel = join('/', FS::TicketSystem->statuses );
123
124 my $res_link  = FS::TicketSystem->href_customer_tickets(
125                   $cust_main->custnum,
126                   { 'statuses' => [ 'resolved' ] }
127                 );
128
129 my( $new_base, %new_param ) = 
130   FS::TicketSystem->href_params_new_ticket( $cust_main );
131
132 my $new_link = FS::TicketSystem->href_new_ticket( $cust_main );
133
134 my $ss_priority = FS::TicketSystem->selfservice_priority;
135 if ( $ss_priority ) {
136   use sort 'stable';
137   no warnings 'uninitialized';
138   @tickets = sort { 
139     ($b->{'content'} eq $a->{'content'}) &&
140     $b->{'_selfservice_priority'} <=> $a->{'_selfservice_priority'}
141   } @tickets;
142 }
143
144 my $format = $conf->config('date_format') || '%Y-%m-%d';
145
146 my $date_formatter = sub {
147   my $time = str2time($_[0], 'GMT');
148   # exclude times within 24 hours of zero
149   ($time > 86400) ? time2str($format, $time) : '';
150 };
151
152 </%init>