0c370744ba41dc3007d85eab40955c81baa66ddf
[freeside.git] / httemplate / elements / notify-tickets.html
1 % if ($enabled) {
2 <div style="font-weight: bold; vertical-align: bottom; text-align: left">
3 %   if ( $UnrepliedTickets->Count > 0 ) {
4   <a href="<% $fsurl %>rt/Search/UnrepliedTickets.html">
5     <div class="dot" style="background-color: green"></div>
6     <% emt('New activity on [quant,_1,ticket]', $UnrepliedTickets->Count) %>
7   </a>
8 %   } else {
9   <% emt('No new activity on tickets') %>
10 %   }
11 </div>
12 % }
13 <%init>
14 use Class::Load 'load_class';
15
16 use FS::Conf;
17 my $conf = new FS::Conf;
18
19 my $enabled = $FS::TicketSystem::system eq 'RT_Internal';
20 $enabled = 0 if $FS::CurrentUser::CurrentUser->option('hide_notify_tickets');
21 $enabled = 0 if $conf->exists('rt-hide_activity_notification');
22 my $UnrepliedTickets;
23 if ($enabled) {
24   my $class = 'RT::Search::UnrepliedTickets';
25   load_class($class);
26   my $session = eval { FS::TicketSystem->session; };
27   if ( $session ) {
28     my $CurrentUser = $session->{CurrentUser};
29     # if there are no tickets the current user could see, always hide it
30     my $AnyTickets = RT::Tickets->new($CurrentUser);
31     foreach my $status (qw(resolved rejected deleted)) {
32       $AnyTickets->RT::SearchBuilder::Limit(
33         FIELD => 'Status',
34         OPERATOR => '!=',
35         ENTRYAGGREGATOR => 'AND',
36         VALUE => $status,
37       );
38     }
39     $enabled = 0 if $AnyTickets->Count == 0;
40
41     $UnrepliedTickets = RT::Tickets->new($CurrentUser);
42     my $search = $class->new(TicketsObj => $UnrepliedTickets);
43     $search->Prepare;
44   } else {
45     $enabled = 0;
46   }
47 }
48 </%init>