add ability to view/edit access groups of an agent
authorivan <ivan>
Thu, 13 Nov 2008 02:22:04 +0000 (02:22 +0000)
committerivan <ivan>
Thu, 13 Nov 2008 02:22:04 +0000 (02:22 +0000)
FS/FS/access_groupagent.pm
FS/FS/agent.pm
httemplate/browse/agent.cgi
httemplate/edit/agent.cgi
httemplate/edit/process/agent.cgi

index 3de8fee..bacc013 100644 (file)
@@ -4,6 +4,7 @@ use strict;
 use vars qw( @ISA );
 use FS::Record qw( qsearch qsearchs );
 use FS::agent;
+use FS::access_group;
 
 @ISA = qw(FS::Record);
 
@@ -120,6 +121,17 @@ sub agent {
   qsearchs('agent', { 'agentnum' => $self->agentnum } );
 }
 
+=item access_group
+
+Returns the associated FS::access_group object.
+
+=cut
+
+sub access_group {
+  my $self = shift;
+  qsearchs('access_group', { 'groupnum' => $self->groupnum } );
+}
+
 =back
 
 =head1 BUGS
index 4166a7c..ff0a2b1 100644 (file)
@@ -10,7 +10,7 @@ use FS::agent_type;
 use FS::reg_code;
 use FS::TicketSystem;
 
-@ISA = qw( FS::Record );
+@ISA = qw( FS::m2m_Common FS::Record );
 
 =head1 NAME
 
index b25b1fa..7648915 100755 (executable)
@@ -27,6 +27,7 @@ full offerings (via their type).<BR><BR>
   <TH CLASS="grid" BGCOLOR="#cccccc" COLSPAN=<% ( $cgi->param('showdisabled') || !dbdef->table('agent')->column('disabled') ) ? 2 : 3 %>>Agent</TH>
   <TH CLASS="grid" BGCOLOR="#cccccc">Type</TH>
   <TH CLASS="grid" BGCOLOR="#cccccc">Master Customer</TH>
+  <TH CLASS="grid" BGCOLOR="#cccccc">Access Groups</TH>
   <TH CLASS="grid" BGCOLOR="#cccccc"><FONT SIZE=-1>Invoice<BR>Template</FONT></TH>
   <TH CLASS="grid" BGCOLOR="#cccccc">Customers</TH>
   <TH CLASS="grid" BGCOLOR="#cccccc"><FONT SIZE=-1>Customer<BR>packages</FONT></TH>
@@ -97,6 +98,15 @@ full offerings (via their type).<BR><BR>
         </TD>
 
         <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
+%         foreach my $access_group (
+%           map $_->access_group,
+%               qsearch('access_groupagent', { 'agentnum' => $agent->agentnum })
+%         ) {
+            <A HREF="<%$p%>edit/access_group.html?<% $access_group->groupnum %>"><% $access_group->groupname |h %><BR>
+%         }
+        </TD>
+
+        <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
           <% $agent->invoice_template || '(Default)' %>
         </TD>
 
index 0c25205..215542d 100755 (executable)
@@ -77,6 +77,19 @@ Agent #<% $agent->agentnum ? $agent->agentnum : "(NEW)" %>
     </TR>
 % } 
 
+  <TR>
+    <TD ALIGN="right">Access Groups</TD>
+    <TD><% include('/elements/checkboxes-table.html',
+                     'source_obj'   => $agent,
+                     'link_table'   => 'access_groupagent',
+                     'target_table' => 'access_group',
+                     'name_col'     => 'groupname',
+                     'target_link'  => $p. 'edit/access_group.html?',
+                  )
+        %>
+    </TD>
+  </TR>
+
 </TABLE>
 
 <BR>
index ad550cc..3cdf40c 100755 (executable)
@@ -1,30 +1,16 @@
-%if ( $error ) {
-%  $cgi->param('error', $error);
-<% $cgi->redirect(popurl(2). "agent.cgi?". $cgi->query_string ) %>
-%} else { 
-<% $cgi->redirect(popurl(3). "browse/agent.cgi") %>
-%}
+<% include( 'elements/process.html',
+              'table'       => 'agent',
+              'viewall_dir' => 'browse',
+              'viewall_ext' => 'cgi',
+              'process_m2m' => { 'link_table'   => 'access_groupagent',
+                                 'target_table' => 'access_group',
+                               },
+              'edit_ext'    => 'cgi',
+          )
+%>
 <%init>
 
 die "access denied"
   unless $FS::CurrentUser::CurrentUser->access_right('Configuration');
 
-my $agentnum = $cgi->param('agentnum');
-
-my $old = qsearchs('agent',{'agentnum'=>$agentnum}) if $agentnum;
-
-my $new = new FS::agent ( {
-  map {
-    $_, scalar($cgi->param($_));
-  } fields('agent')
-} );
-
-my $error;
-if ( $agentnum ) {
-  $error=$new->replace($old);
-} else {
-  $error=$new->insert;
-  $agentnum=$new->getfield('agentnum');
-}
-
 </%init>