From: ivan Date: Thu, 12 Jun 2008 21:53:32 +0000 (+0000) Subject: fix cloning w/new package editor X-Git-Tag: root_of_webpay_support~572 X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=commitdiff_plain;h=e4fc461dd93181e8199d5cc5e2de2a11732b1bfd fix cloning w/new package editor --- diff --git a/httemplate/edit/elements/edit.html b/httemplate/edit/elements/edit.html index 4a62ba316..04ca81c72 100644 --- a/httemplate/edit/elements/edit.html +++ b/httemplate/edit/elements/edit.html @@ -91,7 +91,7 @@ Example: 'agent_null_right' => 'Access Right Name', #run when re-displaying with an error - 'error_callback' => sub { my( $cgi, $object, $fields_listref ) = @_; }, + 'error_callback' => sub { my( $cgi, $object, $fields_listref, $opt_hashref ) = @_; }, #run when editing 'edit_callback' => sub { my( $cgi, $object, $fields_listref ) = @_; }, @@ -548,7 +548,7 @@ if ( $cgi->param('error') ) { map { $_ => scalar($cgi->param($_)) } fields($table) }); - &{$opt{'error_callback'}}($cgi, $object, $fields) + &{$opt{'error_callback'}}($cgi, $object, $fields, \%opt ) if $opt{'error_callback'}; } elsif ( $cgi->keywords || $cgi->param($pkey) ) { #editing diff --git a/httemplate/edit/part_pkg.cgi b/httemplate/edit/part_pkg.cgi index 39c0ac3c1..032970c30 100755 --- a/httemplate/edit/part_pkg.cgi +++ b/httemplate/edit/part_pkg.cgi @@ -35,8 +35,14 @@ }, 'fields' => [ - { field=>'clone', type=>'hidden' }, - { field=>'pkgnum', type=>'hidden' }, + { field=>'clone', type=>'hidden', + curr_value_callback => + sub { shift->param('clone') }, + }, + { field=>'pkgnum', type=>'hidden', + curr_value_callback => + sub { shift->param('pkgnum') }, + }, { type => 'columnstart' }, @@ -149,6 +155,7 @@ die "access denied" #XXX # - tr-part_pkg_freq: month_increments_only (from price plans) # - test cloning +# - test errors cloning # - test custom pricing # - move the selectlayer divs away from lame layer_callback @@ -164,9 +171,10 @@ my $clone_part_pkg = ''; my %options = (); my $recur_disabled = 1; my $error_callback = sub { - my($cgi, $object, $fields) = @_; + my($cgi, $object, $fields, $opt ) = @_; (@agent_type) = $cgi->param('agent_type'); $tax_override = $cgi->param('tax_override'); + $opt->{action} = 'Custom' if $cgi->param('clone'); $clone_part_pkg= qsearchs('part_pkg', { 'pkgpart' => $cgi->param('clone') } ); $recur_disabled = $cgi->param('freq') ? 0 : 1; diff --git a/httemplate/edit/process/elements/process.html b/httemplate/edit/process/elements/process.html index 7964dfa82..6f271ee29 100644 --- a/httemplate/edit/process/elements/process.html +++ b/httemplate/edit/process/elements/process.html @@ -20,6 +20,7 @@ Example: 'viewall_dir' => '', #'search' or 'browse', defaults to 'search' OR 'redirect' => 'view/table.cgi?', # value of primary key is appended + # (string or coderef returning a string) OR 'popup_reload' => 'Momentary success message', #will reload parent window @@ -111,21 +112,29 @@ Example: -%} elsif ( $opt{'redirect'} ) { +%} else { +% +% $opt{'redirect'} = &{$opt{'redirect'}}($cgi, $new) +% if ref($opt{'redirect'}) eq 'CODE'; +% +% if ( $opt{'redirect'} ) { % <% $cgi->redirect( $opt{'redirect'}. $pkeyvalue ) %> % -%} else { -% my $ext = $opt{'viewall_ext'} || 'html'; +% } else { +% +% my $ext = $opt{'viewall_ext'} || 'html'; +% <% $cgi->redirect( popurl(3). ($opt{viewall_dir}||'search'). "/$table.$ext" ) %> +% +% } +% %} -<%once> - - my $me = 'process.html:'; - - +% <%init> +my $me = 'process.html:'; + my(%opt) = @_; my $curuser = $FS::CurrentUser::CurrentUser; diff --git a/httemplate/edit/process/part_pkg.cgi b/httemplate/edit/process/part_pkg.cgi index e90dee26c..faaedf9db 100755 --- a/httemplate/edit/process/part_pkg.cgi +++ b/httemplate/edit/process/part_pkg.cgi @@ -1,6 +1,7 @@ <% include( 'elements/process.html', #'debug' => 1, 'table' => 'part_pkg', + 'redirect' => $redirect_callback, 'viewall_dir' => 'browse', 'viewall_ext' => 'cgi', 'edit_ext' => 'cgi', @@ -106,10 +107,18 @@ my $args_callback = sub { 'custnum_ref' => \$custnum; } + warn "args: ".join('/', @args). "\n"; + @args; }; +my $redirect_callback = sub { + #my( $cgi, $new ) = @_; + return '' unless $custnum; + popurl(3). "view/cust_main.cgi?keywords=$custnum;dummy="; +}; + #these should probably move to @args above and be processed by part_pkg.pm... $cgi->param('tax_override') =~ /^([\d,]+)$/; diff --git a/httemplate/view/cust_main/packages.html b/httemplate/view/cust_main/packages.html index b71bdee31..9b1bed90c 100755 --- a/httemplate/view/cust_main/packages.html +++ b/httemplate/view/cust_main/packages.html @@ -628,7 +628,6 @@ sub pkg_customize_link { my $cust_pkg = shift or return ''; my $custnum = $cust_pkg->custnum; qq!Customize!;