summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CREDITS10
-rw-r--r--Changes.1.5.810
-rw-r--r--FS/FS/UI/Web.pm59
-rw-r--r--JSRS-LICENSE29
-rw-r--r--README.1.5.75
-rw-r--r--httemplate/docs/install.html1
-rw-r--r--httemplate/docs/upgrade10.html3
-rw-r--r--httemplate/edit/cust_main/select-country.html6
-rw-r--r--httemplate/edit/cust_main/select-county.html6
-rwxr-xr-xhttemplate/edit/process/part_svc.cgi5
-rwxr-xr-xhttemplate/edit/process/rate.cgi5
-rw-r--r--httemplate/elements/jsrsServer.html5
-rw-r--r--httemplate/elements/progress-init.html12
-rw-r--r--httemplate/elements/progress-popup.html22
-rw-r--r--httemplate/elements/xmlhttp.html22
15 files changed, 125 insertions, 75 deletions
diff --git a/CREDITS b/CREDITS
index 450f26704..bec9702a5 100644
--- a/CREDITS
+++ b/CREDITS
@@ -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 &lt;Files ~ \.cgi&gt; to &lt;Files ~ (\.cgi|\.html)&gt;
- 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;