% if ($error) {
<% $cgi->redirect(popurl(2). "timeworked.html?". $cgi->query_string) %>
% } else {
-<% $cgi->redirect(popurl(3). "search/timeworked.html?begin=$begin;end=$end") %>
+<% $cgi->redirect(popurl(3). "search/timeworked.html?begin=$begin;end=$end;category=$category") %>
% }
<%init>
my($begin, $end) = FS::UI::Web::parse_beginning_ending($cgi);
+( my $category = $cgi->param('category') ) =~ /^\w*$/
+ or die 'illegal category';#no need for nice error messages for XSS, just avoid
+
my @acct_rt_transaction;
foreach my $transaction (
map { /^transactionid(\d+)$/; $1; } grep /^transactionid\d+$/, $cgi->param
<BR>
-<INPUT TYPE="hidden" NAME="begin" VALUE="<% $cgi->param('begin') |h %>">
-<INPUT TYPE="hidden" NAME="end" VALUE="<% $cgi->param('end') |h %>">
+<INPUT TYPE="hidden" NAME="begin" VALUE="<% $cgi->param('begin') |h %>">
+<INPUT TYPE="hidden" NAME="end" VALUE="<% $cgi->param('end') |h %>">
+<INPUT TYPE="hidden" NAME="category" VALUE="<% $cgi->param('category') |h %>">
<INPUT TYPE="submit" NAME="submit" VALUE="<% $title %>">
</FORM>
<& elements/search.html,
'title' => 'Time Worked',
'name' => 'time',
- 'html_form' => qq!<FORM NAME="timeForm" ACTION="${p}misc/timeworked.html" METHOD="POST">!,
+ 'html_form' => $html_form,
'query' => $query,
'count_query' => $count_query,
'header' => [ '#',
$where .= " AND $str2time_sql Transactions.Created $closing >= $begin ".
" AND $str2time_sql Transactions.Created $closing <= $end ";
+my $html_form =
+ qq( <FORM NAME="timeForm" ACTION="${p}misc/timeworked.html" METHOD="POST"> );
if ($cgi->param('category') =~ /^(\w+)$/) {
$where .= " AND ocfv_TimeType.Content = '$1'";
+ $html_form .= qq( <INPUT TYPE="hidden" NAME="category" VALUE="$1"> );
}
-warn $where."\n";;
my $from = "
FROM Transactions