X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=httemplate%2Fedit%2Frouter.cgi;h=a756c617c388f4e8a32663fb102be5c1398cfab2;hp=d2279ff007c1d770f169e3e17bbf58643321e1bf;hb=833cfe5c9938d33c3e6b97ed610c25a7afa6eb04;hpb=0354f39ed0e74fd2eae1d9da13906625b4f56591 diff --git a/httemplate/edit/router.cgi b/httemplate/edit/router.cgi index d2279ff00..a756c617c 100755 --- a/httemplate/edit/router.cgi +++ b/httemplate/edit/router.cgi @@ -1,88 +1,64 @@ - +<% include('elements/edit.html', + 'post_url' => popurl(1).'process/router.cgi', + 'name' => 'router', + 'table' => 'router', + 'viewall_url' => "${p}browse/router.cgi", + 'labels' => { 'routernum' => 'Router', + 'routername' => 'Name', + 'svc_part' => 'Service', + 'agentnum' => 'Agent', + 'manual_addr' => 'Assign IP addresses manually', + }, + 'fields' => [ + { 'field'=>'routername', 'type'=>'text', 'size'=>32 }, + { 'field'=>'agentnum', 'type'=>'select-agent' }, + { 'field'=>'svcnum', 'type'=>'hidden' }, + { 'field'=>'manual_addr','type'=>'checkbox','value'=>'Y'}, + ], + 'error_callback' => $callback, + 'edit_callback' => $callback, + 'new_callback' => $callback, + 'html_table_bottom' => $html_table_bottom, + ) +%> +<%init> -<% +my $curuser = $FS::CurrentUser::CurrentUser; -my $router; -if ( $cgi->keywords ) { - my($query) = $cgi->keywords; - $query =~ /^(\d+)$/; - $router = qsearchs('router', { routernum => $1 }) - or print $cgi->redirect(popurl(2)."browse/router.cgi") ; -} else { - $router = new FS::router ( { - map { $_, scalar($cgi->param($_)) } fields('router') - } ); -} - -my $routernum = $router->routernum; -my $action = $routernum ? 'Edit' : 'Add'; -my $hashref = $router->hashref; - -print header("$action Router", menubar( - 'Main Menu' => "$p", - 'View all routers' => "${p}browse/router.cgi", -)); - -if($cgi->param('error')) { -%> Error: <%=$cgi->param('error')%> -<% } %> - -
- - Router #<%=$routernum or "(NEW)"%> - -

Name -<%=table() %> +die "access denied" + unless $curuser->access_right('Broadband configuration') + || $curuser->access_right('Broadband global configuration'); -<% -# I know, I know. Massive false laziness with edit/svc_broadband.cgi. But -# Kristian won't let me generalize the custom field mechanism to every table in -# the database, so this is what we get. -# -- MW - -my @part_router_field = qsearch('part_router_field', { }); -my %rf = map { $_->part_router_field->name, $_->value } $router->router_field; -foreach (sort { $a->name cmp $b->name } @part_router_field) { - %> - - <%=$_->name%> - <% - if(my @opts = $_->list_values) { - %> - <% } else { %> - length ? 'SIZE="'.$_->length.'"' : ''%>> - <% } %> - -<% } %> - - - - -

Select the service types available on this router
-<% +my @svc_x = 'svc_broadband'; +if ( FS::Conf->new->exists('svc_acct-ip_addr') ) { + push @svc_x, 'svc_acct'; +} -foreach my $part_svc ( qsearch('part_svc', { svcdb => 'svc_broadband', - disabled => '' }) ) { - %> -
- $part_svc->svcpart, - routernum => $routernum } ) ? 'CHECKED' : ''%> VALUE="ON"> - - <%=$part_svc->svcpart%>: <%=$part_svc->svc%> - <% } %> +my $callback = sub { + my ($cgi, $object, $fields) = (shift, shift, shift); -

- - + my $extra_sql = ' AND svcdb IN(' . join(',', map { "'$_'" } @svc_x) . ')'; + unless ($object->svcnum) { + push @{$fields}, + { 'type' => 'tablebreak-tr-title', + 'value' => 'Select the service types available on this router', + }, + { 'type' => 'checkboxes-table', + 'target_table' => 'part_svc', + 'link_table' => 'part_svc_router', + 'name_col' => 'svc', + 'hashref' => { 'disabled' => '' }, + 'extra_sql' => $extra_sql, + }; + } +}; +my $html_table_bottom = sub { + my $router = shift; + my $html = ''; + foreach my $field ($router->virtual_fields) { + $html .= $router->pvf($field)->widget('HTML', 'edit', $router->get($field)); + } + $html; +}; +