voodoo
[freeside.git] / httemplate / edit / elements / edit.html
index 150ed85..94bf1a5 100644 (file)
@@ -3,8 +3,12 @@
 Example:
 
   include( 'elements/edit.html',  
-    'name'  =>
-    'table' =>
+    'name_singular' =>  #singular name for the record
+                        # (preferred, will be pluralized automatically)
+    'name'          =>  #name for the record
+                        # (deprecated, will be pluralized simplistically)
+    'table'         =>
+
     #? 'primary_key' => #required when the dbdef doesn't know...???
     'labels' => {
                   'column' => 'Label',
@@ -41,10 +45,9 @@ Example:
                     'm2name_table'   => 'table_name',
                     'm2name_namecol' => 'name_column',
                     #OR#
-                    'm2m_table'        =>
-                    'm2m_target_table' =>
-                    'm2m_srccol'  => #opt, if not the same as this table
-                    'm2m_dstcol'  => #opt, if not the same as target table
+                    'm2m_method'       =>
+                    #'m2m_srccol'  => #opt, if not the same as this table
+                    'm2m_dstcol'  => #required for now, eventuaully opt, if not the same as target table
 
                     'm2_label'   => 'Label',        #
                     'm2_new_default' => \@table_name_objects, #default
@@ -92,7 +95,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 ) = @_; },
@@ -107,10 +110,10 @@ Example:
     'new_callback' => sub { my( $cgi, $object, $fields_listref ) = @_; },
    
     #run before display to return a different value
-    'value_callback' => sub { my( $columname, $value ) = @_; },
+    'value_callback' => sub { my( $columname, $value ) = @_; },
 
-    #XXX describe
-    'field_callback' => sub { },
+    #run before display to manipulate element of the 'fields' arrayref
+    'field_callback' => sub { my( $cgi, $object, $field_hashref ) = @_; },
 
     'viewall_dir' => '', #'search' or 'browse', defaults to 'search'
 
@@ -180,7 +183,7 @@ Example:
 %                       @$fields
 %                 ) {
 %
-%   &{ $opt{'field_callback'} }( $f )
+%   my $trash = &{ $opt{'field_callback'} }( $cgi, $object, $f )
 %     if $opt{'field_callback'};
 %
 %   my $field = $f->{'field'};
@@ -196,7 +199,7 @@ Example:
 %   $layer_values = &{ $f->{'layer_values_callback'} }( $cgi, $object )
 %     if $f->{'layer_values_callback'}
 %     && ! $f->{'m2name_table'}
-%     && ! $f->{'m2m_table'};
+%     && ! $f->{'m2m_method'};
 %
 %   warn "layer values: ". Dumper($layer_values)
 %     if $opt{'debug'};
@@ -227,10 +230,27 @@ Example:
 %     'disabled'      => $f->{'disabled'},
 %   );
 %
-%   #select-table
+%   #selectlayers, others?
+%   $include_common{$_} = $f->{$_}
+%     foreach grep exists($f->{$_}),
+%                  qw( js_only html_only select_only layers_only cell_style);
+%
+%   #select-*
+%   $include_common{$_} = $f->{$_}
+%     foreach grep exists($f->{$_}), qw( empty_label );
+%
+%   #select-table, checkboxes-table
 %   $include_common{$_} = $f->{$_}
 %     foreach grep exists($f->{$_}), qw( table name_col );
 %
+%   #checkboxes-table
+%   $include_common{$_} = $f->{$_}
+%     foreach grep exists($f->{$_}), qw( target_table link_table );
+%
+%   #*-table
+%   $include_common{$_} = $f->{$_}
+%     foreach grep exists($f->{$_}), qw( hashref agent_virt agent_null_right );
+%
 %   if ( $type eq 'tablebreak-tr-title' ) {
 %     $include_common{'table_id'} = 'TableNumber'. $tablenum++
 %   }
@@ -277,17 +297,15 @@ Example:
 %
 %   my $fieldnum = '';
 %   my $curr_value = '';
-%   if ( $f->{'m2name_table'} || $f->{'m2m_table'} ) { #XXX test this for all
+%   if ( $f->{'m2name_table'} || $f->{'m2m_method'} ) { #XXX test this for all
 %                                                      #types of fields
 %     my($table, $col);
 %     if ( $f->{'m2name_table'} ) {
 %       $table = $f->{'m2name_table'};
 %       $col   = $f->{'m2name_namecol'};
-%     } elsif ( $f->{'m2m_table'} ) {
-%       $table = $f->{'m2m_table'}; #XXX method name
-%       $col   = $f->{'m2m_dstcol'}; #XXX or get it from schema, defualt to
-%                                    #same name as primary key of
-%                                    #m2m_target_table
+%     } elsif ( $f->{'m2m_method'} ) {
+%       $table = $f->{'m2m_method'};
+%       $col   = $f->{'m2m_dstcol'};
 %     }
 %     $fieldnum = 0;
 %     $layer_prefix_on = 1;
@@ -352,16 +370,16 @@ Example:
 %     'object'     => $object,
 %     'cgi'        => $cgi,
 %     'onchange'   => $onchange,
-%     'cell_style'   => ( $fieldnum ? 'border-top:1px solid black' : '' ),
+%     ( $fieldnum ? ('cell_style' => 'border-top:1px solid black') : () ),
 %   );
 
     <% include( @include ) %>
 
-%   if ( $f->{'m2name_table'} || $f->{'m2m_table'} ) {
+%   if ( $f->{'m2name_table'} || $f->{'m2m_method'} ) {
 
       <SCRIPT TYPE="text/javascript">
 
-        var <%$field%>_rownum = <% $g_row %>;
+        var <%$field%>_rownum = <% $g_row - 1 %>;
         var <%$field%>_fieldnum = <% $fieldnum %>;
 
         function spawn_<%$field%>(what) {
@@ -551,7 +569,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
@@ -610,9 +628,9 @@ my @menubar = ();
 if ( $opt{'menubar'} ) {
   @menubar = @{ $opt{'menubar'} };
 } else {
+  my $items = $opt{'name'} ? $opt{'name'}.'s' : PL($opt{'name_singular'});
   @menubar = (
-    #eventually use Lingua::bs to pluralize
-    "View all $opt{'name'}s" => $viewall_url,
+    "View all $items" => $viewall_url,
   );
 }