-<!-- mason kludge -->
-<%
- my $part_svc;
- my $clone = '';
- if ( $cgi->param('error') ) { #error
- $part_svc = new FS::part_svc ( {
- map { $_, scalar($cgi->param($_)) } fields('part_svc')
- } );
- } elsif ( $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 $action = $part_svc->svcpart ? 'Edit' : 'Add';
- my $hashref = $part_svc->hashref;
+<%
+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 $action = $part_svc->svcpart ? 'Edit' : 'Add';
+my $hashref = $part_svc->hashref;
# my $p_svcdb = $part_svc->svcdb || 'svc_acct';
#" onLoad=\"visualize()\""
%>
-
+<!-- mason kludge -->
<%= header("$action Service Definition",
menubar( 'Main Menu' => $p,
'View all service definitions' => "${p}browse/part_svc.cgi"
)
%>
-<% if ( $cgi->param('error') ) { %>
-<FONT SIZE="+1" COLOR="#ff0000">Error: <%= $cgi->param('error') %></FONT>
-<% } %>
-
<FORM NAME="dummy">
Service Part #<%= $part_svc->svcpart ? $part_svc->svcpart : "(NEW)" %>
<LI>svc_forward - mail forwarding
<LI>svc_www - Virtual domain website
<LI>svc_broadband - Broadband/High-speed Internet service
+ <LI>svc_external - Externally-tracked service
<!-- <LI>svc_charge - One-time charges (Partially unimplemented)
<LI>svc_wo - Work orders (Partially unimplemented)
-->
#these might belong somewhere else for other user interfaces
#pry need to eventually create stuff that's shared amount UIs
+my $conf = new FS::Conf;
my %defs = (
'svc_acct' => {
'dir' => 'Home directory',
'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 <b>shells</b> configuration file)',
+ 'shell' => {
+ desc =>'Shell (all service definitions should have a default or fixed shell that is present in the <b>shells</b> configuration file)',
+ type =>'select',
+ select_list => [ $conf->config('shells') ],
+ },
'finger' => 'GECOS',
'domsvc' => {
desc =>'svcnum from svc_domain',
'ip_addr' => 'IP address. Leave blank for automatic assignment.',
'blocknum' => 'Address block.',
},
+ 'svc_external' => {
+ #'id' => '',
+ #'title' => '',
+ },
);
- foreach $svcdb (keys(%defs)) {
+ foreach my $svcdb (grep dbdef->table($_), keys %defs ) {
my $self = "FS::$svcdb"->new;
$vfields{$svcdb} = {};
foreach my $field ($self->virtual_fields) { # svc_Common::virtual_fields with a null svcpart returns all of them
my @dbs = $hashref->{svcdb}
? ( $hashref->{svcdb} )
- : qw( svc_acct svc_domain svc_forward svc_www svc_broadband );
+ : qw( svc_acct svc_domain svc_forward svc_www svc_broadband svc_external );
- tie my %svcdb, 'Tie::IxHash', map { $_=>$_ } @dbs;
+ tie my %svcdb, 'Tie::IxHash', map { $_=>$_ } grep dbdef->table($_), @dbs;
my $widget = new HTML::Widgets::SelectLayers(
#'selected_layer' => $p_svcdb,
'selected_layer' => $hashref->{svcdb} || 'svc_acct',
'options' => \%svcdb,
'form_name' => 'dummy',
- 'form_action' => 'process/part_svc.cgi',
+ #'form_action' => 'process/part_svc.cgi',
+ 'form_action' => 'part_svc.cgi', #self
'form_text' => [ qw( svc svcpart ) ],
'form_checkbox' => [ 'disabled' ],
'layer_callback' => sub {
my $layer = shift;
+
my $html = qq!<INPUT TYPE="hidden" NAME="svcdb" VALUE="$layer">!;
my $columns = 3;
$html .= '<BR><BR>'. table().
table(). "<TR><TH COLSPAN=$columns>Exports</TH></TR><TR>";
foreach my $part_export ( @part_export ) {
- $html .= '<TD><INPUT TYPE="checbox"'.
+ $html .= '<TD><INPUT TYPE="checkbox"'.
' NAME="exportnum'. $part_export->exportnum. '" VALUE="1" ';
$html .= 'CHECKED'
if ( $clone || $part_svc->svcpart ) #null svcpart search causing error
$part_svc->svcpart($clone) if $clone; #haha, undone below
foreach my $field (@fields) {
my $part_svc_column = $part_svc->part_svc_column($field);
- my $value = $cgi->param('error')
- ? $cgi->param("${layer}__${field}")
- : $part_svc_column->columnvalue;
- my $flag = $cgi->param('error')
- ? $cgi->param("${layer}__${field}_flag")
- : $part_svc_column->columnflag;
+ my $value = $part_svc_column->columnvalue;
+ my $flag = $part_svc_column->columnflag;
my $def = $defs{$layer}{$field};
my $desc = ref($def) ? $def->{desc} : $def;
$part_svc->svcpart('') if $clone; #undone
$html .= "</TABLE>";
- $html .= '<BR><INPUT TYPE="submit" VALUE="'.
- ($hashref->{svcpart} ? 'Apply changes' : 'Add service'). '">';
+ $html .= include('/elements/progress-init.html',
+ $layer, #form name
+ [ qw(svc svcpart disabled exportnum), @fields ],
+ 'process/part_svc.cgi',
+ $p.'browse/part_svc.cgi',
+ $layer,
+ );
+ $html .= '<BR><INPUT NAME="submit" TYPE="button" VALUE="'.
+ ($hashref->{svcpart} ? 'Apply changes' : 'Add service'). '" '.
+ ' onClick="document.'. "$layer.submit.disabled=true; ".
+ "fixup(document.$layer); $layer". 'process();">';
+
+ #$html .= '<BR><INPUT TYPE="submit" VALUE="'.
+ # ($hashref->{svcpart} ? 'Apply changes' : 'Add service'). '">';
$html;