diff options
| author | ivan <ivan> | 2004-09-09 12:05:14 +0000 | 
|---|---|---|
| committer | ivan <ivan> | 2004-09-09 12:05:14 +0000 | 
| commit | 21843d4b0d799f74ca7c445ff92c1a20eb7cf838 (patch) | |
| tree | eaca3b252dae0c5cb3a22e5525a434c58db1f12d /httemplate | |
| parent | 915f63061a7532aa4ccba27e8240a3ec00a117f5 (diff) | |
rework edit/part_svc.cgi so it doesn't use a separate process/ file, this allows large error messages to be displayed properly
Diffstat (limited to 'httemplate')
| -rwxr-xr-x | httemplate/edit/part_svc.cgi | 105 | ||||
| -rwxr-xr-x | httemplate/edit/process/part_svc.cgi | 62 | 
2 files changed, 74 insertions, 93 deletions
| diff --git a/httemplate/edit/part_svc.cgi b/httemplate/edit/part_svc.cgi index ce8c463b7..15410b4ff 100755 --- a/httemplate/edit/part_svc.cgi +++ b/httemplate/edit/part_svc.cgi @@ -1,33 +1,74 @@ -<!-- 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 = ''; +my $error = ''; +if ( $cgi->param('magic') eq 'process' ) { + +  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 = $_; +              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_forward svc_www svc_broadband ) +      ) +  } ); +   +  my %exportnums = +    map { $_->exportnum => $cgi->param('exportnum'.$_->exportnum) } +        qsearch('part_export', {} ); +   +  if ( $svcpart ) { +    $error = $new->replace($old, '1.3-COMPAT', [ 'usergroup' ], \%exportnums ); +  } else { +    $error = $new->insert( [ 'usergroup' ], \%exportnums ); +    $svcpart = $new->getfield('svcpart'); +  } + +  unless ( $error ) { #no error, redirect +    #print $cgi->redirect(popurl(3)."browse/part_svc.cgi"); +    print $cgi->redirect("${p}browse/part_svc.cgi"); +    myexit; +  } + +  $part_svc = $new; #?? +  #$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 $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" @@ -35,8 +76,8 @@             )  %> -<% if ( $cgi->param('error') ) { %> -<FONT SIZE="+1" COLOR="#ff0000">Error: <%= $cgi->param('error') %></FONT> +<% if ( $error ) { %> +<FONT SIZE="+1" COLOR="#ff0000">Error: <%= $error %></FONT>  <% } %>  <FORM NAME="dummy"> @@ -45,6 +86,7 @@  <BR><BR>  Service  <INPUT TYPE="text" NAME="svc" VALUE="<%= $hashref->{svc} %>"><BR>  Disable new orders <INPUT TYPE="checkbox" NAME="disabled" VALUE="Y"<%= $hashref->{disabled} eq 'Y' ? ' CHECKED' : '' %>><BR> +<INPUT TYPE="hidden" NAME="magic" VALUE="process">  <INPUT TYPE="hidden" NAME="svcpart" VALUE="<%= $hashref->{svcpart} %>">  <BR>  Services are items you offer to your customers. @@ -142,8 +184,9 @@ my %defs = (      'selected_layer' => $hashref->{svcdb} || 'svc_acct',      'options'        => \%svcdb,      'form_name'      => 'dummy', -    'form_action'    => 'process/part_svc.cgi', -    'form_text'      => [ qw( svc svcpart ) ], +    #'form_action'    => 'process/part_svc.cgi', +    'form_action'    => 'part_svc.cgi', #self +    'form_text'      => [ qw( magic svc svcpart ) ],      'form_checkbox'  => [ 'disabled' ],      'layer_callback' => sub {        my $layer = shift; @@ -180,10 +223,10 @@ my %defs = (        $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') +        my $value = $error                        ? $cgi->param("${layer}__${field}")                        : $part_svc_column->columnvalue; -        my $flag = $cgi->param('error') +        my $flag = $error                       ? $cgi->param("${layer}__${field}_flag")                       : $part_svc_column->columnflag;          my $def = $defs{$layer}{$field}; diff --git a/httemplate/edit/process/part_svc.cgi b/httemplate/edit/process/part_svc.cgi deleted file mode 100755 index 859670b17..000000000 --- a/httemplate/edit/process/part_svc.cgi +++ /dev/null @@ -1,62 +0,0 @@ -<% - -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 = $_; -            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 ) -    ) -} ); - -my $error; -if ( $svcpart ) { -  $error = $new->replace($old, '1.3-COMPAT', [ 'usergroup' ] ); -} else { -  $error = $new->insert( [ 'usergroup' ] ); -  $svcpart=$new->getfield('svcpart'); -} - -if ( $error ) { -  $cgi->param('error', $error); -  print $cgi->redirect(popurl(2). "part_svc.cgi?". $cgi->query_string ); -} else { - -  #false laziness w/ edit/process/agent_type.cgi -  foreach my $part_export (qsearch('part_export',{})) { -    my $exportnum = $part_export->exportnum; -    my $export_svc = qsearchs('export_svc', { -      'exportnum' => $part_export->exportnum, -      'svcpart'   => $new->svcpart, -    } ); -    if ( $export_svc && ! $cgi->param("exportnum". $part_export->exportnum) ) { -      $error = $export_svc->delete; -      die $error if $error; -    } elsif ( $cgi->param("exportnum". $part_export->exportnum) -              && ! $export_svc ) { -      $export_svc = new FS::export_svc ( { -        'exportnum' => $part_export->exportnum, -        'svcpart'   => $new->svcpart, -      } ); -      $error = $export_svc->insert; -      die $error if $error; -    } - -  } - -  print $cgi->redirect(popurl(3)."browse/part_svc.cgi"); -} - -%> | 
