X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=httemplate%2Fedit%2Fpart_svc.cgi;h=007c246295f42394fd67b2b7593624b02410703d;hb=e513d7cb331d7c7d99d1ea7b5f0a5f8e08e0d725;hp=39f49e14c95a28a3b3b21003bd040c9275c72fde;hpb=1fd6d8cf5d7854860ef4fd10ed89828e0c04ec39;p=freeside.git diff --git a/httemplate/edit/part_svc.cgi b/httemplate/edit/part_svc.cgi index 39f49e14c..007c24629 100755 --- a/httemplate/edit/part_svc.cgi +++ b/httemplate/edit/part_svc.cgi @@ -1,240 +1,493 @@ - -<% - my $part_svc; - if ( $cgi->param('error') ) { #error - $part_svc = new FS::part_svc ( { - map { $_, scalar($cgi->param($_)) } fields('part_svc') - } ); - } elsif ( $cgi->keywords ) { #edit - my($query) = $cgi->keywords; - $query =~ /^(\d+)$/ or die "malformed query: $query"; - $part_svc=qsearchs('part_svc', { 'svcpart'=>$1 } ) - or die "unknown svcpart: $1"; - } else { #adding - $part_svc = new FS::part_svc {}; - } - my $action = $part_svc->svcpart ? 'Edit' : 'Add'; - my $hashref = $part_svc->hashref; - my $p_svcdb = $part_svc->svcdb || 'svc_acct'; - -%> - - +<& /elements/header.html, "$action Service Definition", + menubar('View all service definitions' => "${p}browse/part_svc.cgi"), + #" onLoad=\"visualize()\"" +&> -<%= header("$action Service Definition", - menubar( 'Main Menu' => $p, - 'View all service definitions' => "${p}browse/part_svc.cgi" - ), - " onLoad=\"visualize()\"" - ) -%> +<& /elements/init_overlib.html &> -<% if ( $cgi->param('error') ) { %> -Error: <%= $cgi->param('error') %> -<% } %> +
- Service Part #<%= $part_svc->svcpart ? $part_svc->svcpart : "(NEW)" %> -

-Service
-Disable new orders {disabled} eq 'Y' ? ' CHECKED' : '' %>>
+Service Part #<% $part_svc->svcpart ? $part_svc->svcpart : "(NEW)" %> + + + + + + +<& /elements/tr-select-part_svc_class.html, curr_value=>$hashref->{classnum} &> + + + + + + + + + + + + + + + + + +
Service
Self-service access + +
Disable new orders{disabled} eq 'Y' ? ' CHECKED' : '' %>>
Preserve this service on package cancellation{'preserve'} eq 'Y' ? ' CHECKED' : '' %>> 
+ + +
-Services are items you offer to your customers. - -For the selected table, you can give fields default or fixed (unchangable) -values. For example, a SLIP/PPP account may have a default (or perhaps fixed) -slipip of 0.0.0.0, while a POP mailbox will probably have a fixed -blank slipip as well as a fixed shell something like /bin/true or -/usr/bin/passwd. -

-', +% ); +% +% } +% +% $html .= qq!!; +% +% my $disabled = $flag ? '' +% : 'DISABLED STYLE="background-color: #dddddd"'; +% my $nodisplay = ' STYLE="display:none"'; +% +% if ( !$def->{type} || $def->{type} eq 'text' ) { +% +% my $is_inv = ( $flag =~ /^[MA]$/ ); +% +% $html .= +% qq!'; +% +% $html .= include('/elements/select-table.html', +% 'element_name' => "${layer}__${field}_classnum", +% 'id' => "${layer}__${field}_classnum", +% 'element_etc' => ( $is_inv +% ? $disabled +% : $nodisplay +% ), +% 'table' => 'inventory_class', +% 'name_col' => 'classname', +% 'value' => $value, +% 'empty_label' => 'Select inventory class', +% ); +% +% } elsif ( $def->{type} eq 'checkbox' ) { +% +% $html .= include('/elements/checkbox.html', +% 'field' => $layer.'__'.$field, +% 'curr_value' => $value, +% 'value' => 'Y', +% ); +% +% } elsif ( $def->{type} eq 'select' ) { +% +% $html .= qq!'; +% +% } elsif ( $def->{type} eq 'textarea' ) { +% +% $html .= +% qq!'; +% +% } elsif ( $def->{type} =~ /select-(.*?).html/ ) { +% +% $html .= include("/elements/".$def->{type}, +% 'curr_value' => $value, +% 'element_name' => "${layer}__${field}", +% 'element_etc' => $disabled, +% 'multiple' => ($def->{multiple} || +% $flag eq 'S'), +% # allow the table def to force 'multiple' +% ); +% +% } elsif ( $def->{type} eq 'communigate_pro-accessmodes' ) { +% +% $html .= include('/elements/communigate_pro-accessmodes.html', +% 'element_name_prefix' => "${layer}__${field}_", +% 'curr_value' => $value, +% #doesn't work#'element_etc' => $disabled, +% ); +% +% } elsif ( $def->{type} eq 'select-hardware' ) { +% +% $html .= qq!!; +% $html .= include('/elements/select-hardware_class.html', +% 'curr_value' => $value, +% 'element_name' => "${layer}__${field}_classnum", +% 'id' => "${layer}__${field}_classnum", +% 'element_etc' => $flag ne 'H' && $nodisplay, +% 'empty_label' => 'Select hardware class', +% ); +% +% } elsif ( $def->{type} eq 'disabled' ) { +% +% $html .= +% qq!!; +% +% } else { +% +% $html .= 'unknown type '. $def->{type}; +% +% } +% +% $html .= "\n"; + +% $def_info = "($def_info)" if $def_info; +% $html .= +% qq!!. +% qq! !. +% qq! $def_info!. +% qq! !. +% qq!\n!; +% +% } #foreach my $field (@fields) { +% +% $part_svc->svcpart('') if $clone; #undone +% $html .= ""; +% +% $html .= include('/elements/progress-init.html', +% $layer, #form name +% [ qw(svc svcpart classnum selfservice_access +% disabled preserve +% exportnum), +% @fields ], +% 'process/part_svc.cgi', +% $p.'browse/part_svc.cgi', +% $layer, +% ); +% $html .= '
'; +% +% #$html .= '
'; +% +% $html; +% +% }, +% ); + +
+Table <% $widget->html %> + +<% include('/elements/footer.html') %> + +<%init> + +die "access denied" + unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); + +my $conf = FS::Conf->new; +my $part_svc; +my $clone = ''; +if ( $cgi->param('clone') && $cgi->param('clone') =~ /^(\d+)$/ ) {#clone + #$cgi->param('clone') =~ /^(\d+)$/ or die "malformed query: $query"; + $part_svc = qsearchs('part_svc', { 'svcpart'=>$1 } ) + or die "unknown svcpart: $1"; + $clone = $part_svc->svcpart; + $part_svc->svcpart(''); +} elsif ( $cgi->keywords ) { #edit + my($query) = $cgi->keywords; + $query =~ /^(\d+)$/ or die "malformed query: $query"; + $part_svc=qsearchs('part_svc', { 'svcpart'=>$1 } ) + or die "unknown svcpart: $1"; +} else { #adding + $part_svc = new FS::part_svc {}; } - -<% my @dbs = $hashref->{svcdb} - ? ( $hashref->{svcdb} ) - : qw( svc_acct svc_domain svc_acct_sm svc_forward svc_www ); %> -Table - -<% -#these might belong somewhere else for other user interfaces -#pry need to eventually create stuff that's shared amount UIs -my %defs = ( - 'svc_acct' => { - 'dir' => 'Home directory', - 'uid' => 'UID (set to fixed and blank for dial-only)', - 'slipip' => 'IP address (Set to fixed and blank to disable dialin, or, set a value to be exported to RADIUS Framed-IP-Address. Use the special value 0e0 [zero e zero] to enable export to RADIUS without a Framed-IP-Address.)', - 'popnum' => qq!POP number!, - 'username' => 'Username', - 'quota' => '', - '_password' => 'Password', - 'gid' => 'GID (when blank, defaults to UID)', - 'shell' => 'Shell (all service definitions should have a default or fixed shell that is present in the shells configuration file)', - 'finger' => 'GECOS', - 'domsvc' => 'svcnum from svc_domain', - }, - 'svc_domain' => { - 'domain' => 'Domain', - }, - 'svc_acct_sm' => { - 'domuser' => 'domuser@virtualdomain.com', - 'domuid' => 'UID where domuser@virtualdomain.com mail is forwarded', - 'domsvc' => 'svcnum from svc_domain for virtualdomain.com', - }, - 'svc_forward' => { - 'srcsvc' => 'service from which mail is to be forwarded', - 'dstsvc' => 'service to which mail is to be forwarded', - 'dst' => 'someone@another.domain.com to use when dstsvc is 0', - }, - 'svc_charge' => { - 'amount' => 'amount', - }, - 'svc_wo' => { - 'worker' => 'Worker', - '_date' => 'Date', - }, - 'svc_www' => { - #'recnum' => '', - #'usersvc' => '', - }, + +my $action = $part_svc->svcpart ? 'Edit' : 'Add'; +my $hashref = $part_svc->hashref; +# my $p_svcdb = $part_svc->svcdb || 'svc_acct'; + +my %communigate_fields = ( + 'svc_acct' => { map { $_=>1 } + qw( file_quota file_maxnum file_maxsize + password_selfchange password_recover + ), + grep /^cgp_/, fields('svc_acct') + }, + 'svc_domain' => { map { $_=>1 } + qw( max_accounts trailer parent_svcnum ), + grep /^(cgp|acct_def)_/, fields('svc_domain') + }, + #'svc_forward' => { map { $_=>1 } qw( ) }, + #'svc_mailinglist' => { map { $_=>1 } qw( ) }, + #'svc_cert' => { map { $_=>1 } qw( ) }, ); -# svc_acct svc_domain svc_acct_sm svc_charge svc_wo -foreach my $svcdb ( qw( - konq_kludge svc_acct svc_domain svc_acct_sm svc_forward svc_www -) ) { - -# my(@fields) = $svcdb eq 'konq_kludge' -# ? () -# : grep { $_ ne 'svcnum' } fields($svcdb); - #yucky kludge - my(@fields) = defined( $FS::Record::dbdef->table($svcdb) ) - ? grep { $_ ne 'svcnum' } fields($svcdb) - : (); - #my($rowspan)=scalar(@rows); - - #my($ptmp)="$svcdb"; -# $visibility = $svcdb eq $part_svc->svcdb ? "SHOW" : "HIDDEN"; -# $visibility = $svcdb eq $p_svcdb ? "visible" : "hidden"; - my $visibility = "hidden"; -%> - -
- - - - -<% - #print "$svcdb
" unless $svcdb eq 'konq_kludge'; - print table(). "FieldModifier" unless $svcdb eq 'konq_kludge'; - - foreach my $field (@fields) { - my $part_svc_column = $part_svc->part_svc_column($field); - my $value = $cgi->param('error') - ? $cgi->param("${svcdb}__${field}") - : $part_svc_column->columnvalue; - my $flag = $cgi->param('error') - ? $cgi->param("${svcdb}__${field}_flag") - : $part_svc_column->columnflag; - #print "$ptmp$field"; - print "$field"; - print "- $defs{$svcdb}{$field}" - if defined $defs{$svcdb}{$field}; - print ""; - print qq!Off"; - print qq!Default "; - print qq!Fixed "; - print qq!!, - "\n"; - #$ptmp=''; - } - print "" unless $svcdb eq 'konq_kludge'; - -print qq!\n
! unless $svcdb eq 'konq_kludge'; - - print "
"; - print < - if (document.getElementById) { - document.write(""); - } else { - document.write(""); - } - -END -} -#print ""; -%> - - - - -