summaryrefslogtreecommitdiff
path: root/httemplate
diff options
context:
space:
mode:
authorivan <ivan>2008-06-12 21:53:32 +0000
committerivan <ivan>2008-06-12 21:53:32 +0000
commite4fc461dd93181e8199d5cc5e2de2a11732b1bfd (patch)
treeb5eb8740bef97c085e9482eb4d773d87aae937cd /httemplate
parent360fb1d80bf93e94cc3e3891f22693dec2ce5022 (diff)
fix cloning w/new package editor
Diffstat (limited to 'httemplate')
-rw-r--r--httemplate/edit/elements/edit.html4
-rwxr-xr-xhttemplate/edit/part_pkg.cgi14
-rw-r--r--httemplate/edit/process/elements/process.html25
-rwxr-xr-xhttemplate/edit/process/part_pkg.cgi9
-rwxr-xr-xhttemplate/view/cust_main/packages.html1
5 files changed, 39 insertions, 14 deletions
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:
</BODY>
</HTML>
-%} 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:';
-
-</%once>
+%
<%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!<A HREF="${p}edit/part_pkg.cgi?!.
- "keywords=$custnum;".
"clone=". $cust_pkg->part_pkg->pkgpart. ';'.
"pkgnum=". $cust_pkg->pkgnum.
qq!">Customize</A>!;