diff options
Diffstat (limited to 'fs_selfservice/FS-SelfService')
57 files changed, 392 insertions, 257 deletions
diff --git a/fs_selfservice/FS-SelfService/SelfService.pm b/fs_selfservice/FS-SelfService/SelfService.pm index c22e4269e..8227e5789 100644 --- a/fs_selfservice/FS-SelfService/SelfService.pm +++ b/fs_selfservice/FS-SelfService/SelfService.pm @@ -57,6 +57,10 @@ $socket .= '.'.$tag if defined $tag && length($tag); 'svc_status_html' => 'MyAccount/svc_status_html', 'svc_status_hash' => 'MyAccount/svc_status_hash', 'set_svc_status_hash' => 'MyAccount/set_svc_status_hash', + 'set_svc_status_listadd' => 'MyAccount/set_svc_status_listadd', + 'set_svc_status_listdel' => 'MyAccount/set_svc_status_listdel', + 'set_svc_status_vacationadd'=> 'MyAccount/set_svc_status_vacationadd', + 'set_svc_status_vacationdel'=> 'MyAccount/set_svc_status_vacationdel', 'acct_forward_info' => 'MyAccount/acct_forward_info', 'process_acct_forward' => 'MyAccount/process_acct_forward', 'list_dsl_devices' => 'MyAccount/list_dsl_devices', @@ -82,6 +86,7 @@ $socket .= '.'.$tag if defined $tag && length($tag); 'reset_passwd' => 'MyAccount/reset_passwd', 'check_reset_passwd' => 'MyAccount/check_reset_passwd', 'process_reset_passwd' => 'MyAccount/process_reset_passwd', + 'list_tickets' => 'MyAccount/list_tickets', 'create_ticket' => 'MyAccount/create_ticket', 'get_ticket' => 'MyAccount/get_ticket', 'adjust_ticket_priority' => 'MyAccount/adjust_ticket_priority', @@ -105,6 +110,9 @@ $socket .= '.'.$tag if defined $tag && length($tag); 'call_time' => 'PrepaidPhone/call_time', 'call_time_nanpa' => 'PrepaidPhone/call_time_nanpa', 'phonenum_balance' => 'PrepaidPhone/phonenum_balance', + + 'start_thirdparty' => 'MyAccount/start_thirdparty', + 'finish_thirdparty' => 'MyAccount/finish_thirdparty', ); @EXPORT_OK = ( keys(%autoload), @@ -1795,8 +1803,9 @@ sub domainselector { '<INPUT TYPE="hidden" NAME="domsvc" VALUE="'. $key. '"></TD></TR>' } - my $text .= qq!<TR><TD ALIGN="right">Domain</TD><TD><SELECT NAME="domsvc" SIZE=1 STYLE="width: 20em"><OPTION>(Choose Domain)!; + my $text .= qq!<TR><TD ALIGN="right">Domain</TD><TD><SELECT NAME="domsvc" SIZE=1 STYLE="width: 20em">!; + $text .= '<OPTION>(Choose Domain)' unless $domsvc; foreach my $domain ( sort { $domains->{$a} cmp $domains->{$b} } keys %$domains ) { $text .= qq!<OPTION VALUE="!. $domain. '"'. diff --git a/fs_selfservice/FS-SelfService/cgi/ach_payment_results.html b/fs_selfservice/FS-SelfService/cgi/ach_payment_results.html index 9cdb65e36..9c6022290 100644 --- a/fs_selfservice/FS-SelfService/cgi/ach_payment_results.html +++ b/fs_selfservice/FS-SelfService/cgi/ach_payment_results.html @@ -1,4 +1,3 @@ -<%= $url = "$selfurl?session=$session_id;action="; ''; %> <%= include('header', 'Payment results') %> <%= if ( $error ) { diff --git a/fs_selfservice/FS-SelfService/cgi/agent_customer_menu.html b/fs_selfservice/FS-SelfService/cgi/agent_customer_menu.html index 603fc0bd2..1e986e1ea 100644 --- a/fs_selfservice/FS-SelfService/cgi/agent_customer_menu.html +++ b/fs_selfservice/FS-SelfService/cgi/agent_customer_menu.html @@ -1,4 +1,4 @@ -<%= $url = "$selfurl?session=$session_id;custnum=$custnum;action="; ''; %> +<%= $url = "$selfurl?action="; ''; %> <TD VALIGN="top" HEIGHT=384 BGCOLOR="#dddddd"> <A HREF="<%= $url %>agent_provision">Setup services</A><BR><BR> <A HREF="<%= $url %>agent_order_pkg">Purchase additional package</A><BR><BR> diff --git a/fs_selfservice/FS-SelfService/cgi/change_bill.html b/fs_selfservice/FS-SelfService/cgi/change_bill.html index 7941971ba..06ea12b9b 100755 --- a/fs_selfservice/FS-SelfService/cgi/change_bill.html +++ b/fs_selfservice/FS-SelfService/cgi/change_bill.html @@ -1,4 +1,3 @@ -<%= $url = "$selfurl?session=$session_id;action="; ''; %> <%= include('header', 'Edit billing address') %> <%= if ( $error ) { @@ -6,7 +5,6 @@ } ''; %> <FORM NAME="ChangeBillForm" ACTION="<%= $selfurl %>" METHOD=POST onSubmit="document.bottomform.submit.disabled=true;"> -<INPUT TYPE="hidden" NAME="session" VALUE="<%= $session_id %>"> <INPUT TYPE="hidden" NAME="action" VALUE="process_change_bill"> <TABLE BGCOLOR="#cccccc" BORDER=0 CELLSPACING=0> diff --git a/fs_selfservice/FS-SelfService/cgi/change_password.html b/fs_selfservice/FS-SelfService/cgi/change_password.html index 68b6fd824..22d897362 100644 --- a/fs_selfservice/FS-SelfService/cgi/change_password.html +++ b/fs_selfservice/FS-SelfService/cgi/change_password.html @@ -1,4 +1,3 @@ -<%= $url = "$selfurl?session=$session_id;action="; ''; %> <%= include('header', 'Change password') %> <%= if ( $error ) { @@ -6,7 +5,6 @@ } ''; %> <FORM ACTION="<%= $selfurl %>" METHOD="POST"> -<INPUT TYPE="hidden" NAME="session" VALUE="<%= $session_id %>"> <INPUT TYPE="hidden" NAME="action" VALUE="process_change_password"> <TABLE BGCOLOR="#cccccc"> diff --git a/fs_selfservice/FS-SelfService/cgi/change_pay.html b/fs_selfservice/FS-SelfService/cgi/change_pay.html index 9633e8920..6898dc7f8 100644 --- a/fs_selfservice/FS-SelfService/cgi/change_pay.html +++ b/fs_selfservice/FS-SelfService/cgi/change_pay.html @@ -1,4 +1,3 @@ -<%= $url = "$selfurl?session=$session_id;action="; ''; %> <%= include('header', 'Change payment information') %> <%= if ( $error ) { @@ -13,7 +12,7 @@ my $preauto = '<TR><TD COLSPAN=3><INPUT TYPE="checkbox" NAME="auto" VALUE="1"'; my $postauto = '>Charge future payments to this card automatically</TD></TR>'; - my $tail = qq(</TABLE><INPUT TYPE="hidden" NAME="session" VALUE="$session_id">). + my $tail = qq(</TABLE>). qq(<INPUT TYPE="hidden" NAME="action" VALUE="process_change_pay">). qq(<BR>). qq(<INPUT TYPE="submit" NAME="process" ). diff --git a/fs_selfservice/FS-SelfService/cgi/change_pkg.html b/fs_selfservice/FS-SelfService/cgi/change_pkg.html index a841308a5..50067061d 100644 --- a/fs_selfservice/FS-SelfService/cgi/change_pkg.html +++ b/fs_selfservice/FS-SelfService/cgi/change_pkg.html @@ -12,10 +12,9 @@ function enable_change_pkg () { $OUT .= qq!<FONT SIZE="+1" COLOR="#ff0000">$error</FONT><BR><BR>!; } ''; %> <FORM NAME="ChangePkgForm" ACTION="<%= $selfurl %>" METHOD=POST> -<INPUT TYPE="hidden" NAME="session" VALUE="<%= $session_id %>"> <INPUT TYPE="hidden" NAME="action" VALUE="process_change_pkg"> -<INPUT TYPE="hidden" NAME="pkgnum" VALUE="<%= $pkgnum %>"> -<INPUT TYPE="hidden" NAME="pkg" VALUE="<%= $pkg %>"> +<INPUT TYPE="hidden" NAME="pkgnum" VALUE="<%= encode_entities($pkgnum) %>"> +<INPUT TYPE="hidden" NAME="pkg" VALUE="<%= encode_entities($pkg) %>"> <TABLE BGCOLOR="#cccccc" BORDER=0 CELLSPACING=0> <TR> <TD COLSPAN=2><SELECT NAME="pkgpart" onChange="enable_change_pkg()"> diff --git a/fs_selfservice/FS-SelfService/cgi/change_ship.html b/fs_selfservice/FS-SelfService/cgi/change_ship.html index 59f91767a..ecd20dc92 100755 --- a/fs_selfservice/FS-SelfService/cgi/change_ship.html +++ b/fs_selfservice/FS-SelfService/cgi/change_ship.html @@ -1,4 +1,3 @@ -<%= $url = "$selfurl?session=$session_id;action="; ''; %> <%= include('header', 'Edit service address') %> <%= if ( $error ) { @@ -6,7 +5,6 @@ } ''; %> <FORM NAME="OneTrueForm" ACTION="<%= $selfurl %>" METHOD=POST onSubmit="document.bottomform.submit.disabled=true;"> -<INPUT TYPE="hidden" NAME="session" VALUE="<%= $session_id %>"> <INPUT TYPE="hidden" NAME="action" VALUE="process_change_ship"> <TABLE BGCOLOR="#cccccc" BORDER=0 CELLSPACING=0> diff --git a/fs_selfservice/FS-SelfService/cgi/customer_change_pkg.html b/fs_selfservice/FS-SelfService/cgi/customer_change_pkg.html index 37dccaaf2..047f8802c 100644 --- a/fs_selfservice/FS-SelfService/cgi/customer_change_pkg.html +++ b/fs_selfservice/FS-SelfService/cgi/customer_change_pkg.html @@ -1,4 +1,3 @@ -<%= $url = "$selfurl?session=$session_id;action="; ''; %> <%= include('header', 'Change package') %> <%= include('change_pkg') %> diff --git a/fs_selfservice/FS-SelfService/cgi/customer_order_pkg.html b/fs_selfservice/FS-SelfService/cgi/customer_order_pkg.html index 192c29fa4..5fcf77fac 100755 --- a/fs_selfservice/FS-SelfService/cgi/customer_order_pkg.html +++ b/fs_selfservice/FS-SelfService/cgi/customer_order_pkg.html @@ -1,4 +1,3 @@ -<%= $url = "$selfurl?session=$session_id;action="; ''; %> <%= include('header', 'Purchase additional package') %> <%= include('order_pkg') %> diff --git a/fs_selfservice/FS-SelfService/cgi/delete_svc.html b/fs_selfservice/FS-SelfService/cgi/delete_svc.html index 80a14f85c..e2b26789d 100644 --- a/fs_selfservice/FS-SelfService/cgi/delete_svc.html +++ b/fs_selfservice/FS-SelfService/cgi/delete_svc.html @@ -1,4 +1,3 @@ -<%= $url = "$selfurl?session=$session_id;action="; ''; %> <%= include('header', 'Remove service') %> <%= if ( $error ) { diff --git a/fs_selfservice/FS-SelfService/cgi/finish_thirdparty_payment.html b/fs_selfservice/FS-SelfService/cgi/finish_thirdparty_payment.html new file mode 100644 index 000000000..79c02cc60 --- /dev/null +++ b/fs_selfservice/FS-SelfService/cgi/finish_thirdparty_payment.html @@ -0,0 +1,22 @@ +<%= include('header', 'Payment confirmation') %> + +<TABLE BGCOLOR="#cccccc"> +<%= if ( $error ) { + $OUT .= '<FONT SIZE=+1><B>Payment processing error</B></FONT><BR>'.$error; +} else { + $OUT .= ' +<TR><TH COLSPAN=2><FONT SIZE=+1><B>Your payment details</B></FONT></TH></TR> +<TR> + <TD ALIGN="right">Payment #</TD> + <TD BGCOLOR="#ffffff"><B>' . $paynum . '</B></TD> +</TR> +<TR> + <TD ALIGN="right">Payment amount</TH> + <TD BGCOLOR="#ffffff"><B>' . sprintf('$%.2f', $paid) . '</B></TD> +</TR> +<TR> + <TD ALIGN="right">Processing #</TD> + <TD BGCOLOR="#ffffff"><B>' . $order_number . '</B></TD> +</TR>'; +} %> +<%= include('footer') %> diff --git a/fs_selfservice/FS-SelfService/cgi/invoices.html b/fs_selfservice/FS-SelfService/cgi/invoices.html index d155b9343..752805123 100644 --- a/fs_selfservice/FS-SelfService/cgi/invoices.html +++ b/fs_selfservice/FS-SelfService/cgi/invoices.html @@ -1,4 +1,4 @@ -<%= $url = "$selfurl?session=$session_id;action="; ''; %> +<%= $url = "$selfurl?action="; ''; %> <%= include('header', 'All Invoices') %> <%= diff --git a/fs_selfservice/FS-SelfService/cgi/list_customers.html b/fs_selfservice/FS-SelfService/cgi/list_customers.html index 7fe7fa493..974634729 100644 --- a/fs_selfservice/FS-SelfService/cgi/list_customers.html +++ b/fs_selfservice/FS-SelfService/cgi/list_customers.html @@ -1,6 +1,6 @@ <HTML><HEAD><TITLE>Reseller</TITLE></HEAD> <BODY BGCOLOR="#eeeeee"><FONT SIZE=5>Reseller</FONT><BR><BR> -<%= $url = "$selfurl?session=$session_id;action="; ''; %> +<%= $url = "$selfurl?action="; ''; %> <TABLE BORDER=0 CELLPADDING=4><TR> <%= include('agent_menu') %> <TD VALIGN="top"> diff --git a/fs_selfservice/FS-SelfService/cgi/login.html b/fs_selfservice/FS-SelfService/cgi/login.html index f7473b1d5..68f3ae465 100644 --- a/fs_selfservice/FS-SelfService/cgi/login.html +++ b/fs_selfservice/FS-SelfService/cgi/login.html @@ -10,7 +10,7 @@ <FONT SIZE="+1" COLOR="#ff0000"><%= $error %></FONT> <FORM ACTION="<%= $self_url %>" METHOD=POST> -<INPUT TYPE="hidden" NAME="session" VALUE="login"> +<INPUT TYPE="hidden" NAME="action" VALUE="myaccount"> <INPUT TYPE="hidden" NAME="agentnum" VALUE="<%= $agentnum %>"> <TABLE BGCOLOR="<%= $box_bgcolor || '#c0c0c0' %>" BORDER=0 CELLSPACING=2 CELLPADDING=0> @@ -65,7 +65,6 @@ if ( $phone_login ) { <B>OR</B><BR><BR> <FORM ACTION="$self_url" METHOD=POST> - <INPUT TYPE="hidden" NAME="session" VALUE="login"> <TABLE BGCOLOR="$box_bgcolor" BORDER=0 CELLSPACING=2 CELLPADDING=0> <TR> <TH ALIGN="right">Phone number </TH> diff --git a/fs_selfservice/FS-SelfService/cgi/logout.html b/fs_selfservice/FS-SelfService/cgi/logout.html index 5e22ad80c..834ef13f2 100644 --- a/fs_selfservice/FS-SelfService/cgi/logout.html +++ b/fs_selfservice/FS-SelfService/cgi/logout.html @@ -1,5 +1,6 @@ <HTML> <HEAD> + <META HTTP-EQUIV="refresh" CONTENT="5;URL=<%= $cgi->url(-absolute => 1) %>"> <TITLE>MyAccount</TITLE> <%= $head %> </HEAD> diff --git a/fs_selfservice/FS-SelfService/cgi/make_ach_payment.html b/fs_selfservice/FS-SelfService/cgi/make_ach_payment.html index 5b81b00a4..e33ad574c 100644 --- a/fs_selfservice/FS-SelfService/cgi/make_ach_payment.html +++ b/fs_selfservice/FS-SelfService/cgi/make_ach_payment.html @@ -1,8 +1,6 @@ -<%= $url = "$selfurl?session=$session_id;action="; ''; %> <%= include('header', 'Make a payment') %> <FORM NAME="OneTrueForm" METHOD="POST" ACTION="<%=$selfurl%>" onSubmit="document.OneTrueForm.process.disabled=true"> -<INPUT TYPE="hidden" NAME="session" VALUE="<%=$session_id%>"> <INPUT TYPE="hidden" NAME="action" VALUE="ach_payment_results"> <TABLE BGCOLOR="#cccccc"> <TR> diff --git a/fs_selfservice/FS-SelfService/cgi/make_payment.html b/fs_selfservice/FS-SelfService/cgi/make_payment.html index defd4a551..915714cc3 100644 --- a/fs_selfservice/FS-SelfService/cgi/make_payment.html +++ b/fs_selfservice/FS-SelfService/cgi/make_payment.html @@ -1,8 +1,6 @@ -<%= $url = "$selfurl?session=$session_id;action="; ''; %> <%= include('header', 'Make a payment') %> <FORM NAME="OneTrueForm" METHOD="POST" ACTION="<%=$selfurl%>" onSubmit="document.OneTrueForm.process.disabled=true"> -<INPUT TYPE="hidden" NAME="session" VALUE="<%=$session_id%>"> <INPUT TYPE="hidden" NAME="action" VALUE="payment_results"> <TABLE BGCOLOR="#cccccc"> <TR> diff --git a/fs_selfservice/FS-SelfService/cgi/make_thirdparty_payment.html b/fs_selfservice/FS-SelfService/cgi/make_thirdparty_payment.html index b5b9eea1f..9a5678e8f 100755 --- a/fs_selfservice/FS-SelfService/cgi/make_thirdparty_payment.html +++ b/fs_selfservice/FS-SelfService/cgi/make_thirdparty_payment.html @@ -1,15 +1,12 @@ -<%= $url = "$selfurl?session=$session_id;action="; - $cgi = new CGI; - ''; %> <%= include('header', 'Make a payment') %> +<%= if ( $error ) { + $OUT .= qq!<FONT SIZE="+1" COLOR="#ff0000">$error</FONT><BR><BR>!; +} ''; %> <FORM NAME="OneTrueForm" METHOD="POST" ACTION="<%=$selfurl%>" onSubmit="document.OneTrueForm.process.disabled=true"> -<INPUT TYPE="hidden" NAME="session" VALUE="<%=$session_id%>"> <INPUT TYPE="hidden" NAME="action" VALUE="post_thirdparty_payment"> -<INPUT TYPE="hidden" NAME="payby_method" VALUE="<%= -$cgi->param('payby_method') =~ /(CC|ECHECK)/; -$1 %>"> +<INPUT TYPE="hidden" NAME="payby_method" VALUE="<%= $payby_method %>"> <TABLE BGCOLOR="#cccccc"> <TR> <TH ALIGN="right">Balance due</TH> diff --git a/fs_selfservice/FS-SelfService/cgi/myaccount.html b/fs_selfservice/FS-SelfService/cgi/myaccount.html index 9ab262261..66e2c692e 100644 --- a/fs_selfservice/FS-SelfService/cgi/myaccount.html +++ b/fs_selfservice/FS-SelfService/cgi/myaccount.html @@ -1,4 +1,4 @@ -<%= $url = "$selfurl?session=$session_id;action="; ''; %> +<%= $url = "$selfurl?action="; ''; %> <%= include('header', 'My Account') %> Hello <%= $name %>!<BR><BR> @@ -6,18 +6,13 @@ Hello <%= $name %>!<BR><BR> <%= include('small_custview') %> <BR> -<%= unless ( $access_pkgnum ) { - $OUT .= qq!Balance: <B>\$$balance</B><BR><BR>!; - } - ''; -%> <%= $OUT .= qq! <B><A HREF="${url}invoices">View All Invoices</A></B> !; %> <%= if ( $balance > 0 ) { - if (scalar(grep $_, @hide_payment_fields)) { + if (scalar(grep $_, @hide_payment_fields)) { # this sucks $OUT .= qq! <B><A HREF="${url}make_thirdparty_payment&payby_method=CC">Make a payment</A></B><BR><BR>!; } else { $OUT .= qq! <B><A HREF="${url}make_payment">Make a payment</A></B><BR>!; diff --git a/fs_selfservice/FS-SelfService/cgi/myaccount_menu.html b/fs_selfservice/FS-SelfService/cgi/myaccount_menu.html index c7d2bb2aa..7d1a5f793 100644 --- a/fs_selfservice/FS-SelfService/cgi/myaccount_menu.html +++ b/fs_selfservice/FS-SelfService/cgi/myaccount_menu.html @@ -1,4 +1,4 @@ -<%= $url = "$selfurl?session=$session_id;action="; ''; %> +<%= $url = "$selfurl?action="; ''; %> <TABLE BORDER=0><TR> <TD VALIGN="top" BGCOLOR="<%= $menu_bgcolor || $box_bgcolor || '#c0c0c0' %>"> @@ -23,37 +23,44 @@ unless ( $access_pkgnum ) { url=>'customer_order_pkg', 'indent'=>2 }; } +my %payby_mode; +@payby_mode{@cust_paybys} = @hide_payment_fields; +# $payby_mode{FOO} is true if FOO is thirdparty, false if it's B::OP, +# nonexistent if it's not supported + if ( $balance > 0 ) { #XXXFIXME "enable selfservice prepay features" flag or something, eventually per-pkg or something really fancy - #XXXFIXME still a bit sloppy for multi-gateway of differing namespace - my $i = 0; - while($i < scalar(@cust_paybys)) { last if $cust_paybys[$i] =~ /^CARD/; $i++ } - if ( $cust_paybys[$i] && $cust_paybys[$i] =~ /^CARD/ ) { + if ( exists( $payby_mode{CARD} ) ) { push @menu, { title => 'Recharge my account with a credit card', - url => $hide_payment_fields[$i] + url => $payby_mode{CARD} ? 'make_thirdparty_payment&payby_method=CC' : 'make_payment', indent => 2, } } - $i = 0; - while($i < scalar(@cust_paybys)) { last if $cust_paybys[$i] =~ /^CHEK/; $i++ } - if ( $cust_paybys[$i] && $cust_paybys[$i] =~ /^CHEK/ ) { + if ( exists( $payby_mode{CHEK} ) ) { push @menu, { title => 'Recharge my account with a check', - url => $hide_payment_fields[$i] + url => $payby_mode{CHEK} ? 'make_thirdparty_payment&payby_method=ECHECK' : 'make_ach_payment', indent => 2, } } - push @menu, { title => 'Recharge my account with a prepaid card', - url => 'recharge_prepay', - indent => 2, - } - if grep(/^PREP/, @cust_paybys); + if ( exists( $payby_mode{PREP} ) ) { + push @menu, { title => 'Recharge my account with a prepaid card', + url => 'recharge_prepay', + indent => 2, + } + } + if ( exists( $payby_mode{PPAL} ) ) { + push @menu, { title => 'Recharge my account with PayPal', + url => 'make_thirdparty_payment&payby_method=PAYPAL', + indent => 2, + } + } } push @menu, @@ -88,11 +95,13 @@ push @menu, { title=>'Logout', url=>'logout', size=>'+1', }, ; +my %menu_disable = map { $_=>1 } @menu_disable; foreach my $item ( @menu ) { - next if $menu_skipblanks && $item->{'title'} =~ /^\s*$/; - next if $menu_skipheadings && ! $item->{'url'}; - + next if ( $menu_skipblanks && $item->{'title'} =~ /^\s*$/ ) + || ( $menu_skipheadings && ! $item->{'url'} ) + || $menu_disable{$item->{'title'}}; + $OUT .= '<TR><TD'; if ( $menu_body_image ) { if ( exists $item->{'url'} && $action eq $item->{'url'} ) { diff --git a/fs_selfservice/FS-SelfService/cgi/order_pkg.html b/fs_selfservice/FS-SelfService/cgi/order_pkg.html index 79335a0c2..84a10abcb 100644 --- a/fs_selfservice/FS-SelfService/cgi/order_pkg.html +++ b/fs_selfservice/FS-SelfService/cgi/order_pkg.html @@ -12,7 +12,6 @@ function enable_order_pkg () { $OUT .= qq!<FONT SIZE="+1" COLOR="#ff0000">$error</FONT><BR><BR>!; } ''; %> <FORM NAME="OrderPkgForm" ACTION="<%= $selfurl %>" METHOD=POST> -<INPUT TYPE="hidden" NAME="session" VALUE="<%= $session_id %>"> <INPUT TYPE="hidden" NAME="action" VALUE="process_order_pkg"> <INPUT TYPE="hidden" NAME="custnum" VALUE="<%= $custnum %>"> <TABLE BGCOLOR="#cccccc" BORDER=0 CELLSPACING=0> diff --git a/fs_selfservice/FS-SelfService/cgi/payment_results.html b/fs_selfservice/FS-SelfService/cgi/payment_results.html index be727cb7d..04a0611d0 100644 --- a/fs_selfservice/FS-SelfService/cgi/payment_results.html +++ b/fs_selfservice/FS-SelfService/cgi/payment_results.html @@ -1,4 +1,3 @@ -<%= $url = "$selfurl?session=$session_id;action="; ''; %> <%= include('header', 'Payment results') %> <%= if ( $error ) { diff --git a/fs_selfservice/FS-SelfService/cgi/post_thirdparty_payment.html b/fs_selfservice/FS-SelfService/cgi/post_thirdparty_payment.html index 17710b2e5..ed7c2a32b 100644 --- a/fs_selfservice/FS-SelfService/cgi/post_thirdparty_payment.html +++ b/fs_selfservice/FS-SelfService/cgi/post_thirdparty_payment.html @@ -1,42 +1,21 @@ -<%= $url = "$selfurl?session=$session_id;action="; ''; %> -<%= include('header', 'Pay now') %> - -<SCRIPT TYPE="text/javascript" SRC="overlibmws.js"></SCRIPT> -<SCRIPT TYPE="text/javascript" SRC="overlibmws_iframe.js"></SCRIPT> -<SCRIPT TYPE="text/javascript" SRC="overlibmws_draggable.js"></SCRIPT> -<SCRIPT TYPE="text/javascript" SRC="overlibmws_crossframe.js"></SCRIPT> -<SCRIPT TYPE="text/javascript" SRC="iframecontentmws.js"></SCRIPT> - -<%= if ( $error ) { - $OUT .= qq!<FONT SIZE="+1" COLOR="#ff0000">$error</FONT><BR><BR>!; -}else{ - $OUT .= <<EOF; - You are about to contact our payment processor to pay $amount.<BR><BR> - Your transaction reference number is $reference <BR><BR> - <FORM METHOD="POST" ACTION="$popup_url"> -EOF - -#<FORM NAME="collect_popper" method="post" action="javascript:void(0)" onSubmit="popcollect()"> - my %itemhash = @collectitems; -# my $query = join(';', -# map { uri_escape($_) . '=' . uri_escape($itemhash{$_}) } -# keys(%itemhash) -# ); - foreach my $input (keys(%itemhash)) { - $OUT .= qq!<INPUT NAME="$input" TYPE="hidden" VALUE="$itemhash{$input}">\n!; - } - $OUT .= qq!<INPUT NAME="submit" TYPE="submit" VALUE="Pay now"></FORM>! +<HTML> + <HEAD> + <TITLE>Redirecting to payment processor...</TITLE> + </HEAD> + <BODY> + <H1>Redirecting to payment processor...</H1> + <FORM ID="autoform" ENCTYPE="multipart/form-data" ACTION="<%= $url %>" METHOD="POST" STYLE="display:none"> +<%= foreach my $name (keys %post_params) { + my $value = encode_entities($post_params{$name}); + $OUT .= ' + <INPUT NAME="' . $name . '" TYPE="hidden" VALUE="' . $value . '">'; +} %> + <INPUT TYPE="submit" VALUE="submit"> + </FORM> + <SCRIPT TYPE="text/javascript"> +window.onload = function() { + document.getElementById('autoform').submit(); } -%> - -<%= -#<SCRIPT TYPE="text/javascript"> -# function popcollect() { -# overlib( OLiframeContent('<%= $popup_url %>', 336, 550, 'Secure Payment Area', 0, 'auto' ), CAPTION, 'Pay now', STICKY, AUTOSTATUSCAP, MIDX, 0, MIDY, 0, DRAGGABLE, CLOSECLICK, BGCOLOR, '#333399', CGCOLOR, '#333399', CLOSETEXT, 'Close' ); -# overlib( OLpostAJAX('<%= $popup_url %>', -# return false; -# } -#</SCRIPT> -%> - -<%= include('footer') %> + </SCRIPT> + </BODY> +</HTML> diff --git a/fs_selfservice/FS-SelfService/cgi/process_change_bill.html b/fs_selfservice/FS-SelfService/cgi/process_change_bill.html index bf7ad778d..795cc12b0 100644 --- a/fs_selfservice/FS-SelfService/cgi/process_change_bill.html +++ b/fs_selfservice/FS-SelfService/cgi/process_change_bill.html @@ -1,4 +1,3 @@ -<%= $url = "$selfurl?session=$session_id;action="; ''; %> <%= include('header', 'Information updated successfully') %> <FONT SIZE=4>Information updated successfully.</FONT> <%= include('footer') %> diff --git a/fs_selfservice/FS-SelfService/cgi/process_change_password.html b/fs_selfservice/FS-SelfService/cgi/process_change_password.html index 4eca91fb6..d16c460c3 100644 --- a/fs_selfservice/FS-SelfService/cgi/process_change_password.html +++ b/fs_selfservice/FS-SelfService/cgi/process_change_password.html @@ -1,4 +1,3 @@ -<%= $url = "$selfurl?session=$session_id;action="; ''; %> <%= include('header', "Password changed" ) %> <FONT SIZE=4>Password changed for <%= $value %> <%= $label %>.</FONT> diff --git a/fs_selfservice/FS-SelfService/cgi/process_change_pay.html b/fs_selfservice/FS-SelfService/cgi/process_change_pay.html index e399aea17..8fb33b299 100644 --- a/fs_selfservice/FS-SelfService/cgi/process_change_pay.html +++ b/fs_selfservice/FS-SelfService/cgi/process_change_pay.html @@ -1,4 +1,3 @@ -<%= $url = "$selfurl?session=$session_id;action="; ''; %> <%= include('header', 'Information updated successfully' ) %> <FONT SIZE=4>Information updated successfully.</FONT> <%= include('footer') %> diff --git a/fs_selfservice/FS-SelfService/cgi/process_change_pkg.html b/fs_selfservice/FS-SelfService/cgi/process_change_pkg.html index bf15b6ea6..126e2a454 100644 --- a/fs_selfservice/FS-SelfService/cgi/process_change_pkg.html +++ b/fs_selfservice/FS-SelfService/cgi/process_change_pkg.html @@ -1,4 +1,3 @@ -<%= $url = "$selfurl?session=$session_id;action="; ''; %> <%= include('header', 'Package change successful') %> <%= include('footer') %> diff --git a/fs_selfservice/FS-SelfService/cgi/process_change_ship.html b/fs_selfservice/FS-SelfService/cgi/process_change_ship.html index bf7ad778d..795cc12b0 100644 --- a/fs_selfservice/FS-SelfService/cgi/process_change_ship.html +++ b/fs_selfservice/FS-SelfService/cgi/process_change_ship.html @@ -1,4 +1,3 @@ -<%= $url = "$selfurl?session=$session_id;action="; ''; %> <%= include('header', 'Information updated successfully') %> <FONT SIZE=4>Information updated successfully.</FONT> <%= include('footer') %> diff --git a/fs_selfservice/FS-SelfService/cgi/process_order_pkg.html b/fs_selfservice/FS-SelfService/cgi/process_order_pkg.html index 649d92092..b76dafbaa 100755 --- a/fs_selfservice/FS-SelfService/cgi/process_order_pkg.html +++ b/fs_selfservice/FS-SelfService/cgi/process_order_pkg.html @@ -1,4 +1,3 @@ -<%= $url = "$selfurl?session=$session_id;action="; ''; %> <%= include('header', 'Package order successful') %> <FONT SIZE=4>Package order successful.</FONT> diff --git a/fs_selfservice/FS-SelfService/cgi/process_order_recharge.html b/fs_selfservice/FS-SelfService/cgi/process_order_recharge.html index 4a16ec56a..659f110df 100644 --- a/fs_selfservice/FS-SelfService/cgi/process_order_recharge.html +++ b/fs_selfservice/FS-SelfService/cgi/process_order_recharge.html @@ -1,4 +1,3 @@ -<%= $url = "$selfurl?session=$session_id;action="; ''; %> <%= include('header', "$svc recharged successfully") %> <FONT SIZE=4><%= $svc %> recharged successfully.</FONT> diff --git a/fs_selfservice/FS-SelfService/cgi/process_suspend_pkg.html b/fs_selfservice/FS-SelfService/cgi/process_suspend_pkg.html index d5c62f4f1..2a9805f18 100644 --- a/fs_selfservice/FS-SelfService/cgi/process_suspend_pkg.html +++ b/fs_selfservice/FS-SelfService/cgi/process_suspend_pkg.html @@ -1,3 +1,2 @@ -<%= $url = "$selfurl?session=$session_id;action="; ''; %> <%= include('header', 'Package suspended') %> <%= include('footer') %> diff --git a/fs_selfservice/FS-SelfService/cgi/process_svc_acct.html b/fs_selfservice/FS-SelfService/cgi/process_svc_acct.html index d6515e7f4..48f6a85ce 100644 --- a/fs_selfservice/FS-SelfService/cgi/process_svc_acct.html +++ b/fs_selfservice/FS-SelfService/cgi/process_svc_acct.html @@ -1,4 +1,3 @@ -<%= $url = "$selfurl?session=$session_id;action="; ''; %> <%= include('header', "$svc setup successfully") %> <FONT SIZE=4><%= $svc %> setup successfully.</FONT> diff --git a/fs_selfservice/FS-SelfService/cgi/process_svc_external.html b/fs_selfservice/FS-SelfService/cgi/process_svc_external.html index c20aae02c..48d70b04e 100644 --- a/fs_selfservice/FS-SelfService/cgi/process_svc_external.html +++ b/fs_selfservice/FS-SelfService/cgi/process_svc_external.html @@ -1,4 +1,3 @@ -<%= $url = "$selfurl?session=$session_id;action="; ''; %> <%= include('header', "$svc setup successfully") %> <FONT SIZE=4><%= $svc %> setup successfully.</FONT> diff --git a/fs_selfservice/FS-SelfService/cgi/process_svc_phone.html b/fs_selfservice/FS-SelfService/cgi/process_svc_phone.html index d6515e7f4..48f6a85ce 100644 --- a/fs_selfservice/FS-SelfService/cgi/process_svc_phone.html +++ b/fs_selfservice/FS-SelfService/cgi/process_svc_phone.html @@ -1,4 +1,3 @@ -<%= $url = "$selfurl?session=$session_id;action="; ''; %> <%= include('header', "$svc setup successfully") %> <FONT SIZE=4><%= $svc %> setup successfully.</FONT> diff --git a/fs_selfservice/FS-SelfService/cgi/promocode.html b/fs_selfservice/FS-SelfService/cgi/promocode.html index f8ee7f6eb..0962d44b5 100644 --- a/fs_selfservice/FS-SelfService/cgi/promocode.html +++ b/fs_selfservice/FS-SelfService/cgi/promocode.html @@ -1,13 +1,8 @@ <HTML><HEAD><TITLE>ISP Signup</TITLE></HEAD> <BODY BGCOLOR="#e8e8e8"><FONT SIZE=7>ISP Signup - promotional code</FONT><BR><BR> -<SCRIPT> -function gotoURL(object) { - window.location.href = 'signup.cgi?promo_code=' + object.promo_code.value; -} -</SCRIPT> -<FORM> +<FORM ACTION="signup.cgi" METHOD="GET"> Enter promotional code <INPUT TYPE="text" NAME="promo_code"> -<INPUT type="submit" VALUE="Signup" onClick="gotoURL(this.form)"> +<INPUT type="submit" VALUE="Signup"> </FORM> </BODY> diff --git a/fs_selfservice/FS-SelfService/cgi/provision.html b/fs_selfservice/FS-SelfService/cgi/provision.html index cd8028a0d..808e4b54d 100644 --- a/fs_selfservice/FS-SelfService/cgi/provision.html +++ b/fs_selfservice/FS-SelfService/cgi/provision.html @@ -1,5 +1,4 @@ -<%= $url = "$selfurl?session=$session_id;action="; - $heading1 = "Setup my services"; +<%= $heading1 = "Setup my services"; $heading1 = "Package list" if $wholesale_view; $provision_list = "provision_list"; $provision_list = "ws_list" if $wholesale_view; diff --git a/fs_selfservice/FS-SelfService/cgi/provision_svc_acct.html b/fs_selfservice/FS-SelfService/cgi/provision_svc_acct.html index bae57305e..c63a838df 100644 --- a/fs_selfservice/FS-SelfService/cgi/provision_svc_acct.html +++ b/fs_selfservice/FS-SelfService/cgi/provision_svc_acct.html @@ -1,4 +1,3 @@ -<%= $url = "$selfurl?session=$session_id;action="; ''; %> <%= include('header', 'Setup account') %> <%= include('svc_acct') %> diff --git a/fs_selfservice/FS-SelfService/cgi/provision_svc_phone.html b/fs_selfservice/FS-SelfService/cgi/provision_svc_phone.html index 9a07e7da1..9ac039d74 100644 --- a/fs_selfservice/FS-SelfService/cgi/provision_svc_phone.html +++ b/fs_selfservice/FS-SelfService/cgi/provision_svc_phone.html @@ -1,5 +1,4 @@ -<%= $url = "$selfurl?session=$session_id;action="; - $heading2 = $lnp ? "Port-In Number" : "Setup phone number"; +<%= $heading2 = $lnp ? "Port-In Number" : "Setup phone number"; ''; %> <%= include('header', $heading2) %> @@ -15,8 +14,7 @@ if($error) { } %> -<FORM name="OneTrueForm" action="<%= $url %>" METHOD="POST"> -<INPUT TYPE="hidden" NAME="session" VALUE="<%= $session_id %>"> +<FORM name="OneTrueForm" action="<%= $selfurl %>" METHOD="POST"> <INPUT TYPE="hidden" NAME="action" VALUE="process_svc_phone"> <INPUT TYPE="hidden" NAME="pkgnum" VALUE="<%= $pkgnum %>"> <INPUT TYPE="hidden" NAME="svcpart" VALUE="<%= $svcpart %>"> diff --git a/fs_selfservice/FS-SelfService/cgi/recharge_prepay.html b/fs_selfservice/FS-SelfService/cgi/recharge_prepay.html index c716e8242..e47f8003a 100644 --- a/fs_selfservice/FS-SelfService/cgi/recharge_prepay.html +++ b/fs_selfservice/FS-SelfService/cgi/recharge_prepay.html @@ -1,8 +1,6 @@ -<%= $url = "$selfurl?session=$session_id;action="; ''; %> <%= include('header', 'Recharge with prepaid card') %> <FORM NAME="OneTrueForm" METHOD="POST" ACTION="<%=$selfurl%>" onSubmit="document.OneTrueForm.process.disabled=true"> -<INPUT TYPE="hidden" NAME="session" VALUE="<%=$session_id%>"> <INPUT TYPE="hidden" NAME="action" VALUE="recharge_results"> <TABLE BGCOLOR="#cccccc"> <!-- diff --git a/fs_selfservice/FS-SelfService/cgi/recharge_results.html b/fs_selfservice/FS-SelfService/cgi/recharge_results.html index 147b66bbe..919977a73 100644 --- a/fs_selfservice/FS-SelfService/cgi/recharge_results.html +++ b/fs_selfservice/FS-SelfService/cgi/recharge_results.html @@ -1,4 +1,3 @@ -<%= $url = "$selfurl?session=$session_id;action="; ''; %> <%= include('header', 'Recharge results') %> <%= if ( $error ) { diff --git a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi index 61361b8ee..ea2a40bfa 100755 --- a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi +++ b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi @@ -1,10 +1,11 @@ -#!/usr/bin/perl -Tw +#!/usr/bin/perl -w use strict; use vars qw($DEBUG $cgi $session_id $form_max $template_dir); use subs qw(do_template); use CGI; use CGI::Carp qw(fatalsToBrowser); +use CGI::Cookie; use Text::Template; use HTML::Entities; use Date::Format; @@ -20,6 +21,7 @@ use FS::SelfService qw( myaccount_passwd list_invoices create_ticket get_ticket did_report adjust_ticket_priority mason_comp port_graph + start_thirdparty finish_thirdparty ); $template_dir = '.'; @@ -29,49 +31,85 @@ $DEBUG = 0; $form_max = 255; $cgi = new CGI; +my %cookies = CGI::Cookie->fetch; -unless ( defined $cgi->param('session') ) { - my $login_info = login_info( 'agentnum' => scalar($cgi->param('agentnum')) ); +my $login_rv; - do_template('login', $login_info ); - exit; -} +if ( exists($cookies{'session'}) ) { -if ( $cgi->param('session') eq 'login' ) { + $session_id = $cookies{'session'}->value; - $cgi->param('username') =~ /^\s*([a-z0-9_\-\.\&]{0,$form_max})\s*$/i - or die "illegal username"; - my $username = $1; + if ( $session_id eq 'login' ) { + # then we've just come back from the login page - $cgi->param('domain') =~ /^\s*([\w\-\.]{0,$form_max})\s*$/ - or die "illegal domain"; - my $domain = $1; + $cgi->param('username') =~ /^\s*([a-z0-9_\-\.\&]{0,$form_max})\s*$/i; + my $username = $1; - $cgi->param('password') =~ /^(.{0,$form_max})$/ - or die "illegal password"; - my $password = $1; + $cgi->param('domain') =~ /^\s*([\w\-\.]{0,$form_max})\s*$/; + my $domain = $1; - my $rv = login( - 'username' => $username, - 'domain' => $domain, - 'password' => $password, - ); - if ( $rv->{error} ) { - my $login_info = login_info( 'agentnum' => $cgi->param('agentnum') ); - do_template('login', { - 'error' => $rv->{error}, - 'username' => $username, - 'domain' => $domain, - %$login_info, - } ); - exit; - } else { - $cgi->param('session' => $rv->{session_id} ); - $cgi->param('action' => 'myaccount' ); - } + $cgi->param('password') =~ /^(.{0,$form_max})$/; + my $password = $1; + + if ( $username and $domain and $password ) { + + # authenticate + $login_rv = login( + 'username' => $username, + 'domain' => $domain, + 'password' => $password, + ); + $session_id = $login_rv->{'session_id'}; + + } elsif ( $username or $domain or $password ) { + + my $error = 'Illegal '; #XXX localization... + my $count = 0; + if ( !$username ) { + $error .= 'username'; + $count++; + } + if ( !$domain ) { + $error .= ', ' if $count; + $error .= 'domain'; + $count++; + } + if ( !$password ) { + $error .= ', ' if $count; + $error .= 'and ' if $count > 1; + $error .= 'password'; + $count++; + } + $error .= '.'; + $login_rv = { + 'username' => $username, + 'domain' => $domain, + 'password' => $password, + 'error' => $error, + }; + $session_id = undef; # attempt login again + + } # else there was no input, so show no error message + } # else session_id ne 'login' + +} else { + # there is no session cookie + $login_rv = {}; } -$session_id = $cgi->param('session'); +if ( !$session_id ) { + # XXX why are we getting agentnum from a CGI param? surely it should + # be some kind of configuration option. + # + # show the login page + $session_id = 'login'; # set state + my $login_info = login_info( 'agentnum' => scalar($cgi->param('agentnum')) ); + + do_template('login', { %$login_rv, %$login_info }); + exit; +} + +# at this point $session_id is a real session #order|pw_list XXX ??? my @actions = ( qw( @@ -87,6 +125,8 @@ my @actions = ( qw( make_term_payment make_thirdparty_payment post_thirdparty_payment + finish_thirdparty_payment + cancel_thirdparty_payment payment_results ach_payment_results recharge_prepay @@ -120,10 +160,15 @@ my @actions = ( qw( customer_suspend_pkg process_suspend_pkg )); - -$cgi->param('action') =~ ( '^(' . join('|', @actions) . ')$' ) - or die "unknown action ". $cgi->param('action'); -my $action = $1; + +my $action = 'myaccount'; # sensible default +if ( $cgi->param('action') =~ /^(\w+)$/ ) { + if (grep {$_ eq $1} @actions) { + $action = $1; + } else { + warn "WARNING: unrecognized action '$1'\n"; + } +} warn "calling $action sub\n" if $DEBUG; @@ -136,6 +181,7 @@ warn Dumper($result) if $DEBUG; if ( $result->{error} && ( $result->{error} eq "Can't resume session" || $result->{error} eq "Expired session") ) { #ick + $session_id = 'login'; my $login_info = login_info(); do_template('login', $login_info); exit; @@ -663,24 +709,48 @@ sub ach_payment_results { } sub make_thirdparty_payment { - payment_info('session_id' => $session_id); + my $payment_info = payment_info('session_id' => $session_id); + $cgi->param('payby_method') =~ /^(CC|ECHECK|PAYPAL)$/ + or die "illegal payby method"; + $payment_info->{'payby_method'} = $1; + $payment_info->{'error'} = $cgi->param('error'); + + $payment_info; } sub post_thirdparty_payment { - $cgi->param('payby_method') =~ /^(CC|ECHECK)$/ + $cgi->param('payby_method') =~ /^(CC|ECHECK|PAYPAL)$/ or die "illegal payby method"; my $method = $1; $cgi->param('amount') =~ /^(\d+(\.\d*)?)$/ or die "illegal amount"; my $amount = $1; - my $result = realtime_collect( + my $result = start_thirdparty( 'session_id' => $session_id, 'method' => $method, 'amount' => $amount, ); + if ( $result->{error} ) { + $cgi->param('action', 'make_thirdparty_payment'); + $cgi->param('error', $result->{error}); + print $cgi->redirect( $cgi->self_url ); + exit; + } + $result; } +sub finish_thirdparty_payment { + my %param = $cgi->Vars; + finish_thirdparty( 'session_id' => $session_id, %param ); + # result contains either 'error' => error message, or the payment details +} + +sub cancel_thirdparty_payment { + $action = 'make_thirdparty_payment'; + finish_thirdparty( 'session_id' => $session_id, '_cancel' => 1 ); +} + sub make_term_payment { $cgi->param('amount') =~ /^(\d+\.\d{2})$/ or die "illegal payment amount"; @@ -843,7 +913,7 @@ sub real_port_graph { 'session_id' => $session_id, 'svcnum' => $svcnum, 'beginning' => str2time($cgi->param('start')." 00:00:00"), - 'ending' => str2time($cgi->param('end')." 23:59:59"), + 'ending' => str2time($cgi->param('end') ." 23:59:59"), ); my @usage = @{$res->{'usage'}}; my $png = $usage[0]->{'png'}; @@ -873,6 +943,7 @@ sub view_cdr_details { 'svcnum' => $cgi->param('svcnum'), 'beginning' => $cgi->param('beginning') || '', 'ending' => $cgi->param('ending') || '', + 'inbound' => $cgi->param('inbound') || 0, ); } @@ -929,54 +1000,63 @@ sub do_template { $cgi->delete_all(); $fill_in->{'selfurl'} = $cgi->self_url; $fill_in->{'cgi'} = \$cgi; + $fill_in->{'error'} = $cgi->param('error') if $cgi->param('error'); - my $access_info = $session_id + my $access_info = ($session_id and $session_id ne 'login') ? access_info( 'session_id' => $session_id ) : {}; $fill_in->{$_} = $access_info->{$_} foreach keys %$access_info; - - if($result && ref($result) && $result->{'format'} && $result->{'content'} - && $result->{'format'} eq 'csv') { - print $cgi->header('-expires' => 'now', - '-Content-Type' => 'text/csv', - '-Content-Disposition' => "attachment;filename=output.csv", - ), - $result->{'content'}; - } - elsif($result && ref($result) && $result->{'format'} && $result->{'content'} - && $result->{'format'} eq 'xls') { - print $cgi->header('-expires' => 'now', - '-Content-Type' => 'application/vnd.ms-excel', - '-Content-Disposition' => "attachment;filename=output.xls", - '-Content-Length' => length($result->{'content'}), - ), - $result->{'content'}; - } - elsif($result && ref($result) && $result->{'format'} && $result->{'content'} - && $result->{'format'} eq 'png') { - print $cgi->header('-expires' => 'now', - '-Content-Type' => 'image/png', - ), - $result->{'content'}; - } - else { - my $source = "$template_dir/$name.html"; - my $template = new Text::Template( TYPE => 'FILE', - SOURCE => $source, - DELIMITERS => [ '<%=', '%>' ], - UNTAINT => 1, - ) - or die $Text::Template::ERROR; - - my $data = $template->fill_in( - PACKAGE => 'FS::SelfService::_selfservicecgi', - HASH => $fill_in, - ) || "Error processing template $source"; # at least print _something_ - print $cgi->header( '-expires' => 'now' ); - print $data; + # update the user's authentication + my $timeout = $access_info->{'timeout'} || '60'; + my $cookie = CGI::Cookie->new('-name' => 'session', + '-value' => $session_id, + '-expires' => '+'.$timeout, + #'-secure' => 1, # would be a good idea... + ); + if ( $name eq 'logout' ) { + $cookie->expires(0); + } + + if ( $fill_in->{'format'} ) { + # then override content-type, and return $fill_in->{'content'} instead + # of filling in a template + if ( $fill_in->{'format'} eq 'csv') { + print $cgi->header('-expires' => 'now', + '-Content-Type' => 'text/csv', + '-Content-Disposition' => "attachment;filename=output.csv", + ); + } elsif ( $fill_in->{'format'} eq 'xls' ) { + print $cgi->header('-expires' => 'now', + '-Content-Type' => 'application/vnd.ms-excel', + '-Content-Disposition' => "attachment;filename=output.xls", + '-Content-Length' => length($fill_in->{'content'}), + ); + } elsif ( $fill_in->{'format'} eq 'png' ) { + print $cgi->header('-expires' => 'now', + '-Content-Type' => 'image/png', + ); } - } + print $fill_in->{'content'}; + } else { # the usual case + my $source = "$template_dir/$name.html"; + my $template = new Text::Template( + TYPE => 'FILE', + SOURCE => $source, + DELIMITERS => [ '<%=', '%>' ], + UNTAINT => 1, + ) + or die $Text::Template::ERROR; + + my $data = $template->fill_in( + PACKAGE => 'FS::SelfService::_selfservicecgi', + HASH => $fill_in, + ) || "Error processing template $source"; # at least print _something_ + print $cgi->header( '-cookie' => $cookie, + '-expires' => 'now' ); + print $data; + } +} #*FS::SelfService::_selfservicecgi::include = \&Text::Template::fill_in_file; @@ -1007,4 +1087,4 @@ sub include { } -1; + diff --git a/fs_selfservice/FS-SelfService/cgi/signup.cgi b/fs_selfservice/FS-SelfService/cgi/signup.cgi index 23d814e16..88eab5cce 100755 --- a/fs_selfservice/FS-SelfService/cgi/signup.cgi +++ b/fs_selfservice/FS-SelfService/cgi/signup.cgi @@ -231,7 +231,7 @@ if ( $magic eq 'process' || $action eq 'process_signup' ) { invoicing_list referral_custnum promo_code reg_code override_ban_warn pkgpart refnum agentnum - username sec_phrase _password popnum + username sec_phrase _password popnum domsvc mac_addr countrycode phonenum sip_password pin prepaid_shortform ), @@ -500,5 +500,7 @@ END package FS::SelfService::_signupcgi; use HTML::Entities; -use FS::SelfService qw(regionselector expselect popselector didselector); +use FS::SelfService qw( regionselector expselect popselector domainselector + didselector + ); diff --git a/fs_selfservice/FS-SelfService/cgi/signup.html b/fs_selfservice/FS-SelfService/cgi/signup.html index 3c71e92c4..a9b67592b 100755 --- a/fs_selfservice/FS-SelfService/cgi/signup.html +++ b/fs_selfservice/FS-SelfService/cgi/signup.html @@ -30,10 +30,10 @@ ' Signup form</FONT><BR><BR>'; %> -<FONT SIZE="+1" COLOR="#ff0000"><%= $error %></FONT> +<FONT SIZE="+1" COLOR="#ff0000"><%= encode_entities($error) %></FONT> <FORM NAME="OneTrueForm" ACTION="<%= $self_url %>" METHOD=POST onSubmit="document.OneTrueForm.signup.disabled=true"> -<INPUT TYPE="hidden" NAME="prepaid_shortform" VALUE="<%= $prepaid_shortform %>"> +<INPUT TYPE="hidden" NAME="prepaid_shortform" VALUE="<%= encode_entities($prepaid_shortform) %>"> <INPUT TYPE="hidden" NAME="session" VALUE="<%= $session_id %>"> <INPUT TYPE="hidden" NAME="action" VALUE="process_signup"> <INPUT TYPE="hidden" NAME="agentnum" VALUE="<%= $agentnum %>"> @@ -45,7 +45,7 @@ %> <%= - $OUT = join("\n", map { qq|<input type="hidden" name="$_" />| } qw / promo_code reg_code pkgpart username _password _password2 sec_phrase popnum mac_addr countrycode phonenum sip_password pin / ); + $OUT = join("\n", map { qq|<input type="hidden" name="$_" />| } qw / promo_code reg_code pkgpart username _password _password2 sec_phrase popnum domsvc mac_addr countrycode phonenum sip_password pin / ); %> <%= @@ -149,6 +149,7 @@ $OUT .= qq! else { @payby = ('PREPAY'); } +''; %> <BR>Billing information<TABLE BGCOLOR="<%= $box_bgcolor || '#c0c0c0' %>" BORDER=0 CELLSPACING=0 WIDTH="100%"> @@ -213,10 +214,10 @@ else { my( $account, $aba ) = split('@', $payinfo); my %paybychecked = ( - 'CARD' => '<TABLE BGCOLOR="'. ( $box_bgcolor || '#c0c0c0' ). qq!" BORDER=0 CELLSPACING=0 WIDTH="100%"><TR><TD ALIGN="right"><font color="#ff0000">*</font> Card type</TD><TD>$cardselect</TD></TR><TR><TD ALIGN="right"><font color="#ff0000">*</font> Card number</TD><TD><INPUT TYPE="text" NAME="CARD_payinfo" VALUE="$payinfo" MAXLENGTH=19></TD></TR><TR><TD ALIGN="right"><font color="#ff0000">*</font> Expration</TD><TD>!. expselect("CARD", $paydate). qq!</TD></TR><TR><TD ALIGN="right"><font color="#ff0000">*</font> Name on card</TD><TD><INPUT TYPE="text" NAME="CARD_payname" VALUE="$payname"></TD></TR>!, + 'CARD' => '<TABLE BGCOLOR="'. ( $box_bgcolor || '#c0c0c0' ). qq!" BORDER=0 CELLSPACING=0 WIDTH="100%"><TR><TD ALIGN="right"><font color="#ff0000">*</font> Card type</TD><TD>$cardselect</TD></TR><TR><TD ALIGN="right"><font color="#ff0000">*</font> Card number</TD><TD><INPUT TYPE="text" NAME="CARD_payinfo" VALUE="$payinfo" MAXLENGTH=19></TD></TR><TR><TD ALIGN="right"><font color="#ff0000">*</font> Expiration</TD><TD>!. expselect("CARD", $paydate). qq!</TD></TR><TR><TD ALIGN="right"><font color="#ff0000">*</font> Name on card</TD><TD><INPUT TYPE="text" NAME="CARD_payname" VALUE="$payname"></TD></TR>!, 'DCRD' => qq!Credit card<BR><font color="#ff0000">*</font>$cardselect<INPUT TYPE="text" NAME="DCRD_payinfo" VALUE="$payinfo" MAXLENGTH=19><BR><font color="#ff0000">*</font>Exp !. expselect("DCRD", $paydate). qq!<BR><font color="#ff0000">*</font>Name on card<BR><INPUT TYPE="text" NAME="DCRD_payname" VALUE="$payname">!, - 'CHEK' => qq!Electronic check<BR>${r}Account number <INPUT TYPE="text" NAME="CHEK_payinfo1" VALUE="$account" MAXLENGTH=10> Type <SELECT NAME="CHEK_paytype">!. join('', map {qq!<OPTION VALUE="$_"!.($paytype eq $_ ? 'SELECTED' : '').">$_</OPTION>"} @paytypes). qq!</SELECT><BR>${r}ABA/Routing code <INPUT TYPE="text" NAME="CHEK_payinfo2" VALUE="$aba" SIZE=10 MAXLENGTH=9><INPUT TYPE="hidden" NAME="CHEK_month" VALUE="12"><INPUT TYPE="hidden" NAME="CHEK_year" VALUE="2037"><BR>${r}Bank name <INPUT TYPE="text" NAME="CHEK_payname" VALUE="$payname">!, - 'DCHK' => qq!Electronic check<BR>${r}Account number <INPUT TYPE="text" NAME="DCHK_payinfo1" VALUE="$account" MAXLENGTH=10> Type <SELECT NAME="DCHK_paytype">!. join('', map {qq!<OPTION VALUE="$_"!.($paytype eq $_ ? 'SELECTED' : '').">$_</OPTION>"} @paytypes). qq!</SELECT><BR>${r}ABA/Routing code <INPUT TYPE="text" NAME="DCHK_payinfo2" VALUE="$aba" SIZE=10 MAXLENGTH=9><INPUT TYPE="hidden" NAME="DCHK_month" VALUE="12"><INPUT TYPE="hidden" NAME="DCHK_year" VALUE="2037"><BR>${r}Bank name <INPUT TYPE="text" NAME="DCHK_payname" VALUE="">!, + 'CHEK' => qq!Electronic check<BR>${r}Account number <INPUT TYPE="text" NAME="CHEK_payinfo1" VALUE="$account" MAXLENGTH=10> Type <SELECT NAME="CHEK_paytype">!. join('', map {qq!<OPTION VALUE="$_"!.($paytype eq $_ ? ' SELECTED' : '').">$_</OPTION>"} @paytypes). qq!</SELECT><BR>${r}ABA/Routing code <INPUT TYPE="text" NAME="CHEK_payinfo2" VALUE="$aba" SIZE=10 MAXLENGTH=9><INPUT TYPE="hidden" NAME="CHEK_month" VALUE="12"><INPUT TYPE="hidden" NAME="CHEK_year" VALUE="2037"><BR>${r}Bank name <INPUT TYPE="text" NAME="CHEK_payname" VALUE="$payname">!, + 'DCHK' => qq!Electronic check<BR>${r}Account number <INPUT TYPE="text" NAME="DCHK_payinfo1" VALUE="$account" MAXLENGTH=10> Type <SELECT NAME="DCHK_paytype">!. join('', map {qq!<OPTION VALUE="$_"!.($paytype eq $_ ? ' SELECTED' : '').">$_</OPTION>"} @paytypes). qq!</SELECT><BR>${r}ABA/Routing code <INPUT TYPE="text" NAME="DCHK_payinfo2" VALUE="$aba" SIZE=10 MAXLENGTH=9><INPUT TYPE="hidden" NAME="DCHK_month" VALUE="12"><INPUT TYPE="hidden" NAME="DCHK_year" VALUE="2037"><BR>${r}Bank name <INPUT TYPE="text" NAME="DCHK_payname" VALUE="">!, 'LECB' => qq!Phone bill billing<BR>${r}Phone number <INPUT TYPE="text" BANE="LECB_payinfo" VALUE="$payinfo" MAXLENGTH=15 SIZE=16><INPUT TYPE="hidden" NAME="LECB_month" VALUE="12"><INPUT TYPE="hidden" NAME="LECB_year" VALUE="2037"><INPUT TYPE="hidden" NAME="LECB_payname" VALUE="">!, 'BILL' => qq!Billing<BR>P.O. <INPUT TYPE="text" NAME="BILL_payinfo" VALUE="$payinfo"><BR><INPUT TYPE="hidden" NAME="BILL_month" VALUE="12"><INPUT TYPE="hidden" NAME="BILL_year" VALUE="2037">Attention<INPUT TYPE="text" NAME="BILL_payname" VALUE="$payname">!, 'COMP' => qq!Complimentary<BR><font color="#ff0000">*</font>Approved by<INPUT TYPE="text" NAME="COMP_payinfo" VALUE="$payinfo"><BR><font color="#ff0000">*</font>Exp !. expselect("COMP", $paydate), @@ -318,6 +319,12 @@ ENDOUT <TD ALIGN="right">Username</TD> <TD><INPUT TYPE="text" NAME="username" VALUE="$username"></TD> </TR> +ENDOUT + + $OUT .= domainselector( svcpart=>$default_svcpart, domsvc=>$default_domsvc ) + if $default_svcpart; + + $OUT .= <<ENDOUT; <TR> <TD ALIGN="right">Password</TD> <TD><INPUT TYPE="password" NAME="_password" VALUE="$_password"></TD> @@ -438,7 +445,7 @@ function fixup_form() { var signup_elements = new Array ( 'promo_code', 'reg_code', 'pkgpart', - 'username', '_password', '_password2', 'sec_phrase', 'popnum', + 'username', '_password', '_password2', 'sec_phrase', 'popnum', 'domsvc', 'mac_addr', 'countrycode', 'phonenum', 'sip_password', 'pin' ); diff --git a/fs_selfservice/FS-SelfService/cgi/small_custview.html b/fs_selfservice/FS-SelfService/cgi/small_custview.html index 8d6e07368..470fe7151 100644 --- a/fs_selfservice/FS-SelfService/cgi/small_custview.html +++ b/fs_selfservice/FS-SelfService/cgi/small_custview.html @@ -10,10 +10,10 @@ Customer #<B><%= $custnum %></B> ? '<I><FONT SIZE="-1">Billing Address</FONT></I><BR>' : '' %> - <%= $first %> <%= $last %><BR> - <%= $company ? $company.'<BR>' : '' %> - <%= $address1 %><BR> - <%= $address2 ? $address2.'<BR>' : '' %> + <%= encode_entities($first) %> <%= encode_entities($last) %><BR> + <%= $company ? encode_entities($company).'<BR>' : '' %> + <%= encode_entities($address1) %><BR> + <%= $address2 ? encode_entities($address2).'<BR>' : '' %> <%= $city %>, <%= $state %> <%= $zip %><BR> <%= $country && $country ne ($countrydefault||'US') ? $country.'<BR>' diff --git a/fs_selfservice/FS-SelfService/cgi/svc_acct.html b/fs_selfservice/FS-SelfService/cgi/svc_acct.html index 00244386b..09d9163a1 100644 --- a/fs_selfservice/FS-SelfService/cgi/svc_acct.html +++ b/fs_selfservice/FS-SelfService/cgi/svc_acct.html @@ -5,7 +5,6 @@ '</FONT><BR><BR>'; } ''; %> <FORM ACTION="<%= $selfurl %>" METHOD=POST> -<INPUT TYPE="hidden" NAME="session" VALUE="<%= $session_id %>"> <INPUT TYPE="hidden" NAME="action" VALUE="process_svc_acct"> <INPUT TYPE="hidden" NAME="custnum" VALUE="<%= $custnum %>"> <INPUT TYPE="hidden" NAME="pkgnum" VALUE="<%= $pkgnum %>"> diff --git a/fs_selfservice/FS-SelfService/cgi/ticket_summary.html b/fs_selfservice/FS-SelfService/cgi/ticket_summary.html index 4333c4e92..94043bfb6 100644 --- a/fs_selfservice/FS-SelfService/cgi/ticket_summary.html +++ b/fs_selfservice/FS-SelfService/cgi/ticket_summary.html @@ -12,7 +12,6 @@ my $can_set_priority = if ( $can_set_priority ) { $OUT .= qq!<FORM ACTION="$selfurl" METHOD="POST">! . - qq!<INPUT TYPE="hidden" NAME="session" VALUE="$session_id">! . qq!<INPUT TYPE="hidden" NAME="action" VALUE="ticket_priority">!; } $date_format ||= '%Y-%m-%d'; diff --git a/fs_selfservice/FS-SelfService/cgi/tktcreate.html b/fs_selfservice/FS-SelfService/cgi/tktcreate.html index de7ff60b8..1e1ecb659 100644 --- a/fs_selfservice/FS-SelfService/cgi/tktcreate.html +++ b/fs_selfservice/FS-SelfService/cgi/tktcreate.html @@ -1,4 +1,3 @@ -<%= $url = "$selfurl?session=$session_id;action="; ''; %> <%= include('header', 'Create a ticket') %> <%= @@ -10,7 +9,6 @@ if ( $ticket_id ) { Please fill in both the subject and message <br><br> <FORM ACTION="$selfurl" METHOD=POST> - <input type="hidden" name="session" value="$session_id"> <input type="hidden" name="action" value="tktcreate"> <table> <tr> diff --git a/fs_selfservice/FS-SelfService/cgi/tktview.html b/fs_selfservice/FS-SelfService/cgi/tktview.html index 72634fee2..974dd6b01 100644 --- a/fs_selfservice/FS-SelfService/cgi/tktview.html +++ b/fs_selfservice/FS-SelfService/cgi/tktview.html @@ -1,4 +1,3 @@ -<%= $url = "$selfurl?session=$session_id;action="; ''; %> <%= include('header', "View ticket #$ticket_id") %> <%= @@ -20,7 +19,6 @@ else { %> <BR><BR><BR> <FORM ACTION="<%=$selfurl%>" METHOD=POST> - <input type="hidden" name="session" value="<%=$session_id%>"> <input type="hidden" name="ticket_id" value="<%=$ticket_id%>"> <%= if ( $edit_ticket_subject ) { $OUT .= ' Subject:<BR><input type="text" name="subject" value="' . diff --git a/fs_selfservice/FS-SelfService/cgi/verify.cgi b/fs_selfservice/FS-SelfService/cgi/verify.cgi index d9346b897..ff209d2f9 100755 --- a/fs_selfservice/FS-SelfService/cgi/verify.cgi +++ b/fs_selfservice/FS-SelfService/cgi/verify.cgi @@ -87,11 +87,14 @@ my $rv = capture_payment( map { $_ => scalar($cgi->param($_)) } $cgi->param }, url => $cgi->self_url, + cancel => ($cgi->param('cancel') ? 1 : 0), ); $error = $rv->{error}; - -if ( $error eq '_decline' ) { + +if ( $error eq '_cancel' ) { + print_okay(%$rv); +} elsif ( $error eq '_decline' ) { print_decline(); } elsif ( $error ) { print_verify(); @@ -133,8 +136,14 @@ sub print_okay { $success_url .= '/signup.cgi?action=success'; } - print $cgi->header( '-expires' => 'now' ), - $success_template->fill_in( HASH => { success_url => $success_url } ); + if ( $param{error} eq '_cancel' ) { + # then the payment was canceled, so don't show a message, just redirect + # (during signup, you really need a separate landing page for this case) + print $cgi->redirect($success_url); + } else { + print $cgi->header( '-expires' => 'now' ), + $success_template->fill_in( HASH => { success_url => $success_url } ); + } } sub success_default { #html to use if you don't specify a success file diff --git a/fs_selfservice/FS-SelfService/cgi/view_cdr_details.html b/fs_selfservice/FS-SelfService/cgi/view_cdr_details.html index b0205ec89..f39668247 100644 --- a/fs_selfservice/FS-SelfService/cgi/view_cdr_details.html +++ b/fs_selfservice/FS-SelfService/cgi/view_cdr_details.html @@ -1,5 +1,5 @@ -<%= $url = "$selfurl?session=$session_id;action="; ''; %> -<%= include('header', 'Call usage for '. +<%= include('header', ($inbound ? 'Received calls' : 'Dialed calls' ) . + ' for '. Date::Format::time2str('%b %o %Y', $beginning). ' - '. Date::Format::time2str('%b %o %Y', $ending) diff --git a/fs_selfservice/FS-SelfService/cgi/view_customer.html b/fs_selfservice/FS-SelfService/cgi/view_customer.html index 5bfb9b6fd..a40cd5a45 100644 --- a/fs_selfservice/FS-SelfService/cgi/view_customer.html +++ b/fs_selfservice/FS-SelfService/cgi/view_customer.html @@ -1,6 +1,5 @@ <HTML><HEAD><TITLE>Reseller</TITLE></HEAD> <BODY BGCOLOR="#eeeeee"><FONT SIZE=5>Reseller</FONT><BR><BR> -<%= $url = "$selfurl?session=$session_id;action="; ''; %> <TABLE BORDER=0 CELLPADDING=4><TR> <%= include('agent_menu') %> <TD VALIGN="top"> diff --git a/fs_selfservice/FS-SelfService/cgi/view_invoice.html b/fs_selfservice/FS-SelfService/cgi/view_invoice.html index 072a4147c..d49a466d2 100644 --- a/fs_selfservice/FS-SelfService/cgi/view_invoice.html +++ b/fs_selfservice/FS-SelfService/cgi/view_invoice.html @@ -1,4 +1,3 @@ -<%= $url = "$selfurl?session=$session_id;action="; ''; %> <%= include('header', 'Invoice') %> <%= $invoice_html %> diff --git a/fs_selfservice/FS-SelfService/cgi/view_port_graph.html b/fs_selfservice/FS-SelfService/cgi/view_port_graph.html index d42f405b9..0d32a88c4 100644 --- a/fs_selfservice/FS-SelfService/cgi/view_port_graph.html +++ b/fs_selfservice/FS-SelfService/cgi/view_port_graph.html @@ -1,4 +1,4 @@ -<%= $url = "$selfurl?session=$session_id;action="; ''; %> +<%= $url = "$selfurl?action="; ''; %> <%= include('header', "Service usage details for $start - $end") %> <%= if ( $error ) { diff --git a/fs_selfservice/FS-SelfService/cgi/view_support_details.html b/fs_selfservice/FS-SelfService/cgi/view_support_details.html index 104b061bc..b401be4f4 100644 --- a/fs_selfservice/FS-SelfService/cgi/view_support_details.html +++ b/fs_selfservice/FS-SelfService/cgi/view_support_details.html @@ -1,4 +1,4 @@ -<%= $url = "$selfurl?session=$session_id;action="; ''; %> +<%= $url = "$selfurl?action="; ''; %> <%= include('header', 'Usage details') %> <FONT SIZE=4>Support usage details for diff --git a/fs_selfservice/FS-SelfService/cgi/view_usage.html b/fs_selfservice/FS-SelfService/cgi/view_usage.html index fd5426a75..f50f77078 100644 --- a/fs_selfservice/FS-SelfService/cgi/view_usage.html +++ b/fs_selfservice/FS-SelfService/cgi/view_usage.html @@ -1,7 +1,20 @@ -<%= $url = "$selfurl?session=$session_id;action="; - @svc_acct = grep { $_->{svcdb} eq 'svc_acct' } @svcs; - @svc_phone = grep { $_->{svcdb} eq 'svc_phone' } @svcs; - @svc_port = grep { $_->{svcdb} eq 'svc_port' } @svcs; +<%= $url = "$selfurl?action="; + %by_pkg_label = (); # not used yet, but I'm sure it will be... + @svc_acct = (); + @svc_phone = (); + @svc_port = (); + + foreach (@svcs) { + $by_pkg_label{ $_->{pkg_label} } ||= []; + push @{ $by_pkg_label{ $_->{pkg_label} } }, $_; + if ( $_->{svcdb} eq 'svc_acct' ) { + push @svc_acct, $_; + } elsif ( $_->{svcdb} eq 'svc_phone' ) { + push @svc_phone, $_; + } elsif ( $_->{svcdb} eq 'svc_port' ) { + push @svc_port, $_; + } + } ''; %> <%= include('header', 'Account usage') %> @@ -62,11 +75,22 @@ <%= scalar(@svc_acct) ? '</TABLE><BR><BR>' : '' %> <%= if ( @svc_phone ) { + %any = (); + for my $dir (qw(outbound inbound)) { + $any{$dir} = grep { $_->{$dir} } @svc_phone; + } $OUT.= '<FONT SIZE="4">Call usage</FONT><BR><BR> - <TABLE BGCOLOR="#cccccc"> + <TABLE BGCOLOR="#cccccc" STYLE="display:inline-block"> <TR> - <TH ALIGN="left">Number</TH>'; #"Account" ? - #what else? + <TH ALIGN="left">Number</TH>'; + if ( $any{outbound} ) { + $OUT .= ' + <TH>Dialed</TH>'; + } + if ( $any{inbound} ) { + $OUT .= ' + <TH>Received</TH>'; + } $OUT .= '</TR>'; } else { $OUT .= ''; @@ -76,13 +100,65 @@ <%= foreach my $svc_phone ( @svc_phone ) { my $link = "${url}view_cdr_details;". "svcnum=$svc_phone->{'svcnum'};beginning=0;ending=0"; - $OUT .= '<TR><TD>'; - $OUT .= qq!<A HREF="$link">!. $svc_phone->{'label'}. ': '. $svc_phone->{'value'}.'</A>'; - $OUT .= '</TD></TR>'; + $OUT .= '<TR><TD>'. $svc_phone->{'label'}. ': '. $svc_phone->{'value'}; + $OUT .= '</TD>'; + # usage summary w/ links + for my $dir (qw(outbound inbound)) { + if ( $dir eq 'inbound' ) { + $link .= ';inbound=1'; + } + if ( $svc_phone->{$dir} ) { + $OUT .= '<TD ALIGN="right">'.qq!<A HREF="$link">! . + sprintf('%d calls (%.0f minutes)', + $svc_phone->{$dir}->{'count'}, + $svc_phone->{$dir}->{'duration'} / 60 + ) . + '</A></TD>'; + } elsif ( $any{$dir} ) { + $OUT .= '<TD></TD>'; + } } + $OUT .= '</TR>'; +} +''; %> -<%= scalar(@svc_phone) ? '</TABLE><BR><BR>' : '' %> +<%= if ( @usage_pools ) { + $OUT .= '</TABLE> + <TABLE BGCOLOR="#cccccc" STYLE="display: inline-block"> + <TR><TH COLSPAN=4>Remaining minutes</TH></TR> + '; + my $any_shared = 0; + foreach my $usage (@usage_pools) { + # false laziness with the back office side + my ($description, $remain, $total, $shared) = @$usage; + if ( $shared ) { + $any_shared = 1; + $description .= '*'; + } + my $ratio = 255 * ($remain/$total); + $ratio = 255 if $color > 255; + my $color = + sprintf('STYLE="font-weight: bold; color: #%02x%02x00"', + 255 - $ratio, $ratio); + $OUT .= + qq!<TR> + <TD ALIGN="right">$description</TD> + <TD $color ALIGN="right">$remain</TD> + <TD $color> / </TD> + <TD $color>$total</TD> + </TR>!; + } + if ( $any_shared ) { + $OUT .= '<TR STYLE="font-size: 80%; font-style: italic">'. + '<TD COLSPAN=4>* shared among all your phone plans</TD></TR>'; + } +} +if ( scalar(@svc_phone) or scalar(@usage_pools) ) { + $OUT .= '</TABLE><BR><BR>'; +} +''; +%> <%= if ( @svc_port ) { $OUT.= '<FONT SIZE="4">Bandwidth Graphs</FONT><BR><BR> @@ -120,8 +196,7 @@ foreach my $svc_port ( @svc_port ) { $OUT .= '<TR><TD>'. $svc_port->{'label'}. ': '. $svc_port->{'value'}.'</TD>'; $OUT .= qq! <TD><FORM ACTION="$url" METHOD="GET"> <INPUT TYPE="hidden" name="svcnum" value="$svcnum"> - <INPUT TYPE="hidden" name="action" value="view_port_graph"> - <INPUT TYPE="hidden" name="session" value="$session_id"> !; + <INPUT TYPE="hidden" name="action" value="view_port_graph"> !; $OUT .= preset_range($default_start,$default_end,'Last Day',$date_format,$svcnum) .' | '.preset_range($default_end-86400*7,$default_end,'Last Week',$date_format,$svcnum) .' | '.preset_range($default_end-86400*30,$default_end,'Last Month',$date_format,$svcnum) diff --git a/fs_selfservice/FS-SelfService/cgi/view_usage_details.html b/fs_selfservice/FS-SelfService/cgi/view_usage_details.html index c4cc177e1..0388c2fad 100644 --- a/fs_selfservice/FS-SelfService/cgi/view_usage_details.html +++ b/fs_selfservice/FS-SelfService/cgi/view_usage_details.html @@ -1,4 +1,4 @@ -<%= $url = "$selfurl?session=$session_id;action="; ''; %> +<%= $url = "$selfurl?;action="; ''; %> <%= include('header', 'Service usage details for '. Date::Format::time2str('%b %o %Y', $beginning). ' - '. |