[freeside-commits] freeside/httemplate/search bill_batch.cgi, 1.4, 1.5

Mark Wells mark at wavetail.420.am
Mon Aug 15 19:09:47 PDT 2011


Update of /home/cvs/cvsroot/freeside/httemplate/search
In directory wavetail.420.am:/tmp/cvs-serv1682/httemplate/search

Modified Files:
	bill_batch.cgi 
Log Message:
reliably start batch download, #947

Index: bill_batch.cgi
===================================================================
RCS file: /home/cvs/cvsroot/freeside/httemplate/search/bill_batch.cgi,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -w -d -r1.4 -r1.5
--- bill_batch.cgi	30 Jul 2011 23:13:40 -0000	1.4
+++ bill_batch.cgi	16 Aug 2011 02:09:44 -0000	1.5
@@ -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 @@
                  '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 $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 @@
     "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;



More information about the freeside-commits mailing list