RT# 83251 - added option to update tower/sector
[freeside.git] / httemplate / edit / tower.html
1 <& elements/edit.html,
2      name_singular => 'tower',
3      table         => 'tower',
4      viewall_dir   => 'browse',
5      fields        => [ 'towername',
6                         { field=>'disabled', type=>'checkbox', value=>'Y', },
7                         { field=>'color',    type=>'pickcolor' },
8                         { field               => 'default_ip_addr',
9                           curr_value_callback => $default_ip_addr_callback },
10                         'latitude',
11                         'longitude',
12                         'altitude',
13                         'height',
14                         'veg_height',
15                         'up_rate_limit',
16                         'down_rate_limit',
17                         { field             => 'sectornum',
18                           type              => 'tower_sector',
19                           o2m_table         => 'tower_sector',
20                           m2_label          => 'Sector',
21                           m2_label_callback => sub { 'Sector #'.shift->sectornum; },
22                           m2_error_callback => $m2_error_callback,
23                         },
24                       ],
25      labels        => { 'towernum'        => 'Tower',
26                         'towername'       => 'Name',
27                         'sectornum'       => 'Sector',
28                         'disabled'        => 'Disabled',
29                         'default_ip_addr' => 'Tower IP address',
30                         'latitude'        => 'Latitude',
31                         'longitude'       => 'Longitude',
32                         'altitude'        => 'Altitude (feet)',
33                         'height'          => 'Height (feet)',
34                         'veg_height'      => 'Vegetation height (feet)',
35                         'color'           => 'Color',
36                         'up_rate_limit'   => 'Up Rate Limit(Kbps)',
37                         'down_rate_limit' => 'Down Rate Limit(Kbps)',
38                       },
39 &>
40 <%init>
41
42 my $m2_error_callback = sub { # reconstruct the list
43   my ($cgi, $object) = @_;
44
45   my @fields = qw(
46     sectorname ip_addr height freq_mhz direction width tilt v_width margin 
47     sector_range up_rate_limit down_rate_limit
48   );
49
50   my @sectors;
51   foreach my $k ($cgi->param) {
52     if ($k =~ /^sectornum\d+$/) {
53       my $sectornum = $cgi->param($k);
54       my $sector = FS::tower_sector->new({
55         'sectornum' => $sectornum,
56         'towernum'  => $object->towernum,
57         map { $_ => scalar($cgi->param($k.'_'.$_)) } @fields,
58       });
59       push @sectors, $sector if length($sector->sectorname) && $sector->sectorname ne '_default';
60     }
61   }
62
63   return @sectors;
64 };
65
66 my $default_ip_addr_callback = sub {
67   my ($cgi, $object) = @_;
68   my $sector = $object ? $object->default_sector : '';
69   $sector ? $sector->ip_addr : '';
70 };
71
72 </%init>