summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Kohler <ivan@freeside.biz>2013-02-17 14:21:53 -0800
committerIvan Kohler <ivan@freeside.biz>2013-02-17 14:21:53 -0800
commitc13c6407510f6fd1783ce0fbd97800afa27c30b5 (patch)
tree2aa89f3303f46f08bc82f109eae4b9cc313db676
parent4e619bb76046bc35f0d7d29ae743b629f2a34030 (diff)
parent8b590098fbd78765f97d44f5500a967b4afdbbe1 (diff)
Merge branch 'master' of git.freeside.biz:/home/git/freeside
-rw-r--r--FS/FS/AccessRight.pm2
-rw-r--r--FS/FS/cust_main/Location.pm30
-rwxr-xr-xhttemplate/browse/part_pkg.cgi68
-rw-r--r--httemplate/edit/bulk-part_pkg.html74
-rw-r--r--httemplate/edit/process/bulk-part_pkg.html30
-rw-r--r--httemplate/elements/checkbox-tristate.html78
-rwxr-xr-xhttemplate/search/477.html5
-rwxr-xr-xhttemplate/search/477partIA_detail.html6
-rwxr-xr-xhttemplate/search/477partIA_summary.html6
-rwxr-xr-xhttemplate/search/477partIIA.html6
-rwxr-xr-xhttemplate/search/477partV.html10
-rwxr-xr-xhttemplate/search/477partVI_census.html6
-rw-r--r--httemplate/search/agent_inventory.html5
-rwxr-xr-xhttemplate/search/bill_batch.cgi6
-rw-r--r--httemplate/search/cdr.html37
-rw-r--r--httemplate/search/cust_bill_event.cgi6
-rw-r--r--httemplate/search/cust_bill_pay.html6
-rw-r--r--httemplate/search/cust_bill_pkg_discount.html6
-rw-r--r--httemplate/search/cust_credit_bill.html6
-rw-r--r--httemplate/search/cust_credit_bill_pkg.html6
-rw-r--r--httemplate/search/cust_credit_refund.html6
-rw-r--r--httemplate/search/cust_event.html5
-rw-r--r--httemplate/search/cust_main-zip.html5
-rwxr-xr-xhttemplate/search/cust_pay_batch.cgi5
-rw-r--r--httemplate/search/cust_pkg_discount.html6
-rw-r--r--httemplate/search/cust_pkg_svc.html6
-rw-r--r--httemplate/search/cust_tax_adjustment.html7
-rw-r--r--httemplate/search/cust_tax_exempt.cgi6
-rw-r--r--httemplate/search/cust_tax_exempt_pkg.cgi5
-rw-r--r--httemplate/search/elements/checkbox-foot.html86
-rw-r--r--httemplate/search/inventory_item.html6
-rw-r--r--httemplate/search/mailinglistmember.html5
-rw-r--r--httemplate/search/part_pkg.html6
-rwxr-xr-xhttemplate/search/pay_batch.cgi5
-rw-r--r--httemplate/search/phone_avail.html6
-rw-r--r--httemplate/search/phone_inventory_provisioned.html6
-rw-r--r--httemplate/search/prepay_credit.html6
-rw-r--r--httemplate/search/prospect_main.html5
-rwxr-xr-xhttemplate/search/qual.cgi6
-rw-r--r--httemplate/search/queue.html7
-rw-r--r--httemplate/search/reg_code.html6
-rwxr-xr-xhttemplate/search/report_477.html4
-rw-r--r--httemplate/search/rt_ticket.html5
-rw-r--r--httemplate/search/rt_transaction.html5
-rw-r--r--httemplate/search/sql.html6
-rwxr-xr-xhttemplate/search/svc_broadband.cgi6
-rwxr-xr-xhttemplate/search/svc_dish.cgi6
-rwxr-xr-xhttemplate/search/svc_domain.cgi6
-rwxr-xr-xhttemplate/search/svc_external.cgi7
-rwxr-xr-xhttemplate/search/svc_forward.cgi6
-rw-r--r--httemplate/search/svc_hardware.cgi5
-rw-r--r--httemplate/search/svc_phone.cgi6
-rwxr-xr-xhttemplate/search/svc_www.cgi6
-rw-r--r--httemplate/search/timeworked.html7
-rw-r--r--httemplate/search/unprovisioned_services.html6
55 files changed, 497 insertions, 184 deletions
diff --git a/FS/FS/AccessRight.pm b/FS/FS/AccessRight.pm
index bd8a889e2..50fb0e3cb 100644
--- a/FS/FS/AccessRight.pm
+++ b/FS/FS/AccessRight.pm
@@ -342,6 +342,8 @@ tie my %rights, 'Tie::IxHash',
'Edit package definitions',
{ rightname=>'Edit global package definitions', global=>1 },
+ 'Bulk edit package definitions',
+
'Edit billing events',
{ rightname=>'Edit global billing events', global=>1 },
diff --git a/FS/FS/cust_main/Location.pm b/FS/FS/cust_main/Location.pm
index ba3513b2f..bd0af5348 100644
--- a/FS/FS/cust_main/Location.pm
+++ b/FS/FS/cust_main/Location.pm
@@ -167,15 +167,29 @@ sub _upgrade_data {
$cust_main->set(bill_locationnum => $bill_location->locationnum);
if ( $cust_main->get('ship_address1') ) {
- my $ship_location = FS::cust_location->new(
- {
- custnum => $custnum,
- map { $_ => $cust_main->get("ship_$_") } location_fields()
+ # detect duplicates
+ my $same = 1;
+ my $ship_location;
+ foreach (location_fields()) {
+ if ( length($cust_main->get("ship_$_")) and
+ $cust_main->get($_) ne $cust_main->get("ship_$_") ) {
+ $same = 0;
}
- );
- $error = $ship_location->insert;
- die "error migrating service address for customer $custnum: $error"
- if $error;
+ }
+
+ if ( $same ) {
+ $ship_location = $bill_location;
+ } else {
+ $ship_location = FS::cust_location->new(
+ {
+ custnum => $custnum,
+ map { $_ => $cust_main->get("ship_$_") } location_fields()
+ }
+ );
+ $error = $ship_location->insert;
+ die "error migrating service address for customer $custnum: $error"
+ if $error;
+ }
$cust_main->set(ship_locationnum => $ship_location->locationnum);
diff --git a/httemplate/browse/part_pkg.cgi b/httemplate/browse/part_pkg.cgi
index 5b19a309b..5dee5b8d1 100755
--- a/httemplate/browse/part_pkg.cgi
+++ b/httemplate/browse/part_pkg.cgi
@@ -1,6 +1,7 @@
<% include( 'elements/browse.html',
'title' => 'Package Definitions',
'html_init' => $html_init,
+ 'html_form' => $html_form,
'html_posttotal' => $html_posttotal,
'name' => 'package definitions',
'disableable' => 1,
@@ -21,6 +22,8 @@
'links' => \@links,
'align' => $align,
'link_field' => 'pkgpart',
+ 'html_init' => $html_init,
+ 'html_foot' => $html_foot,
)
%>
<%init>
@@ -34,6 +37,7 @@ my $acl_edit_global = $curuser->access_right($edit_global);
my $acl_config = $curuser->access_right('Configuration'); #to edit services
#and agent types
#and bulk change
+my $acl_edit_bulk = $curuser->access_right('Bulk edit package definitions');
die "access denied"
unless $acl_edit || $acl_edit_global;
@@ -131,9 +135,7 @@ $select = "
";
-my $html_init;
-#unless ( $cgi->param('active') ) {
- $html_init = qq!
+my $html_init = qq!
One or more service definitions are grouped together into a package
definition and given pricing information. Customers purchase packages
rather than purchase services directly.<BR><BR>
@@ -145,7 +147,6 @@ my $html_init;
</FORM>
<BR><BR>
!;
-#}
$cgi->param('dummy', 1);
@@ -436,6 +437,10 @@ if ( $taxclasses ) {
$align .= 'l';
}
+# make a table of report class optionnames => the actual
+my %report_optionname_name = map { 'report_option_'.$_->num, $_->name }
+ qsearch('part_pkg_report_option', { disabled => '' });
+
push @header, 'Plan options',
'Services';
#'Service', 'Quan', 'Primary';
@@ -446,8 +451,18 @@ push @fields,
if ( $part_pkg->plan ) {
my %options = $part_pkg->options;
-
- [ map {
+ # gather any options that are really report options,
+ # convert them to their user-friendly names,
+ # and sort them (I think?)
+ my @report_options =
+ sort { $a cmp $b }
+ map { $report_optionname_name{$_} }
+ grep { $options{$_}
+ and exists($report_optionname_name{$_}) }
+ keys %options;
+
+ my @rows = (
+ map {
[
{ 'data' => "$_: ",
'align' => 'right',
@@ -458,11 +473,30 @@ push @fields,
];
}
grep { $options{$_} =~ /\S/ }
- grep { $_ !~ /^(setup|recur)_fee$/ }
+ grep { $_ !~ /^(setup|recur)_fee$/
+ and $_ !~ /^report_option_\d+$/ }
keys %options
- ];
+ );
+ if ( @report_options ) {
+ push @rows,
+ [ { 'data' => 'Report classes',
+ 'align' => 'center',
+ 'style' => 'font-weight: bold',
+ 'colspan' => 2
+ } ];
+ foreach (@report_options) {
+ push @rows, [
+ { 'data' => $_,
+ 'align' => 'center',
+ 'colspan' => 2
+ }
+ ];
+ } # foreach @report_options
+ } # if @report_options
+
+ return \@rows;
- } else {
+ } else { # should never happen...
[ map { [
{ 'data' => uc($_),
@@ -540,4 +574,20 @@ $extra_count = ( $count_extra_sql ? ' AND ' : ' WHERE ' ). $extra_count
if $extra_count;
my $count_query = "SELECT COUNT(*) FROM part_pkg $count_extra_sql $extra_count";
+my $html_form = '';
+my $html_foot = '';
+if ( $acl_edit_bulk ) {
+ # insert a checkbox column
+ push @header, '';
+ push @fields, sub {
+ '<INPUT TYPE="checkbox" NAME="pkgpart" VALUE=' . $_[0]->pkgpart .'>';
+ };
+ push @links, '';
+ $align .= 'c';
+ $html_form = qq!<FORM ACTION="${p}edit/bulk-part_pkg.html" METHOD="POST">!;
+ $html_foot = include('/search/elements/checkbox-foot.html',
+ submit => 'edit report classes', # for now it's only report classes
+ ) . '</FORM>';
+}
+
</%init>
diff --git a/httemplate/edit/bulk-part_pkg.html b/httemplate/edit/bulk-part_pkg.html
new file mode 100644
index 000000000..751bf7e5d
--- /dev/null
+++ b/httemplate/edit/bulk-part_pkg.html
@@ -0,0 +1,74 @@
+<& /elements/header.html, 'Edit package report classes' &>
+%# change that title if we add any other editing controls
+
+%# this should be centralized somewhere
+<STYLE TYPE="text/css">
+.row0 { background-color: #eeeeee; }
+.row1 { background-color: #ffffff; }
+</STYLE>
+
+<FORM ACTION="process/bulk-part_pkg.html" METHOD="POST">
+<DIV>
+The following packages will be changed:<BR>
+% foreach my $pkgpart (sort keys(%part_pkg)) {
+<INPUT TYPE="hidden" NAME="pkgpart" VALUE="<% $pkgpart %>">
+<% $part_pkg{$pkgpart}->pkg_comment %><BR>
+% }
+</DIV>
+<BR>
+<& /elements/table-grid.html &>\
+<& /elements/tr-justtitle.html, value => mt('Report classes') &>
+% my $row = 0;
+% foreach my $num (sort keys %report_class) {
+ <TR CLASS="row<%$row % 2%>">
+ <TD>
+% if ( defined $initial_state{$num} ) {
+ <& /elements/checkbox.html,
+ field => 'report_option_'.$num,
+ value => 1,
+ curr_value => $initial_state{$num}
+ &>
+% } else {
+% # needs to be a tristate so that you can say "don't change it"
+ <& /elements/checkbox-tristate.html, field => 'report_option_'.$num &>
+% }
+ </TD>
+ <TD><% $report_class{$num}->name %></TD>
+ </TR>
+% $row++;
+% }
+</TABLE>
+<BR>
+<INPUT TYPE="submit">
+</FORM>
+<& /elements/footer.html &>
+<%init>
+die "access denied" unless $FS::CurrentUser::CurrentUser->access_right('Bulk edit package definitions');
+my @pkgparts = $cgi->param('pkgpart')
+ or die "no package definitions selected";
+
+my %part_pkg = map { $_ => FS::part_pkg->by_key($_) } @pkgparts;
+my %part_pkg_option = map { $_ => { $part_pkg{$_}->options } } @pkgparts;
+my %report_class = map { $_->num => $_ }
+ qsearch('part_pkg_report_option', { disabled => '' });
+
+my %initial_state;
+foreach my $num (keys %report_class) {
+ my $yes = 0;
+ my $no = 0;
+ foreach my $option (values %part_pkg_option) {
+ if ( $option->{"report_option_$num"} ) {
+ $yes = 1;
+ } else {
+ $no = 1;
+ }
+ }
+ if ( $yes and $no ) {
+ $initial_state{$num} = undef;
+ } elsif ( $yes ) {
+ $initial_state{$num} = 1;
+ } elsif ( $no ) {
+ $initial_state{$num} = 0;
+ } # else, uh, you didn't provide any pkgparts
+}
+</%init>
diff --git a/httemplate/edit/process/bulk-part_pkg.html b/httemplate/edit/process/bulk-part_pkg.html
new file mode 100644
index 000000000..4775a9334
--- /dev/null
+++ b/httemplate/edit/process/bulk-part_pkg.html
@@ -0,0 +1,30 @@
+% if ( $error ) {
+% $cgi->param('error', $error);
+<% $cgi->redirect(popurl(3).'/edit/bulk-part_pkg.cgi?', $cgi->query_string) %>
+% } else {
+<% $cgi->redirect(popurl(3).'/browse/part_pkg.cgi') %>
+% }
+<%init>
+die "access denied" unless $FS::CurrentUser::CurrentUser->access_right('Bulk edit package definitions');
+
+my @pkgparts = $cgi->param('pkgpart')
+ or die "no package definitions selected";
+
+my %changes;
+foreach my $param (grep { /^report_option_\d+$/ } $cgi->param) {
+ if ( length($cgi->param($param)) ) {
+ if ( $cgi->param($param) == 1 ) {
+ $changes{$param} = 1;
+ } else {
+ $changes{$param} = '';
+ }
+ }
+}
+
+my $error;
+foreach my $pkgpart (@pkgparts) {
+ my $part_pkg = FS::part_pkg->by_key($pkgpart);
+ my %options = ( $part_pkg->options, %changes );
+ $error ||= $part_pkg->replace( options => \%options );
+}
+</%init>
diff --git a/httemplate/elements/checkbox-tristate.html b/httemplate/elements/checkbox-tristate.html
new file mode 100644
index 000000000..4c26ed74e
--- /dev/null
+++ b/httemplate/elements/checkbox-tristate.html
@@ -0,0 +1,78 @@
+<%doc>
+A tristate checkbox (with three values: true, false, and null).
+Internally, this creates a checkbox, coupled via javascript to a hidden
+field that actually contains the value. For now, the only values these
+can have are 1, 0, and empty. Clicking the checkbox cycles between them.
+</%doc>
+<%shared>
+my $init = 0;
+</%shared>
+% if ( !$init ) {
+% $init = 1;
+<SCRIPT TYPE="text/javascript">
+function tristate_onclick() {
+ var checkbox = this;
+ var input = checkbox.input;
+ if ( input.value == "" ) {
+ input.value = "0";
+ checkbox.checked = false;
+ checkbox.indeterminate = false;
+ } else if ( input.value == "0" ) {
+ input.value = "1";
+ checkbox.checked = true;
+ checkbox.indeterminate = false;
+ } else if ( input.value == "1" ) {
+ input.value = "";
+ checkbox.checked = true;
+ checkbox.indeterminate = true
+ }
+}
+
+var tristates = [];
+var tristate_boxes = [];
+window.onload = function() { // don't do this until all of the checkboxes exist
+%# tristates = document.getElementsByClassName('tristate'); # curse you, IE8
+ var all_inputs = document.getElementsByTagName('input');
+ for (var i=0; i < all_inputs.length; i++) {
+ if ( all_inputs[i].className == 'tristate' ) {
+ tristates.push(all_inputs[i]);
+ }
+ }
+ for (var i=0; i < tristates.length; i++) {
+ tristate_boxes[i] =
+ document.getElementById('checkbox_' + tristates[i].name);
+ // make sure they can find each other
+ tristate_boxes[i].input = tristates[i];
+ tristates[i].checkbox = tristate_boxes[i];
+ // set event handler
+ tristate_boxes[i].onclick = tristate_onclick;
+ // set initial value
+ if ( tristates[i].value == "" ) {
+ tristate_boxes[i].indeterminate = true
+ }
+ if ( tristates[i].value != "0" ) {
+ tristate_boxes[i].checked = true;
+ }
+ }
+};
+</SCRIPT>
+% } # end of $init
+<INPUT TYPE="hidden" NAME="<% $opt{field} %>"
+ ID="<% $opt{id} %>"
+ VALUE="<% $curr_value %>"
+ CLASS="tristate">
+<INPUT TYPE="checkbox" ID="checkbox_<%$opt{field}%>" CLASS="partial">
+<%init>
+
+my %opt = @_;
+
+# might be useful but I'm not implementing it yet
+#my $onchange = $opt{'onchange'}
+# ? 'onChange="'. $opt{'onchange'}. '(this)"'
+# : '';
+
+$opt{'id'} ||= 'hidden_'.$opt{'field'};
+my $curr_value = $opt{curr_value};
+$curr_value = undef
+ unless $curr_value eq '0' or $curr_value eq '1';
+</%init>
diff --git a/httemplate/search/477.html b/httemplate/search/477.html
index 6f5fcdf3b..04764c1da 100755
--- a/httemplate/search/477.html
+++ b/httemplate/search/477.html
@@ -97,6 +97,11 @@ for(my $i=0; $i < scalar(@part2b_row_option); $i++) {
&FS::Report::FCC_477::save_fcc477map("part2b_row_option_$i",$part2b_row_option[$i]);
}
+my $part5_report_option = $cgi->param('part5_report_option');
+if ( $part5_report_option ) {
+ FS::Report::FCC_477::save_fcc477map('part5_report_option', $part5_report_option);
+}
+
my $url_mangler = sub {
my $part = shift;
my $url = $cgi->url('-path_info' => 1, '-full' => 1);
diff --git a/httemplate/search/477partIA_detail.html b/httemplate/search/477partIA_detail.html
index 66f3a8651..666032d0c 100755
--- a/httemplate/search/477partIA_detail.html
+++ b/httemplate/search/477partIA_detail.html
@@ -1,4 +1,4 @@
-<% include( 'elements/search.html',
+<& elements/search.html,
'html_init' => $html_init,
'name' => 'lines',
'query' => $query,
@@ -11,8 +11,8 @@
'xml_elements' => [ @xml_elements ],
'xml_omit_empty' => 1,
'fields' => [ @fields ],
- )
-%>
+
+&>
<%init>
my $curuser = $FS::CurrentUser::CurrentUser;
diff --git a/httemplate/search/477partIA_summary.html b/httemplate/search/477partIA_summary.html
index f5c2bc251..ebf081c71 100755
--- a/httemplate/search/477partIA_summary.html
+++ b/httemplate/search/477partIA_summary.html
@@ -1,4 +1,4 @@
-<% include( 'elements/search.html',
+<& elements/search.html,
'html_init' => $html_init,
'name' => 'lines',
'query' => 'SELECT 1',
@@ -28,8 +28,8 @@
sub { $total_percentage },
sub { $above_200_percentage },
],
- )
-%>
+
+&>
<%init>
my $curuser = $FS::CurrentUser::CurrentUser;
diff --git a/httemplate/search/477partIIA.html b/httemplate/search/477partIIA.html
index d2cc8c3e9..6a532299b 100755
--- a/httemplate/search/477partIIA.html
+++ b/httemplate/search/477partIIA.html
@@ -1,4 +1,4 @@
-<% include( 'elements/search.html',
+<& elements/search.html,
'html_init' => $html_init,
'name' => 'lines',
'query' => $query,
@@ -10,8 +10,8 @@
'header' => [ @headers ],
'xml_elements' => [ @xml_elements ],
'fields' => [ @fields ],
- )
-%>
+
+&>
<%init>
my $curuser = $FS::CurrentUser::CurrentUser;
diff --git a/httemplate/search/477partV.html b/httemplate/search/477partV.html
index 2fd5119d1..2106a44d6 100755
--- a/httemplate/search/477partV.html
+++ b/httemplate/search/477partV.html
@@ -1,4 +1,4 @@
-<% include( 'elements/search.html',
+<& elements/search.html,
'html_init' => $html_init,
'name' => 'zip code',
'query' => $sql_query,
@@ -12,8 +12,8 @@
'url' => $opt{url} || '',
'really_disable_download' => 1,
- )
-%>
+
+&>
<%init>
my $curuser = $FS::CurrentUser::CurrentUser;
@@ -32,8 +32,8 @@ for ( qw(agentnum magic state) ) {
}
$search_hash{'country'} = 'US';
$search_hash{'classnum'} = [ $cgi->param('classnum') ];
-$search_hash{report_option} = $cgi->param('partv_report_option')
- if $cgi->param('partv_report_option');
+$search_hash{report_option} = $cgi->param('part5_report_option')
+ if $cgi->param('part5_report_option');
my $sql_query = FS::cust_pkg->search( { %search_hash,
'fcc_line' => 1,
diff --git a/httemplate/search/477partVI_census.html b/httemplate/search/477partVI_census.html
index 8425c4b48..59a6fb50d 100755
--- a/httemplate/search/477partVI_census.html
+++ b/httemplate/search/477partVI_census.html
@@ -1,4 +1,4 @@
-<% include( 'elements/search.html',
+<& elements/search.html,
'html_init' => '<H2>Part VI</H2>',
'html_foot' => $html_foot,
'name' => 'regions',
@@ -24,8 +24,8 @@
'url' => $opt{url} || '',
'xml_row_element' => 'Datarow',
'really_disable_download' => 1,
- )
-%>
+
+&>
<%init>
my $curuser = $FS::CurrentUser::CurrentUser;
diff --git a/httemplate/search/agent_inventory.html b/httemplate/search/agent_inventory.html
index ac65371ca..015aca46b 100644
--- a/httemplate/search/agent_inventory.html
+++ b/httemplate/search/agent_inventory.html
@@ -1,4 +1,4 @@
-<% include('elements/search.html',
+<& elements/search.html,
'title' => 'Inventory summary per agent',
'name_singular' => 'agent',
'query' => { 'table' => 'agent',
@@ -10,8 +10,7 @@
" AND $agentnums_sql",
'header' => \@header,
'fields' => \@fields,
- )
-%>
+&>
<%init>
die "access denied"
diff --git a/httemplate/search/bill_batch.cgi b/httemplate/search/bill_batch.cgi
index b6676f261..b740bdc68 100755
--- a/httemplate/search/bill_batch.cgi
+++ b/httemplate/search/bill_batch.cgi
@@ -26,7 +26,7 @@ function start() {
% -expires => '-1d',
% );
% $r->headers_out->add( 'Set-Cookie' => $cookie->as_string );
-<% include( 'elements/search.html',
+<& elements/search.html,
'title' => 'Invoice Batches',
'name_singular' => 'batch',
'query' => { 'table' => 'bill_batch',
@@ -67,9 +67,7 @@ function start() {
'agent_pos' => 1,
'html_foot' => include('.foot'),
- )
-
-%>
+&>
%}
<%def .foot>
<SCRIPT type="text/javascript">
diff --git a/httemplate/search/cdr.html b/httemplate/search/cdr.html
index d0d7292d1..1b4604bbb 100644
--- a/httemplate/search/cdr.html
+++ b/httemplate/search/cdr.html
@@ -1,4 +1,4 @@
-<% include( 'elements/search.html',
+<& elements/search.html,
'title' => $title,
'name' => 'call detail records',
'query' => $query,
@@ -9,27 +9,9 @@
'fields' => \@fields,
'links' => \@links,
'html_form' => qq!<FORM NAME="cdrForm" ACTION="$p/misc/cdr.cgi" METHOD="POST">!,
- #false laziness w/queue.html
- 'html_foot' => sub {
- if ( $areboxes ) {
- '<BR><INPUT TYPE="button" VALUE="select all" onClick="setAll(true)">'.
- '<INPUT TYPE="button" VALUE="unselect all" onClick="setAll(false)">'.
- qq!<BR><INPUT TYPE="submit" NAME="action" VALUE="reprocess selected" onClick="return confirm('Are you sure you want to reprocess the selected CDRs?')">!.
- qq!<INPUT TYPE="submit" NAME="action" VALUE="delete selected" onClick="return confirm('Are you sure you want to delete the selected CDRs?')"><BR>!.
- '<SCRIPT TYPE="text/javascript">'.
- ' function setAll(setTo) { '.
- ' theForm = document.cdrForm;'.
- ' for (i=0,n=theForm.elements.length;i<n;i++)'.
- ' if (theForm.elements[i].name.indexOf("acctid") != -1)'.
- ' theForm.elements[i].checked = setTo;'.
- ' }'.
- '</SCRIPT>';
- } else {
- '';
- }
- },
+ 'html_foot' => $html_foot,
)
-%>
+&>
<%init>
die "access denied"
@@ -44,8 +26,6 @@ my $totalminutes_sub = sub {
my $conf = new FS::Conf;
-my $areboxes = 0;
-
my $title = 'Call Detail Records';
my $hashref = {};
@@ -355,7 +335,6 @@ my %links = (
@fields = map { exists($fields{$_}) ? $fields{$_} : $_ } @fields;
unshift @fields, sub {
return '' unless $edit_data;
- $areboxes = 1;
my $cdr = shift;
my $acctid = $cdr->acctid;
qq!<INPUT NAME="acctid$acctid" TYPE="checkbox" VALUE="1">!;
@@ -409,4 +388,14 @@ if ( $topmode ) {
$nototalminutes = 1;
}
+my $html_foot = include('/search/elements/checkbox-foot.html',
+ actions => [
+ { submit => "reprocess selected",
+ name => "action",
+ confirm => "Are you sure you want to reprocess the selected CDRs?" },
+ { submit => "delete selected",
+ name => "action",
+ confirm => "Are you sure you want to delete the selected CDRs?" },
+ ]
+);
</%init>
diff --git a/httemplate/search/cust_bill_event.cgi b/httemplate/search/cust_bill_event.cgi
index 00f7cd564..9fb533a5f 100644
--- a/httemplate/search/cust_bill_event.cgi
+++ b/httemplate/search/cust_bill_event.cgi
@@ -1,4 +1,4 @@
-<% include( 'elements/search.html',
+<& elements/search.html,
'title' => $title,
'html_init' => $html_init,
'menubar' => $menubar,
@@ -60,8 +60,8 @@
'',
FS::UI::Web::cust_styles(),
],
- )
-%>
+
+&>
<%init>
my $curuser = $FS::CurrentUser::CurrentUser;
diff --git a/httemplate/search/cust_bill_pay.html b/httemplate/search/cust_bill_pay.html
index 871227aa4..0b64e650f 100644
--- a/httemplate/search/cust_bill_pay.html
+++ b/httemplate/search/cust_bill_pay.html
@@ -1,4 +1,4 @@
-<% include( 'elements/search.html',
+<& elements/search.html,
'title' => $title,
'name' => 'net payments',
'query' => $sql_query,
@@ -71,8 +71,8 @@
'',
FS::UI::Web::cust_styles(),
],
- )
-%>
+
+&>
<%init>
die "access denied"
diff --git a/httemplate/search/cust_bill_pkg_discount.html b/httemplate/search/cust_bill_pkg_discount.html
index 4225e91e1..f598341a0 100644
--- a/httemplate/search/cust_bill_pkg_discount.html
+++ b/httemplate/search/cust_bill_pkg_discount.html
@@ -1,4 +1,4 @@
-<% include( 'elements/search.html',
+<& elements/search.html,
'title' => 'Discounts',
'name' => 'discounts',
'query' => $query,
@@ -68,8 +68,8 @@
'',
FS::UI::Web::cust_styles(),
],
- )
-%>
+
+&>
<%init>
#a little false laziness below w/cust_bill_pkg.cgi
diff --git a/httemplate/search/cust_credit_bill.html b/httemplate/search/cust_credit_bill.html
index 7e11ee676..88f897d70 100644
--- a/httemplate/search/cust_credit_bill.html
+++ b/httemplate/search/cust_credit_bill.html
@@ -1,4 +1,4 @@
-<% include( 'elements/search.html',
+<& elements/search.html,
'title' => $title,
'name' => 'net credits',
'query' => $sql_query,
@@ -64,8 +64,8 @@
'',
FS::UI::Web::cust_styles(),
],
- )
-%>
+
+&>
<%init>
die "access denied"
diff --git a/httemplate/search/cust_credit_bill_pkg.html b/httemplate/search/cust_credit_bill_pkg.html
index 26da106e2..b0dbc7000 100644
--- a/httemplate/search/cust_credit_bill_pkg.html
+++ b/httemplate/search/cust_credit_bill_pkg.html
@@ -1,4 +1,4 @@
-<% include( 'elements/search.html',
+<& elements/search.html,
'title' => 'Credit application detail', #to line item
'name_singular' => 'credit application',
'query' => $query,
@@ -96,8 +96,8 @@
'',
FS::UI::Web::cust_styles(),
],
- )
-%>
+
+&>
<%init>
#LOTS of false laziness below w/cust_bill_pkg.cgi
diff --git a/httemplate/search/cust_credit_refund.html b/httemplate/search/cust_credit_refund.html
index 5d89ebe67..1504f0fbe 100644
--- a/httemplate/search/cust_credit_refund.html
+++ b/httemplate/search/cust_credit_refund.html
@@ -1,4 +1,4 @@
-<% include( 'elements/search.html',
+<& elements/search.html,
'title' => $title,
'name' => 'net refunds',
'query' => $sql_query,
@@ -57,8 +57,8 @@
'',
FS::UI::Web::cust_styles(),
],
- )
-%>
+
+&>
<%init>
die "access denied"
diff --git a/httemplate/search/cust_event.html b/httemplate/search/cust_event.html
index bd6ba6974..bfc5f43e8 100644
--- a/httemplate/search/cust_event.html
+++ b/httemplate/search/cust_event.html
@@ -1,4 +1,4 @@
-<% include( 'elements/search.html',
+<& elements/search.html,
'title' => $title,
'html_init' => $html_init,
'menubar' => $menubar,
@@ -62,8 +62,7 @@
#'',
FS::UI::Web::cust_styles(),
],
- )
-%>
+&>
<%once>
my $status_sub = sub {
diff --git a/httemplate/search/cust_main-zip.html b/httemplate/search/cust_main-zip.html
index 08800d431..f5f8c8f3c 100644
--- a/httemplate/search/cust_main-zip.html
+++ b/httemplate/search/cust_main-zip.html
@@ -1,4 +1,4 @@
-<% include( 'elements/search.html',
+<& elements/search.html,
'title' => 'Zip code Search Results',
'name' => 'zip codes',
'query' => $sql_query,
@@ -6,8 +6,7 @@
'header' => [ 'Zip code', 'Customers', ],
'fields' => [ 0, 1 ],
'links' => [ '', $link ],
- )
-%>
+&>
<%init>
die "access denied"
diff --git a/httemplate/search/cust_pay_batch.cgi b/httemplate/search/cust_pay_batch.cgi
index 830a6c699..dde546143 100755
--- a/httemplate/search/cust_pay_batch.cgi
+++ b/httemplate/search/cust_pay_batch.cgi
@@ -1,4 +1,4 @@
-<% include('elements/search.html',
+<& elements/search.html,
'title' => 'Batch payment details',
'name' => 'batch details',
'query' => $sql_query,
@@ -41,8 +41,7 @@
'link_onclicks' => [ ('') x 8,
$sub_receipt
],
- )
-%>
+&>
<%init>
my $conf = new FS::Conf;
diff --git a/httemplate/search/cust_pkg_discount.html b/httemplate/search/cust_pkg_discount.html
index bd28da87d..23af1802e 100644
--- a/httemplate/search/cust_pkg_discount.html
+++ b/httemplate/search/cust_pkg_discount.html
@@ -1,4 +1,4 @@
-<% include( 'elements/search.html',
+<& elements/search.html,
'title' => 'Package discounts',
'name' => 'discounts',
'query' => $query,
@@ -50,8 +50,8 @@
'',
FS::UI::Web::cust_styles(),
],
- )
-%>
+
+&>
<%init>
die "access denied"
diff --git a/httemplate/search/cust_pkg_svc.html b/httemplate/search/cust_pkg_svc.html
index 9c5b32fc7..cdc70351a 100644
--- a/httemplate/search/cust_pkg_svc.html
+++ b/httemplate/search/cust_pkg_svc.html
@@ -1,4 +1,4 @@
-<% include( 'elements/search.html',
+<& elements/search.html,
'title' => $part_svc->svc.' services in package #'.$pkgnum,
'name' => 'services',
'html_form' => $html_form,
@@ -30,8 +30,8 @@
('')x4,
],
'html_foot' => sub { $areboxes ? $html_foot : '' }
- )
-%>
+
+&>
<%init>
die "access denied"
diff --git a/httemplate/search/cust_tax_adjustment.html b/httemplate/search/cust_tax_adjustment.html
index 925476516..6125a1c04 100644
--- a/httemplate/search/cust_tax_adjustment.html
+++ b/httemplate/search/cust_tax_adjustment.html
@@ -1,4 +1,4 @@
-<% include( 'elements/search.html',
+<& elements/search.html,
'title' => $title,
'name_singular' => 'tax adjustment',
'query' => $query,
@@ -12,9 +12,8 @@
},
],
'links' => [ '', '', '', $ilink ],
- )
-%>
-
+
+&>
<%init>
die "access denied"
diff --git a/httemplate/search/cust_tax_exempt.cgi b/httemplate/search/cust_tax_exempt.cgi
index f075d1926..005d77c33 100644
--- a/httemplate/search/cust_tax_exempt.cgi
+++ b/httemplate/search/cust_tax_exempt.cgi
@@ -1,4 +1,4 @@
-<% include( 'elements/search.html',
+<& elements/search.html,
'title' => 'Legacy tax exemptions',
'name' => 'legacy tax exemptions',
'query' => $query,
@@ -46,8 +46,8 @@
'',
FS::UI::Web::cust_styles(),
],
- )
-%>
+
+&>
<%init>
my $join_cust = FS::UI::Web::join_cust_main('cust_tax_exempt');
diff --git a/httemplate/search/cust_tax_exempt_pkg.cgi b/httemplate/search/cust_tax_exempt_pkg.cgi
index 7e1a239b4..40b9ed78f 100644
--- a/httemplate/search/cust_tax_exempt_pkg.cgi
+++ b/httemplate/search/cust_tax_exempt_pkg.cgi
@@ -1,4 +1,4 @@
-<% include( 'elements/search.html',
+<& elements/search.html,
'title' => 'Tax exemptions',
'name' => 'tax exemptions',
'query' => $query,
@@ -77,8 +77,7 @@
'',
FS::UI::Web::cust_styles(),
],
- )
-%>
+&>
<%once>
my $join_cust = "
diff --git a/httemplate/search/elements/checkbox-foot.html b/httemplate/search/elements/checkbox-foot.html
new file mode 100644
index 000000000..be1caab91
--- /dev/null
+++ b/httemplate/search/elements/checkbox-foot.html
@@ -0,0 +1,86 @@
+<%doc>
+<& /elements/search.html,
+ # options...
+ html_foot => include('elements/checkbox-foot.html',
+ actions => [
+ { label => 'Edit selected packages',
+ action => 'popup_package_edit()',
+ },
+ { submit => 'Delete selected packages',
+ confirm => 'Really delete these packages?'
+ },
+ ],
+ filter => '.name = "pkgpart"', # see below
+ ),
+&>
+
+This creates a footer for a search page containing a column of checkboxes.
+Typically this is used to select several items from the search result and
+apply some change to all of them at once. The footer always provides
+"select all" and "unselect all" buttons.
+
+"actions" is an arrayref of action buttons to show. Each element of the
+array is a hashref of either:
+
+- "submit" and, optionally, "confirm". Creates a submit button. The value
+of "submit" becomes the "value" property of the button (and thus its label).
+If "confirm" is specified, the button will have an onclick handler that
+displays the value of "confirm" in a popup message box and asks the user to
+confirm the choice.
+
+- "onclick" and "label". Creates a non-submit button that executes the
+Javascript code in "onclick". "label" is used as the text of the button.
+
+If you want only a single action, you can forget the arrayref-of-hashrefs
+business and just put "submit" and "confirm" (or "onclick" and "label")
+elements in the argument list.
+
+"filter" is a javascript expression to limit which checkboxes are included in
+the "select/unselect all" actions. By default, any input with type="checkbox"
+will be included. If this option is given, it will be evaluated with the
+HTML node in a variable named "obj". The expression should return true or
+false.
+
+</%doc>
+<DIV ID="checkbox_footer" STYLE="display:block">
+<INPUT TYPE="button" VALUE="<% emt('select all') %>" onclick="setAll(true)">
+<INPUT TYPE="button" VALUE="<% emt('unselect all') %>" onclick="setAll(false)">
+<BR>
+% foreach my $action (@$actions) {
+% if ( $action->{onclick} ) {
+<INPUT TYPE="button" <% $action->{name} %> onclick="<% $opt{onclick} %>"\
+ VALUE="<% $action->{label} |h%>">
+% } elsif ( $action->{submit} ) {
+<INPUT TYPE="submit" <% $action->{name} %> <% $action->{confirm} %>\
+ VALUE="<% $action->{submit} |h%>">
+% } # else do nothing
+% } #foreach
+</DIV>
+<SCRIPT>
+var checkboxes = [];
+var inputs = document.getElementsByTagName('input');
+for (var i = 0; i < inputs.length; i++) {
+ var obj = inputs[i];
+ if ( obj.type == "checkbox" && <% $filter %> ) {
+ checkboxes.push(obj);
+ }
+}
+%# avoid the need for "$areboxes" late-evaluation hackery
+if ( checkboxes.length == 0 ) {
+ document.getElementById('checkbox_footer').style.display = 'none';
+}
+function setAll(setTo) {
+ for (var i = 0; i < checkboxes.length; i++) {
+ checkboxes[i].checked = setTo;
+ }
+}
+</SCRIPT>
+<%init>
+my %opt = @_;
+my $actions = $opt{'actions'} || [ \%opt ];
+foreach (@$actions) {
+ $_->{confirm} &&= qq!onclick="return confirm('! . $_->{confirm} . qq!')"!;
+ $_->{name} &&= qq!NAME="! . $_->{name} . qq!"!;
+}
+my $filter = $opt{filter} || 'true';
+</%init>
diff --git a/httemplate/search/inventory_item.html b/httemplate/search/inventory_item.html
index 64722ff41..0e4251f74 100644
--- a/httemplate/search/inventory_item.html
+++ b/httemplate/search/inventory_item.html
@@ -1,4 +1,4 @@
-<% include( 'elements/search.html',
+<& elements/search.html,
'title' => $title,
'menubar' => [ 'View inventory classes' =>
@@ -87,8 +87,8 @@
<INPUT TYPE="hidden" NAME="classnum" VALUE="$classnum">
<INPUT TYPE="hidden" NAME="avail" VALUE="! .$cgi->param('avail') . '">', #'
'html_foot' => $sub_foot,
- )
-%>
+
+&>
<%init>
my $curuser = $FS::CurrentUser::CurrentUser;
diff --git a/httemplate/search/mailinglistmember.html b/httemplate/search/mailinglistmember.html
index ee395f416..a678d45ed 100644
--- a/httemplate/search/mailinglistmember.html
+++ b/httemplate/search/mailinglistmember.html
@@ -1,4 +1,4 @@
-<% include('elements/search.html',
+<& elements/search.html,
'title' => $title,
'name_singular' => 'member',
'query' => $query,
@@ -6,8 +6,7 @@
'header' => [ 'Email address' ],
'fields' => [ $email_sub, ], #just this one for now
'html_init' => $html_init,
- )
-%>
+&>
<%init>
#XXX ACL:
diff --git a/httemplate/search/part_pkg.html b/httemplate/search/part_pkg.html
index 57da9d459..2178346e2 100644
--- a/httemplate/search/part_pkg.html
+++ b/httemplate/search/part_pkg.html
@@ -1,4 +1,4 @@
-<% include( 'elements/search.html',
+<& elements/search.html,
'title' => $title,
'name_singular' => $name,
'header' => \@header,
@@ -14,8 +14,8 @@
'links' => \@links,
'align' => $align,
'sort_fields' => [],
- )
-%>
+
+&>
<%init>
#this is about reports about packages definitions (starting w/commission ones)
diff --git a/httemplate/search/pay_batch.cgi b/httemplate/search/pay_batch.cgi
index aeaa012f4..34e9fd7a2 100755
--- a/httemplate/search/pay_batch.cgi
+++ b/httemplate/search/pay_batch.cgi
@@ -1,4 +1,4 @@
-<% include( 'elements/search.html',
+<& elements/search.html,
'title' => 'Payment Batches',
'name_singular' => 'batch',
'query' => { 'table' => 'pay_batch',
@@ -101,8 +101,7 @@
],
'html_init' => $html_init,
'html_foot' => include('.upload_incoming'),
- )
-%>
+&>
<%def .upload_incoming>
% if ( FS::payment_gateway->count("gateway_namespace = 'Business::BatchPayment' AND disabled IS NULL") > 0 ) {
<& /elements/form-file_upload.html,
diff --git a/httemplate/search/phone_avail.html b/httemplate/search/phone_avail.html
index 312c84ea9..faf354420 100644
--- a/httemplate/search/phone_avail.html
+++ b/httemplate/search/phone_avail.html
@@ -1,4 +1,4 @@
-<% include( 'elements/search.html',
+<& elements/search.html,
'title' => 'Phone Number (DID) Search Results',
'name_singular' => 'phone number',
'query' => {
@@ -81,8 +81,8 @@
FS::UI::Web::cust_styles(),
'',
],
- )
-%>
+
+&>
<%init>
die "access denied"
diff --git a/httemplate/search/phone_inventory_provisioned.html b/httemplate/search/phone_inventory_provisioned.html
index 03d21547d..b3efdbd77 100644
--- a/httemplate/search/phone_inventory_provisioned.html
+++ b/httemplate/search/phone_inventory_provisioned.html
@@ -1,4 +1,4 @@
-<% include( 'elements/search.html',
+<& elements/search.html,
'title' => 'LATA Search Results',
'name_singular' => 'LATA',
'query' => {
@@ -72,8 +72,8 @@
'',
'',
],
- )
-%>
+
+&>
<%init>
die "access denied"
diff --git a/httemplate/search/prepay_credit.html b/httemplate/search/prepay_credit.html
index 36403511b..7566e657e 100644
--- a/httemplate/search/prepay_credit.html
+++ b/httemplate/search/prepay_credit.html
@@ -1,4 +1,4 @@
-<% include( 'elements/search.html',
+<& elements/search.html,
'title' => 'Unused Prepaid Cards'.
($agent ? ' for '. $agent->agent : ''),
'menubar' => [
@@ -47,8 +47,8 @@
$agent ? [ "${p}edit/agent.cgi?", 'agentnum' ] : '';
},
],
- )
-%>
+
+&>
<%init>
die "access denied"
diff --git a/httemplate/search/prospect_main.html b/httemplate/search/prospect_main.html
index 328d1202f..ab37b9089 100644
--- a/httemplate/search/prospect_main.html
+++ b/httemplate/search/prospect_main.html
@@ -1,4 +1,4 @@
-<% include('elements/search.html',
+<& elements/search.html,
'title' => 'Prospect Search Results',
'name_singular' => 'prospect',
'query' => $query,
@@ -23,8 +23,7 @@
'', #link to contact edit???
],
'agent_virt' => 1,
- )
-%>
+&>
<%init>
die "access denied"
diff --git a/httemplate/search/qual.cgi b/httemplate/search/qual.cgi
index 7133ef056..7b718e498 100755
--- a/httemplate/search/qual.cgi
+++ b/httemplate/search/qual.cgi
@@ -1,4 +1,4 @@
-<% include( 'elements/search.html',
+<& elements/search.html,
'title' => 'Qualifications',
'name_singular' => 'qualification',
'query' => { 'table' => 'qual',
@@ -51,8 +51,8 @@
'',
'',
],
- )
-%>
+
+&>
<%init>
die "access denied"
diff --git a/httemplate/search/queue.html b/httemplate/search/queue.html
index 1c124706c..141c535da 100644
--- a/httemplate/search/queue.html
+++ b/httemplate/search/queue.html
@@ -1,4 +1,4 @@
-<% include( 'elements/search.html',
+<& elements/search.html,
'title' => 'Job Queue',
'name' => 'jobs',
'html_form' => qq!<FORM NAME="jobForm" ACTION="$p/misc/queue.cgi" METHOD="POST">!,
@@ -120,9 +120,8 @@
'';
}
},
- )
-
-%>
+
+&>
<%init>
die "access denied"
diff --git a/httemplate/search/reg_code.html b/httemplate/search/reg_code.html
index f7d6d2061..42211e571 100644
--- a/httemplate/search/reg_code.html
+++ b/httemplate/search/reg_code.html
@@ -1,4 +1,4 @@
-<% include( 'elements/search.html',
+<& elements/search.html,
'title' => 'Unused Registration Codes for '.
$agent->agent,
'name' => 'registration codes',
@@ -23,8 +23,8 @@
#$plink,
'',
],
- )
-%>
+
+&>
<%init>
die "access denied"
diff --git a/httemplate/search/report_477.html b/httemplate/search/report_477.html
index f593a94d8..b842b1f3f 100755
--- a/httemplate/search/report_477.html
+++ b/httemplate/search/report_477.html
@@ -231,7 +231,9 @@
'table' => 'part_pkg_report_option',
'name_col' => 'name',
'hashref' => { 'disabled' => '' },
- 'element_name' => 'partv_report_option',
+ 'element_name' => 'part5_report_option',
+ 'curr_value' =>
+ FS::Report::FCC_477::restore_fcc477map("part5_report_option"),
)
%>
</TD>
diff --git a/httemplate/search/rt_ticket.html b/httemplate/search/rt_ticket.html
index 1ed5a3883..8603ef25e 100644
--- a/httemplate/search/rt_ticket.html
+++ b/httemplate/search/rt_ticket.html
@@ -1,4 +1,4 @@
-<% include('elements/search.html',
+<& elements/search.html,
'title' => 'Time worked summary',
'name_singular' => 'ticket',
'query' => $query,
@@ -31,8 +31,7 @@
'',
'',
],
- )
-%>
+&>
<%once>
my $format_seconds_sub = sub {
diff --git a/httemplate/search/rt_transaction.html b/httemplate/search/rt_transaction.html
index 1ae607be1..eb250fb27 100644
--- a/httemplate/search/rt_transaction.html
+++ b/httemplate/search/rt_transaction.html
@@ -1,4 +1,4 @@
-<% include('elements/search.html',
+<& elements/search.html,
'title' => 'Time worked',
'name_singular' => 'transaction',
'query' => $query,
@@ -29,8 +29,7 @@
'',
'',
],
- )
-%>
+&>
<%once>
my $format_seconds_sub = sub {
diff --git a/httemplate/search/sql.html b/httemplate/search/sql.html
index bf5446975..71aa00671 100644
--- a/httemplate/search/sql.html
+++ b/httemplate/search/sql.html
@@ -1,9 +1,9 @@
-<% include( 'elements/search.html',
+<& elements/search.html,
'title' => 'Query Results',
'name' => 'rows',
'query' => "SELECT $sql",
- )
-%>
+
+&>
<%init>
die "access denied"
diff --git a/httemplate/search/svc_broadband.cgi b/httemplate/search/svc_broadband.cgi
index ee62e9084..e56ec3996 100755
--- a/httemplate/search/svc_broadband.cgi
+++ b/httemplate/search/svc_broadband.cgi
@@ -1,4 +1,4 @@
-<% include( 'elements/search.html',
+<& elements/search.html,
'title' => 'Broadband Search Results',
'name' => 'broadband services',
'html_init' => $html_init,
@@ -49,8 +49,8 @@
'',
FS::UI::Web::cust_styles(),
],
- )
-%>
+
+&>
<%init>
die "access denied" unless
diff --git a/httemplate/search/svc_dish.cgi b/httemplate/search/svc_dish.cgi
index a2e56d24d..1578aa1e3 100755
--- a/httemplate/search/svc_dish.cgi
+++ b/httemplate/search/svc_dish.cgi
@@ -1,4 +1,4 @@
-<% include( 'elements/search.html',
+<& elements/search.html,
'title' => 'Dish Network Search Results',
'name' => 'services',
'query' => $sql_query,
@@ -34,8 +34,8 @@
'',
FS::UI::Web::cust_styles(),
],
- )
-%>
+
+&>
<%init>
die "access denied"
diff --git a/httemplate/search/svc_domain.cgi b/httemplate/search/svc_domain.cgi
index 508d88931..56cfa30c8 100755
--- a/httemplate/search/svc_domain.cgi
+++ b/httemplate/search/svc_domain.cgi
@@ -1,4 +1,4 @@
-<% include( 'elements/search.html',
+<& elements/search.html,
'title' => "Domain Search Results",
'name' => 'domains',
'query' => $sql_query,
@@ -34,8 +34,8 @@
'',
FS::UI::Web::cust_styles(),
],
- )
-%>
+
+&>
<%init>
die "access denied"
diff --git a/httemplate/search/svc_external.cgi b/httemplate/search/svc_external.cgi
index 7d57697b1..19099878a 100755
--- a/httemplate/search/svc_external.cgi
+++ b/httemplate/search/svc_external.cgi
@@ -1,4 +1,4 @@
-<% include( 'elements/search.html',
+<& elements/search.html,
'title' => 'External service search results',
'name' => 'external services',
'query' => $sql_query,
@@ -40,9 +40,8 @@
'',
FS::UI::Web::cust_styles(),
],
- )
-%>
-
+
+&>
<%init>
die "access denied"
diff --git a/httemplate/search/svc_forward.cgi b/httemplate/search/svc_forward.cgi
index eda790a0a..6a23bb3bb 100755
--- a/httemplate/search/svc_forward.cgi
+++ b/httemplate/search/svc_forward.cgi
@@ -1,4 +1,4 @@
-<% include( 'elements/search.html',
+<& elements/search.html,
'title' => "Mail forward Search Results",
'name' => 'mail forwards',
'query' => $sql_query,
@@ -39,8 +39,8 @@
'',
FS::UI::Web::cust_styles(),
],
- )
-%>
+
+&>
<%init>
die "access denied"
diff --git a/httemplate/search/svc_hardware.cgi b/httemplate/search/svc_hardware.cgi
index 085d7500a..28aa13217 100644
--- a/httemplate/search/svc_hardware.cgi
+++ b/httemplate/search/svc_hardware.cgi
@@ -1,4 +1,4 @@
-<% include('elements/search.html',
+<& elements/search.html,
'title' => 'Hardware service search results',
'name' => 'installations',
'query' => $sql_query,
@@ -34,8 +34,7 @@
FS::UI::Web::cust_colors() ],
'style' => [ $svc_cancel_style, ('') x 7,
FS::UI::Web::cust_styles() ],
- )
-%>
+&>
<%init>
die "access denied"
diff --git a/httemplate/search/svc_phone.cgi b/httemplate/search/svc_phone.cgi
index 65aa1ae14..cc4aa60f5 100644
--- a/httemplate/search/svc_phone.cgi
+++ b/httemplate/search/svc_phone.cgi
@@ -1,4 +1,4 @@
-<% include( 'elements/search.html',
+<& elements/search.html,
'title' => "Phone number search results",
'name' => 'phone numbers',
'query' => $sql_query,
@@ -46,8 +46,8 @@
( map '', @header ),
FS::UI::Web::cust_styles(),
],
- )
-%>
+
+&>
<%init>
die "access denied"
diff --git a/httemplate/search/svc_www.cgi b/httemplate/search/svc_www.cgi
index 5132f9470..eefe89302 100755
--- a/httemplate/search/svc_www.cgi
+++ b/httemplate/search/svc_www.cgi
@@ -1,4 +1,4 @@
-<% include( 'elements/search.html',
+<& elements/search.html,
'title' => 'Virtual Host Search Results',
'name' => 'virtual hosts',
'query' => $sql_query,
@@ -45,8 +45,8 @@
'',
FS::UI::Web::cust_styles(),
],
- )
-%>
+
+&>
<%init>
die "access denied"
diff --git a/httemplate/search/timeworked.html b/httemplate/search/timeworked.html
index bbfd0334d..fa4b89539 100644
--- a/httemplate/search/timeworked.html
+++ b/httemplate/search/timeworked.html
@@ -1,4 +1,4 @@
-<% include( 'elements/search.html',
+<& elements/search.html,
'title' => 'Time Worked',
'name' => 'time',
'html_form' => qq!<FORM NAME="timeForm" ACTION="${p}misc/timeworked.html" METHOD="POST">!,
@@ -33,9 +33,8 @@
'',
],
'html_foot' => $html_foot,
- )
-
-%>
+
+&>
<%init>
die "access denied"
diff --git a/httemplate/search/unprovisioned_services.html b/httemplate/search/unprovisioned_services.html
index 89d5f2d66..a7791ba86 100644
--- a/httemplate/search/unprovisioned_services.html
+++ b/httemplate/search/unprovisioned_services.html
@@ -1,4 +1,4 @@
-<% include( 'elements/search.html',
+<& elements/search.html,
'title' => 'Unprovisioned Service Search Results',
'name' => 'packages with unprovisioned services',
'query' => {
@@ -54,8 +54,8 @@
'',
FS::UI::Web::cust_styles(),
],
- )
-%>
+
+&>
<%init>
die "access denied"