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   #first get the CGI params shipped off to a job ASAP so an id can be returned
42   #to the caller
43   
44   my $job = new FS::queue { 'job' => $self->{'job'} };
45   
46   #too slow to insert all the cgi params as individual args..,?
47   #my $error = $queue->insert('_JOB', $cgi->Vars);
48   
49   #warn 'froze string of size '. length(nfreeze(\%param)). " for job args\n"
50   #  if $DEBUG;
51
52   my $error = $job->insert( '_JOB', encode_base64(nfreeze(\%param)) );
53
54   if ( $error ) {
55     $error;
56   } else {
57     $job->jobnum;
58   }
59   
60 }
61
62 sub get_new_query {
63   FS::UID::cgi();
64 }
65