<& /elements/xmlhttp.html, 'url' => $url_prefix.'misc/svc_acct-domains.cgi', 'subs' => [ $opt{'prefix'}. 'get_domains' ], &> <& /elements/xmlhttp.html, 'url' => $url_prefix.'misc/part_svc-columns.cgi', 'subs' => [ $opt{'prefix'}. 'get_part_svc' ], &> <& /elements/selectlayers.html, 'field' => $opt{'prefix'}. 'pkgpart_svcpart', 'curr_value' => $opt{pkgpart_svcpart}, 'options' => \@options, 'labels' => \%labels, 'html_between' => '', 'onchange' => $opt{'prefix'}. 'pkgpart_svcpart_changed_too(what,0)', 'layer_callback' => $layer_callback, 'layermap' => \%layermap, &> <%init> my %opt = @_; foreach my $opt (qw( svc_part pkgparts saved_pkgpart saved_domsvc prefix)) { $opt{$_} = '' unless exists($opt{$_}) && defined($opt{$_}); } $opt{saved_domsvc} = 0 unless $opt{saved_domsvc}; my $url_prefix = $opt{'relurls'} ? '' : $p; my @part_pkg = @{ $opt{'part_pkg'} }; my @first_svc = @{ $opt{'first_svc'} || [] }; my %pkgpart_svcpart = (); my %svcdb = (); my %layermap = (); foreach my $part_pkg ( @part_pkg ) { my $pkgpart = $part_pkg->pkgpart; my $pkgpart_svcpart = $pkgpart. "_". $part_pkg->svcpart(\@first_svc); $pkgpart_svcpart{$pkgpart} = $pkgpart_svcpart; $svcdb{$pkgpart} = $part_pkg->part_svc(\@first_svc)->svcdb; $layermap{$pkgpart_svcpart} = $svcdb{$pkgpart}; } my @options = (); push @options, '' unless $opt{'disable_empty'}; push @options, map $pkgpart_svcpart{ $_->pkgpart }, @part_pkg; my %labels = ( '' => ( $opt{'empty_label'} || '(none)' ), map { $pkgpart_svcpart{ $_->pkgpart } => $_->pkg_comment } @part_pkg ); my $layer_callback = sub { my $layer = shift; my $svcdb = $layer; return '' unless $svcdb; #full path cause we're being slung around as a coderef (mason closures?) include("/edit/cust_main/first_pkg/$svcdb.html", %opt, ); };