summaryrefslogtreecommitdiff
path: root/FS
diff options
context:
space:
mode:
authorivan <ivan>2005-02-20 08:44:40 +0000
committerivan <ivan>2005-02-20 08:44:40 +0000
commitd6047391feb3236374e16fd73240d9821d77fe06 (patch)
tree26cd3c1df50a28ed50ce77669a31d672748866a6 /FS
parent9e1ec0694dff61d375af8c0ef0e3895a7f1e07fd (diff)
use a javascript layer instead of a browser popup (popup blockers), really generalize the progressbar code to make it easy to use as a component
Diffstat (limited to 'FS')
-rw-r--r--FS/FS/UI/Web.pm31
1 files changed, 30 insertions, 1 deletions
diff --git a/FS/FS/UI/Web.pm b/FS/FS/UI/Web.pm
index 646804de6..d5c716843 100644
--- a/FS/FS/UI/Web.pm
+++ b/FS/FS/UI/Web.pm
@@ -9,14 +9,17 @@ package FS::UI::Web;
package FS::UI::Web::JSRPC;
+use strict;
use vars qw(@ISA $DEBUG);
use Storable qw(nfreeze);
use MIME::Base64;
use JavaScript::RPC::Server::CGI;
use FS::UID;
+use FS::Record qw(qsearchs);
+use FS::queue;
@ISA = qw( JavaScript::RPC::Server::CGI );
-$DEBUG = 1;
+$DEBUG = 0;
sub new {
my $class = shift;
@@ -59,6 +62,32 @@ sub start_job {
}
+sub job_status {
+ my( $self, $jobnum ) = @_; #$url ???
+
+ sleep 5; #could use something better...
+
+ my $job;
+ if ( $jobnum =~ /^(\d+)$/ ) {
+ $job = qsearchs('queue', { 'jobnum' => $jobnum } );
+ } else {
+ die "FS::UI::Web::job_status: illegal jobnum $jobnum\n";
+ }
+
+ my @return;
+ if ( $job && $job->status ne 'failed' ) {
+ @return = ( 'progress', $job->statustext );
+ } elsif ( !$job ) { #handle job gone case : job sucessful
+ # so close popup, redirect parent window...
+ @return = ( 'complete' );
+ } else {
+ @return = ( 'error', $job ? $job->statustext : $jobnum );
+ }
+
+ join("\n",@return);
+
+}
+
sub get_new_query {
FS::UID::cgi();
}