X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=httemplate%2Fsearch%2Felements%2Fsearch.html;h=62a0e47868fbc61f755883472a05228665ada4cf;hb=d03ab0df1ccbd3bdf54b3a85391879906d499097;hp=81ec4d082c48ca4eb357104c855ee64e14ecd1fc;hpb=83053569b3d965924e2e1d4f5b199609ec7c29af;p=freeside.git
diff --git a/httemplate/search/elements/search.html b/httemplate/search/elements/search.html
index 81ec4d082..62a0e4786 100644
--- a/httemplate/search/elements/search.html
+++ b/httemplate/search/elements/search.html
@@ -43,7 +43,7 @@ Example:
#listref of column labels,
#recommended unless 'query' is an SQL query string
- # (if not specified the database column names will be used)
+ # (if not specified the database column names will be used) (XXX this is not currently working either)
'header' => [ '#',
'Item',
{ 'label' => 'Another Item',
@@ -52,7 +52,7 @@ Example:
],
#listref - each item is a literal column name (or method) or coderef
- #if not specified all columns will be shown
+ #if not specified all columns will be shown (XXX this is not currently working?)
'fields' => [
'column',
sub { my $row = shift; $row->column; },
@@ -130,7 +130,7 @@ Example:
'agent_pos' => 3, # optional position (starting from 0) to
# insert an Agent column (query needs to be a
# qsearch hashref and header & fields need to
- # be defined)
+ # be defined)cust_pkg_susp.html
# sort, link & display properties for fields
@@ -141,7 +141,7 @@ Example:
# or a listref of link and method name to append,
# or a listref of link and coderef to run and append
# or a coderef that returns such a listref
- 'links' => [],`
+ 'links' => [],
#listref - each item is the empty string,
# or a string onClick handler for the corresponding link
@@ -162,7 +162,16 @@ Example:
# Excel-specific listref of ( hashrefs or coderefs )
# each hashref: http://search.cpan.org/dist/Spreadsheet-WriteExcel/lib/Spreadsheet/WriteExcel.pm#Format_methods_and_Format_properties
'xls_format' => => [],
-
+
+
+ # miscellany
+ 'download_label' => 'Download this report',
+ # defaults to 'Download full results'
+ 'link_field' => 'pkgpart'
+ # will create internal links for each row,
+ # with the value of this field as the NAME attribute
+ # If this is a coderef, will evaluate it, passing the
+ # row as an argument, and use the result as the NAME.
&>
%doc>
@@ -170,16 +179,17 @@ Example:
%
<% include('search-csv.html', header=>$header, rows=>$rows, opt=>\%opt ) %>
%
-% #} elsif ( $type eq 'excel' ) {
% } elsif ( $type =~ /\.xls$/ ) {
%
-<% include('search-xls.html', header=>$header, rows=>$rows, opt=>\%opt ) %>
+<& 'search-xls.html', header=>$header, rows=>$rows, opt=>\%opt &>\
+% # prevent the caller from polluting our output stream
+% $m->abort;
%
% } elsif ( $type eq 'xml' ) {
%
<% include('search-xml.html', rows=>$rows, opt=>\%opt ) %>
%
-% } else { # regular HTML
+% } else {
%
<% include('search-html.html',
type => $type,
@@ -205,6 +215,11 @@ my $curuser = $FS::CurrentUser::CurrentUser;
my $type = $cgi->param('_type') =~ /^(csv|\w*\.xls|xml|select|html(-print)?)$/
? $1 : 'html' ;
+if ( !$curuser->access_right('Download report data') ) {
+ $opt{'disable_download'} = 1;
+ $type = 'html';
+}
+
my %align = (
'l' => 'left',
'r' => 'right',
@@ -292,9 +307,11 @@ if ( $opt{'disableable'} ) {
$opt{'query'}{'hashref'}{'disabled'} = '';
$opt{'query'}{'extra_sql'} =~ s/^\s*WHERE/ AND/i;
+ my $table = $opt{'query'}{'table'};
+
$opt{'count_query'} .=
( $opt{'count_query'} =~ /WHERE/i ? ' AND ' : ' WHERE ' ).
- "( disabled = '' OR disabled IS NULL )";
+ "( $table.disabled = '' OR $table.disabled IS NULL )";
} elsif ( $opt{'disabled_statuspos'}
|| $opt{'disabled_statuspos'} eq '0' ) { #add status column
@@ -338,19 +355,13 @@ if ( $opt{'disableable'} ) {
my $limit = '';
my($confmax, $maxrecords, $offset );
-unless ( $type =~ /^(csv|\w*.xls)$/) {
+unless ( $type =~ /^(csv|xml|\w*.xls)$/) {
# html mode
unless (exists($opt{count_query}) && length($opt{count_query})) {
( $opt{count_query} = $opt{query} ) =~
s/^\s*SELECT\s*(.*?)\s+FROM\s/SELECT COUNT(*) FROM /i; #silly vim:/
}
- if ( $opt{disableable} && ! $cgi->param('showdisabled') ) {
- $opt{count_query} .=
- ( ( $opt{count_query} =~ /WHERE/i ) ? ' AND ' : ' WHERE ' ).
- "( disabled = '' OR disabled IS NULL )";
- }
-
unless ( $type eq 'html-print' ) {
#setup some pagination things if we're in html mode
@@ -363,6 +374,8 @@ unless ( $type =~ /^(csv|\w*.xls)$/) {
$maxrecords ||= $confmax;
}
+ $opt{'disable_maxselect'} ||= $conf->exists('disable_maxselect');
+
$limit = $maxrecords ? "LIMIT $maxrecords" : '';
$offset = $cgi->param('offset') =~ /^(\d+)$/ ? $1 : 0;
@@ -415,7 +428,7 @@ if ( ref($opt{query}) ) {
}
#eval "use FS::$opt{'query'};";
- my @param = qw( select table addl_from hashref extra_sql order_by );
+ my @param = qw( select table addl_from hashref extra_sql order_by debug );
$rows = [ qsearch( [ map { my $query = $_;
({ map { $_ => $query->{$_} } @param });
}
@@ -436,4 +449,6 @@ if ( ref($opt{query}) ) {
$header ||= $sth->{NAME};
}
+push @$rows, $opt{'footer_data'} if $opt{'footer_data'};
+
%init>
|