okay group editing UI as well as part_svc group editing UI seem to be working
authorivan <ivan>
Sat, 23 Mar 2002 17:49:01 +0000 (17:49 +0000)
committerivan <ivan>
Sat, 23 Mar 2002 17:49:01 +0000 (17:49 +0000)
FS/FS/part_svc.pm
FS/FS/svc_acct.pm
httemplate/browse/part_svc.cgi
httemplate/edit/part_svc.cgi
httemplate/edit/process/part_svc.cgi

index 82935dd..94f51fa 100644 (file)
@@ -57,19 +57,25 @@ database, see L<"insert">.
 
 sub table { 'part_svc'; }
 
-=item insert
+=item insert EXTRA_FIELDS_ARRAYREF
 
 Adds this service definition to the database.  If there is an error, returns
 the error, otherwise returns false.
 
+TODOC:
+
 =item I<svcdb>__I<field> - Default or fixed value for I<field> in I<svcdb>.
 
 =item I<svcdb>__I<field>_flag - defines I<svcdb>__I<field> action: null, `D' for default, or `F' for fixed
 
+TODOC: EXTRA_FIELDS_ARRAYREF
+
 =cut
 
 sub insert {
   my $self = shift;
+  my @fields = ();
+  @fields = @{shift(@_)} if @_;
 
   local $SIG{HUP} = 'IGNORE';
   local $SIG{INT} = 'IGNORE';
@@ -96,7 +102,7 @@ sub insert {
   foreach my $field (
     grep { $_ ne 'svcnum'
            && defined( $self->getfield($svcdb.'__'.$_.'_flag') )
-         } fields($svcdb)
+         } (fields($svcdb), @fields)
   ) {
     my $part_svc_column = $self->part_svc_column($field);
     my $previous = qsearchs('part_svc_column', {
@@ -141,11 +147,15 @@ sub delete {
 # check & make sure the svcpart isn't in cust_svc or pkg_svc (in any packages)?
 }
 
-=item replace OLD_RECORD
+=item replace OLD_RECORD [ '1.3-COMPAT' [ , EXTRA_FIELDS_ARRAYREF ] ]
 
 Replaces OLD_RECORD with this one in the database.  If there is an error,
 returns the error, otherwise returns false.
 
+TODOC: 1.3-COMPAT
+
+TODOC: EXTRA_FIELDS_ARRAYREF
+
 =cut
 
 sub replace {
@@ -172,11 +182,15 @@ sub replace {
   }
 
   if ( @_ && $_[0] eq '1.3-COMPAT' ) {
+    shift;
+    my @fields = ();
+    @fields = @{shift(@_)} if @_;
+
     my $svcdb = $new->svcdb;
     foreach my $field (
       grep { $_ ne 'svcnum'
              && defined( $new->getfield($svcdb.'__'.$_.'_flag') )
-           } fields($svcdb)
+           } (fields($svcdb),@fields)
     ) {
       my $part_svc_column = $new->part_svc_column($field);
       my $previous = qsearchs('part_svc_column', {
@@ -309,7 +323,7 @@ sub part_export {
 
 =head1 VERSION
 
-$Id: part_svc.pm,v 1.10 2002-03-20 21:31:49 ivan Exp $
+$Id: part_svc.pm,v 1.11 2002-03-23 17:49:01 ivan Exp $
 
 =head1 BUGS
 
index bb6b995..a3e97f7 100644 (file)
@@ -799,7 +799,7 @@ sub replace {
         $new->usergroup( [ grep { $groupname ne $_ } @{$new->usergroup} ] );
         next;
       }
-      my $radius_usergroup = qsearch('radius_usergroup', {
+      my $radius_usergroup = qsearchs('radius_usergroup', {
         svcnum    => $old->svcnum,
         groupname => $groupname,
       } );
@@ -1395,7 +1395,10 @@ END
 
   foreach my $group ( @all_groups ) {
     $html .= '<OPTION';
-    $html .= ' SELECTED' if $sel_groups{$group}--;
+    if ( $sel_groups{$group} ) {
+      $html .= ' SELECTED';
+      $sel_groups{$group} = 0;
+    }
     $html .= ">$group</OPTION>\n";
   }
   foreach my $group ( grep { $sel_groups{$_} } keys %sel_groups ) {
index c66b8ac..250b1ff 100755 (executable)
@@ -41,13 +41,15 @@ function part_export_areyousure(href) {
 <% foreach my $part_svc ( sort {
      $a->getfield('svcpart') <=> $b->getfield('svcpart')
    } @part_svc ) {
-     my($hashref)=$part_svc->hashref;
-     my($svcdb)=$hashref->{svcdb};
+     my $hashref = $part_svc->hashref;
+     my $svcdb = $hashref->{svcdb};
+     my @dfields = fields($svcdb);
+     push @dfields, 'usergroup' if $svcdb eq 'svc_acct'; #kludge
      my @fields =
        grep { $_ ne 'svcnum' && $part_svc->part_svc_column($_)->columnflag }
-            fields($svcdb);
+            @dfields;
 
-     my($rowspan)=scalar(@fields) || 1;
+     my $rowspan = scalar(@fields) || 1;
      my $url = "${p}edit/part_svc.cgi?$hashref->{svcpart}";
 %>
 
index b1bb7f3..b4900a0 100755 (executable)
@@ -86,10 +86,10 @@ my %defs = (
                      select_key   => 'svcnum',
                      select_label => 'domain',
                    },
-    'radius_groups' => {
-                         desc =>'ICRADIUS/FreeRADIUS groups',
-                         type =>'radius_usergroup_selector',
-                       },
+    'usergroup' => {
+                     desc =>'ICRADIUS/FreeRADIUS groups',
+                     type =>'radius_usergroup_selector',
+                   },
   },
   'svc_domain' => {
     'domain'    => 'Domain',
@@ -138,6 +138,7 @@ my %defs = (
       my @fields = defined( $FS::Record::dbdef->table($layer) )
                       ? grep { $_ ne 'svcnum' } fields($layer)
                       : ();
+      push @fields, 'usergroup' if $layer eq 'svc_acct'; #kludge
       foreach my $field (@fields) {
         my $part_svc_column = $part_svc->part_svc_column($field);
         my $value = $cgi->param('error')
@@ -171,6 +172,9 @@ my %defs = (
                        $record->getfield($def->{select_label}). '</OPTION>';
             }
             $html .= '</SELECT>';
+          } elsif ( $def->{type} eq 'radius_usergroup_selector' ) {
+            $html .= FS::svc_acct::radius_usergroup_selector(
+              [ split(',', $value) ], "${layer}__${field}" );
           } else {
             $html .= '<font color="#ff0000">unknown type'. $def->{type};
           }
index 423db93..31ab134 100755 (executable)
@@ -4,14 +4,18 @@ my $svcpart = $cgi->param('svcpart');
 
 my $old = qsearchs('part_svc',{'svcpart'=>$svcpart}) if $svcpart;
 
+$cgi->param( 'svc_acct__usergroup',
+             join(',', $cgi->param('svc_acct__usergroup') ) );
+
 my $new = new FS::part_svc ( {
   map {
     $_, scalar($cgi->param($_));
 #  } qw(svcpart svc svcdb)
   } ( fields('part_svc'),
       map { my $svcdb = $_;
-            map { ( $svcdb.'__'.$_, $svcdb.'__'.$_.'_flag' )  }
-              fields($svcdb)
+            my @fields = fields($svcdb);
+            push @fields, 'usergroup' if $svcdb eq 'svc_acct'; #kludge
+            map { ( $svcdb.'__'.$_, $svcdb.'__'.$_.'_flag' )  } @fields;
           } grep defined( $FS::Record::dbdef->table($_) ),
                  qw( svc_acct svc_domain svc_acct_sm svc_forward svc_www )
     )
@@ -19,9 +23,9 @@ my $new = new FS::part_svc ( {
 
 my $error;
 if ( $svcpart ) {
-  $error = $new->replace($old, '1.3-COMPAT');
+  $error = $new->replace($old, '1.3-COMPAT', [ 'usergroup' ] );
 } else {
-  $error = $new->insert;
+  $error = $new->insert( [ 'usergroup' ] );
   $svcpart=$new->getfield('svcpart');
 }