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