diff options
author | jeff <jeff> | 2008-09-27 03:01:44 +0000 |
---|---|---|
committer | jeff <jeff> | 2008-09-27 03:01:44 +0000 |
commit | 4b5d4c82766ef1869d03df63fa1e2f0dd050cb6a (patch) | |
tree | c5c814482090bb5e0799db17940250d700857c05 /httemplate | |
parent | f411189684b0ca7cc1b4b3e9be1895607245b595 (diff) |
per address block ip auto assignment and auto router selection
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; |