10 package FS::UI::Web::JSRPC;
13 use vars qw(@ISA $DEBUG);
14 use Storable qw(nfreeze);
16 use JavaScript::RPC::Server::CGI;
18 use FS::Record qw(qsearchs);
21 @ISA = qw( JavaScript::RPC::Server::CGI );
40 warn "FS::UI::Web::start_job\n".
41 join('', map " $_ => $param{$_}\n", keys %param )
44 #first get the CGI params shipped off to a job ASAP so an id can be returned
47 my $job = new FS::queue { 'job' => $self->{'job'} };
49 #too slow to insert all the cgi params as individual args..,?
50 #my $error = $queue->insert('_JOB', $cgi->Vars);
52 #warn 'froze string of size '. length(nfreeze(\%param)). " for job args\n"
55 my $error = $job->insert( '_JOB', encode_base64(nfreeze(\%param)) );
66 my( $self, $jobnum ) = @_; #$url ???
68 sleep 5; #could use something better...
71 if ( $jobnum =~ /^(\d+)$/ ) {
72 $job = qsearchs('queue', { 'jobnum' => $jobnum } );
74 die "FS::UI::Web::job_status: illegal jobnum $jobnum\n";
78 if ( $job && $job->status ne 'failed' ) {
79 @return = ( 'progress', $job->statustext );
80 } elsif ( !$job ) { #handle job gone case : job sucessful
81 # so close popup, redirect parent window...
82 @return = ( 'complete' );
84 @return = ( 'error', $job ? $job->statustext : $jobnum );