diff options
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; |