diff options
author | ivan <ivan> | 2005-02-11 06:44:27 +0000 |
---|---|---|
committer | ivan <ivan> | 2005-02-11 06:44:27 +0000 |
commit | 3bc7d019313160a918a55cca6ab530f58db3673d (patch) | |
tree | 9647b9c6c3e22fda75541ddd7215524a3fe64de4 /FS | |
parent | a85114872ad5e216d35eb9747dd5370e150276b7 (diff) |
generalize progressbar code in preparation for using it wherever needed
Diffstat (limited to 'FS')
-rw-r--r-- | FS/FS/UI/Web.pm | 67 | ||||
-rw-r--r-- | FS/FS/rate.pm | 24 |
2 files changed, 82 insertions, 9 deletions
diff --git a/FS/FS/UI/Web.pm b/FS/FS/UI/Web.pm new file mode 100644 index 0000000..869203b --- /dev/null +++ b/FS/FS/UI/Web.pm @@ -0,0 +1,67 @@ +package FS::UI::Web; + +#use vars qw(@ISA); +#use FS::UI +#@ISA = qw( FS::UI ); + + +# begin JSRPC code... + +package FS::UI::Web::JSRPC; + +use vars qw(@ISA $DEBUG); +use Storable qw(nfreeze); +use MIME::Base64; +use JavaScript::RPC::Server::CGI; +use FS::UID; + +@ISA = qw( JavaScript::RPC::Server::CGI ); +$DEBUG = 1; + +sub new { + my $class = shift; + my $self = { + env => {}, + job => shift, + }; + + bless $self, $class; + + return $self; +} + +sub start_job { + my $self = shift; + + my %param = @_; + warn "FS::UI::Web::start_job\n". + join('', map " $_ => $param{$_}\n", keys %param ) + if $DEBUG; + + #progressbar prototype code... should be generalized + + #first get the CGI params shipped off to a job ASAP so an id can be returned + #to the caller + + #my $job = new FS::queue { 'job' => 'FS::rate::process' }; + my $job = new FS::queue { 'job' => $self->{'job'} }; + + #too slow to insert all the cgi params as individual args..,? + #my $error = $queue->insert('_JOB', $cgi->Vars); + + #my $bigstring = join(';', map { "$_=". scalar($cgi->param($_)) } $cgi->param ); +# my $bigstring = join(';', map { "$_=". $param{$_} } keys %param ); +# my $error = $job->insert('_JOB', $bigstring); + + #warn 'froze string of size '. length(nfreeze(\%param)). " for job args\n" + # if $DEBUG; + + my $error = $job->insert( '_JOB', encode_base64(nfreeze(\%param)) ); + + if ( $error ) { + $error; + } else { + $job->jobnum; + } + +} diff --git a/FS/FS/rate.pm b/FS/FS/rate.pm index 7f625a6..7c6a70e 100644 --- a/FS/FS/rate.pm +++ b/FS/FS/rate.pm @@ -2,6 +2,8 @@ package FS::rate; use strict; use vars qw( @ISA $DEBUG ); +use Storable qw(thaw); +use Data::Dumper; use FS::Record qw( qsearch qsearchs dbh fields ); use FS::rate_detail; @@ -307,25 +309,29 @@ Experimental job-queue processor for web interface adds/edits =cut +use MIME::Base64; sub process { my $job = shift; #my %param = @_; - my $param = shift; - my %param = split(/[;=]/, $param); + #my $param = shift; + #my %param = split(/[;=]/, $param); - my $old = qsearchs('rate', { 'ratenum' => $param{'ratenum'} } ) - if $param{'ratenum'}; + my $param = thaw(decode_base64(shift)); + warn Dumper($param) if $DEBUG; + + my $old = qsearchs('rate', { 'ratenum' => $param->{'ratenum'} } ) + if $param->{'ratenum'}; my @rate_detail = map { my $regionnum = $_->regionnum; - if ( $param{"sec_granularity$regionnum"} ) { + if ( $param->{"sec_granularity$regionnum"} ) { new FS::rate_detail { 'dest_regionnum' => $regionnum, - map { $_ => $param{"$_$regionnum"} } + map { $_ => $param->{"$_$regionnum"} } qw( min_included min_charge sec_granularity ) }; @@ -343,13 +349,13 @@ sub process { } qsearch('rate_region', {} ); my $rate = new FS::rate { - map { $_ => $param{$_} } + map { $_ => $param->{$_} } fields('rate') }; my $error = ''; - if ( $param{'ratenum'} ) { - warn "$rate replacing $old ($param{'ratenum'})\n" if $DEBUG; + if ( $param->{'ratenum'} ) { + warn "$rate replacing $old (". $param->{'ratenum'}. ")\n" if $DEBUG; $error = $rate->replace( $old, 'rate_detail' => \@rate_detail, 'job' => $job, |