X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=httemplate%2Fedit%2Felements%2Fedit.html;h=d7d55a257aa9d76d32aab7a4e66880920ef70c56;hp=94bf6eecdec5639296ab16463f86ddb08298b2d1;hb=eb4ff7f73c5d4bdf74a3472448b5a195598ff4cd;hpb=c738a3c4923774b64960aa87fa58bd0751487edb
diff --git a/httemplate/edit/elements/edit.html b/httemplate/edit/elements/edit.html
index 94bf6eecd..d7d55a257 100644
--- a/httemplate/edit/elements/edit.html
+++ b/httemplate/edit/elements/edit.html
@@ -1,163 +1,522 @@
-<%
-
- # options example...
- #
- # 'name' =>
- # 'table' =>
- # #? 'primary_key' => #required when the dbdef doesn't know...???
- # 'labels' => {
- # 'column' => 'Label',
- # }
- #
- # listref - each item is a literal column name (or method) or (notyet) coderef
- # if not specified all columns (except for the primary key) will be editable
- # 'fields' => [
- # ]
- #
- # 'menubar' => '', #menubar arrayref
- #
- # #run when re-displaying with an error
- # 'error_callback' => sub { my $cgi, $object = @_; },
- #
- # #run when editing
- # 'edit_callback' => sub { my $cgi, $object = @_; },
- #
- # #run when adding
- # 'new_callback' => sub { my $cgi, $object = @_; },
- #
- # #broken'html_table_bottom' => '', #string or listref of additinal HTML to
- # #add before
- #
- # 'viewall_dir' => '', #'search' or 'browse', defaults to 'search'
- #
- # 'html_bottom' => '', #string
- # 'html_bottom' => sub {
- # my $object = shift;
- # # ...
- # "html_string";
- # },
-
- my(%opt) = @_;
-
- #false laziness w/process.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 ];
- || [ grep { $_ ne $pkey } fields($table) ];
- #my @actualfields = map { ref($_) ? $_->{'field'} : $_ } @$fields;
-
- my $object;
- if ( $cgi->param('error') ) {
-
- $object = $class->new( {
- map { $_ => scalar($cgi->param($_)) } fields($table)
- });
-
- &{$opt{'error_callback'}}($cgi, $object)
- if $opt{'error_callback'};
-
- } elsif ( $cgi->keywords ) { #editing
+<%doc>
+
+Example:
+
+ include( 'elements/edit.html',
+ 'name' =>
+ 'table' =>
+ #? 'primary_key' => #required when the dbdef doesn't know...???
+ 'labels' => {
+ 'column' => 'Label',
+ }
+
+ listref - each item is a literal column name (or method) or hashref
+ or (notyet) coderef
+ if not specified all columns (except for the primary key) will be editable
+ 'fields' => [
+ 'columname',
+ { 'field' => 'another_columname',
+ 'type' => 'text', #text
+ #money
+ #checkbox
+ #select
+ #selectlayers
+ #title
+ #hidden - hidden value from object
+ #fixed - display fixed value from here
+ #fixedhidden - hidden value from here
+ 'value' => 'Y', #for checkbox, title, fixed, fixedhidden
+ 'disabled' => 0,
+ 'onchange' => 'javascript_function',
+ 'm2name_table' => 'table_name', #only tested w/
+ # selectlayers so far
+ # might work w/select
+ # dunno others
+ 'm2name_namecol' => 'name_column', #
+ 'm2name_label' => 'Label', #
+ 'm2name_new_default' => \@table_name_objects, #default
+ #m2name
+ #objects for
+ #new records
+ 'm2name_error_callback' => sub { my($cgi, $object) = @_; },
+ 'm2name_remove_warnings' => \%warnings, #hashref of warning
+ #messages for
+ #m2name removal
+ 'm2name_new_js' => 'function_name', #javascript function
+ #called on spawned rows
+ #(one arg: new_element)
+ 'm2name_remove_js' => 'function_name', #js function called
+ #when a row is
+ #deleted
+ #(three args:
+ # value, text,
+ # 'no_match')
+ #layer_fields & layer_values_callback only for selectlayer
+ 'layer_fields' => [
+ 'fieldname' => 'Label',
+ 'another_field' => {
+ label=>'Label',
+ type =>'text', #text, money
+ },
+ ],
+ 'layer_values_callback' =>
+ sub {
+ my( $cgi, $object ) = @_;
+ { 'layer' => { 'fieldname' => 'current_value',
+ 'fieldname2' => 'field2value',
+ ...
+ },
+ 'layer2' => { 'l2fieldname' => 'l2value',
+ ...
+ },
+ ...
+ };
+ },
+ },
+ ]
+
+ 'menubar' => '', #menubar arrayref
+
+ #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 ) = @_; },
+
+ #run when editing
+ 'edit_callback' => sub { my( $cgi, $object, $fields_listref ) = @_; },
+
+ # returns a hashref for the new object
+ 'new_hashref_callback'
+
+ #run when adding
+ 'new_callback' => sub { my( $cgi, $object, $fields_listref ) = @_; },
+
+ #XXX describe
+ 'field_callback' => sub { },
+
+ #string or coderef of additional HTML to add before
+ 'html_table_bottom' => '',
+
+ 'viewall_dir' => '', #'search' or 'browse', defaults to 'search'
+
+ 'html_bottom' => '', #string
+ 'html_bottom' => sub {
+ my $object = shift;
+ # ...
+ "html_string";
+ },
+
+ # overrides default popurl(1)."process/$table.html"
+ 'post_url' => popurl(1).'process/something',
+ );
+
+%doc>
+
+<% include("/elements/header.html", $title,
+ include( '/elements/menubar.html', @menubar )
+ )
+%>
- my( $query ) = $cgi->keywords;
- $query =~ /^(\d+)$/;
- $object = qsearchs( $table, { $pkey => $1 } );
+% if ( $cgi->param('error') ) {
+ Error: <% $cgi->param('error') %>
+
+% }
- &{$opt{'edit_callback'}}($cgi, $object)
- if $opt{'edit_callback'};
+% my $url = $opt{'post_url'} || popurl(1)."process/$table.html";
- } else { #adding
+