diff options
Diffstat (limited to 'httemplate')
| -rw-r--r-- | httemplate/browse/addr_block.cgi | 10 | ||||
| -rwxr-xr-x | httemplate/edit/process/addr_block/manual_flag.cgi | 30 | ||||
| -rw-r--r-- | httemplate/edit/svc_broadband.cgi | 23 | 
3 files changed, 61 insertions, 2 deletions
diff --git a/httemplate/browse/addr_block.cgi b/httemplate/browse/addr_block.cgi index 945f8da01..241bb937f 100644 --- a/httemplate/browse/addr_block.cgi +++ b/httemplate/browse/addr_block.cgi @@ -13,6 +13,7 @@                                       'Router',                                       'Action(s)',                                       '', +                                     '',                                     ],                  'fields'        => [ 'NetAddr',                                       sub { my $block = shift; @@ -26,11 +27,13 @@                                           },                                       $allocate_text,                                       sub { shift->router ? '' : '<FONT SIZE="-2">(split)</FONT>' }, +                                     sub { '<FONT SIZE="-2">('. (shift->manual_flag ? 'allow' : 'prevent'). ' automatic ip assignment)</FONT>' },                                     ],                  'links'         => [ '',                                       '',                                       [ 'javascript:void(0)', '' ],                                       $split_link, +                                     $autoassign_link,                                     ],                  'link_onclicks' => [ '',                                       '', @@ -133,4 +136,11 @@ my $split_link = sub {    $ref;  };  +my $autoassign_link = sub { +  my $block = shift; +  my $url = "$path/manual_flag.cgi?manual_flag="; +  $url .=  $block->manual_flag ? '' : 'Y'; +  [ "$url;blocknum=", 'blocknum' ]; +};  +  </%init> diff --git a/httemplate/edit/process/addr_block/manual_flag.cgi b/httemplate/edit/process/addr_block/manual_flag.cgi new file mode 100755 index 000000000..dc0cbbbf5 --- /dev/null +++ b/httemplate/edit/process/addr_block/manual_flag.cgi @@ -0,0 +1,30 @@ +<% $cgi->redirect(popurl(4). "browse/addr_block.cgi?". $cgi->query_string ) %> +<%init> + +my $curuser = $FS::CurrentUser::CurrentUser; + +die "access denied" +  unless $curuser->access_right('Broadband configuration') +      || $curuser->access_right('Broadband global configuration'); + +my $error = ''; +$cgi->param('blocknum') =~ /^(\d+)$/ or die "invalid blocknum"; +my $blocknum = $1; + +my $addr_block = qsearchs({ 'table'     => 'addr_block', +                            'hashref'   => { blocknum => $blocknum }, +                            'extra_sql' => ' AND '. $curuser->agentnums_sql( +                              'null_right' => 'Broadband global configuration' +                            ), +                         }) +  or $error = "Unknown blocknum: $blocknum"; + +$addr_block->manual_flag($cgi->param('manual_flag')) +  unless $error; + +$error ||= $addr_block->replace; + +$cgi->param('error', $error) +  if $error; + +</%init> diff --git a/httemplate/edit/svc_broadband.cgi b/httemplate/edit/svc_broadband.cgi index 25fb009ac..e60c76c90 100644 --- a/httemplate/edit/svc_broadband.cgi +++ b/httemplate/edit/svc_broadband.cgi @@ -8,7 +8,7 @@                                   'speed_down'   => 'Download speed',                                   'speed_up'     => 'Upload speed',                                   'blocknum'     => 'Router/Block', -                                 'block_disp'   => 'Router/Block', +                                 'block_label'  => 'Router/Block',                                   'mac_addr'     => 'MAC address',                                   'latitude'     => 'Latitude',                                   'longitude'    => 'Longitude', @@ -29,12 +29,16 @@ die "access denied"  # If it's stupid but it works, it's still stupid.  #  -Kristian +my $conf = new FS::Conf; +  my @fields = (    qw( description ip_addr speed_down speed_up blocknum ),    { field=>'block_label', type=>'fixed' },    qw( mac_addr latitude longitude altitude vlan_profile authkey )  ); +my $fixedblock = ''; +  my $callback = sub {    my ($cgi, $object, $fieldref) = @_; @@ -48,6 +52,8 @@ my $callback = sub {    if ($columndef->columnflag eq 'F') {      $fieldref->{'type'} = 'fixed';      $fieldref->{'value'} = $columndef->columnvalue; +    $fixedblock = $fieldref->{value} +      if $fieldref->{field} eq 'blocknum';    }    if ($object->svcnum) {  @@ -60,9 +66,22 @@ my $callback = sub {    } else {  -    $fieldref->{type} = 'hidden' if $fieldref->{field} eq 'block_label'; +    if ($fieldref->{field} eq 'block_label') { +      if ($fixedblock) { +        $object->blocknum($fixedblock); +        $fieldref->{value} = $object->addr_block->label; +      }else{ +        $fieldref->{type} = 'hidden'; +      } +    }      if ($fieldref->{field} eq 'blocknum') { +      if ( $fixedblock or $conf->exists('auto_router') ) { +        $fieldref->{type} = 'hidden'; +        $fieldref->{value} = $fixedblock; +        return; +      } +        my $cust_pkg = qsearchs( 'cust_pkg', {pkgnum => $cgi->param('pkgnum')} );        die "No cust_pkg entry!" unless $cust_pkg;  | 
