xss
[freeside.git] / httemplate / elements / table-tickets.html
1 <& /elements/form-create_ticket.html, object => $object &>
2  |
3 View
4 <A HREF="<% $open_link %>"><% mt($openlabel) |h %></A> |
5 <A HREF="<% $res_link  %>"><% mt('resolved') |h %></A>
6  <BR>
7
8 % if ( @tickets ) {
9
10 <& /elements/table-grid.html &>
11 % my $bgcolor1 = '#eeeeee';
12 %   my $bgcolor2 = '#ffffff';
13 %   my $bgcolor = '';
14
15 <THEAD>
16 <TR>
17   <TH CLASS="grid" BGCOLOR="#cccccc"></TH>
18   <TH CLASS="grid" BGCOLOR="#cccccc"><% mt('#') |h %></TH>
19   <TH CLASS="grid" BGCOLOR="#cccccc"><% mt('Subject') |h %></TH>
20   <TH CLASS="grid" BGCOLOR="#cccccc"><% mt('Status') |h %></TH>
21   <TH CLASS="grid" BGCOLOR="#cccccc"><% mt('Queue') |h %></TH>
22   <TH CLASS="grid" BGCOLOR="#cccccc"><% mt('Owner') |h %></TH>
23   <TH CLASS="grid" BGCOLOR="#cccccc"><% mt('Due') |h %></TH>
24   <TH CLASS="grid" BGCOLOR="#cccccc"><% mt('Estimated Time') |h %></TH>
25   <TH CLASS="grid" BGCOLOR="#cccccc"><% mt('Priority') |h %></TH>
26 % if ( $ss_priority ) {
27   <TH CLASS="grid" BGCOLOR="#cccccc"><% mt('Customer Priority') |h %></TH>
28 % }
29 % if ( $object->isa('FS::cust_main') ) {
30   <TH CLASS="grid" BGCOLOR="#cccccc"><% mt('Service') |h %></TH>
31 % }
32 </TR>
33 </THEAD>
34
35 % foreach my $ticket ( @tickets ) {
36 %     my $href = FS::TicketSystem->href_ticket($ticket->{id});
37 %     if ( $bgcolor eq $bgcolor1 ) {
38 %       $bgcolor = $bgcolor2;
39 %     } else {
40 %       $bgcolor = $bgcolor1;
41 %     }
42
43   <TR>
44   
45     <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
46 %     if ( $ticket->{is_unreplied} ) {
47         <A CLASS="dot" STYLE="background-color: green" HREF=<%$href%>>
48 %     } else {
49 %       # placeholder
50         <A CLASS="dot" STYLE="visibility: hidden" HREF=<%$href%>>
51 %     }
52       </A>
53     </TD>
54
55     <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
56       <A HREF=<%$href%>><% $ticket->{id} %></A>
57     </TD>
58   
59     <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
60       <A HREF=<%$href%>><% $ticket->{subject} |h %></A>
61     </TD>
62   
63     <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
64       <% $ticket->{status} %>
65     </TD>
66   
67     <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
68       <% $ticket->{queue} %>
69     </TD>
70   
71     <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
72       <% $ticket->{owner} |h %>
73     </TD>
74
75     <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
76       <% $date_formatter->($ticket->{due}) %>
77     </TD>
78
79     <TD ALIGN="right" CLASS="grid" BGCOLOR="<% $bgcolor %>">
80       <% $ticket->{timeestimated} %>
81     </TD>
82   
83     <TD ALIGN="right" CLASS="grid" BGCOLOR="<% $bgcolor %>">
84       <% $ticket->{content}
85            ? $ticket->{content}.' ('.$ticket->{priority}.')'
86            : $ticket->{priority}
87          |h
88       %>
89     </TD>
90
91 %   if ( $ss_priority ) {
92     <TD ALIGN="right" CLASS="grid" BGCOLOR="<% $bgcolor %>">
93       <% $ticket->{"CF.{$ss_priority}"} |h %>
94     </TD>
95 %   }
96 %   if ( $object->isa('FS::cust_main') ) {
97     <TD CLASS="grid" BGCOLOR="<% $bgcolor %>"><FONT SIZE=-1><B>
98 %     foreach (@{ $ticket->{svcnums} }) {
99 %       my $cust_svc = FS::cust_svc->by_key($_) or next;
100         <% FS::UI::Web::svc_label_link($m, $cust_svc->part_svc, $cust_svc) %>
101         <BR>
102 %     }
103     </B></FONT></TD>
104 %   }
105
106   </TR>
107
108 % } 
109
110 %}
111
112 </TABLE>
113
114 <%init>
115
116 my %opt = @_;
117 my $conf = new FS::Conf;
118
119 return '' unless $conf->config('ticket_system');
120
121 my $object = $opt{'object'};
122 $object = $object->cust_svc if $object->isa('FS::svc_Common');
123 my( @tickets )  = $object->tickets;
124
125 my ($openlabel, $open_link, $res_link, $thing);
126 $openlabel = join('/', FS::TicketSystem->statuses );
127
128 # not the nicest way to do this--FS::has_tickets_Common?
129 if ( $object->isa('FS::cust_main') ) {
130   $thing  = 'customer';
131   $open_link = FS::TicketSystem->href_customer_tickets($object->custnum);
132
133   $res_link  = FS::TicketSystem->href_customer_tickets(
134                     $object->custnum,
135                     { 'statuses' => [ 'resolved' ] }
136                   );
137 } elsif ( $object->isa('FS::cust_svc') ) {
138
139   return '' unless $object->pkgnum;
140
141   $thing = 'service';
142   $open_link = FS::TicketSystem->href_service_tickets($object->svcnum);
143
144   $res_link  = FS::TicketSystem->href_service_tickets(
145                     $object->svcnum,
146                     { 'statuses' => [ 'resolved' ] }
147                   );
148 }
149
150 my $ss_priority = FS::TicketSystem->selfservice_priority;
151 if ( $ss_priority ) {
152   my $dir = $conf->exists('ticket_system-priority_reverse') ? -1 : 1;
153   use sort 'stable';
154   # sort in the following way:
155   @tickets = sort { 
156     # within a severity level...
157     ( $a->{'content'} eq $b->{'content'} ) ? (
158       # no-priority tickets sort last
159       (
160         ($a->{'_selfservice_priority'} eq '') <=> 
161         ($b->{'_selfservice_priority'} eq '')
162       ) ||
163       # otherwise obey ticket_system-priority_reverse
164       ( $dir * 
165         ($b->{'_selfservice_priority'} <=> $a->{'_selfservice_priority'})
166       )
167     ) : 0; # but don't rearrange between severity levels
168   } @tickets;
169 }
170
171 my $format = $conf->config('date_format') || '%Y-%m-%d';
172
173 my $date_formatter = sub {
174   my $time = parse_datetime($_[0], 'GMT');
175   # exclude times within 24 hours of zero
176   ($time > 86400) ? time2str($format, $time) : '';
177 };
178
179 </%init>