support coordinates in gui, #15655
[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', 'Sectors', 'Coordinates'],
12                  'fields'      => [ $tower_sub,
13                                     $sector_sub,
14                                     $coord_sub,
15                                   ],
16                  'links'       => [ ],
17              )
18 %>
19 <%init>
20
21 die "access denied"
22   unless $FS::CurrentUser::CurrentUser->access_right('Configuration');
23
24 my $num_svc_links = sub {
25   my ($query_string, $sectors) = @_;
26   return if !$sectors;
27   my $num_svc_broadband = FS::svc_broadband->count("sectornum IN($sectors)");
28   my $num_svc_acct =      FS::svc_acct->count("sectornum IN($sectors)");
29
30   {
31     'data' => $num_svc_broadband ? 
32                 '<B>'.$num_svc_broadband.'</B>'.
33                 ' broadband'
34                 : '',
35     'link' => $p.'search/svc_broadband.cgi?'.$query_string,
36     'size' => '-1',
37     'align'=> 'right',
38     'colspan'=> 2,
39   },
40
41   {
42     'data' => $num_svc_acct ? 
43                 '<B>'.$num_svc_acct.'</B>'.
44                 ' login'
45                 : '',
46     'link' => $p.'search/svc_acct.cgi?magic=advanced;'.$query_string,
47     'size' => '-1',
48     'align'=> 'right',
49     'colspan'=> 2,
50   },
51 };
52
53 my $coord_sub = sub {
54   my $tower = shift;
55
56   my $coords = $m->scomp("/elements/coord-links.html", $tower->latitude, $tower->longitude, $tower->towername);
57
58   [
59     [
60       { 'data' => "Latitude: " . $tower->latitude . "<br>Longitude: " . $tower->longitude, },
61       { 'data' => $coords, 'link' => "Coordinates", },
62     ],
63   ]
64 };
65
66 my $tower_sub = sub {
67   my $tower = shift;
68   my $sectors = join(',', 
69     map { $_->sectornum } $tower->tower_sector, $tower->default_sector
70   );
71   [ #rows
72     [
73       { 'data' => $tower->towername, },
74       { 'data' => ' (edit) ', size => '-1', 
75         'link' => $p.'edit/tower.html?' . $tower->towernum },
76     ],
77     # turn these into rows
78     map { [ $_ ] } 
79       &{$num_svc_links}( 'towernum='.$tower->towernum, $sectors )
80   ] #rows
81 };
82
83 my $sector_sub = sub {
84   my $tower = shift;
85   
86   [ #rows
87     map {
88       my $sector = $_;
89       my $sectornum = $sector->sectornum;
90       [
91         {
92           'data' => $sector->sectorname,
93           'link' => ( $sector->ip_addr ? 'http://'. $sector->ip_addr : '' ),
94         },
95         
96         &{$num_svc_links}( 'sectornum='.$sectornum, $sectornum )
97       ]
98     } $tower->tower_sector
99   ] #rows
100
101 };
102
103 </%init>