X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=httemplate%2Fedit%2Felements%2Fedit.html;h=33e4b0deec943a7968f21e3caae22743d33bfb61;hb=1d84feb7fe821b547e211ad03e5c200c8f218797;hp=93478449550fddc005d21c8fe77bc055c16b9f09;hpb=55f178ee7c54120db6447fe91c5cbcaa77494f70;p=freeside.git diff --git a/httemplate/edit/elements/edit.html b/httemplate/edit/elements/edit.html index 934784495..33e4b0dee 100644 --- a/httemplate/edit/elements/edit.html +++ b/httemplate/edit/elements/edit.html @@ -164,7 +164,7 @@ Example:
- + <% ( $opt{labels} && exists $opt{labels}->{$pkey} ) @@ -172,7 +172,7 @@ Example: : $pkey %> -#<% $object->$pkey() || "(NEW)" %> +#<% ( !$clone && $object->$pkey() ) || "(NEW)" %> % my $tablenum = 0; @@ -313,7 +313,7 @@ Example: % my @existing = (); % if ( $mode eq 'error' ) { % @existing = &{ $f->{'m2_error_callback'} }( $cgi, $object ); -% } elsif ( $object->$pkey() ) { # $mode eq 'edit' +% } elsif ( $object->$pkey() ) { # $mode eq 'edit'||'clone' % @existing = $object->$table(); % warn scalar(@existing). " from $object->$table: ". join('/', @existing) % if $opt{'debug'}; @@ -527,7 +527,7 @@ Example:
-"> +"> @@ -559,8 +559,19 @@ if ( $cgi->param('redirect') ) { $cgi = new CGI($pref); } -my $object; +my %qsearch = ( + 'table' => $table, + 'extra_sql' => ( $opt{'agent_virt'} + ? ' AND '. $curuser->agentnums_sql( + 'null_right' => $opt{'agent_null_right'} + ) + : '' + ), +); + my $mode; +my $object; +my $clone = ''; if ( $cgi->param('error') ) { $mode = 'error'; @@ -572,6 +583,22 @@ if ( $cgi->param('error') ) { &{$opt{'error_callback'}}($cgi, $object, $fields, \%opt ) if $opt{'error_callback'}; +} elsif ( $cgi->param('clone') =~ /^(\d+)$/ ) { + + $mode = 'clone'; + + $clone = $1; + + $object = qsearchs({ %qsearch, 'hashref' => { $pkey => $clone } }); + + #XXX document me + &{$opt{'clone_callback'}}($cgi, $object, $fields) + if $opt{'clone_callback'}; + + #$object->$pkey(''); + + $opt{action} ||= 'Add'; + } elsif ( $cgi->keywords || $cgi->param($pkey) ) { #editing $mode = 'edit'; @@ -584,16 +611,8 @@ if ( $cgi->param('error') ) { $value = $query; } $value =~ /^(\d+)$/ or die "unparsable $pkey"; - $object = qsearchs({ - 'table' => $table, - 'hashref' => { $pkey => $1 }, - 'extra_sql' => ( $opt{'agent_virt'} - ? ' AND '. $curuser->agentnums_sql( - 'null_right' => $opt{'agent_null_right'} - ) - : '' - ), - }); + $object = qsearchs({ %qsearch, 'hashref' => { $pkey => $1 } }); + warn "$table $pkey => $1" if $opt{'debug'};