diff options
author | ivan <ivan> | 2008-04-15 13:42:40 +0000 |
---|---|---|
committer | ivan <ivan> | 2008-04-15 13:42:40 +0000 |
commit | 477015901c379f8cd6ba46cfaa4a9ae284ae582d (patch) | |
tree | f4307128f80570f1f9f38250fb1769e942ec4b99 /httemplate/edit/process/elements | |
parent | 22a294936609cfcb452742a158fafaa55d3a6fd1 (diff) |
new package editor
Diffstat (limited to 'httemplate/edit/process/elements')
-rw-r--r-- | httemplate/edit/process/elements/process.html | 64 |
1 files changed, 46 insertions, 18 deletions
diff --git a/httemplate/edit/process/elements/process.html b/httemplate/edit/process/elements/process.html index d29ffcfe5..7964dfa82 100644 --- a/httemplate/edit/process/elements/process.html +++ b/httemplate/edit/process/elements/process.html @@ -32,8 +32,13 @@ Example: 'clear_on_error' => [ 'form_field1', 'form_field2', ... ], + #pass an arrayref of hashrefs for multiple m2ms or m2names + 'process_m2m' => { 'link_table' => 'link_table_name', 'target_table' => 'target_table_name', + #optional (see m2m_Common::process_m2m), if not specified + # all CGI params will be passed) + 'params' => }, 'process_m2name' => { 'link_table' => 'link_table_name', 'link_static' => { 'column' => 'value' }, @@ -49,6 +54,10 @@ Example: }, + #checks CGI params and whatever else before much else runs + #return an error string or empty for no error + 'precheck_callback' => sub { my( $cgi ) = @_; }, + #supplies arguments to insert() and replace() # for use with tables that are FS::option_Common 'args_callback' => sub { my( $cgi, $object ) = @_; }, @@ -107,8 +116,8 @@ Example: <% $cgi->redirect( $opt{'redirect'}. $pkeyvalue ) %> % %} else { -% -<% $cgi->redirect( popurl(3). ($opt{viewall_dir}||'search'). "/$table.html" ) %> +% my $ext = $opt{'viewall_ext'} || 'html'; +<% $cgi->redirect( popurl(3). ($opt{viewall_dir}||'search'). "/$table.$ext" ) %> %} <%once> @@ -121,6 +130,11 @@ my(%opt) = @_; my $curuser = $FS::CurrentUser::CurrentUser; +my $error = ''; +if ( $opt{'precheck_callback'} ) { + $error = &{ $opt{'precheck_callback'} }( $cgi ); +} + #false laziness w/edit.html my $table = $opt{'table'}; my $class = "FS::$table"; @@ -146,7 +160,7 @@ if ( $pkeyvalue ) { } my %hash = - map { my @entry = ( $_ => $cgi->param($_) ); + map { my @entry = ( $_ => scalar($cgi->param($_)) ); $opt{'value_callback'} ? ( $_ => &{ $opt{'value_callback'} }( @entry )) : ( @entry ) } @$fields; @@ -168,7 +182,7 @@ if ($old && exists($opt{'copy_on_empty'})) { } } -my $error = $new->check; +$error ||= $new->check; my @args = (); if ( !$error && $opt{'args_callback'} ) { @@ -192,28 +206,42 @@ if ( !$error ) { if ( !$error && $opt{'process_m2m'} ) { - if ( $opt{'debug'} ) { - warn "$me processing m2m:\n". Dumper( %{ $opt{'process_m2m'} }, - 'params' => scalar($cgi->Vars), - ); + my @process_m2m = ref($opt{'process_m2m'}) eq 'ARRAY' + ? @{ $opt{'process_m2m'} } + : ( $opt{'process_m2m'} ); + + foreach my $process_m2m (@process_m2m) { + + $process_m2m->{'params'} ||= scalar($cgi->Vars); + + warn "$me processing m2m:\n". Dumper( %$process_m2m ) + if $opt{'debug'}; + + $error = $new->process_m2m( %$process_m2m ); } - $error = $new->process_m2m( %{ $opt{'process_m2m'} }, - 'params' => scalar($cgi->Vars), - ); } if ( !$error && $opt{'process_m2name'} ) { - if ( $opt{'debug'} ) { - warn "$me processing m2name:\n". Dumper( %{ $opt{'process_m2name'} }, - 'params' => scalar($cgi->Vars), - ); + my @process_m2name = ref($opt{'process_m2name'}) eq 'ARRAY' + ? @{ $opt{'process_m2name'} } + : ( $opt{'process_m2name'} ); + + + foreach my $process_m2name (@process_m2name) { + + if ( $opt{'debug'} ) { + warn "$me processing m2name:\n". Dumper( %{ $process_m2name }, + 'params' => scalar($cgi->Vars), + ); + } + + $error = $new->process_m2name( %{ $process_m2name }, + 'params' => scalar($cgi->Vars), + ); } - $error = $new->process_m2name( %{ $opt{'process_m2name'} }, - 'params' => scalar($cgi->Vars), - ); } |