X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=httemplate%2Fedit%2Fprocess%2Felements%2Fprocess.html;h=96d56875431707941930d7208b861ebb009743c2;hp=7cae78bfc9eddc6ca1fdf6f1921119f245b416bd;hb=3ce7691203a7737406bf2d4442f7fd84b81f847e;hpb=15e561850b61b10a92a46d8f3e316d53d4970087 diff --git a/httemplate/edit/process/elements/process.html b/httemplate/edit/process/elements/process.html index 7cae78bfc..96d568754 100644 --- a/httemplate/edit/process/elements/process.html +++ b/httemplate/edit/process/elements/process.html @@ -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" - ); - } - -%>