#!/usr/bin/perl -Tw
#
-# $Id: signup.cgi,v 1.12 2001-09-11 11:03:06 ivan Exp $
+# $Id: signup.cgi,v 1.14 2001-09-27 21:32:36 ivan Exp $
use strict;
use vars qw( @payby $cgi $locales $packages $pops $error
}
if ( -e $success_html ) {
- my $success_txt = Text::Template::_load_text($signup_html)
+ my $success_txt = Text::Template::_load_text($success_html)
or die $Text::Template::ERROR;
$success_txt =~ /^(.*)$/s; #untaint the template source - it's trusted
$success_txt = $1;
$invoicing_list = 'POST';
}
- ( $error = new_customer ( {
+ $error = new_customer ( {
'last' => $last = $cgi->param('last'),
'first' => $first = $cgi->param('first'),
'ss' => $ss = $cgi->param('ss'),
'username' => $username = $cgi->param('username'),
'_password' => $password = $cgi->param('_password'),
'popnum' => $popnum = $cgi->param('popnum'),
- } ) )
- ? print_form()
- : print_okay();
+ } );
+ if ( $error ) {
+ print_form();
+ } else {
+ print_okay();
+ }
} else {
die "unrecognized magic: ". $cgi->param('magic');
}
'';
}
+#horrible false laziness with FS/FS/svc_acct_pop.pm::popselector
+sub popselector {
+ my( $popnum, $state ) = @_;
+
+ my %pop = ();
+ push @{ $pop{$_->{state}} }, $_ foreach @$pops;
+
+ my $text = <<END;
+ <SCRIPT>
+ function opt(what,href,text) {
+ var optionName = new Option(text, href, false, false)
+ var length = what.length;
+ what.options[length] = optionName;
+ }
+
+ function popstate_changed(what) {
+ state = what.options[what.selectedIndex].text;
+ for (var i = what.form.popnum.length;i > 0;i--)
+ what.form.popnum.options[i] = null;
+ what.form.popnum.options[0] = new Option("", "", false, true);
+END
+
+ foreach my $popstate ( sort { $a cmp $b } keys %pop ) {
+ $text .= "\nif ( state == \"$popstate\" ) {\n";
+
+ foreach my $pop ( @{$pop{$popstate}}) {
+ my $o_popnum = $pop->{popnum};
+ my $poptext = $pop->{city}. ', '. $pop->{state}.
+ ' ('. $pop->{ac}. ')/'. $pop->{exch};
+
+ $text .= "opt(what.form.popnum, \"$o_popnum\", \"$poptext\");\n"
+ }
+ $text .= "}\n";
+ }
+
+ $text .= "}\n</SCRIPT>\n";
+
+ $text .=
+ qq!<SELECT NAME="popstate" SIZE=1 onChange="popstate_changed(this)">!.
+ qq!<OPTION> !;
+ $text .= "<OPTION>$_" foreach sort { $a cmp $b } keys %pop;
+ $text .= '</SELECT>'; #callback? return 3 html pieces? #'</TD><TD>';
+
+ $text .= qq!<SELECT NAME="popnum" SIZE=1><OPTION> !;
+ foreach my $pop ( @$pops ) {
+ $text .= qq!<OPTION VALUE="!. $pop->{popnum}. '"'.
+ ( ( $popnum && $pop->{popnum} == $popnum ) ? ' SELECTED' : '' ). ">".
+ $pop->{city}. ', '. $pop->{state}.
+ ' ('. $pop->{ac}. ')/'. $pop->{exch};
+ }
+ $text .= '</SELECT>';
+
+ $text;
+}
+
sub expselect {
my $prefix = shift;
my $date = shift || '';
(blank to generate)</TD>
</TR>
<TR>
- <TD ALIGN="right">POP</TD>
- <TD><SELECT NAME="popnum" SIZE=1><OPTION>
-
- <%=
- foreach my $pop ( @{$pops} ) {
- $OUT .= '<OPTION VALUE="'. $pop->{'popnum'}. '"';
- $OUT .= ' SELECTED' if $popnum && $pop->{'popnum'} == $popnum;
- $OUT .= '>'. $pop->{'popnum'}. ': '. $pop->{'city'}. ', '.
- $pop->{'state'}. ' ('. $pop->{'ac'}. ')/'. $pop->{'exch'}. "\n";
- }
- %>
-
- </SELECT></TD>
+ <TD ALIGN="right">Access number</TD>
+ <TD><%= popselector($popnum) %></TD>
</TR>
</TABLE>
<BR><BR><INPUT TYPE="submit" VALUE="Signup">