This commit was manufactured by cvs2svn to create tag 'freeside_2_1_0'.
[freeside.git] / httemplate / search / elements / search.html
index 4bfe8b0..a258f17 100644 (file)
@@ -121,6 +121,7 @@ Example:
     #handling agent virtualization
     'agent_virt'            => 1, # set true if this search should be
                                   # agent-virtualized
+    'agent_null'            => 1, # set true to view global records always
     'agent_null_right'      => 'Access Right', # optional right to view global
                                                # records
     'agent_null_right_link' => 'Access Right'  # optional right to link to
@@ -159,7 +160,7 @@ Example:
     # each hashref: http://search.cpan.org/dist/Spreadsheet-WriteExcel/lib/Spreadsheet/WriteExcel.pm#Format_methods_and_Format_properties
     'xls_format' => => [],
     
-  );
+  )
 
 </%doc>
 % if ( $type eq 'csv' ) {
@@ -171,6 +172,10 @@ Example:
 %
 <% include('search-xls.html',  header=>$header, rows=>$rows, opt=>\%opt ) %>
 %
+% } elsif ( $type eq 'xml' ) {
+%
+<% include('search-xml.html',  rows=>$rows, opt=>\%opt ) %>
+%
 % } else { # regular HTML
 %
 <% include('search-html.html',
@@ -194,6 +199,9 @@ my(%opt) = @_;
 
 my $curuser = $FS::CurrentUser::CurrentUser;
 
+my $type = $cgi->param('_type') =~ /^(csv|\w*\.xls|xml|select|html(-print)?)$/
+           ? $1 : 'html' ;
+
 my %align = (
   'l' => 'left',
   'r' => 'right',
@@ -204,9 +212,29 @@ my %align = (
 $opt{align} = [ map $align{$_}, split(//, $opt{align}) ],
   unless !$opt{align} || ref($opt{align});
 
+if($type =~ /csv|xls/) {
+  my $h = $opt{'header'};
+  my @del;
+  my $i = 0;
+  do {
+    if( ref($h->[$i]) and exists($h->[$i]->{'nodownload'}) ) {
+      splice(@{$opt{$_}}, $i, 1) foreach
+        qw(header footer fields links link_onclicks
+           align color size style cell_style xls_format);
+    }
+    else {
+      $i++;
+    }
+  } while ( exists($h->[$i]) );
+}
+
+# wtf?
 $opt{disable_download} = 0
   if $opt{disable_download} && $curuser->access_right('Configuration download');
 
+$opt{disable_download} = 1
+  if $opt{really_disable_download};
+
 my @link_agentnums = ();
 my $null_link = '';
 if ( $opt{'agent_virt'} ) {
@@ -216,7 +244,9 @@ if ( $opt{'agent_virt'} ) {
                                        || $opt{'agent_null_right'}      );
 
   my $agentnums_sql = $curuser->agentnums_sql(
-                        'null_right' => $opt{'agent_null_right'}
+                        'null'       => $opt{'agent_null'},
+                        'null_right' => $opt{'agent_null_right'},
+                        'table'      => $opt{'query'}{'table'},
                       );
 
   $opt{'query'}{'extra_sql'} .=
@@ -291,25 +321,22 @@ if ( $opt{'disableable'} ) {
   if ( $cgi->param('showdisabled') ) {
     $cgi->param('showdisabled', 0);
     $opt{'html_posttotal'} .=
-      '( <a href="'. $cgi->self_url. qq!">hide disabled $items</a> )!;
+      '( <a href="'. $cgi->self_url. qq!">hide disabled $items</a> )!; #"
     $cgi->param('showdisabled', 1);
   } else {
     $cgi->param('showdisabled', 1);
     $opt{'html_posttotal'} .=
-      '( <a href="'. $cgi->self_url. qq!">show disabled $items</a> )!;
+      '( <a href="'. $cgi->self_url. qq!">show disabled $items</a> )!; #"
     $cgi->param('showdisabled', 0);
   }
 
 }
 
-my $type = $cgi->param('_type') =~ /^(csv|\w*\.xls|select|html(-print)?)$/
-           ? $1 : 'html';
-
 my $limit = '';
 my($confmax, $maxrecords, $offset );
 
-unless ( $type =~ /^(csv|\w*\.xls)$/ ) {
-
+if ( !$type =~ /^(csv|\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:/