summaryrefslogtreecommitdiff
path: root/FS/FS/svc_acct_pop.pm
diff options
context:
space:
mode:
authorivan <ivan>2001-09-27 20:41:37 +0000
committerivan <ivan>2001-09-27 20:41:37 +0000
commit3eb749fd79fec377d4975f69b077b14e5aaf94dd (patch)
tree932fffba626492db739d98c380eafab53a7c9be3 /FS/FS/svc_acct_pop.pm
parentcbf08fd900f3e1ddc82b2f4c4a5f753e951ff0a3 (diff)
pop selector!
Diffstat (limited to 'FS/FS/svc_acct_pop.pm')
-rw-r--r--FS/FS/svc_acct_pop.pm92
1 files changed, 88 insertions, 4 deletions
diff --git a/FS/FS/svc_acct_pop.pm b/FS/FS/svc_acct_pop.pm
index 8ce551c..3b8e978 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,16 +97,97 @@ sub check {
}
+=item text
+
+Returns:
+
+"$city, $state ($ac)/$exch"
+
+=cut
+
+sub text {
+ my $self = shift;
+ $self->city. ', '. $self->state. ' ('. $self->ac. ')/'. $self->exch;
+}
+
+=back
+
+=head1 SUBROUTINES
+
+=over 4
+
+=item popselector [ POPNUM [ STATE ] ]
+
+=cut
+
+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 $size = 0;
+ 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 %svc_acct_pop ) {
+ $text .= "\nif ( state == \"$popstate\" ) {\n";
+
+ foreach my $pop ( @{$svc_acct_pop{$popstate}}) {
+ my $o_popnum = $pop->popnum;
+ my $poptext = $pop->text;
+ $size = length($poptext) if length($poptext) > $size;
+ $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 %svc_acct_pop;
+ $text .= '</SELECT>'; #callback? return 3 html pieces? #'</TD><TD>';
+
+ $text .= qq!<SELECT NAME="popnum" SIZE=1><OPTION> !;
+ foreach my $pop ( @svc_acct_pop ) {
+ $text .= qq!<OPTION VALUE="!. $pop->popnum. '"'.
+ ( ( $popnum && $pop->popnum == $popnum ) ? ' SELECTED' : '' ). ">".
+ $pop->text;
+ }
+ $text .= '</SELECT>';
+
+}
+
=back
=head1 VERSION
-$Id: svc_acct_pop.pm,v 1.3 2001-09-26 09:17:06 ivan Exp $
+$Id: svc_acct_pop.pm,v 1.4 2001-09-27 20:41:37 ivan Exp $
=head1 BUGS
It should be renamed to part_pop.
+popselector? putting web ui components in here? they should probably live
+somewhere else...
+
=head1 SEE ALSO
L<FS::Record>, L<FS::svc_acct>, L<FS::part_pop_local>, schema.html from the