automatic package changes for supplemental packages, #37102
[freeside.git] / httemplate / browse / tower.html
1 <% include( 'elements/browse.html',
2                  'title'       => 'Towers',
3                  'name'        => 'towers',
4                  'menubar'     => [ 'Add a new tower' =>
5                                       $p.'edit/tower.html',
6                                   ],
7                  'query'       => { 'table' => 'tower', },
8                  'count_query' => 'SELECT COUNT(*) FROM tower',
9                  'disableable' => 1,
10                  'disabled_statuspos' => 1,
11                  'header'      => [ 'Name', 'Location', 'Sectors', ],
12                  'fields'      => [ $tower_sub,
13                                     $coord_sub,
14                                     $sector_sub,
15                                   ],
16                  'links'       => [ ],
17                  'cell_style'    => [ $tagdesc_style ],
18              )
19 %>
20 <%init>
21
22 die "access denied"
23   unless $FS::CurrentUser::CurrentUser->access_right('Configuration');
24
25 #false laziness w/ browse/part_tag.html
26 my $tagdesc_style = sub { 'background-color:#'.shift->color };
27
28 my $num_svc_links = sub {
29   my ($query_string, $sectors) = @_;
30   return if !$sectors;
31   my $num_svc_broadband = FS::svc_broadband->count("sectornum IN($sectors)");
32   my $num_svc_acct =      FS::svc_acct->count("sectornum IN($sectors)");
33
34   {
35     'data' => $num_svc_broadband ? 
36                 '<B>'.$num_svc_broadband.'</B>'.
37                 ' broadband'
38                 : '',
39     'link' => $p.'search/svc_broadband.cgi?'.$query_string,
40     'size' => '-1',
41     'align'=> 'right',
42     'colspan'=> 2,
43   },
44
45   {
46     'data' => $num_svc_acct ? 
47                 '<B>'.$num_svc_acct.'</B>'.
48                 ' login'
49                 : '',
50     'link' => $p.'search/svc_acct.cgi?magic=advanced;'.$query_string,
51     'size' => '-1',
52     'align'=> 'right',
53     'colspan'=> 2,
54   },
55 };
56
57 my $coord_sub = sub {
58   my $tower = shift;
59
60   my $coords = $m->scomp("/elements/coord-links.html", $tower->latitude, $tower->longitude, $tower->towername);
61
62   [
63     [
64       { 'data' => "Latitude: ".              $tower->latitude.
65                   "<br>Longitude: ".         $tower->longitude.
66                   "<br>Altitude: ".          $tower->altitude.
67                   "<br>Height: ".            $tower->height.
68                   "<br>Veg. height: ". $tower->veg_height,
69       },
70       { 'data' => $coords, 'link' => "Coordinates", },
71     ],
72   ]
73 };
74
75 my $tower_sub = sub {
76   my $tower = shift;
77   my $sectors = join(',', 
78     map { $_->sectornum } $tower->tower_sector, $tower->default_sector
79   );
80   [ #rows
81     [
82       { 'data' => $tower->towername. '&nbsp;', },
83       { 'data' => ' (edit) ', size => '-1', 
84         'link' => $p.'edit/tower.html?' . $tower->towernum },
85     ],
86     # turn these into rows
87     map { [ $_ ] } 
88       &{$num_svc_links}( 'towernum='.$tower->towernum, $sectors )
89   ] #rows
90 };
91
92 my $sector_sub = sub {
93   my $tower = shift;
94   
95   [ #rows
96     map {
97       my $sector = $_;
98       my $sectornum = $sector->sectornum;
99       [
100         {
101           'data' => $sector->sectorname. '&nbsp;',
102           'link' => ( $sector->ip_addr ? 'http://'. $sector->ip_addr : '' ),
103         },
104         
105         &{$num_svc_links}( 'sectornum='.$sectornum, $sectornum )
106       ]
107     } $tower->tower_sector
108   ] #rows
109
110 };
111
112 </%init>