summaryrefslogtreecommitdiff
path: root/httemplate
diff options
context:
space:
mode:
authorMark Wells <mark@freeside.biz>2012-03-11 20:57:40 -0700
committerMark Wells <mark@freeside.biz>2012-03-11 20:57:40 -0700
commite5fcc68aab310814b0ba5444bc97ef504e6e16da (patch)
tree27b2ce0492bc0772e21f812b14be76c4e5d6c206 /httemplate
parent0c4d2f8b768b5eb6ed51c27c5f9c482c2c2e96aa (diff)
cleanup for svc_broadband manual router feature, #14698
Diffstat (limited to 'httemplate')
-rw-r--r--httemplate/browse/router.cgi2
-rw-r--r--httemplate/edit/process/svc_broadband.cgi3
-rwxr-xr-xhttemplate/edit/router.cgi4
-rw-r--r--httemplate/edit/svc_broadband.cgi59
-rw-r--r--httemplate/elements/tr-select-router_block_ip.html47
-rw-r--r--httemplate/view/svc_broadband.cgi1
6 files changed, 44 insertions, 72 deletions
diff --git a/httemplate/browse/router.cgi b/httemplate/browse/router.cgi
index 21047d7fc..ef8ad3160 100644
--- a/httemplate/browse/router.cgi
+++ b/httemplate/browse/router.cgi
@@ -17,7 +17,7 @@
shift->addr_block
);
},
- sub { shift->auto_addr ? 'Automatic' : 'Manual' },
+ sub { shift->manual_addr ? 'Manual' : 'Automatic' },
sub { 'Delete' },
],
'links' => [ [ "${p2}edit/router.cgi?", 'routernum' ],
diff --git a/httemplate/edit/process/svc_broadband.cgi b/httemplate/edit/process/svc_broadband.cgi
index 4184f5fa6..31def255c 100644
--- a/httemplate/edit/process/svc_broadband.cgi
+++ b/httemplate/edit/process/svc_broadband.cgi
@@ -13,6 +13,9 @@ die "access denied"
sub precheck {
my $cgi = shift;
+ if ( !defined($cgi->param('ip_addr')) ) {
+ $cgi->param('ip_addr', $cgi->param('prev_ip_addr') || '');
+ }
$cgi->param("usergroup", [ $cgi->param('usergroup') ]);
''
}
diff --git a/httemplate/edit/router.cgi b/httemplate/edit/router.cgi
index 6672d5d75..fdcd7b3b3 100755
--- a/httemplate/edit/router.cgi
+++ b/httemplate/edit/router.cgi
@@ -7,13 +7,13 @@
'routername' => 'Name',
'svc_part' => 'Service',
'agentnum' => 'Agent',
- 'auto_addr' => 'Assign IP addresses automatically',
+ 'manual_addr' => 'Assign IP addresses manually',
},
'fields' => [
{ 'field'=>'routername', 'type'=>'text', 'size'=>32 },
{ 'field'=>'agentnum', 'type'=>'select-agent' },
{ 'field'=>'svcnum', 'type'=>'hidden' },
- { 'field'=>'auto_addr','type'=>'checkbox','value'=>'Y'},
+ { 'field'=>'manual_addr','type'=>'checkbox','value'=>'Y'},
],
'error_callback' => $callback,
'edit_callback' => $callback,
diff --git a/httemplate/edit/svc_broadband.cgi b/httemplate/edit/svc_broadband.cgi
index 8fccb1fa8..b07c725ae 100644
--- a/httemplate/edit/svc_broadband.cgi
+++ b/httemplate/edit/svc_broadband.cgi
@@ -102,9 +102,9 @@ END
my @fields = (
qw( description speed_down speed_up ),
{ field=>'sectornum', type=>'select-tower_sector', },
- { field=>'routernum', type=>'select-router_block_ip', },
- qw( mac_addr latitude longitude altitude vlan_profile
- performance_profile authkey plan_id ),
+ { field=>'routernum', type=>'select-router_block_ip' },
+ qw( mac_addr latitude longitude altitude vlan_profile
+ performance_profile authkey plan_id )
);
if ( $conf->exists('svc_broadband-radius') ) {
@@ -115,8 +115,6 @@ if ( $conf->exists('svc_broadband-radius') ) {
}
}
-my $fixedblock = '';
-
my $part_svc;
my $svc_edit_callback = sub {
@@ -124,8 +122,6 @@ my $svc_edit_callback = sub {
$part_svc = $part_svc_x; #for field_callback to use
- $opt->{'labels'}{'block_label'} = 'Block';
-
my ($nas_export) = $part_svc->part_export('broadband_nas');
#can we assume there's only one of these per part_svc?
if ( $nas_export ) {
@@ -173,60 +169,13 @@ my $field_callback = sub {
? 'fixed'
: 'hidden';
$fieldref->{'value'} = $columndef->columnvalue;
- $fixedblock = $fieldref->{value}
- if $fieldref->{field} eq 'blocknum';
-
+
if ( $fieldref->{field} eq 'usergroup' ) {
$fieldref->{'formatted_value'} =
[ $object->radius_groups('long_description') ];
}
}
- if ($object->svcnum) {
-
- $fieldref->{type} = 'hidden'
- if $fieldref->{field} eq 'blocknum';
-
- $fieldref->{value} = $object->addr_block->label
- if $fieldref->{field} eq 'block_label' && $object->addr_block;
-
- } else {
-
- if ($fieldref->{field} eq 'block_label') {
- if ($fixedblock && $object->addr_block) {
- $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;
-
- $object->svcpart($part_svc->svcpart);
- my @addr_block =
- grep { ! $_->agentnum
- || $cust_pkg->cust_main->agentnum == $_->agentnum
- && $FS::CurrentUser::CurrentUser->agentnum($_->agentnum)
- }
- map { $_->addr_block } $object->allowed_routers;
- my @options = map { $_->blocknum }
- sort { $a->label cmp $b->label } @addr_block;
- my %option_labels = map { ( $_->blocknum => $_->label ) } @addr_block;
- $fieldref->{type} = 'select';
- $fieldref->{options} = \@options;
- $fieldref->{labels} = \%option_labels;
- }
-
- }
};
</%init>
diff --git a/httemplate/elements/tr-select-router_block_ip.html b/httemplate/elements/tr-select-router_block_ip.html
index 45d1dacd8..ed8fe810f 100644
--- a/httemplate/elements/tr-select-router_block_ip.html
+++ b/httemplate/elements/tr-select-router_block_ip.html
@@ -1,14 +1,22 @@
<script type="text/javascript">
-var auto_addr_routernum = <% encode_json(\%auto_addr_routernum) %>;
-function hide_if_auto_addr(obj, i) {
+var manual_addr_routernum = <% encode_json(\%manual_addr_routernum) %>;
+var ip_addr_curr_value = <% $opt{'ip_addr'} |js_string %>;
+function lock_ip_addr(obj, i) {
var routernum = obj.value;
var select_blocknum = document.getElementsByName('blocknum')[0];
- var label_auto_addr = document.getElementById('label_auto_addr');
var input_ip_addr = document.getElementById('input_ip_addr');
- var auto = ( auto_addr_routernum[routernum] == 'Y' );
- select_blocknum.style.display = auto ? '' : 'none';
- label_auto_addr.style.display = auto ? '' : 'none';
- input_ip_addr.style.display = !auto ? '' : 'none';
+ if ( manual_addr_routernum[routernum] == 'Y' ) {
+%# enable ip_addr, default it to its previous value, and hide block selection
+ select_blocknum.style.display = 'none';
+ input_ip_addr.value = ip_addr_curr_value;
+ input_ip_addr.disabled = false;
+ }
+ else {
+%# the reverse
+ select_blocknum.style.display = '';
+ input_ip_addr.disabled = true;
+ input_ip_addr.value = '(automatic)';
+ }
}
</script>
<& /elements/tr-td-label.html, label => ($opt{'label'} || 'Router') &>
@@ -19,7 +27,7 @@ function hide_if_auto_addr(obj, i) {
records => \@routers,
name_col => 'routername',
value_col => 'routernum',
- onchange => 'hide_if_auto_addr',
+ onchange => 'lock_ip_addr',
curr_value=> $opt{'routernum'},
},
{
@@ -44,17 +52,18 @@ function hide_if_auto_addr(obj, i) {
% }
% else {
<input type="text" id="input_ip_addr" name="ip_addr"
- style="display:none" value="<% $opt{'ip_addr'} |h%>">
+ value="<% $opt{'ip_addr'} |h%>">
% }
- <span id="label_auto_addr"><% $opt{'ip_addr'} || '' %>
- <i>(automatic)</i></span>
</td> </tr>
+<input type="hidden" name="prev_ip_addr" value="<% $opt{'ip_addr'} |h%>">
<script type="text/javascript">
-hide_if_auto_addr(document.getElementsByName('routernum')[0],0);
+lock_ip_addr(document.getElementsByName('routernum')[0],0);
</script>
<%init>
+
my %opt = @_;
my @routers;
+my $conf = FS::Conf->new;
my $svc_x = $opt{'object'};
if ( $svc_x ) {
@@ -91,5 +100,17 @@ else {
@routers = qsearch('router', {});
}
-my %auto_addr_routernum = map { $_->routernum, $_->auto_addr } @routers;
+my %manual_addr_routernum = map { $_->routernum, $_->manual_addr } @routers;
+
+if ( $conf->exists('auto_router') ) {
+ # Then show an "(automatic)" router, with no blocks. manual_addr is on
+ # so that the ip_addr field will be unlocked.
+ unshift @routers, FS::router->new({
+ 'routernum' => '',
+ 'routername' => '(automatic)',
+ 'manual_addr' => 'Y',
+ });
+ $manual_addr_routernum{''} = 'Y';
+}
+
</%init>
diff --git a/httemplate/view/svc_broadband.cgi b/httemplate/view/svc_broadband.cgi
index 961374e7d..af2c575b9 100644
--- a/httemplate/view/svc_broadband.cgi
+++ b/httemplate/view/svc_broadband.cgi
@@ -17,7 +17,6 @@ my %labels = map { $_ => ( ref($fields->{$_})
#my %labels = ();
$labels{'description'} = emt('Description');
-$labels{'router'} = emt('Router');
$labels{'speed_down'} = emt('Download Speed');
$labels{'speed_up'} = emt('Upload Speed');
$labels{'ip_addr'} = emt('IP Address');