X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fsvc_acct_pop.pm;h=3c9ea01309bb7f35bc4b09b585843e0d4bdb7d23;hb=e9af247503b619f0c61a3ba14481bc76752bdd8b;hp=5e755ef732573309270e9821837e6faf57a7aaf3;hpb=9a34cb208f355e2046580232eb731b00deac4b89;p=freeside.git diff --git a/FS/FS/svc_acct_pop.pm b/FS/FS/svc_acct_pop.pm index 5e755ef73..3c9ea0130 100644 --- a/FS/FS/svc_acct_pop.pm +++ b/FS/FS/svc_acct_pop.pm @@ -1,10 +1,11 @@ package FS::svc_acct_pop; use strict; -use vars qw( @ISA ); -use FS::Record qw( qsearchs ); +use vars qw( @ISA @EXPORT_OK @svc_acct_pop %svc_acct_pop ); +use FS::Record qw( qsearch qsearchs ); -@ISA = qw( FS::Record ); +@ISA = qw( FS::Record Exporter ); +@EXPORT_OK = qw( popselector ); =head1 NAME @@ -25,6 +26,8 @@ FS::svc_acct_pop - Object methods for svc_acct_pop records $error = $record->check; + $html = FS::svc_acct_pop::popselector( $popnum, $state ); + =head1 DESCRIPTION An FS::svc_acct object represents an point of presence. FS::svc_acct_pop @@ -94,19 +97,106 @@ sub check { } +=item text + +Returns: + +"$city, $state ($ac)/$exch" + +=cut + +sub text { + my $self = shift; + $self->city. ', '. $self->state. + ' ('. $self->ac. ')/'. $self->exch. '-'. $self->loc; +} + +=back + +=head1 SUBROUTINES + +=over 4 + +=item popselector [ POPNUM [ STATE ] ] + +=cut + +#horrible false laziness with signup.cgi (pull special-case for 0 & 1 +# pop code out from signup.cgi??) +sub popselector { + my( $popnum, $state ) = @_; + + unless ( @svc_acct_pop ) { #cache pop list + @svc_acct_pop = qsearch('svc_acct_pop', {} ); + %svc_acct_pop = (); + push @{$svc_acct_pop{$_->state}}, $_ foreach @svc_acct_pop; + } + + my $text = < + 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 %svc_acct_pop ) { + $text .= "\nif ( state == \"$popstate\" ) {\n"; + + foreach my $pop ( @{$svc_acct_pop{$popstate}}) { + my $o_popnum = $pop->popnum; + my $poptext = $pop->text; + $text .= "opt(what.form.popnum, \"$o_popnum\", \"$poptext\");\n" + } + $text .= "}\n"; + } + + $text .= "}\n\n"; + + $text .= + qq!'; #callback? return 3 html pieces? #''; + + $text .= qq!'; + + $text; + +} + =back =head1 VERSION -$Id: svc_acct_pop.pm,v 1.2 2000-01-28 22:55:06 ivan Exp $ +$Id: svc_acct_pop.pm,v 1.7 2002-04-10 13:42:48 ivan Exp $ =head1 BUGS It should be renamed to part_pop. +popselector? putting web ui components in here? they should probably live +somewhere else... + +popselector: pull special-case for 0 & 1 pop code out from signup.cgi + =head1 SEE ALSO -L, L, schema.html from the base documentation. +L, L, L, schema.html from the +base documentation. =cut