generalize progressbar code in preparation for using it wherever needed
[freeside.git] / FS / FS / UI / Web.pm
1 package FS::UI::Web;
2
3 #use vars qw(@ISA);
4 #use FS::UI
5 #@ISA = qw( FS::UI );
6
7
8 # begin JSRPC code...
9
10 package FS::UI::Web::JSRPC;
11
12 use vars qw(@ISA $DEBUG);
13 use Storable qw(nfreeze);
14 use MIME::Base64;
15 use JavaScript::RPC::Server::CGI;
16 use FS::UID;
17
18 @ISA = qw( JavaScript::RPC::Server::CGI );
19 $DEBUG = 1;
20
21 sub new {
22         my $class = shift;
23         my $self  = {
24                 env => {},
25                 job => shift,
26         };
27
28         bless $self, $class;
29
30         return $self;
31 }
32
33 sub start_job {
34   my $self = shift;
35
36   my %param = @_;
37   warn "FS::UI::Web::start_job\n".
38        join('', map "  $_ => $param{$_}\n", keys %param )
39     if $DEBUG;
40
41   #progressbar prototype code...  should be generalized
42   
43   #first get the CGI params shipped off to a job ASAP so an id can be returned
44   #to the caller
45   
46   #my $job = new FS::queue { 'job' => 'FS::rate::process' };
47   my $job = new FS::queue { 'job' => $self->{'job'} };
48   
49   #too slow to insert all the cgi params as individual args..,?
50   #my $error = $queue->insert('_JOB', $cgi->Vars);
51   
52   #my $bigstring = join(';', map { "$_=". scalar($cgi->param($_)) } $cgi->param );
53 #  my $bigstring = join(';', map { "$_=". $param{$_} } keys %param );
54 #  my $error = $job->insert('_JOB', $bigstring);
55
56   #warn 'froze string of size '. length(nfreeze(\%param)). " for job args\n"
57   #  if $DEBUG;
58
59   my $error = $job->insert( '_JOB', encode_base64(nfreeze(\%param)) );
60
61   if ( $error ) {
62     $error;
63   } else {
64     $job->jobnum;
65   }
66   
67 }