From 3eb749fd79fec377d4975f69b077b14e5aaf94dd Mon Sep 17 00:00:00 2001 From: ivan Date: Thu, 27 Sep 2001 20:41:37 +0000 Subject: [PATCH] pop selector! --- FS/FS/svc_acct_pop.pm | 92 +++++++++++++++++++++++++++++++++++++++++-- httemplate/edit/cust_main.cgi | 27 +++++-------- httemplate/edit/svc_acct.cgi | 59 ++++++++++++++------------- httemplate/view/svc_acct.cgi | 68 +++++++++++++++++++++----------- 4 files changed, 171 insertions(+), 75 deletions(-) diff --git a/FS/FS/svc_acct_pop.pm b/FS/FS/svc_acct_pop.pm index 8ce551cef..3b8e9785a 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 = < + 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\n"; + + $text .= + qq!'; #callback? return 3 html pieces? #''; + + $text .= qq!'; + +} + =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, L, L, schema.html from the diff --git a/httemplate/edit/cust_main.cgi b/httemplate/edit/cust_main.cgi index 47e18d789..d5b0d0f41 100755 --- a/httemplate/edit/cust_main.cgi +++ b/httemplate/edit/cust_main.cgi @@ -1,5 +1,5 @@ <% -# +# use vars qw( $cgi $custnum $action $cust_main $p1 @agents $agentnum $last $first $ss $company $address1 $address2 $city $zip @@ -22,7 +22,7 @@ use FS::cust_main_county; #for misplaced logic below use FS::part_pkg; - #for false laziness below + #for false laziness below (now more properly lazy) use FS::svc_acct_pop; #for (other) false laziness below @@ -80,7 +80,7 @@ print qq!Error: !, $error, "" print qq!
!, qq!!, - qq!Customer # !, ( $custnum ? $custnum : " (NEW)" ), + qq!Customer # !, ( $custnum ? "$custnum" : " (NEW)" ), ; @@ -408,7 +408,7 @@ unless ( $custnum ) { if ( @part_pkg ) { - print "

First package", &itable("#cccccc"), + print "

First package", &itable("#cccccc", "0 ALIGN=LEFT"), #apiabuse qq! (blank to generate) END - print qq!POP"; + + print 'POP' + . + &FS::svc_acct_pop::popselector($popnum). + '' + ; } } diff --git a/httemplate/edit/svc_acct.cgi b/httemplate/edit/svc_acct.cgi index f594bd255..16b2957b0 100755 --- a/httemplate/edit/svc_acct.cgi +++ b/httemplate/edit/svc_acct.cgi @@ -1,5 +1,5 @@ <% -# +# use strict; use vars qw( $conf $cgi @shells $action $svcnum $svc_acct $pkgnum $svcpart @@ -9,9 +9,10 @@ use vars qw( $conf $cgi @shells $action $svcnum $svc_acct $pkgnum $svcpart use CGI; use CGI::Carp qw(fatalsToBrowser); use FS::UID qw(cgisuidsetup getotaker); -use FS::CGI qw(header popurl); +use FS::CGI qw(header popurl itable); use FS::Record qw(qsearch qsearchs fields); use FS::svc_acct; +use FS::svc_acct_pop qw(popselector); use FS::Conf; use FS::raddb; @@ -103,19 +104,26 @@ $p1 = popurl(1); print $cgi->header( '-expires' => 'now' ), header("$action $svc account"); print qq!Error: !, $cgi->param('error'), - "" + "

" if $cgi->param('error'); -print <$svcnum" : " (NEW)" ). '
'. + 'Service: '. $part_svc->svc. '

'. + < -Username: - -
Password: - -(blank to generate) +END + +print &itable("#cccccc"), < +Username + +Password + +(blank to generate) + END #domain @@ -148,14 +156,15 @@ if ( $part_svc->part_svc_column('domsvc')->columnflag eq 'F' ) { } else { @svc_domain = qsearch('svc_domain', {} ); } - print qq!
Domain: \n!; foreach my $svc_domain ( sort { $a->domain cmp $b->domain } @svc_domain ) { print qq!