-<!-- mason kludge -->
-<%
-
-my($query) = $cgi->keywords;
-$query =~ /^(\d+)$/;
-my $svcnum = $1;
-my $svc_broadband = qsearchs( 'svc_broadband', { 'svcnum' => $svcnum } )
- or die "svc_broadband: Unknown svcnum $svcnum";
-
-#false laziness w/all svc_*.cgi
-my $cust_svc = qsearchs( 'cust_svc', { 'svcnum' => $svcnum } );
-my $pkgnum = $cust_svc->getfield('pkgnum');
-my($cust_pkg, $custnum);
-if ($pkgnum) {
- $cust_pkg = qsearchs( 'cust_pkg', { 'pkgnum' => $pkgnum } );
- $custnum = $cust_pkg->custnum;
-} else {
- $cust_pkg = '';
- $custnum = '';
+<& elements/svc_Common.html,
+ table => 'svc_broadband',
+ labels => \%labels,
+ fields => \@fields,
+ svc_callback => \&svc_callback,
+ radius_usage => 1,
+ 'manage_link' => scalar($conf->config('svc_broadband-manage_link')),
+ 'manage_link_text' => scalar($conf->config('svc_broadband-manage_link_text')),
+ 'manage_link-new_window' => $conf->exists('svc_broadband-manage_link-new_window')
+&>
+<%init>
+
+my $conf = FS::Conf->new;
+my $fields = FS::svc_broadband->table_info->{'fields'};
+my %labels = map { $_ => ( ref($fields->{$_})
+ ? $fields->{$_}{'label'}
+ : $fields->{$_}
+ );
+ } keys %$fields;
+
+#my %labels = ();
+
+$labels{'description'} = emt('Description');
+$labels{'speed_down'} = emt('Download Speed');
+$labels{'speed_up'} = emt('Upload Speed');
+$labels{'ip_addr'} = emt('IP Address');
+$labels{'usergroup'} = emt('RADIUS groups'); #?
+
+$labels{'coordinates'} = 'Latitude/Longitude';
+
+my @fields = (
+ 'description',
+ { field => 'routernum', value_callback => \&router },
+ 'speed_down',
+ 'speed_up',
+ 'speed_test_down',
+ 'speed_test_up',
+ 'speed_test_latency',
+ { field => 'ip_addr', value_callback => \&ip_addr },
+ { field => 'sectornum', value_callback => \§ornum },
+ { field => 'mac_addr', type=>'mac_addr', value_callback => \&mac_addr },
+ #'latitude',
+ #'longitude',
+ { field => 'coordinates', value_callback => \&coordinates },
+ 'altitude',
+
+ 'radio_serialnum',
+ 'radio_location',
+ 'poe_location',
+ 'rssi',
+ 'suid',
+ { field => 'shared_svcnum', value_callback=> \&shared_svcnum, }, #value_callback =>
+
+ 'vlan_profile',
+ 'authkey',
+ 'plan_id',
+);
+
+push @fields,
+ { field => 'usergroup', value_callback => \&usergroup }
+ if $conf->exists('svc_broadband-radius');
+
+sub router {
+ my $svc = shift;
+ my $router = $svc->router;
+ my $block = $svc->addr_block;
+ $router = $router->routernum . ': ' . $router->routername if $router;
+ $block = '; '.$block->cidr if $block;
+ $router . $block
+}
+
+sub ip_addr {
+ my $svc = shift;
+ my $ip_addr = $svc->ip_addr;
+ my $out = $ip_addr;
+ $out .= ' (' . include('/elements/popup_link-ping.html', ip => $ip_addr) . ')'
+ if $ip_addr;
+ if ($svc->cust_svc->part_svc->part_export('cacti')) {
+ $out .= ' (<A HREF="'
+ . popurl(2)
+ . 'misc/cacti_graphs.html?load=1&svcnum='
+ . $svc->svcnum
+ . '">cacti</A>)';
+ }
+ if ( my $addr_block = $svc->addr_block ) {
+ $out .= '<br>Netmask: ' . $addr_block->NetAddr->mask .
+ '<br>Gateway: ' . $addr_block->ip_gateway;
+ }
+ $out .= include('/elements/broadband_snmp_get.html', svc => $svc);
+ $out;