diff options
| -rw-r--r-- | httemplate/elements/progress-init.html | 9 | ||||
| -rw-r--r-- | httemplate/misc/download-bill_batch.html | 13 | ||||
| -rwxr-xr-x | httemplate/search/bill_batch.cgi | 48 | 
3 files changed, 56 insertions, 14 deletions
diff --git a/httemplate/elements/progress-init.html b/httemplate/elements/progress-init.html index 9f17370db..2ec248e32 100644 --- a/httemplate/elements/progress-init.html +++ b/httemplate/elements/progress-init.html @@ -54,7 +54,10 @@ sub process_whatever { #class method             )  %> -<% include('/elements/init_overlib.html') %> +% if (!$noinit) {  +<& /elements/init_overlib.html &> +%   $noinit = 1; +% }  <SCRIPT TYPE="text/javascript"> @@ -114,6 +117,9 @@ function <%$key%>myCallback( jobnum ) {  </SCRIPT> +<%once> +my $noinit = 0; +</%once>  <%init>  my( $formname, $fields, $action, $url_or_message, $key ) = @_; @@ -126,6 +132,7 @@ if ( ref($url_or_message) ) { #its a message or something      if $url_or_message->{'url'};    $url_or_message_link = 'popup_url=' .uri_escape( $url_or_message->{'popup_url'} )      if $url_or_message->{'popup_url'}; +  } else {    $url_or_message_link = "url=$url_or_message";  } diff --git a/httemplate/misc/download-bill_batch.html b/httemplate/misc/download-bill_batch.html index 70e3003ce..9b5f1efa8 100644 --- a/httemplate/misc/download-bill_batch.html +++ b/httemplate/misc/download-bill_batch.html @@ -12,10 +12,15 @@ $m->clear_buffer;  $r->content_type('application/pdf');  $r->headers_out->add( 'Content-Disposition' =>     'attachment;filename="invoice_batch_'.$batchnum.'.pdf"'); +my $cookie = CGI::Cookie->new( +  -name => "bill_batch_download", +  -value => $batchnum, +  -expires => '+1d', +); +$r->headers_out->add( 'Set-Cookie' => $cookie->as_string );  $m->print($content); -#$batch->pdf(''); -#my $error = $batch->replace; -#  warn "error deleting cached PDF: '$error'\n" if $error; -#} +$batch->pdf(''); +my $error = $batch->replace; +warn "error deleting cached PDF: '$error'\n" if $error;  </%init> diff --git a/httemplate/search/bill_batch.cgi b/httemplate/search/bill_batch.cgi index cbd7f270a..b6676f261 100755 --- a/httemplate/search/bill_batch.cgi +++ b/httemplate/search/bill_batch.cgi @@ -1,18 +1,31 @@  % my $batchnum = $cgi->param('download');  % if ( $batchnum =~ /^\d+$/ ) { -%   $cgi->delete('download'); +%   my $download = $p."misc/download-bill_batch.html?$batchnum";  <HTML>  <HEAD><TITLE>Starting download...</TITLE>  <SCRIPT TYPE="text/javascript"> -function refreshParent() { -  window.top.setTimeout("window.top.location.href = '<% $cgi->self_url %>'", 2000); -  window.top.location.replace('<%$p%>misc/download-bill_batch.html?<%$batchnum%>'); +function start() { +  window.location.replace('<% $download %>');  }  </SCRIPT> -</HEAD><BODY onload="refreshParent();"> +<!--[if lte IE 7]> +<SCRIPT TYPE="text/javascript">function start() {}</SCRIPT> +<![endif]--> +</HEAD> +<BODY onload="start()" STYLE="background-color:#ccccff"> +<TABLE STYLE="height:125px; width:100%; text-align:center"><TR><TD STYLE="vertical-align:middle;text-align:center"> +<A HREF="<% $download %>">Click here if your download does not start</A> +</TD></TR></TABLE>  <& /elements/footer.html &>  % }  % else { +%# delete existing download cookie +%   my $cookie = CGI::Cookie->new( +%     -name => 'bill_batch_download', +%     -value => 0, +%     -expires => '-1d', +%   ); +%   $r->headers_out->add( 'Set-Cookie' => $cookie->as_string );  <% include( 'elements/search.html',                   'title'         => 'Invoice Batches',  		 'name_singular' => 'batch', @@ -52,11 +65,30 @@ function refreshParent() {                   'agent_virt' => 1,                   'agent_null_right' => [ 'Process global invoice batches', 'Configuration' ],                   'agent_pos' => 1, +                 'html_foot' => include('.foot'),        )  %>  %} +<%def .foot> +<SCRIPT type="text/javascript"> +var timer; +function checkDownloadStatus(batchnum) { +  var re = new RegExp('bill_batch_download=' + batchnum); +  if ( re.test(document.cookie) ) { +    window.clearInterval(timer); +    window.location.reload(); +  } +} +function startBatch(batchnum) { +  timer = window.setInterval(function() {  +      checkDownloadStatus(batchnum); +  }, 2000); +  eval('batch'+batchnum+'process()'); +} +</SCRIPT> +</%def>  <%init>  my $curuser = $FS::CurrentUser::CurrentUser; @@ -76,8 +108,6 @@ my $count_query = "SELECT COUNT(*) FROM bill_batch WHERE". # $extra_sql AND "  #my $extra_sql = ''; # may add something here later  my $link = [ "${p}view/bill_batch.cgi?batchnum=", 'batchnum' ]; -my $download_id = int(rand(1000000)); -  sub download_link {    my $batch = shift;    my $batchnum = $batch->batchnum; @@ -90,10 +120,10 @@ sub download_link {      "Download$batchnum",      [ 'batchnum', 'close' ],      $p.'misc/process/bill_batch-print.html', -    { url => $p."search/bill_batch.cgi?download=$batchnum" }, +    { popup_url => $p."search/bill_batch.cgi?download=$batchnum" },      "batch$batchnum" #key    ); -  $html .= '<A href="#" onclick="batch'.$batchnum.'process();">' . +  $html .= '<A href="#" onclick="startBatch('.$batchnum.');">' .    ($batch->status eq 'O' ? '<B>Download and close</B>' : 'Download');    $html .= '</A></FORM>';    return $html;  | 
