X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=httemplate%2Fview%2Fsvc_broadband.cgi;h=189fe5e6f9788a4c5a374841ecdac64191478d9b;hp=145d341883e0026f57448f3bf0502032e8f2aa53;hb=8ebe92e270a8e035e2afee0ad99cb0c411a0201c;hpb=ff873782e78715891b9d5d2eb5b38c735d372556 diff --git a/httemplate/view/svc_broadband.cgi b/httemplate/view/svc_broadband.cgi index 145d34188..189fe5e6f 100644 --- a/httemplate/view/svc_broadband.cgi +++ b/httemplate/view/svc_broadband.cgi @@ -1,212 +1,186 @@ -<%include("/elements/header.html",'Broadband Service View', menubar( - ( ( $custnum ) - ? ( "View this customer (#$display_custnum)" => "${p}view/cust_main.cgi?$custnum", - ) - : ( "Cancel this (unaudited) website" => - "${p}misc/cancel-unaudited.cgi?$svcnum" ) - ) -)) -%> - -Edit this information -
-<%ntable("#cccccc")%> - - - <%ntable("#cccccc",2)%> - - Service number - <%$svcnum%> - - - Description - <%$description%> - - - Router - <%$routernum%>: <%$routername%> - - - Download Speed - <%$speed_down%> - - - Upload Speed - <%$speed_up%> - - - IP Address - <%$ip_addr%> - - - IP Netmask - <%$ip_netmask%> - - - IP Gateway - <%$ip_gateway%> - - - MAC Address - <%$mac_addr%> - - - Latitude - <%$latitude%> - - - Longitude - <%$longitude%> - - - Altitude - <%$altitude%> - - - VLAN Profile - <%$vlan_profile%> - - - Authentication Key - <%$auth_key%> - - -% -%foreach (sort { $a cmp $b } $svc_broadband->virtual_fields) { -% print $svc_broadband->pvf($_)->widget('HTML', 'view', -% $svc_broadband->getfield($_)), "\n"; -%} -% -% - - - - - - -
-<%ntable("#cccccc", 2)%> -% -% my $sb_router = qsearchs('router', { svcnum => $svcnum }); -% if ($sb_router) { -% - - Router associated: <%$sb_router->routername%> - - (details) - -
-% my @sb_addr_block; -% if (@sb_addr_block = $sb_router->addr_block) { -% - - Address space - - (edit) - -
-% print ntable("#cccccc", 1); -% foreach (@sb_addr_block) { - - - <%$_->ip_gateway%>/<%$_->ip_netmask%> - -% } - - -% } else { - - No address space allocated. -% } - -
-% -% } else { -% - - -
- -Add router named - - -
-% -%} -% - - -
-<%joblisting({'svcnum'=>$svcnum}, 1)%> - -<% include('/elements/footer.html') %> +<& 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> -die "access denied" - unless $FS::CurrentUser::CurrentUser->access_right('View customer services'); - -my($query) = $cgi->keywords; -$query =~ /^(\d+)$/; -my $svcnum = $1; -my $svc_broadband = qsearchs({ - 'select' => 'svc_broadband.*', - 'table' => 'svc_broadband', - 'addl_from' => ' LEFT JOIN cust_svc USING ( svcnum ) '. - ' LEFT JOIN cust_pkg USING ( pkgnum ) '. - ' LEFT JOIN cust_main USING ( custnum ) ', - 'hashref' => { 'svcnum' => $svcnum }, - 'extra_sql' => ' AND '. $FS::CurrentUser::CurrentUser->agentnums_sql, -}) 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, $display_custnum); -if ($pkgnum) { - $cust_pkg = qsearchs( 'cust_pkg', { 'pkgnum' => $pkgnum } ); - $custnum = $cust_pkg->custnum; - $display_custnum = $cust_pkg->cust_main->display_custnum; -} else { - $cust_pkg = ''; - $custnum = ''; +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 } -#eofalse - -my $addr_block = $svc_broadband->addr_block; -my $router = $addr_block->router; - -if (not $router) { die "Could not lookup router for svc_broadband (svcnum $svcnum)" }; - -my ( - $routername, - $routernum, - $speed_down, - $speed_up, - $ip_addr, - $ip_gateway, - $ip_netmask, - $mac_addr, - $latitude, - $longitude, - $altitude, - $vlan_profile, - $auth_key, - $description, - ) = ( - $router->getfield('routername'), - $router->getfield('routernum'), - $svc_broadband->getfield('speed_down'), - $svc_broadband->getfield('speed_up'), - $svc_broadband->getfield('ip_addr'), - $addr_block->ip_gateway, - $addr_block->NetAddr->mask, - $svc_broadband->mac_addr, - $svc_broadband->latitude, - $svc_broadband->longitude, - $svc_broadband->altitude, - $svc_broadband->vlan_profile, - $svc_broadband->auth_key, - $svc_broadband->description, - ); + +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 .= ' (cacti)'; + } + if ( my $addr_block = $svc->addr_block ) { + $out .= '
Netmask: ' . $addr_block->NetAddr->mask . + '
Gateway: ' . $addr_block->ip_gateway; + } + $out .= include('/elements/broadband_snmp_get.html', svc => $svc); + $out; +} + +sub mac_addr { + my $svc = shift; + $svc->mac_addr_formatted('U',':'); +} + +sub usergroup { + my $svc = shift; + my $usergroup = $svc->usergroup; + join('
', $svc->radius_groups('long_description')); +} + +sub sectornum { + my $svc_broadband = shift; + return '' unless $svc_broadband->sectornum; + my $tower_sector = $svc_broadband->tower_sector; + my $link = $tower_sector->ip_addr + ? '' + : ''; + + $link . $tower_sector->description. ( $link ? '' : ''); +} + +sub coordinates { + my $s = shift; #$svc_broadband + return '' unless $s->latitude && $s->longitude; + + my $d = $s->description; + my $agentnum; + unless ($d) { + if ( my $cust_pkg = $s->cust_svc->cust_pkg ) { + $d = $cust_pkg->cust_main->name_short; + $agentnum = $cust_pkg->cust_main->agentnum; + } + } + + #'Latitude: '. $s->latitude. ', Longitude: '. $s->longitude. ' '. + $s->latitude. ', '. $s->longitude. ' '. + include('/elements/coord-links.html', + $s->latitude, + $s->longitude, + $d, + $agentnum + ); +} + +sub shared_svcnum { + my $svc_broadband = shift; + return '' unless $svc_broadband->shared_svcnum; + + my $shared_svc_broadband = + qsearchs('svc_broadband', { 'svcnum' => $svc_broadband->shared_svcnum, + } + #agent virt? + ) + or return ''; + my $shared_cust_pkg = $shared_svc_broadband->cust_svc->cust_pkg; + + $shared_svc_broadband->label. + ( $shared_cust_pkg + ? ' ('. $shared_cust_pkg->cust_main->name. ')' + : '' + ); +} + +sub svc_callback { + # trying to move to the callback style + my ($cgi, $svc_x, $part_svc, $cust_pkg, $fields, $opt) = @_; + + if ( $part_svc->part_svc_column('latitude')->columnflag eq 'F' + && $part_svc->part_svc_column('longitude')->columnflag eq 'F' + ) + { + @$fields = grep { !ref($_) || $_->{field} ne 'coordinates' } @$fields; + } + + # again, we assume at most one of these exports per part_svc + my ($nas_export) = $part_svc->part_export('broadband_nas'); + if ( $nas_export ) { + my $nas = qsearchs('nas', { 'svcnum' => $svc_x->svcnum }); + if ( $nas ) { + $svc_x->set($_, $nas->$_) foreach (fields('nas')); + push @$fields, qw(shortname secret type ports server community); + $opt->{'labels'}{'shortname'} = 'Short name'; + $opt->{'labels'}{'secret'} = 'Shared secret'; + $opt->{'labels'}{'type'} = 'Type'; + $opt->{'labels'}{'ports'} = 'Ports'; + $opt->{'labels'}{'server'} = 'Server'; + $opt->{'labels'}{'community'} = 'Community'; + } #if $nas + } #$nas_export +}; +