diff options
-rw-r--r-- | CREDITS | 10 | ||||
-rw-r--r-- | Changes.1.5.8 | 10 | ||||
-rw-r--r-- | FS/FS/UI/Web.pm | 59 | ||||
-rw-r--r-- | JSRS-LICENSE | 29 | ||||
-rw-r--r-- | README.1.5.7 | 5 | ||||
-rw-r--r-- | httemplate/docs/install.html | 1 | ||||
-rw-r--r-- | httemplate/docs/upgrade10.html | 3 | ||||
-rw-r--r-- | httemplate/edit/cust_main/select-country.html | 6 | ||||
-rw-r--r-- | httemplate/edit/cust_main/select-county.html | 6 | ||||
-rwxr-xr-x | httemplate/edit/process/part_svc.cgi | 5 | ||||
-rwxr-xr-x | httemplate/edit/process/rate.cgi | 5 | ||||
-rw-r--r-- | httemplate/elements/jsrsServer.html | 5 | ||||
-rw-r--r-- | httemplate/elements/progress-init.html | 12 | ||||
-rw-r--r-- | httemplate/elements/progress-popup.html | 22 | ||||
-rw-r--r-- | httemplate/elements/xmlhttp.html | 22 |
15 files changed, 125 insertions, 75 deletions
@@ -110,8 +110,9 @@ other fixes. Charles A Beasley <cbeasley@noment.net> contributed quota editing for the Infostreet export. -Richard Siddall <richard.siddall@elirion.net> sent in Mason fixes and other -things I'm probably forgetting. +Richard Siddall <richard.siddall@elirion.net> sent in Mason fixes, fixed lots +of typos, mod_perl 2.0 work, RPM packaging and other things I'm probably +forgetting. Contains "JS Calendar" <http://dynarch.com/mishoo/calendar.epl> by Mihai Bazon <mishoo@infoiasi.ro> licensed under the terms of the GNU LGPL. @@ -137,11 +138,6 @@ released with 1.4.2beta1 and 1.5.0pre6. Troy Hammonds <troyh@netsignia.net> sent in RADIUS session history viewing, many bugfixes and other things I'm probably forgetting. -Contains the "Javascript Remote Scripting (JSRS)" client library -<http://www.ashleyit.com/rs/main.htm> by Brent Ashley <brent@ashleyit.com> -licensed under the "No Nonsense Copyright and License" (see the included -JSRS-LICENSE file). - Contains the QLIB JavaScript library <http://qlib.quazzle.com/> by Quazzle.com, Serge Dolgov, licensed under the terms of the GNU GPL. diff --git a/Changes.1.5.8 b/Changes.1.5.8 index efb91ba55..f8066cc99 100644 --- a/Changes.1.5.8 +++ b/Changes.1.5.8 @@ -5,6 +5,14 @@ - add active/suspended/cancelled customer packages to agent browse - add export to everyone.net outsource mail service - add native Radiator export -- added agent/taxclass gateway overrides +- added agent/taxclass/card type-specific gateway overrides for people with + multiple payment gateways for different resellers, taxclasses and/or card + types - re-did billing section of customer edit and added switch/solo support - add cpanel export +- added prepaid packages that set the RADIUS "Expiration" attribute and + auto-suspend on their next bill date +- added banned card table and option to send customer cards there on cancel +- moved to XMLHttpRequest instead of hidden iframe transport for progress bar, + should be more efficient and improve compatibility with Konq and maybe other + browsers? diff --git a/FS/FS/UI/Web.pm b/FS/FS/UI/Web.pm index 18e841e83..213a21975 100644 --- a/FS/FS/UI/Web.pm +++ b/FS/FS/UI/Web.pm @@ -133,12 +133,12 @@ use strict; use vars qw(@ISA $DEBUG); use Storable qw(nfreeze); use MIME::Base64; -use JavaScript::RPC::Server::CGI; +#use JavaScript::RPC::Server::CGI; use FS::UID; use FS::Record qw(qsearchs); use FS::queue; -@ISA = qw( JavaScript::RPC::Server::CGI ); +#@ISA = qw( JavaScript::RPC::Server::CGI ); $DEBUG = 0; sub new { @@ -146,6 +146,7 @@ sub new { my $self = { env => {}, job => shift, + cgi => shift, }; bless $self, $class; @@ -153,6 +154,35 @@ sub new { 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'); + + 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 +223,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 +236,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,13 +255,23 @@ sub job_status { @return = ( 'error', $job ? $job->statustext : $jobnum ); } - join("\n",@return); + #join("\n",@return); -} + #XXX should use JSON! + @return = map { + s/\\/\\\\/g; + s/\n/\\n/g; + s/"/\"/g; + $_ + } @return; + + '[ '. join(', ', map { qq("$_") } @return). " ]\n"; -sub get_new_query { - FS::UID::cgi(); } +#sub get_new_query { +# FS::UID::cgi(); +#} + 1; diff --git a/JSRS-LICENSE b/JSRS-LICENSE deleted file mode 100644 index fd14984a9..000000000 --- a/JSRS-LICENSE +++ /dev/null @@ -1,29 +0,0 @@ -
-No Nonsense Copyright and License for JSRS JavaScript Remote Scripting
-======================================================================
-
-Copyright:
-
-This JSRS stuff was written by me. I find it useful. Others find it useful.
-You are welcome to use it, modify it to suit your needs, distribute it as you
-see fit. I'm happy if you use it for personal stuff or for commercial gain.
-
-The only thing you can't do is to restrict anyone else from using it however
-they see fit. You may not copyright it yourself or change the rules I have
-set on how it can be used.
-
-JSRS Javascript Remote Scripting Copyright (C) 2001 by Brent Ashley
-
-License:
-
-You can use this however you like. I make no guarantees whatsoever that it
-will suit your purpose. You take full responsibility for getting it working
-properly and for any implications of its failure or inability to satisfy your
-every need.
-
-======================================================================
-
-email inquiries: jsrs@megahuge.com
-
-
-
diff --git a/README.1.5.7 b/README.1.5.7 index adfffea55..e890f01bc 100644 --- a/README.1.5.7 +++ b/README.1.5.7 @@ -187,9 +187,8 @@ dbdef-create username create-history-tables username rate rate_detail rate_region rate_prefix reg_code reg_code_pkg dbdef-create username -install Javascript::RPC (JavaScript::RPC::Server::CGI), Text::CSV_XS, -Spreadsheet::WriteExcel, IO-stringy (IO::Scalar), Frontier::RPC -(Frontier::RPC2), MIME::Entity (MIME-tools) and IPC::Run3 +install Text::CSV_XS, Spreadsheet::WriteExcel, IO-stringy (IO::Scalar), +Frontier::RPC (Frontier::RPC2), MIME::Entity (MIME-tools) and IPC::Run3 afterwords (for installs w/integrated RT): install HTML::Scrubber, Text::Quoted and Tree::Simple diff --git a/httemplate/docs/install.html b/httemplate/docs/install.html index 72b1214ec..d89ea3f04 100644 --- a/httemplate/docs/install.html +++ b/httemplate/docs/install.html @@ -61,7 +61,6 @@ Before installing, you need: <li><a href="http://search.cpan.org/dist/Chart">Chart</a> <li><a href="http://search.cpan.org/dist/Crypt-PasswdMD5">Crypt::PasswdMD5</a> <li><a href="http://search.cpan.org/dist/Locale-SubCountry">Locale::SubCountry</a> - <li><a href="http://search.cpan.org/dist/JavaScript-RPC">JavaScript::RPC (JavaScript::RPC::Server::CGI)</a> <li><a href="http://search.cpan.org/dist/Frontier-RPC">Frontier::RPC</a> <li><a href="http://search.cpan.org/dist/Text-CSV_XS">Text::CSV_XS</a> <li><a href="http://search.cpan.org/dist/Spreadsheet-WriteExcel">Spreadsheet::WriteExcel</a> diff --git a/httemplate/docs/upgrade10.html b/httemplate/docs/upgrade10.html index 98a457ae6..fb51bfb8e 100644 --- a/httemplate/docs/upgrade10.html +++ b/httemplate/docs/upgrade10.html @@ -18,8 +18,7 @@ install HTML::Widgets::SelectLayers 0.05 - In httpd.conf, change <Files ~ \.cgi> to <Files ~ (\.cgi|\.html)> - In httpd.conf, change <b>AddHandler perl-script .cgi</b> or <b>SetHandler perl-script</b> to <b>AddHandler perl-script .cgi .html</b> -install NetAddr::IP, Chart::Base, Locale::SubCountry, -JavaScript::RPC (JavaScript::RPC::Server::CGI), Text::CSV_XS, +install NetAddr::IP, Chart::Base, Locale::SubCountry, Text::CSV_XS, Spreadsheet::WriteExcel, IO-stringy (IO::Scalar), Frontier::RPC (Frontier::RPC2), MIME::Entity (MIME-tools) and IPC::Run3 <!-- and Crypt::YAPassGen--> diff --git a/httemplate/edit/cust_main/select-country.html b/httemplate/edit/cust_main/select-country.html index 44f4f0a55..014effd66 100644 --- a/httemplate/edit/cust_main/select-country.html +++ b/httemplate/edit/cust_main/select-country.html @@ -10,7 +10,11 @@ %> -<%= include('/elements/xmlhttp.html', $p.'misc/states.cgi', $opt{'prefix'}. 'get_states') %> +<%= include('/elements/xmlhttp.html', + 'url' => $p.'misc/states.cgi', + 'subs' => [ $opt{'prefix'}. 'get_states' ], + ) +%> <SCRIPT TYPE="text/javascript"> diff --git a/httemplate/edit/cust_main/select-county.html b/httemplate/edit/cust_main/select-county.html index 70a8f9477..3de380b31 100644 --- a/httemplate/edit/cust_main/select-county.html +++ b/httemplate/edit/cust_main/select-county.html @@ -15,7 +15,11 @@ <% if ( $countyflag ) { %> - <%= include('/elements/xmlhttp.html', $p.'misc/counties.cgi', $opt{'prefix'}. 'get_counties' ) %> + <%= include('/elements/xmlhttp.html', + 'url' => $p.'misc/counties.cgi', + 'subs' => [ $opt{'prefix'}. 'get_counties' ], + ) +%> <SCRIPT TYPE="text/javascript"> diff --git a/httemplate/edit/process/part_svc.cgi b/httemplate/edit/process/part_svc.cgi index 664e5212a..b92b62739 100755 --- a/httemplate/edit/process/part_svc.cgi +++ b/httemplate/edit/process/part_svc.cgi @@ -1,4 +1,3 @@ <% -my $server = new FS::UI::Web::JSRPC 'FS::part_svc::process'; -$server->process; -%> + my $server = new FS::UI::Web::JSRPC 'FS::part_svc::process', $cgi; +%><%= $server->process %> diff --git a/httemplate/edit/process/rate.cgi b/httemplate/edit/process/rate.cgi index 005caf90a..0030b5754 100755 --- a/httemplate/edit/process/rate.cgi +++ b/httemplate/edit/process/rate.cgi @@ -1,4 +1,3 @@ <% -my $server = new FS::UI::Web::JSRPC 'FS::rate::process'; -$server->process; -%> + my $server = new FS::UI::Web::JSRPC 'FS::rate::process'; +%><%= $server->process %> diff --git a/httemplate/elements/jsrsServer.html b/httemplate/elements/jsrsServer.html index d6d537070..fd6dc5465 100644 --- a/httemplate/elements/jsrsServer.html +++ b/httemplate/elements/jsrsServer.html @@ -1,4 +1,3 @@ <% -my $server = new FS::UI::Web::JSRPC; -$server->process; -%> + my $server = new FS::UI::Web::JSRPC '', $cgi; +%><%= $server->process %> diff --git a/httemplate/elements/progress-init.html b/httemplate/elements/progress-init.html index 472a1725f..fb408400a 100644 --- a/httemplate/elements/progress-init.html +++ b/httemplate/elements/progress-init.html @@ -11,7 +11,11 @@ } %> -<SCRIPT TYPE="text/javascript" SRC="../elements/jsrsClient.js"></SCRIPT> +<%= include('/elements/xmlhttp.html', + 'url' => $action, + 'subs' => [ 'start_job' ], + ) +%> <SCRIPT TYPE="text/javascript" SRC="../elements/overlibmws.js"></SCRIPT> <SCRIPT TYPE="text/javascript" SRC="../elements/overlibmws_iframe.js"></SCRIPT> <SCRIPT TYPE="text/javascript"> @@ -54,8 +58,10 @@ function <%=$key%>process () { } } - jsrsPOST = true; - jsrsExecute( '<%= $action %>', <%=$key%>myCallback, 'start_job', Hash ); + // jsrsPOST = true; + // jsrsExecute( '<%= $action %>', <%=$key%>myCallback, 'start_job', Hash ); + + start_job( Hash, <%=$key%>myCallback ); } diff --git a/httemplate/elements/progress-popup.html b/httemplate/elements/progress-popup.html index 20bb5fc5a..200f97d9b 100644 --- a/httemplate/elements/progress-popup.html +++ b/httemplate/elements/progress-popup.html @@ -10,25 +10,35 @@ </HEAD> <BODY BGCOLOR="#ccccff" onLoad="refreshStatus()"> -<SCRIPT TYPE="text/javascript" SRC="../elements/jsrsClient.js"></SCRIPT> +<%= include('/elements/xmlhttp.html', + 'url' => $p.'elements/jsrsServer.html', + 'subs' => [ 'job_status' ], + ) +%> <SCRIPT TYPE="text/javascript" src="../elements/qlib/control.js"></SCRIPT> <SCRIPT TYPE="text/javascript" src="../elements/qlib/imagelist.js"></SCRIPT> <SCRIPT TYPE="text/javascript" src="../elements/qlib/progress.js"></SCRIPT> <SCRIPT TYPE="text/javascript"> function refreshStatus () { - jsrsExecute( '<%=$p%>elements/jsrsServer.html', updateStatus, 'job_status', '<%= $jobnum %>' ); + //jsrsExecute( '<%=$p%>elements/jsrsServer.html', updateStatus, 'job_status', '<%= $jobnum %>' ); + + job_status( '<%= $jobnum %>', updateStatus ); } function updateStatus( status_statustext ) { - var Array = status_statustext.split("\n"); - var status = Array[0]; - var statustext = Array[1]; + + //var Array = status_statustext.split("\n"); + var statusArray = eval('(' + status_statustext + ')'); + var status = statusArray[0]; + var statustext = statusArray[1]; + //if ( status == 'progress' ) { //IE workaround, no i have no idea why if ( status.indexOf('progress') > -1 ) { document.getElementById("progress_percent").innerHTML = statustext + '%'; bar1.set(statustext); bar1.update; - jsrsExecute( '<%=$p%>elements/jsrsServer.html', updateStatus, 'job_status', '<%= $jobnum %>' ); + //jsrsExecute( '<%=$p%>elements/jsrsServer.html', updateStatus, 'job_status', '<%= $jobnum %>' ); + job_status( '<%= $jobnum %>', updateStatus ); } else if ( status.indexOf('complete') > -1 ) { <% if ( $message ) { %> document.getElementById("progress_message").innerHTML = "<%= $message %>"; diff --git a/httemplate/elements/xmlhttp.html b/httemplate/elements/xmlhttp.html index 425e28e3d..41965ace2 100644 --- a/httemplate/elements/xmlhttp.html +++ b/httemplate/elements/xmlhttp.html @@ -1,5 +1,9 @@ <% - my ( $url, @subs ) = @_; + my ( %opt ) = @_; + + my $url = $opt{'url'}; + #my $action = exists $opt{'action'} ? $opt{'action'} : 'GET'; + #my @subs = @{ $opt{'subs'}; $url .= ( ($url =~ /\?/) ? '&' : '?' ). 'sub='; @@ -27,7 +31,7 @@ } - <% foreach my $func (@subs) { + <% foreach my $func ( @{$opt{'subs'}} ) { my $furl = $url . uri_escape($func); $furl =~ s/\"/\\\\\"/; #javascript escape @@ -38,11 +42,21 @@ // count args; build URL var url = "<%=$furl%>"; var a = <%=$func%>.arguments; - for (var i = 0; i < a.length-1; i++) - url = url + "&arg=" + escape(a[i]); + var args; + var len; + if ( a && typeof a == 'object' && a[0].constructor == Array ) { + args = a[0]; + len = args.length + } else { + args = a; + len = args.length - 1; + } + for (var i = 0; i < len; i++) + url = url + "&arg=" + escape(args[i]); url = url.replace( /[+]/g, '%2B'); // fix the unescaped plus signs var xmlhttp = rs_init_object(); xmlhttp.open("GET", url, true); + xmlhttp.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT"); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState != 4) return; |