add "select all" and "unselect" all buttons to bulk queue operations
[freeside.git] / httemplate / search / queue.html
1 %
2 %
3 %my $hashref = {};
4 %
5 %my $conf = new FS::Conf;
6 %my $dangerous = $conf->exists('queue_dangerous_controls');
7 %
8 %my $noactions = 0;
9 %
10 %my $count_query = 'SELECT COUNT(*) FROM queue'; # + $hashref
11 %
12 %my $areboxes = 0;
13 %
14 %
15 <% include( 'elements/search.html',
16                  'title'       => 'Job Queue',
17                  'menubar'     => [ 'Main menu' => $p, ],
18                  'name'        => 'jobs',
19                  'html_form'   => qq!<FORM NAME="jobForm" ACTION="$p/misc/queue.cgi" METHOD="POST">!,
20                  'query'       => { 'table'     => 'queue',
21                                     'hashref'   => $hashref,
22                                     'extra_sql' => 'ORDER BY jobnum',
23                                   },
24                  'count_query' => $count_query,
25                  'header' => [ '#',
26                                'Job',
27                                'Args',
28                                'Date',
29                                'Status',
30                                'Account', # unless $hashref->{'svcnum'}
31                                '', # checkbox column
32                              ],
33                  'fields' => [
34                                'jobnum',
35                                'job',
36                                sub {
37                                  my $queue = shift;
38                                  if (    $dangerous
39                                       || $queue->job !~ /^FS::part_export::/
40                                       || !$noactions
41                                     )
42                                  {
43                                    encode_entities( join(' ', $queue->args) );
44                                  } else {
45                                    '';
46                                  }
47                                },
48                                sub {
49                                  time2str( "%a %b %e %T %Y", shift->_date );
50                                },
51                                sub {
52                                  my $queue = shift;
53                                  my $jobnum = $queue->jobnum;
54                                  my $status = $queue->status;
55                                  $status .= ': '. $queue->statustext
56                                    if $queue->statustext;
57                                  my @queue_depend = $queue->queue_depend;
58                                  $status .= ' (waiting for '.
59                                             join(', ', map { $_->depend_jobnum }
60                                                            @queue_depend
61                                                 ). 
62                                             ')'
63                                    if @queue_depend;
64                                  my $changable = $dangerous
65                                                  || ( ! $noactions
66                                                       && $status =~ /^failed/
67                                                       || $status =~ /^locked/
68                                                     );
69                                  if ( $changable ) {
70                                    $status .=
71                                      qq! (&nbsp;<A HREF="$p/misc/queue.cgi?jobnum=$jobnum&action=new">retry</A>&nbsp;|!.
72                                      qq!&nbsp;<A HREF="$p/misc/queue.cgi?jobnum=$jobnum&action=del">remove</A>&nbsp;)!;
73                                  }
74                                  $status;
75                                },
76                                sub {
77                                  my $queue = shift;
78                                  # return '' if $hashref->{'svcnum'}
79                                  my $cust_svc = $queue->cust_svc;
80                                  my $account;
81                                  if ( $cust_svc ) {
82                                    my $table = $cust_svc->part_svc->svcdb;
83                                    my $label = ( $cust_svc->label )[1];
84                                    qq!<A HREF="../view/$table.cgi?!. $queue->svcnum.
85                                    qq!">$label</A>!;
86                                  } else {
87                                    '';
88                                  }
89                                },
90                                sub {
91                                  my $queue = shift;
92                                  my $jobnum = $queue->jobnum;
93                                  my $status = $queue->status;
94                                  my $changable = $dangerous
95                                                  || ( ! $noactions
96                                                       && $status eq 'failed'
97                                                       || $status eq 'locked'
98                                                     );
99                                  if ( $changable ) {
100                                    $areboxes = 1;
101                                    qq!<INPUT NAME="jobnum$jobnum" TYPE="checkbox" VALUE="1">!;
102                                  } else {
103                                    '';
104                                  }
105                                },
106                              ],
107                  #'links' =>  [
108                  #              '',
109                  #              '',
110                  #              '',
111                  #              '',
112                  #              '',
113                  #              '', #$acct_link,
114                  #              '',
115                  #            ],
116                  'html_foot' => sub {
117                                   if ( $areboxes ) {
118                                     '<BR><INPUT TYPE="button" VALUE="select all" onClick="setAll(true)">'.
119                                     '<INPUT TYPE="button" VALUE="unselect all" onClick="setAll(false)">'.
120                                     '<BR><INPUT TYPE="submit" NAME="action" VALUE="retry selected">'.
121                                     '<INPUT TYPE="submit" NAME="action" VALUE="remove selected"><BR>'.
122                                     '<SCRIPT TYPE="text/javascript">'.
123                                     '  function setAll(setTo) { '.
124                                     '    theForm = document.jobForm;'.
125                                     '    for (i=0,n=theForm.elements.length;i<n;i++)'.
126                                     '      if (theForm.elements[i].name.indexOf("jobnum") != -1)'.
127                                     '        theForm.elements[i].checked = setTo;'.
128                                     '  }'.
129                                     '</SCRIPT>';
130                                   } else {
131                                     '';
132                                   }
133                                 },
134              )
135
136 %>