diff options
| author | ivan <ivan> | 2005-09-25 08:13:36 +0000 |
|---|---|---|
| committer | ivan <ivan> | 2005-09-25 08:13:36 +0000 |
| commit | 76161f1a2ae0f96470bed4089b00eff5abb16cff (patch) | |
| tree | 1d727c8829d651347f3bcd79971e519674290f23 /httemplate/elements | |
| parent | 672f360a644d12d7eab223fd00cd3426b00756cd (diff) | |
get rid of JSRS iframe foo for progress bar, use XMLHTTPRequest instead. really should have done that in the first place. JSON will wait until another day...
Diffstat (limited to 'httemplate/elements')
| -rw-r--r-- | httemplate/elements/jsrsServer.html | 5 | ||||
| -rw-r--r-- | httemplate/elements/progress-init.html | 12 | ||||
| -rw-r--r-- | httemplate/elements/progress-popup.html | 22 | ||||
| -rw-r--r-- | httemplate/elements/xmlhttp.html | 22 |
4 files changed, 45 insertions, 16 deletions
diff --git a/httemplate/elements/jsrsServer.html b/httemplate/elements/jsrsServer.html index d6d537070..fd6dc5465 100644 --- a/httemplate/elements/jsrsServer.html +++ b/httemplate/elements/jsrsServer.html @@ -1,4 +1,3 @@ <% -my $server = new FS::UI::Web::JSRPC; -$server->process; -%> + my $server = new FS::UI::Web::JSRPC '', $cgi; +%><%= $server->process %> diff --git a/httemplate/elements/progress-init.html b/httemplate/elements/progress-init.html index 472a1725f..fb408400a 100644 --- a/httemplate/elements/progress-init.html +++ b/httemplate/elements/progress-init.html @@ -11,7 +11,11 @@ } %> -<SCRIPT TYPE="text/javascript" SRC="../elements/jsrsClient.js"></SCRIPT> +<%= include('/elements/xmlhttp.html', + 'url' => $action, + 'subs' => [ 'start_job' ], + ) +%> <SCRIPT TYPE="text/javascript" SRC="../elements/overlibmws.js"></SCRIPT> <SCRIPT TYPE="text/javascript" SRC="../elements/overlibmws_iframe.js"></SCRIPT> <SCRIPT TYPE="text/javascript"> @@ -54,8 +58,10 @@ function <%=$key%>process () { } } - jsrsPOST = true; - jsrsExecute( '<%= $action %>', <%=$key%>myCallback, 'start_job', Hash ); + // jsrsPOST = true; + // jsrsExecute( '<%= $action %>', <%=$key%>myCallback, 'start_job', Hash ); + + start_job( Hash, <%=$key%>myCallback ); } diff --git a/httemplate/elements/progress-popup.html b/httemplate/elements/progress-popup.html index 20bb5fc5a..200f97d9b 100644 --- a/httemplate/elements/progress-popup.html +++ b/httemplate/elements/progress-popup.html @@ -10,25 +10,35 @@ </HEAD> <BODY BGCOLOR="#ccccff" onLoad="refreshStatus()"> -<SCRIPT TYPE="text/javascript" SRC="../elements/jsrsClient.js"></SCRIPT> +<%= include('/elements/xmlhttp.html', + 'url' => $p.'elements/jsrsServer.html', + 'subs' => [ 'job_status' ], + ) +%> <SCRIPT TYPE="text/javascript" src="../elements/qlib/control.js"></SCRIPT> <SCRIPT TYPE="text/javascript" src="../elements/qlib/imagelist.js"></SCRIPT> <SCRIPT TYPE="text/javascript" src="../elements/qlib/progress.js"></SCRIPT> <SCRIPT TYPE="text/javascript"> function refreshStatus () { - jsrsExecute( '<%=$p%>elements/jsrsServer.html', updateStatus, 'job_status', '<%= $jobnum %>' ); + //jsrsExecute( '<%=$p%>elements/jsrsServer.html', updateStatus, 'job_status', '<%= $jobnum %>' ); + + job_status( '<%= $jobnum %>', updateStatus ); } function updateStatus( status_statustext ) { - var Array = status_statustext.split("\n"); - var status = Array[0]; - var statustext = Array[1]; + + //var Array = status_statustext.split("\n"); + var statusArray = eval('(' + status_statustext + ')'); + var status = statusArray[0]; + var statustext = statusArray[1]; + //if ( status == 'progress' ) { //IE workaround, no i have no idea why if ( status.indexOf('progress') > -1 ) { document.getElementById("progress_percent").innerHTML = statustext + '%'; bar1.set(statustext); bar1.update; - jsrsExecute( '<%=$p%>elements/jsrsServer.html', updateStatus, 'job_status', '<%= $jobnum %>' ); + //jsrsExecute( '<%=$p%>elements/jsrsServer.html', updateStatus, 'job_status', '<%= $jobnum %>' ); + job_status( '<%= $jobnum %>', updateStatus ); } else if ( status.indexOf('complete') > -1 ) { <% if ( $message ) { %> document.getElementById("progress_message").innerHTML = "<%= $message %>"; diff --git a/httemplate/elements/xmlhttp.html b/httemplate/elements/xmlhttp.html index 425e28e3d..41965ace2 100644 --- a/httemplate/elements/xmlhttp.html +++ b/httemplate/elements/xmlhttp.html @@ -1,5 +1,9 @@ <% - my ( $url, @subs ) = @_; + my ( %opt ) = @_; + + my $url = $opt{'url'}; + #my $action = exists $opt{'action'} ? $opt{'action'} : 'GET'; + #my @subs = @{ $opt{'subs'}; $url .= ( ($url =~ /\?/) ? '&' : '?' ). 'sub='; @@ -27,7 +31,7 @@ } - <% foreach my $func (@subs) { + <% foreach my $func ( @{$opt{'subs'}} ) { my $furl = $url . uri_escape($func); $furl =~ s/\"/\\\\\"/; #javascript escape @@ -38,11 +42,21 @@ // count args; build URL var url = "<%=$furl%>"; var a = <%=$func%>.arguments; - for (var i = 0; i < a.length-1; i++) - url = url + "&arg=" + escape(a[i]); + var args; + var len; + if ( a && typeof a == 'object' && a[0].constructor == Array ) { + args = a[0]; + len = args.length + } else { + args = a; + len = args.length - 1; + } + for (var i = 0; i < len; i++) + url = url + "&arg=" + escape(args[i]); url = url.replace( /[+]/g, '%2B'); // fix the unescaped plus signs var xmlhttp = rs_init_object(); xmlhttp.open("GET", url, true); + xmlhttp.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT"); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState != 4) return; |
