diff options
Diffstat (limited to 'httemplate')
| -rw-r--r-- | httemplate/browse/addr_block.cgi | 194 | ||||
| -rw-r--r-- | httemplate/browse/router.cgi | 103 | ||||
| -rw-r--r-- | httemplate/edit/elements/edit.html | 4 | ||||
| -rwxr-xr-x | httemplate/edit/process/addr_block/allocate.cgi | 38 | ||||
| -rw-r--r-- | httemplate/elements/tr-select-table.html | 15 | 
5 files changed, 179 insertions, 175 deletions
| diff --git a/httemplate/browse/addr_block.cgi b/httemplate/browse/addr_block.cgi index 7a9351918..d597ee17e 100644 --- a/httemplate/browse/addr_block.cgi +++ b/httemplate/browse/addr_block.cgi @@ -1,91 +1,121 @@ -<% include('/elements/header.html', 'Address Blocks') %> - -<% include('/elements/error.html') %> - -<% include('/elements/table-grid.html') %> -% my $bgcolor1 = '#eeeeee'; -%   my $bgcolor2 = '#ffffff'; -%   my $bgcolor = ''; - -  <TR> -    <TH CLASS="grid" BGCOLOR="#cccccc">Address block(s)</TH> -    <TH CLASS="grid" BGCOLOR="#cccccc">Router</TH> -    <TH CLASS="grid" BGCOLOR="#cccccc">Action(s)</TH> -  </TR> - -% foreach $block (sort {$a->NetAddr cmp $b->NetAddr} @addr_block) {  -%    if ( $bgcolor eq $bgcolor1 ) { -%      $bgcolor = $bgcolor2; -%    } else { -%      $bgcolor = $bgcolor1; -%    } - -    <TR> -      <TD CLASS="grid" BGCOLOR="<% $bgcolor %>"><%$block->NetAddr%></TD> - -%   if (my $router = $block->router) {  -% -%     if (scalar($block->svc_broadband) == 0) {  - -        <TD CLASS="grid" BGCOLOR="<% $bgcolor %>"> -          <%$router->routername%> -        </TD> -        <TD CLASS="grid" BGCOLOR="<% $bgcolor %>"> -          <FORM ACTION="<%$path%>/deallocate.cgi" METHOD="POST"> -            <INPUT TYPE="hidden" NAME="blocknum" VALUE="<%$block->blocknum%>"> -            <INPUT TYPE="submit" NAME="submit" VALUE="Deallocate"> -          </FORM> -        </TD> -%     } else {  - -        <TD COLSPAN="2" CLASS="grid" BGCOLOR="<% $bgcolor %>"> -        <%$router->routername%> -        </TD> -%     }  -% -%   } else {  - -      <TD CLASS="grid" BGCOLOR="<% $bgcolor %>"> -        <FORM ACTION="<%$path%>/allocate.cgi" METHOD="POST"> -          <INPUT TYPE="hidden" NAME="blocknum" VALUE="<%$block->blocknum%>"> -          <SELECT NAME="routernum" SIZE="1"> -%           foreach (@router) {  -              <OPTION VALUE="<%$_->routernum %>"><%$_->routername%></OPTION> -%           }  -          </SELECT> -          <INPUT TYPE="submit" NAME="submit" VALUE="Allocate"> -        </FORM> -      </TD> -      <TD CLASS="grid" BGCOLOR="<% $bgcolor %>"> -        <FORM ACTION="<%$path%>/split.cgi" METHOD="POST"> -          <INPUT TYPE="hidden" NAME="blocknum" VALUE="<%$block->blocknum%>"> -          <INPUT TYPE="submit" NAME="submit" VALUE="Split"> -        </FORM> -      </TD> - -%   } - -  </TR> -% }  - -</TABLE> - -<BR><BR> -<FORM ACTION="<%$path%>/add.cgi" METHOD="POST"> -Gateway/Netmask:  -<INPUT TYPE="text" NAME="ip_gateway" SIZE="15">/<INPUT TYPE="text" NAME="ip_netmask" SIZE="2"> -<INPUT TYPE="submit" NAME="submit" VALUE="Add"> - -<% include('/elements/footer.html') %> +<% include('elements/browse.html', +                'title'         => 'Address Blocks', +                'name'          => 'address block', +                'html_init'     => $html_init, +                'html_form'     => $html_form, +                'query'         => { 'table'     => 'addr_block', +                                     'hashref'   => {}, +                                     'extra_sql' => $extra_sql, +                                     'order_by'  => $order_by, +                                   }, +                'count_query'   => "SELECT count(*) from addr_block $extra_sql", +                'header'        => [ 'Address Block', +                                     'Router', +                                     'Action(s)', +                                     '', +                                   ], +                'fields'        => [ 'NetAddr', +                                     sub { my $block = shift; +                                           my $router = $block->router; +                                           my $result = ''; +                                           if ($router) { +                                             $result .= $router->routername. ' ('; +                                             $result .= scalar($block->svc_broadband). ' services)'; +                                           } +                                           $result; +                                         }, +                                     $allocate_text, +                                     sub { shift->router ? '' : '<FONT SIZE="-2">(split)</FONT>' }, +                                   ], +                'links'         => [ '', +                                     '', +                                     [ 'javascript:void(0)', '' ], +                                     $split_link, +                                   ], +                'link_onclicks' => [ '', +                                     '', +                                     $allocate_link, +                                     '', +                                   ], +                'cell_styles'   => [ '', +                                     '', +                                     'border-right:none;', +                                     'border-left:none;', +                                   ], +          ) +%>  <%init>  die "access denied"    unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); -my @addr_block = qsearch('addr_block', {}); -my @router = qsearch('router', {}); -my $block;  my $p2 = popurl(2);  my $path = $p2 . "edit/process/addr_block"; +my $extra_sql = " "; +my $order_by = "ORDER BY "; +$order_by .= "inet(ip_gateway), " if driver_name =~ /^Pg/i; +$order_by .= "inet_aton(ip_gateway), " if driver_name =~ /^mysql/i; +$order_by .= "ip_netmask"; + +my $html_init = qq( +<SCRIPT> +  function addr_block_areyousure(href, word) { +    if(confirm("Are you sure you want to "+word+" this address block?") == true) +      window.location.href = href; +  } +</SCRIPT> +); + +$html_init .= include('/elements/error.html'); + +my $confirm = sub { +  my ($verb, $num) = (shift, shift); +  "javascript:addr_block_areyousure('$path/$verb.cgi?blocknum=$num', '$verb')"; +}; + +my $html_form = qq( +  <FORM ACTION="$path/add.cgi" METHOD="POST"> +  Gateway/Netmask:  +  <INPUT TYPE="text" NAME="ip_gateway" SIZE="15">/<INPUT TYPE="text" NAME="ip_netmask" SIZE="2"> +  <INPUT TYPE="submit" NAME="submit" VALUE="Add"> +  </FORM> +); + +my $allocate_text = sub { my $block = shift; +                          my $router = $block->router; +                          my $result = ''; +                          if ($router) { +                            $result = '<FONT SIZE="-2">(deallocate)</FONT>' +                              unless scalar($block->svc_broadband); +                          }else{ +                            $result .= '<FONT SIZE="-2">(allocate)</FONT>' +                          } +                          $result; +}; + +my $allocate_link = sub { +  my $block = shift; +  if ($block->router) {  +    if (scalar($block->svc_broadband) == 0) {  +      &{$confirm}('deallocate', $block->blocknum); +    } else {  +      ""; +    }  +  } else {  +    include( '/elements/popup_link_onclick.html', +             'action' => "${p2}edit/allocate.html?blocknum=". $block->blocknum, +             'actionlabel' => 'Allocate block to router', +           ); +  }  +};  + +my $split_link = sub { +  my $block = shift; +  my $ref = [ '', '' ]; +  $ref = [ &{$confirm}('split', $block->blocknum), '' ] +    unless ($block->router); +  $ref; +};  +  </%init> diff --git a/httemplate/browse/router.cgi b/httemplate/browse/router.cgi index a52f609a1..9d856f67c 100644 --- a/httemplate/browse/router.cgi +++ b/httemplate/browse/router.cgi @@ -1,76 +1,43 @@ -<% include('/elements/header.html', 'Routers') %> - -<% include('/elements/error.html') %> - -%my $hidecustomerrouters = 0; -%my $hideurl = ''; -%if ($cgi->param('hidecustomerrouters') eq '1') { -%  $hidecustomerrouters = 1; -%  $cgi->param('hidecustomerrouters', 0); -%  $hideurl = '<A HREF="' . $cgi->self_url() . '">Show customer routers</A>'; -%} else { -%  $hidecustomerrouters = 0; -%  $cgi->param('hidecustomerrouters', 1); -%  $hideurl = '<A HREF="' . $cgi->self_url() . '">Hide customer routers</A>'; -%} - -<A HREF="<%$p2%>edit/router.cgi">Add a new router</A> | <%$hideurl%> - -<% include('/elements/table-grid.html') %> -% my $bgcolor1 = '#eeeeee'; -%   my $bgcolor2 = '#ffffff'; -%   my $bgcolor = ''; - -  <TR> -    <TH CLASS="grid" BGCOLOR="#cccccc">Router name</TH> -    <TH CLASS="grid" BGCOLOR="#cccccc">Address block(s)</TH> -  </TR> - -% foreach my $router (sort {$a->routernum <=> $b->routernum} @router) { -%     next if $hidecustomerrouters && $router->svcnum; -%     my @addr_block = $router->addr_block; -%     if (scalar(@addr_block) == 0) { -%       push @addr_block, ' '; -%     } -% -%    if ( $bgcolor eq $bgcolor1 ) { -%      $bgcolor = $bgcolor2; -%    } else { -%      $bgcolor = $bgcolor1; -%    } - -  <TR> - -    <TD CLASS="grid" BGCOLOR="<% $bgcolor %>"> -      <A HREF="<%$p2%>edit/router.cgi?<%$router->routernum%>"><%$router->routername%></A> -    </TD> - -    <TD CLASS="inv" BGCOLOR="<% $bgcolor %>"> -      <TABLE CLASS="inv" CELLSPACING=0 CELLPADDING=0> - -%       foreach my $block ( @addr_block ) {  - -          <TR> -            <TD><%UNIVERSAL::isa($block, 'FS::addr_block') ? $block->NetAddr : ' '%></TD> -          </TR> -%       }  -      </TABLE> -    </TD> - -  </TR> - -% }  - -</TABLE> - -<% include('/elements/footer.html') %> - +<% include('elements/browse.html', +                'title'           => 'Routers', +                'menubar'         => [ @menubar ], +                'name_singular'   => 'router', +                'query'           => { 'table'     => 'router', +                                       'hashref'   => {}, +                                       'extra_sql' => $extra_sql, +                                     }, +                'count_query'     => "SELECT count(*) from router $extra_sql", +                'header'          => [ 'Router name', +                                       'Address block(s)', +                                     ], +                'fields'          => [ 'routername', +                                       sub { join( '<BR>', map { $_->NetAddr } +                                                               shift->addr_block +                                                 ); +                                           }, +                                     ], +                'links'           => [ [ "${p2}edit/router.cgi?", 'routernum' ], +                                       '', +                                     ], +          ) +%>  <%init>  die "access denied"    unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); -my @router = qsearch('router', {});  my $p2 = popurl(2); +my $extra_sql = ''; + +my @menubar = ( 'Add a new router', "${p2}edit/router.cgi" ); + +if ($cgi->param('hidecustomerrouters') eq '1') { +  $extra_sql = 'WHERE svcnum > 0'; +  $cgi->param('hidecustomerrouters', 0); +  push @menubar, 'Show customer routers', $cgi->self_url(); +} else { +  $cgi->param('hidecustomerrouters', 1); +  push @menubar, 'Hide customer routers', $cgi->self_url(); +}  </%init> diff --git a/httemplate/edit/elements/edit.html b/httemplate/edit/elements/edit.html index 926b84e48..b45163254 100644 --- a/httemplate/edit/elements/edit.html +++ b/httemplate/edit/elements/edit.html @@ -199,6 +199,10 @@ Example:  %     'html_between'  => $f->{'html_between'},  %   );  % +%   #select-table +%   $include_common{$_} = $f->{$_} +%     foreach grep exists($f->{$_}), qw( table name_col ); +%  %   my $layer_prefix_on = '';  %  %   my $include_sub = sub { diff --git a/httemplate/edit/process/addr_block/allocate.cgi b/httemplate/edit/process/addr_block/allocate.cgi index fb361b05c..e8451b170 100755 --- a/httemplate/edit/process/addr_block/allocate.cgi +++ b/httemplate/edit/process/addr_block/allocate.cgi @@ -1,29 +1,17 @@ -% -%my $error = ''; -%my $blocknum = $cgi->param('blocknum'); -%my $routernum = $cgi->param('routernum'); -% -%my $addr_block = qsearchs('addr_block', { blocknum => $blocknum }); -%my $router = qsearchs('router', { routernum => $routernum }); -% -%if($addr_block) { -%  if ($router) { -%    $error = $addr_block->allocate($router); -%  } else { -%    $error = "Cannot find router with routernum $routernum"; -%  } -%} else { -%  $error = "Cannot find block with blocknum $blocknum"; -%} -% -%if ( $error ) { -%  $cgi->param('error', $error); -%  print $cgi->redirect(popurl(4). "browse/addr_block.cgi?" . $cgi->query_string); -%} else {  -%  print $cgi->redirect(popurl(4). "browse/addr_block.cgi"); -%} -% +<% include( '../elements/process.html', +            'table'          => 'addr_block', +            'copy_on_empty'  => [ fields 'addr_block' ], +            'error_redirect' => popurl(3). 'allocate.html?', +            'popup_reload'   => 'Block allocated', +          ) +%> +<%init> + +my $conf = new FS::Conf; +die "access denied" +  unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); +</%init>  <%init>  my $conf = new FS::Conf; diff --git a/httemplate/elements/tr-select-table.html b/httemplate/elements/tr-select-table.html new file mode 100644 index 000000000..f38176274 --- /dev/null +++ b/httemplate/elements/tr-select-table.html @@ -0,0 +1,15 @@ +<% include('tr-td-label.html', @_ ) %> + +      <TD <% $style %>> + +        <% include( '/elements/select-table.html', %opt ) %> + +      </TD> +    </TR> +<%init> + +my( %opt ) = @_; + +my $style = $opt{'cell_style'} ? 'STYLE="'. $opt{'cell_style'}. '"' : ''; + +</%init> | 
