1 <script type="text/javascript">
2 var auto_addr_routernum = <% encode_json(\%auto_addr_routernum) %>;
3 function hide_if_auto_addr(obj, i) {
4 var routernum = obj.value;
5 var select_blocknum = document.getElementsByName('blocknum')[0];
6 var label_auto_addr = document.getElementById('label_auto_addr');
7 var input_ip_addr = document.getElementById('input_ip_addr');
8 var auto = ( auto_addr_routernum[routernum] == 'Y' );
9 select_blocknum.style.display = auto ? '' : 'none';
10 label_auto_addr.style.display = auto ? '' : 'none';
11 input_ip_addr.style.display = !auto ? '' : 'none';
14 <& /elements/tr-td-label.html, label => ($opt{'label'} || 'Router') &>
16 <& /elements/select-tiered.html, prefix => 'router_', tiers => [
20 name_col => 'routername',
21 value_col => 'routernum',
22 onchange => 'hide_if_auto_addr',
23 curr_value=> $opt{'routernum'},
27 table => 'addr_block',
28 hashref => (exists($fixed{'blocknum'}) ?
29 { blocknum => $fixed{'blocknum'} } : {}
32 link_col => 'routernum',
33 empty_label => '(any)',
34 curr_value => $opt{'blocknum'},
39 <& /elements/tr-td-label.html, label => 'IP address' &>
41 % if ( $fixed{'ip_addr'} ) {
42 <input type="hidden" id="input_ip_addr" name="ip_addr"
43 value="<% $opt{'ip_addr'} |h%>"><% $opt{'ip_addr'} || '' %>
46 <input type="text" id="input_ip_addr" name="ip_addr"
47 style="display:none" value="<% $opt{'ip_addr'} |h%>">
49 <span id="label_auto_addr"><% $opt{'ip_addr'} || '' %>
50 <i>(automatic)</i></span>
52 <script type="text/javascript">
53 hide_if_auto_addr(document.getElementsByName('routernum')[0],0);
59 my $svc_x = $opt{'object'};
62 foreach qw(routernum blocknum ip_addr svcpart);
63 if ( $svc_x->svcnum ) {
64 $opt{'svcpart'} = $svc_x->cust_svc->svcpart;
68 my $svcpart = $opt{'svcpart'} || '';
69 my %fixed; # which fields are fixed
70 $svcpart =~ /^\d*$/ or die "invalid svcpart '$svcpart'";
72 my $part_svc = FS::part_svc->by_key($svcpart);
73 # Traditionally, columnflag 'F' on IP address means that it MUST
74 # be auto-assigned (or, if null IP addresses are allowed, that
76 foreach (qw(routernum blocknum ip_addr)) {
77 my $psc = $part_svc->part_svc_column($_);
78 if ( $psc and $psc->columnflag eq 'F' ) {
79 $fixed{$_} = $psc->columnvalue;
82 if ( $fixed{'routernum'} ) {
83 @routers = (FS::router->by_key($fixed{'routernum'}))
86 @routers = map { $_->router }
87 qsearch('part_svc_router', { svcpart => $svcpart });
91 @routers = qsearch('router', {});
94 my %auto_addr_routernum = map { $_->routernum, $_->auto_addr } @routers;