summaryrefslogtreecommitdiff
path: root/httemplate/edit/tower.html
blob: 673a2713a78b188c2e19b77c97a2d94141c4ea45 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<& elements/edit.html,
     name_singular => 'tower',
     table         => 'tower',
     viewall_dir   => 'browse',
     fields        => [ 'towername',
                        { field=>'disabled', type=>'checkbox', value=>'Y', },
                        { field             => 'default_ip_addr',
                          curr_value_callback => $default_ip_addr_callback },
                        { field             => 'sectornum',
                          type              => 'tower_sector',
                          o2m_table         => 'tower_sector',
                          m2_label          => 'Sector',
                          m2_error_callback => $m2_error_callback,
                        },
                        'latitude',
                        'longitude',
                      ],
     labels        => { 'towernum'  => 'Tower',
                        'towername' => 'Name',
                        'sectornum' => 'Sector',
                        'disabled'  => 'Disabled',
                        'default_ip_addr' => 'Tower IP address',
                        'latitude' => 'Latitude',
                        'longitude' => 'Longitude',
                      },
&>
<%init>

my $m2_error_callback = sub { # reconstruct the list
  my ($cgi, $object) = @_;

  my @fields = qw(sectorname ip_addr);
  map {
    my $k = $_;
    new FS::tower_sector {
      'towernum'  => $object->towernum,
      'sectornum' => scalar( $cgi->param($k) ),
      map { $_ => scalar( $cgi->param($k.'_'.$_) ) } @fields,
    };
  } grep length($cgi->param($_.'_sectorname')),
      grep /^sectornum\d+$/,
        ($cgi->param);
};

my $default_ip_addr_callback = sub {
  my ($cgi, $object) = @_;
  my $sector = $object ? $object->default_sector : '';
  $sector ? $sector->ip_addr : '';
};

</%init>