From f94fc16ea404c31c0d2ff063fc35ff06a1d2c97a Mon Sep 17 00:00:00 2001 From: khoff Date: Mon, 26 Aug 2002 19:07:10 +0000 Subject: [PATCH] Fancy three-stage popselector a la javascript --- fs_signup/FS-SignupClient/cgi/signup.cgi | 86 +++++++++++++++++++++++--------- 1 file changed, 63 insertions(+), 23 deletions(-) diff --git a/fs_signup/FS-SignupClient/cgi/signup.cgi b/fs_signup/FS-SignupClient/cgi/signup.cgi index 08d8a4d45..816b8213b 100755 --- a/fs_signup/FS-SignupClient/cgi/signup.cgi +++ b/fs_signup/FS-SignupClient/cgi/signup.cgi @@ -1,6 +1,6 @@ #!/usr/bin/perl -Tw # -# $Id: signup.cgi,v 1.29 2002-05-30 22:45:20 ivan Exp $ +# $Id: signup.cgi,v 1.30 2002-08-26 19:07:10 khoff Exp $ use strict; use vars qw( @payby $cgi $locales $packages $pops $init_data $error @@ -359,7 +359,8 @@ sub pop_info { #horrible false laziness with FS/FS/svc_acct_pop.pm::popselector sub popselector { - my( $popnum, $state ) = @_; + + my( $popnum ) = @_; return '' unless @$pops; return $pops->[0]{city}. ', '. $pops->[0]{state}. @@ -368,7 +369,9 @@ sub popselector { if scalar(@$pops) == 1; my %pop = (); - push @{ $pop{$_->{state}} }, $_ foreach @$pops; + foreach (@$pops) { + push @{ $pop{ $_->{state} }->{ $_->{ac} } }, $_; + } my $text = < @@ -377,45 +380,82 @@ sub popselector { var length = what.length; what.options[length] = optionName; } - - function popstate_changed(what) { + + function acstate_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); + for (var i = what.form.popac.length;i > 0;i--) + what.form.popac.options[i] = null; + what.form.popac.options[0] = new Option("Area code", "-1", 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}; + foreach my $state ( sort { $a cmp $b } keys %pop ) { + $text .= "\nif ( state == \"$state\" ) {\n"; - $text .= "opt(what.form.popnum, \"$o_popnum\", \"$poptext\");\n" + foreach my $ac ( sort { $a cmp $b } keys %{ $pop{$state} }) { + $text .= "opt(what.form.popac, \"$ac\", \"$ac\");\n"; + if ($ac eq $cgi->param('popac')) { + $text .= "what.form.popac.options[what.form.popac.length-1].selected = true;\n"; + } } $text .= "}\n"; } + $text .= "popac_changed(what.form.popac)}\n"; + + $text .= < 0;i--) + what.form.popnum.options[i] = null; + what.form.popnum.options[0] = new Option("City", "-1", false, true); + +END + + foreach my $state ( keys %pop ) { + foreach my $popac ( keys %{ $pop{$state} } ) { + $text .= "\nif ( ac == \"$popac\" ) {\n"; + + foreach my $pop ( @{$pop{$state}->{$popac}}) { + my $o_popnum = $pop->{popnum}; + my $poptext = $pop->{city}. ', '. $pop->{state}. + ' ('. $pop->{ac}. ')/'. $pop->{exch}; + + $text .= "opt(what.form.popnum, \"$o_popnum\", \"$poptext\");\n"; + if ($popnum == $o_popnum) { + $text .= "what.form.popnum.options[what.form.popnum.length-1].selected = true;\n"; + } + } + $text .= "}\n"; + } + } + $text .= "}\n\n"; $text .= - qq!'; #callback? return 3 html pieces? #''; + qq!'; - $text .= qq!!. + qq!!; + + $text .= qq!
'; #callback? return 3 html pieces? #'
'; + + $text .= qq!
!; $text; + } sub expselect { -- 2.11.0