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'; }
 
 
 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.
 
 
 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
 
 =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;
 =cut
 
 sub insert {
   my $self = shift;
+  my @fields = ();
+  @fields = @{shift(@_)} if @_;
 
   local $SIG{HUP} = 'IGNORE';
   local $SIG{INT} = 'IGNORE';
 
   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') )
   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', {
   ) {
     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)?
 }
 
 # 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.
 
 
 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 {
 =cut
 
 sub replace {
@@ -172,11 +182,15 @@ sub replace {
   }
 
   if ( @_ && $_[0] eq '1.3-COMPAT' ) {
   }
 
   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') )
     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', {
     ) {
       my $part_svc_column = $new->part_svc_column($field);
       my $previous = qsearchs('part_svc_column', {
@@ -309,7 +323,7 @@ sub part_export {
 
 =head1 VERSION
 
 
 =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
 
 
 =head1 BUGS
 
index bb6b995..a3e97f7 100644 (file)
@@ -799,7 +799,7 @@ sub replace {
         $new->usergroup( [ grep { $groupname ne $_ } @{$new->usergroup} ] );
         next;
       }
         $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,
       } );
         svcnum    => $old->svcnum,
         groupname => $groupname,
       } );
@@ -1395,7 +1395,10 @@ END
 
   foreach my $group ( @all_groups ) {
     $html .= '<OPTION';
 
   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 ) {
     $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 ) {
 <% 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 }
      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}";
 %>
 
      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',
                    },
                      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',
   },
   'svc_domain' => {
     'domain'    => 'Domain',
@@ -138,6 +138,7 @@ my %defs = (
       my @fields = defined( $FS::Record::dbdef->table($layer) )
                       ? grep { $_ ne 'svcnum' } fields($layer)
                       : ();
       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')
       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>';
                        $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};
           }
           } 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;
 
 
 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 = $_;
 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 )
     )
           } 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 ) {
 
 my $error;
 if ( $svcpart ) {
-  $error = $new->replace($old, '1.3-COMPAT');
+  $error = $new->replace($old, '1.3-COMPAT', [ 'usergroup' ] );
 } else {
 } else {
-  $error = $new->insert;
+  $error = $new->insert( [ 'usergroup' ] );
   $svcpart=$new->getfield('svcpart');
 }
 
   $svcpart=$new->getfield('svcpart');
 }