X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=FS%2FFS%2Fsvc_acct_pop.pm;h=f98f91a4f2621da833097e7ba96ace25ac218650;hp=a64adb25a100535326973d8517c43d64eeb020af;hb=58d44fbe5eb9ab32e6d87063a4a3b22ddba9a828;hpb=6cd87c0d3b5280446301c647fa5f1ec5a593fa3f diff --git a/FS/FS/svc_acct_pop.pm b/FS/FS/svc_acct_pop.pm index a64adb25a..f98f91a4f 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 @@ -42,6 +45,8 @@ inherits from FS::Record. The following fields are currently supported: =item exch - exchange +=item loc - rest of number + =back =head1 METHODS @@ -87,23 +92,117 @@ sub check { or $self->ut_text('state') or $self->ut_number('ac') or $self->ut_number('exch') + or $self->ut_numbern('loc') + or $self->SUPER::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; + what.form.popnum.options.length = 0 + 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.1 1999-08-04 09:03:53 ivan Exp $ +$Id: svc_acct_pop.pm,v 1.10 2003-08-05 00:20:47 khoff 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