summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorivan <ivan>2002-03-23 17:49:01 +0000
committerivan <ivan>2002-03-23 17:49:01 +0000
commit74e64d70361848f089aad9a7881c2af9caf6e479 (patch)
tree57f50418cc4ff6fee3024860f915833c85a1954c
parent8fe83dcb8807a86209625a5aab7e574073f0a907 (diff)
okay group editing UI as well as part_svc group editing UI seem to be working
-rw-r--r--FS/FS/part_svc.pm24
-rw-r--r--FS/FS/svc_acct.pm7
-rwxr-xr-xhttemplate/browse/part_svc.cgi10
-rwxr-xr-xhttemplate/edit/part_svc.cgi12
-rwxr-xr-xhttemplate/edit/process/part_svc.cgi12
5 files changed, 46 insertions, 19 deletions
diff --git a/FS/FS/part_svc.pm b/FS/FS/part_svc.pm
index 82935dd2b..94f51fa98 100644
--- a/FS/FS/part_svc.pm
+++ b/FS/FS/part_svc.pm
@@ -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
diff --git a/FS/FS/svc_acct.pm b/FS/FS/svc_acct.pm
index bb6b9959b..a3e97f74c 100644
--- a/FS/FS/svc_acct.pm
+++ b/FS/FS/svc_acct.pm
@@ -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 ) {
diff --git a/httemplate/browse/part_svc.cgi b/httemplate/browse/part_svc.cgi
index c66b8ac63..250b1ff4e 100755
--- a/httemplate/browse/part_svc.cgi
+++ b/httemplate/browse/part_svc.cgi
@@ -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}";
%>
diff --git a/httemplate/edit/part_svc.cgi b/httemplate/edit/part_svc.cgi
index b1bb7f3d3..b4900a01c 100755
--- a/httemplate/edit/part_svc.cgi
+++ b/httemplate/edit/part_svc.cgi
@@ -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};
}
diff --git a/httemplate/edit/process/part_svc.cgi b/httemplate/edit/process/part_svc.cgi
index 423db93b5..31ab13438 100755
--- a/httemplate/edit/process/part_svc.cgi
+++ b/httemplate/edit/process/part_svc.cgi
@@ -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');
}