Will things ever be the same again?
[freeside.git] / httemplate / edit / process / elements / process.html
index 7cae78b..96d5687 100644 (file)
@@ -1,91 +1,92 @@
-<%
+%
+%
+%  # options example...
+%  # 
+%  ###
+%  ##req
+%  ##
+%  #
+%  # 'table' => 
+%  #
+%  # #? 'primary_key' => #required when the dbdef doesn't know...???
+%  # #? 'fields' => []
+%  #
+%  ###
+%  ##opt
+%  ###
+%  #
+%  # 'viewall_dir' => '', #'search' or 'browse', defaults to 'search'
+%  # OR
+%  # 'redirect'    => 'view/table.cgi?', # value of primary key is appended
+%  #
+%  # 'edit_ext' => 'html', #defaults to 'html', you might want 'cgi' while the
+%  #                       #naming is still inconsistent
+%  # 
+%  # 'process_m2m' => { 'link_table'   => 'link_table_name',
+%  #                    'target_table' => 'target_table_name',
+%  #                  },
+%  # 'process_m2name' => { 'link_table'   => 'link_table_name',
+%  #                       'link_static' => { 'column' => 'value' },
+%  #                       'num_col' => 'column', #if column name is different in
+%  #                                              #link_table than source_table 
+%  #                       'name_col' => 'name_column',
+%  #                       'names_list' => [ 'list', 'names' ],
+%  #                     },
+%
+%  my(%opt) = @_;
+%
+%  #false laziness w/edit.html
+%  my $table = $opt{'table'};
+%  my $class = "FS::$table";
+%  my $pkey = dbdef->table($table)->primary_key; #? $opt{'primary_key'} || 
+%  my $fields = $opt{'fields'}
+%               #|| [ grep { $_ ne $pkey } dbdef->table($table)->columns ];
+%               || [ fields($table) ];
+%
+%  my $pkeyvalue = $cgi->param($pkey);
+%
+%  my $old = qsearchs( $table, { $pkey => $pkeyvalue } ) if $pkeyvalue;
+%
+%  my $new = $class->new( {
+%    map {
+%      $_, scalar($cgi->param($_));
+%    } @$fields
+%  } );
+%
+%  my $error;
+%  if ( $pkeyvalue ) {
+%    $error = $new->replace($old);
+%  } else {
+%    $error = $new->insert;
+%    $pkeyvalue = $new->getfield($pkey);
+%  }
+%
+%  if ( !$error && $opt{'process_m2m'} ) {
+%    $error = $new->process_m2m( %{ $opt{'process_m2m'} },
+%                                'params' => scalar($cgi->Vars),
+%                              );
+%  }
+%
+%  if ( !$error && $opt{'process_m2name'} ) {
+%    $error = $new->process_m2name( %{ $opt{'process_m2name'} },
+%                                   'params' => scalar($cgi->Vars),
+%                                 );
+%  }
+%
+%  # XXX print?!?!
+%
+%  if ( $error ) {
+%    $cgi->param('error', $error);
+%    my $edit_ext = $opt{'edit_ext'} || 'html';
+%    print $cgi->redirect(popurl(2). "$table.$edit_ext?". $cgi->query_string );
+%  } elsif ( $opt{'redirect'} ) {
+%    print $cgi->redirect( $opt{'redirect'}. $pkeyvalue );
+%  } else { 
+%    print $cgi->redirect( popurl(3).
+%                          ( $opt{'viewall_dir'} || 'search' ).
+%                          "/$table.html"
+%                        );
+%  }
+%
+%
 
-  # options example...
-  # 
-  ###
-  ##req
-  ##
-  #
-  # 'table' => 
-  #
-  # #? 'primary_key' => #required when the dbdef doesn't know...???
-  # #? 'fields' => []
-  #
-  ###
-  ##opt
-  ###
-  #
-  # 'viewall_dir' => '', #'search' or 'browse', defaults to 'search'
-  # OR
-  # 'redirect'    => 'view/table.cgi?', # value of primary key is appended
-  #
-  # 'edit_ext' => 'html', #defaults to 'html', you might want 'cgi' while the
-  #                       #naming is still inconsistent
-  # 
-  # 'process_m2m' => { 'link_table'   => 'link_table_name',
-  #                    'target_table' => 'target_table_name',
-  #                  },
-  # 'process_m2name' => { 'link_table'   => 'link_table_name',
-  #                       'link_static' => { 'column' => 'value' },
-  #                       'num_col' => 'column', #if column name is different in
-  #                                              #link_table than source_table 
-  #                       'name_col' => 'name_column',
-  #                       'names_list' => [ 'list', 'names' ],
-  #                     },
-
-  my(%opt) = @_;
-
-  #false laziness w/edit.html
-  my $table = $opt{'table'};
-  my $class = "FS::$table";
-  my $pkey = dbdef->table($table)->primary_key; #? $opt{'primary_key'} || 
-  my $fields = $opt{'fields'}
-               #|| [ grep { $_ ne $pkey } dbdef->table($table)->columns ];
-               || [ fields($table) ];
-
-  my $pkeyvalue = $cgi->param($pkey);
-
-  my $old = qsearchs( $table, { $pkey => $pkeyvalue } ) if $pkeyvalue;
-
-  my $new = $class->new( {
-    map {
-      $_, scalar($cgi->param($_));
-    } @$fields
-  } );
-
-  my $error;
-  if ( $pkeyvalue ) {
-    $error = $new->replace($old);
-  } else {
-    $error = $new->insert;
-    $pkeyvalue = $new->getfield($pkey);
-  }
-
-  if ( !$error && $opt{'process_m2m'} ) {
-    $error = $new->process_m2m( %{ $opt{'process_m2m'} },
-                                'params' => scalar($cgi->Vars),
-                              );
-  }
-
-  if ( !$error && $opt{'process_m2name'} ) {
-    $error = $new->process_m2name( %{ $opt{'process_m2name'} },
-                                   'params' => scalar($cgi->Vars),
-                                 );
-  }
-
-  # XXX print?!?!
-
-  if ( $error ) {
-    $cgi->param('error', $error);
-    my $edit_ext = $opt{'edit_ext'} || 'html';
-    print $cgi->redirect(popurl(2). "$table.$edit_ext?". $cgi->query_string );
-  } elsif ( $opt{'redirect'} ) {
-    print $cgi->redirect( $opt{'redirect'}. $pkeyvalue );
-  } else { 
-    print $cgi->redirect( popurl(3).
-                          ( $opt{'viewall_dir'} || 'search' ).
-                          "/$table.html"
-                        );
-  }
-
-%>