RT# 82949 - changes section name from fees to pricing, better opiton
[freeside.git] / httemplate / browse / router.cgi
index 149db49..3541118 100644 (file)
@@ -1,57 +1,66 @@
-<%= header('Routers', menubar('Main Menu'   => $p)) %>
-<%
+<% 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 $count_sql",
+                'header'          => [ @header_fields ],
+                'fields'          => [ @fields ],
+                'links'           => [ @links ],
+                'agent_virt'      => 1,
+                'agent_null_right'=> "Broadband global configuration",
+                'agent_pos'       => 1,
+          )
+%>
+<%init>
 
-my @router = qsearch('router', {});
-my $p2 = popurl(2);
+die "access denied"
+  unless $FS::CurrentUser::CurrentUser->access_right('Broadband configuration')
+  || $FS::CurrentUser::CurrentUser->access_right('Broadband global configuration');
 
-%>
+my $p2 = popurl(2);
+my $extra_sql = '';
 
-<% if ($cgi->param('error')) { %>
-   <FONT SIZE="+1" COLOR="#ff0000">Error: <%=$cgi->param('error')%></FONT>
-   <BR><BR>
-<% } %>
+my @menubar = ( 'Add a new router', "${p2}edit/router.cgi" );
 
-<%
-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>';
+  $extra_sql = 'WHERE svcnum > 0';
+  $cgi->delete('hidecustomerrouters');
+  push @menubar, 'Show customer routers', $cgi->self_url();
+  $cgi->param('hidecustomerrouters', 1);
 } else {
-  $hidecustomerrouters = 0;
   $cgi->param('hidecustomerrouters', 1);
-  $hideurl = '<A HREF="' . $cgi->self_url() . '">Hide customer routers</A>';
+  push @menubar, 'Hide customer routers', $cgi->self_url();
+  $cgi->delete('hidecustomerrouters');
 }
-%>
 
-<A HREF="<%=$p2%>edit/router.cgi">Add a new router</A>&nbsp;|&nbsp;<%=$hideurl%>
-
-<%=table()%>
-  <TR>
-    <TD><B>Router name</B></TD>
-    <TD><B>Address block(s)</B></TD>
-  </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, '&nbsp;';
-     }
-%>
-  <TR>
-    <TD ROWSPAN="<%=scalar(@addr_block)+1%>">
-      <A HREF="<%=$p2%>edit/router.cgi?<%=$router->routernum%>"><%=$router->routername%></A>
-    </TD>
-  </TR>
-  <% foreach my $block ( @addr_block ) { %>
-  <TR>
-    <TD><%=UNIVERSAL::isa($block, 'FS::addr_block') ? $block->NetAddr : '&nbsp;'%></TD>
-  </TR>
-  <% } %>
-  </TR>
-<% } %>
-</TABLE>
-</BODY>
-</HTML>
+my @header_fields = ('Router name', 'Address block(s)', 'IP addressing');
+my @fields = ( 'routername',
+               sub { join( '<BR>', map { $_->NetAddr } shift->addr_block); },
+               sub { shift->manual_addr ? 'Manual' : 'Automatic' },
+             );
+my @links = ( [ "${p2}edit/router.cgi?", 'routernum' ],
+              '',
+              '',
+            );
+
+foreach (FS::router->virtual_fields_hash) {
+  push @header_fields, encode_entities($_->{'label'});
+  push @fields, encode_entities($_->{'name'});
+  push @links, '';
+}
+
+push @header_fields, 'Action';
+push @fields, sub { 'Delete' };
+push @links, [ "${p}misc/delete-router.html?", 'routernum' ];
+
+my $count_sql = $extra_sql.  ( $extra_sql =~ /WHERE/ ? ' AND' : 'WHERE' ).
+  $FS::CurrentUser::CurrentUser->agentnums_sql(
+    'null_right' => 'Broadband global configuration',
+  );
+
 
+</%init>