summaryrefslogtreecommitdiff
path: root/httemplate/edit/elements/edit.html
diff options
context:
space:
mode:
authorivan <ivan>2009-01-25 23:58:25 +0000
committerivan <ivan>2009-01-25 23:58:25 +0000
commitdae1d4ab33e5aee1ca8fcba89c8cf4ce4cbd1810 (patch)
tree7458d47a090fda50c0743363a15341a0890e9416 /httemplate/edit/elements/edit.html
parent8433fdfe8afdd155ff5e8725ccf98612d4c36cad (diff)
fix one-time charges and package customization for employees who don't have 'Edit global package definition' ACL, RT#4668
Diffstat (limited to 'httemplate/edit/elements/edit.html')
-rw-r--r--httemplate/edit/elements/edit.html82
1 files changed, 56 insertions, 26 deletions
diff --git a/httemplate/edit/elements/edit.html b/httemplate/edit/elements/edit.html
index 617855888..f4e4195de 100644
--- a/httemplate/edit/elements/edit.html
+++ b/httemplate/edit/elements/edit.html
@@ -93,32 +93,18 @@ Example:
#agent virtualization
'agent_virt' => 1,
'agent_null_right' => 'Access Right Name',
-
- #run when re-displaying with an error
- 'error_callback' => sub { my( $cgi, $object, $fields_listref, $opt_hashref ) = @_; },
-
- #run when editing
- 'edit_callback' => sub { my( $cgi, $object, $fields_listref ) = @_; },
-
- # returns a hashref for the new object
- 'new_hashref_callback'
- # returns the new object iself (otherwise, ->new is called)
- 'new_object_callback'
-
- #run when adding
- 'new_callback' => sub { my( $cgi, $object, $fields_listref, $optref ) = @_; },
+ 'viewall_dir' => '', #'search' or 'browse', defaults to 'search'
- #run when cloning
- 'clone_callback' => sub { my( $cgi, $object, $fields_listref, $optref ) = @_; },
-
- #run before display to return a different value
- 'value_callback' => sub { my( $columname, $value ) = @_; },
+ # overrides default popurl(1)."process/$table.html"
+ 'post_url' => popurl(1).'process/something',
- #run before display to manipulate element of the 'fields' arrayref
- 'field_callback' => sub { my( $cgi, $object, $field_hashref ) = @_; },
+ #we're in a popup (no title/menu/searchboxes)
+ 'popup' => 1,
- 'viewall_dir' => '', #'search' or 'browse', defaults to 'search'
+ ###
+ # HTML callbacks
+ ###
'html_init' => '', #after the header/menubar
@@ -136,12 +122,50 @@ Example:
#at the very bottom (well, as low as you can go from here)
'html_foot' => '',
- # overrides default popurl(1)."process/$table.html"
- 'post_url' => popurl(1).'process/something',
+ ###
+ # initialization callbacks
+ ###
- #we're in a popup (no title/menu/searchboxes)
- 'popup' => 1,
+ ###global callbacks
+
+ #always run if provided, after decoding long CGI "redirect=" responses but
+ # before object creation/search
+ # (useful if you have a long form that might trigger redirect= and you need
+ # to do things with $cgi params - they're not decoded in the calling
+ # <%init> block yet)
+ 'begin_callback' = sub { my( $cgi, $fields_listref, $opt_hashref ) = @_; },
+
+ #always run, after the mode-specific object creation/search
+ 'end_callback' = sub { my( $cgi, $object, $fields_listref, $opt_hashref ) = @_; },
+
+ ###mode-specific callbacks
+
+ #run when re-displaying with an error
+ 'error_callback' => sub { my( $cgi, $object, $fields_listref, $opt_hashref ) = @_; },
+
+ #run when editing
+ 'edit_callback' => sub { my( $cgi, $object, $fields_listref ) = @_; },
+
+ # returns a hashref for the new object
+ 'new_hashref_callback'
+
+ # returns the new object iself (otherwise, ->new is called)
+ 'new_object_callback'
+ #run when adding
+ 'new_callback' => sub { my( $cgi, $object, $fields_listref ) = @_; },
+
+ #run when cloning
+ 'clone_callback' => sub { my( $cgi, $object, $fields_listref, $opt_hashref ) = @_; },
+
+ ###display callbacks
+
+ #run before display to return a different value
+ 'value_callback' => sub { my( $columname, $value ) = @_; },
+
+ #run before display to manipulate element of the 'fields' arrayref
+ 'field_callback' => sub { my( $cgi, $object, $field_hashref ) = @_; },
+
);
</%doc>
@@ -563,6 +587,9 @@ if ( $cgi->param('redirect') ) {
$cgi = new CGI($pref);
}
+&{$opt{'begin_callback'}}( $cgi, $fields, \%opt )
+ if $opt{'begin_callback'};
+
my %qsearch = (
'table' => $table,
'extra_sql' => ( $opt{'agent_virt'}
@@ -639,6 +666,9 @@ if ( $cgi->param('error') ) {
}
+&{$opt{'end_callback'}}( $cgi, $object, $fields, \%opt )
+ if $opt{'end_callback'};
+
$opt{action} ||= $object->$pkey() ? 'Edit' : 'Add';
my $title = $opt{action}. ' '. $opt{name};