From c84d872fdca241d798cc988b44c63d5ac0ea8ead Mon Sep 17 00:00:00 2001 From: jeff Date: Wed, 25 Oct 2006 02:22:33 +0000 Subject: [PATCH] limited domain select --- FS/FS/part_svc.pm | 6 ++++++ FS/FS/part_svc_column.pm | 4 ++-- httemplate/browse/part_svc.cgi | 1 + httemplate/edit/part_svc.cgi | 27 +++++++++++++++++++++------ httemplate/edit/svc_acct.cgi | 9 ++++++++- 5 files changed, 38 insertions(+), 9 deletions(-) diff --git a/FS/FS/part_svc.pm b/FS/FS/part_svc.pm index 258734735..fc5258fff 100644 --- a/FS/FS/part_svc.pm +++ b/FS/FS/part_svc.pm @@ -544,6 +544,12 @@ sub process { $param->{ $svcdb.'__'.$_ } = delete( $param->{ $svcdb.'__'.$_.'_classnum' } ); } + if ( $param->{ $svcdb.'__'.$_.'_flag' } =~ /^S$/ ) { + $param->{ $svcdb.'__'.$_} = + ref($param->{ $svcdb.'__'.$_}) + ? join(',', @{$param->{ $svcdb.'__'.$_ }} ) + : $param->{ $svcdb.'__'.$_ }; + } ( $svcdb.'__'.$_, $svcdb.'__'.$_.'_flag' ); } @fields; diff --git a/FS/FS/part_svc_column.pm b/FS/FS/part_svc_column.pm index fb08eaa0d..d2b8fd91b 100644 --- a/FS/FS/part_svc_column.pm +++ b/FS/FS/part_svc_column.pm @@ -41,7 +41,7 @@ fields are currently supported: =item columnvalue - default or fixed value for the column -=item columnflag - null or empty (no default), `D' for default, `F' for fixed (unchangeable), `M' for manual selection from inventory, or `A' for automatic selection from inventory. For virtual fields, can also be 'X' for excluded. +=item columnflag - null or empty (no default), `D' for default, `F' for fixed (unchangeable), `S' for selectable choice, `M' for manual selection from inventory, or `A' for automatic selection from inventory. For virtual fields, can also be 'X' for excluded. =back @@ -91,7 +91,7 @@ sub check { ; return $error if $error; - $self->columnflag =~ /^([DFMAX])$/ + $self->columnflag =~ /^([DFSMAX])$/ or return "illegal columnflag ". $self->columnflag; $self->columnflag(uc($1)); diff --git a/httemplate/browse/part_svc.cgi b/httemplate/browse/part_svc.cgi index 0113263fb..795393574 100755 --- a/httemplate/browse/part_svc.cgi +++ b/httemplate/browse/part_svc.cgi @@ -5,6 +5,7 @@ % '' => '', % 'D' => 'Default', % 'F' => 'Fixed (unchangeable)', +% 'S' => 'Selectable choice', % #'M' => 'Manual selection from inventory', % 'M' => 'Manual selected from inventory', % #'A' => 'Automatically fill in from inventory', diff --git a/httemplate/edit/part_svc.cgi b/httemplate/edit/part_svc.cgi index 595d7b87a..cc9145f45 100755 --- a/httemplate/edit/part_svc.cgi +++ b/httemplate/edit/part_svc.cgi @@ -73,17 +73,20 @@ that field. % select_table => 'svc_acct_pop', % select_key => 'popnum', % select_label => 'city', +% disable_select => 1, % }, % 'username' => { % desc => 'Username', % type => 'text', % disable_default => 1, % disable_fixed => 1, +% disable_select => 1, % }, % 'quota' => { % desc => '', % type => 'text', % disable_inventory => 1, +% disable_select => 1, % }, % '_password' => 'Password', % 'gid' => 'GID (when blank, defaults to UID)', @@ -93,6 +96,7 @@ that field. % type =>'select', % select_list => [ $conf->config('shells') ], % disable_inventory => 1, +% disable_select => 1, % }, % 'finger' => 'Real name (GECOS)', % 'domsvc' => { @@ -102,15 +106,18 @@ that field. % select_key => 'svcnum', % select_label => 'domain', % disable_inventory => 1, +% disable_select => 1, % }, % 'usergroup' => { % desc =>'RADIUS groups', % type =>'radius_usergroup_selector', +% disable_select => 1, % disable_inventory => 1, % }, % 'seconds' => { desc => '', % type => 'text', % disable_inventory => 1, +% disable_select => 1, % }, % }, % @@ -148,11 +155,13 @@ that field. % 'countrycode' => { desc => 'Country code', % type => 'text', % disable_inventory => 1, +% disable_select => 1, % }, % 'phonenum' => 'Phone number', % 'pin' => { desc => 'Personal Identification Number', % type => 'text', % disable_inventory => 1, +% disable_select => 1, % }, % }, % @@ -200,6 +209,10 @@ that field. % 'condition' => % sub { ref($_[0]) && $_[0]->{disable_fixed} }, % }, +% 'S' => { 'desc' => 'Selectable Choice', +% 'condition' => +% sub { !ref($_[0]) || $_[0]->{disable_select} }, +% }, %# need to template-ize httemplate/edit/svc_* first %# 'M' => { 'desc' => 'Manual selection from inventory', %# 'condition' => $inv_sub, @@ -329,7 +342,7 @@ that field. % " what.form.${layer}__${field}_classnum.disabled = true;". % " what.form.${layer}__${field}_classnum.style.backgroundColor = '#dddddd';". % " }". -% ' } else if ( f == "D" || f == "F" ) { //enable, text box', +% ' } else if ( f == "D" || f == "F" || f =="S" ) { //enable, text box', % " what.form.${layer}__${field}.disabled = false;". % " what.form.${layer}__${field}.style.backgroundColor = '#ffffff';". % " what.form.${layer}__${field}.style.display = '';". @@ -384,20 +397,22 @@ that field. % % } elsif ( $def->{type} eq 'select' ) { % -% $html .= qq!{select_table} ) { % foreach my $record ( qsearch( $def->{select_table}, {} ) ) { % my $rvalue = $record->getfield($def->{select_key}); % $html .= qq!'; +% (grep(/^$rvalue$/, split(',',$value)) ? ' SELECTED>' : '>' ). +% $record->getfield($def->{select_label}). ''; % } #next $record % } else { # select_list % foreach my $item ( @{$def->{select_list}} ) { % $html .= qq!'; +% (grep(/^$item$/, split(',',$value)) ? ' SELECTED>' : '>' ). +% $item. ''; % } #next $item % } #endif % $html .= ''; diff --git a/httemplate/edit/svc_acct.cgi b/httemplate/edit/svc_acct.cgi index 60ca24d3e..097e8c262 100755 --- a/httemplate/edit/svc_acct.cgi +++ b/httemplate/edit/svc_acct.cgi @@ -216,7 +216,14 @@ Service # <% $svcnum ? "$svcnum" : " (NEW)" %>
% } % } % -% if ($cust_pkg && !$conf->exists('svc_acct-alldomains') ) { +% if ( $part_svc->part_svc_column('domsvc')->columnflag eq 'S' ) { +% foreach my $domain +% (split(',',$part_svc->part_svc_column('domsvc')->columnvalue)) { +% my $svc_domain = +% qsearchs('svc_domain', { 'svcnum' => $domain } ); +% $svc_domain{$svc_domain->svcnum} = $svc_domain if $svc_domain; +% } +% }elsif ($cust_pkg && !$conf->exists('svc_acct-alldomains') ) { % my @cust_svc = % map { qsearch('cust_svc', { 'pkgnum' => $_->pkgnum } ) } % qsearch('cust_pkg', { 'custnum' => $cust_pkg->custnum } ); -- 2.11.0