X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2FUI%2FWeb.pm;h=49e3fbf7e360d646122aff56a70692a4d9fcbefe;hb=06d42092410eeb14e723d762237a1638133253a3;hp=18e841e8328d67068dffcddcd41533ec6e037c16;hpb=7af914081daa5896f1b0d69de0f48af6978f1fe4;p=freeside.git diff --git a/FS/FS/UI/Web.pm b/FS/FS/UI/Web.pm index 18e841e83..49e3fbf7e 100644 --- a/FS/FS/UI/Web.pm +++ b/FS/FS/UI/Web.pm @@ -130,15 +130,14 @@ sub cust_fields { package FS::UI::Web::JSRPC; use strict; -use vars qw(@ISA $DEBUG); +use vars qw($DEBUG); use Storable qw(nfreeze); use MIME::Base64; -use JavaScript::RPC::Server::CGI; +use JSON; use FS::UID; use FS::Record qw(qsearchs); use FS::queue; -@ISA = qw( JavaScript::RPC::Server::CGI ); $DEBUG = 0; sub new { @@ -146,13 +145,48 @@ sub new { my $self = { env => {}, job => shift, + cgi => shift, }; bless $self, $class; + die "CGI object required as second argument" unless $self->{'cgi'}; + return $self; } +sub process { + + my $self = shift; + + my $cgi = $self->{'cgi'}; + + # XXX this should parse JSON foo and build a proper data structure + my @args = $cgi->param('arg'); + + #work around konqueror bug! + @args = map { s/\x00$//; $_; } @args; + + my $sub = $cgi->param('sub'); #???? + + warn "FS::UI::Web::JSRPC::process:\n". + " cgi=$cgi\n". + " sub=$sub\n". + " args=".join(', ',@args)."\n" + if $DEBUG; + + if ( $sub eq 'start_job' ) { + + $self->start_job(@args); + + } elsif ( $sub eq 'job_status' ) { + + $self->job_status(@args); + + } + +} + sub start_job { my $self = shift; @@ -193,7 +227,10 @@ sub start_job { my $error = $job->insert( '_JOB', encode_base64(nfreeze(\%param)) ); if ( $error ) { - $error; + $error; #this doesn't seem to be handled well, + # will trigger "illegal jobnum" below? + # (should never be an error inserting the job, though, only thing + # would be Pg f%*kage) } else { $job->jobnum; } @@ -203,7 +240,7 @@ sub start_job { sub job_status { my( $self, $jobnum ) = @_; #$url ??? - sleep 5; #could use something better... + sleep 1; # XXX could use something better... my $job; if ( $jobnum =~ /^(\d+)$/ ) { @@ -222,12 +259,8 @@ sub job_status { @return = ( 'error', $job ? $job->statustext : $jobnum ); } - join("\n",@return); - -} + objToJson(\@return); -sub get_new_query { - FS::UID::cgi(); } 1;