From fbff7663ff6fb115bcd4dae2eb991b90339bf68d Mon Sep 17 00:00:00 2001 From: ivan Date: Mon, 24 Oct 2005 11:56:35 +0000 Subject: [PATCH] fix rate plan editing with new xmlhttp progressbar - use POST instead of GET. also optimize SQL on rate search screen --- FS/FS/Schema.pm | 2 +- README.1.5.8 | 4 ++ httemplate/edit/process/rate.cgi | 2 +- httemplate/elements/progress-init.html | 11 ++++- httemplate/elements/xmlhttp.html | 77 +++++++++++++++++++++------------- 5 files changed, 64 insertions(+), 32 deletions(-) diff --git a/FS/FS/Schema.pm b/FS/FS/Schema.pm index 12a4fd5d2..aacc16474 100644 --- a/FS/FS/Schema.pm +++ b/FS/FS/Schema.pm @@ -1122,7 +1122,7 @@ sub tables_hashref { ], 'primary_key' => 'ratedetailnum', 'unique' => [ [ 'ratenum', 'orig_regionnum', 'dest_regionnum' ] ], - 'index' => [], + 'index' => [ [ 'ratenum', 'dest_regionnum' ] ], }, 'rate_region' => { diff --git a/README.1.5.8 b/README.1.5.8 index a5f4787b9..85f4de282 100644 --- a/README.1.5.8 +++ b/README.1.5.8 @@ -8,6 +8,9 @@ install Business::CreditCard 0.28 install the new version run "freeside-upgrade username" to uprade your database schema +Optional for better VoIP performance: +CREATE INDEX rate_detail2 ON rate_detail ( ratenum, dest_regionnum ); + ----- Installs w/integrated RT: @@ -25,4 +28,5 @@ Installs w/integrated RT: /opt/rt3/sbin/rt-setup-database --action acl --datadir etc/upgrade/3.3.11 /opt/rt3/sbin/rt-setup-database --action insert --datadir etc/upgrade/3.3.11 + run "dbdef-create username" diff --git a/httemplate/edit/process/rate.cgi b/httemplate/edit/process/rate.cgi index 0030b5754..87c082d64 100755 --- a/httemplate/edit/process/rate.cgi +++ b/httemplate/edit/process/rate.cgi @@ -1,3 +1,3 @@ <% - my $server = new FS::UI::Web::JSRPC 'FS::rate::process'; + my $server = new FS::UI::Web::JSRPC 'FS::rate::process', $cgi; %><%= $server->process %> diff --git a/httemplate/elements/progress-init.html b/httemplate/elements/progress-init.html index fb408400a..7844f5678 100644 --- a/httemplate/elements/progress-init.html +++ b/httemplate/elements/progress-init.html @@ -12,8 +12,9 @@ %> <%= include('/elements/xmlhttp.html', - 'url' => $action, - 'subs' => [ 'start_job' ], + 'method' => 'POST', + 'url' => $action, + 'subs' => [ 'start_job' ], ) %> @@ -27,6 +28,8 @@ function OLiframeContent(src, width, height, name) { function <%=$key%>process () { + //alert('<%=$key%>process for form <%=$formname%>'); + document.<%=$formname%>.submit.disabled=true; overlib( 'Submitting job to server...', WIDTH, 432, HEIGHT, 136, CAPTION, 'Please wait...', STICKY, AUTOSTATUSCAP, CLOSETEXT, '', CLOSECLICK, MIDX, 0, MIDY, 0 ); @@ -40,8 +43,10 @@ function <%=$key%>process () { ) { if ( field.type == 'select-multiple' ) { + //alert('select-multiple ' + field.name); for (var j=0; j < field.options.length; j++) { if ( field.options[j].selected ) { + //alert(field.name + ' => ' + field.options[j].value); Hash[x++] = field.name; Hash[x++] = field.options[j].value; } @@ -61,6 +66,8 @@ function <%=$key%>process () { // jsrsPOST = true; // jsrsExecute( '<%= $action %>', <%=$key%>myCallback, 'start_job', Hash ); + //alert('start_job( ' + Hash + ', <%=$key%>myCallback )' ); + //alert('start_job()' ); start_job( Hash, <%=$key%>myCallback ); } diff --git a/httemplate/elements/xmlhttp.html b/httemplate/elements/xmlhttp.html index 41965ace2..1199b69be 100644 --- a/httemplate/elements/xmlhttp.html +++ b/httemplate/elements/xmlhttp.html @@ -2,11 +2,11 @@ my ( %opt ) = @_; my $url = $opt{'url'}; - #my $action = exists $opt{'action'} ? $opt{'action'} : 'GET'; + my $method = exists($opt{'method'}) ? $opt{'method'} : 'GET'; #my @subs = @{ $opt{'subs'}; - $url .= ( ($url =~ /\?/) ? '&' : '?' ). - 'sub='; + $url .= ( ($url =~ /\?/) ? '&' : '?' ) + if $method eq 'GET'; %> @@ -33,43 +33,64 @@ <% foreach my $func ( @{$opt{'subs'}} ) { - my $furl = $url . uri_escape($func); + my $furl = $url; $furl =~ s/\"/\\\\\"/; #javascript escape %> function <%=$func%>() { - // count args; build URL - var url = "<%=$furl%>"; - var a = <%=$func%>.arguments; - var args; - var len; - if ( a && typeof a == 'object' && a[0].constructor == Array ) { - args = a[0]; + // count args; build URL + var url = "<%=$furl%>"; + var a = <%=$func%>.arguments; + + var args; + var len; + var content = 'sub=<%= uri_escape($func) %>'; + if ( a && typeof a == 'object' && a[0].constructor == Array ) { + args = a[0]; len = args.length - } else { + } 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; - //rs_debug("received " + x.responseText); - - if (xmlhttp.status != 200) { - alert(xmlhttp.status + " status connecting to " + url); - } else { + } + for (var i = 0; i < len; i++) + content = content + "&arg=" + escape(args[i]); + content = content.replace( /[+]/g, '%2B'); // fix unescaped plus signs + + if ( '<%=$method%>' == 'GET' ) { + url = url + content; + } + + //alert('<%=$method%> ' + url); + + var xmlhttp = rs_init_object(); + xmlhttp.open("<%=$method%>", url, true); + + xmlhttp.onreadystatechange = function() { + if (xmlhttp.readyState != 4) + return; + + if (xmlhttp.status != 200) { + alert(xmlhttp.status + " status connecting to " + url); + } else { var data = xmlhttp.responseText; + //alert('received response: ' + data); a[a.length-1](data); } } - xmlhttp.send(null); + + if ( '<%=$method%>' == 'POST' ) { + + xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); + xmlhttp.send(content); + + } else { + + xmlhttp.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT"); + xmlhttp.send(null); + + } + //rs_debug("x_$func_name url = " + url); //rs_debug("x_$func_name waiting.."); } -- 2.11.0