beginning of prospect/CRM/contact work
[freeside.git] / httemplate / edit / elements / edit.html
index 4a6079a..4935ddc 100644 (file)
@@ -289,7 +289,8 @@ Example:
 %     foreach grep exists($f->{$_}), qw( hashref agent_virt agent_null_right );
 %
 %   if ( $type eq 'tablebreak-tr-title' ) {
-%     $include_common{'table_id'} = 'TableNumber'. $tablenum++
+%     $include_common{'table_id'} = 'TableNumber'. $tablenum++;
+%     $include_common{'colspan'} = $f->{colspan} if $f->{colspan};
 %   }
 %
 %   my $layer_prefix_on = '';
@@ -317,6 +318,27 @@ Example:
 %     @include;
 %   };
 %
+%   my $column_sub = sub {
+%     my %opt = @_;
+%
+%     my $column   = delete($opt{field});
+%     my $fieldnum = delete($opt{fieldnum});
+%     my $include  = delete($opt{type}) || 'text';
+%     $include = "input-$include" if $include =~ /^(text|money|percentage)$/;
+%
+%     ( "/elements/$include.html",
+%         'field'        => $field.'__'.$column.$fieldnum,
+%         'id'           => $field.'__'.$column.$fieldnum,
+%         'layer_prefix' => $field.'__'.$column.$fieldnum.".",
+%         ( $fieldnum
+%             ? ('cell_style' => 'border-top:1px solid black')
+%             : ()
+%         ),
+%         'cgi' => $cgi,
+%         %opt,
+%     );
+%   };
+%
 %   unless ( $type =~ /^column/ ) {
 %     $g_row = 1 if $type eq 'tablebreak-tr-title';
 %     $g_row++;
@@ -382,8 +404,35 @@ Example:
 %         'layer_values' => $layer_values,
 %         'cell_style'   => ( $fieldnum ? 'border-top:1px solid black' : '' ),
 %       );
+%       $existing[0] =~ s(^/elements/tr-)(/elements/);
+%       my @label = @existing;
+%       $label[0] = '/elements/tr-td-label.html';
 
+        <% include( @label ) %>
+        <TD COLSPAN="<% $f->{'colspan'} || 1 %>">
         <% include( @existing ) %>
+        </TD>
+
+%       if ( $f->{'m2_fields'} ) {
+%         foreach my $c ( @{ $f->{'m2_fields'} } ) {
+%           my $column = $c->{field};
+%           my @column = &{ $column_sub }( %$c,
+%                                          'fieldnum' => $fieldnum,
+%                                          'curr_value' => $name_obj->$column()
+%                                        );
+
+            <TD id='<% $field %>__<% $column %>_label<% $fieldnum %>'
+                style='text-align:right;vertical-align:top;
+                       border-top:1px solid black;padding-top:5px;'>
+              <% $c->{'label'} || '' %>
+            </TD>
+            <TD style='border-top:1px solid black;padding-top:3px;'>
+              <% include( @column ) %>
+            </TD>
+%         }
+%       }
+
+        </TR>
 
 %       $fieldnum++;
 %       $g_row++;
@@ -409,9 +458,40 @@ Example:
 %     'onchange'   => $onchange,
 %     ( $fieldnum ? ('cell_style' => 'border-top:1px solid black') : () ),
 %   );
+%
+%   if ( $f->{'m2name_table'} || $f->{'m2m_method'} ) {
+%     $include[0] =~ s(^/elements/tr-)(/elements/);
+%     my @label = @include;
+%     $label[0] = '/elements/tr-td-label.html';
+
+      <% include( @label ) %>
+      <TD COLSPAN="<% $f->{'colspan'} || 1 %>">
+      <% include( @include ) %>
+      </TD>
+
+%     if ( $f->{'m2_fields'} ) {
+%       foreach my $c ( @{ $f->{'m2_fields'} } ) {
+%         my $column = $c->{field};
+%         my @column = &{ $column_sub }( %$c, 'fieldnum' => $fieldnum );
+
+          <TD id='<% $field %>__<% $column %>_label<% $fieldnum %>'
+              style='text-align:right;vertical-align:top;
+                     border-top:1px solid black;padding-top:5px;'>
+            <% $c->{'label'} || '' %>
+          </TD>
+          <TD style='border-top:1px solid black;padding-top:3px;'>
+            <% include( @column ) %>
+          </TD>
+%       }
+%     }
 
-    <% include( @include ) %>
+      </TR>
 
+%   } else {
+
+      <% include( @include ) %>
+
+%   }
 %   if ( $f->{'m2name_table'} || $f->{'m2m_method'} ) {
 
       <SCRIPT TYPE="text/javascript">
@@ -423,7 +503,7 @@ Example:
 
           // only spawn if we're the last element... return if not
 
-          var field_regex = /(\d+)$/;
+          var field_regex = /(\d+)(_[a-z]+)?$/;
           var match = field_regex.exec(what.name);
           if ( !match ) {
             alert(what.name + " didn't match?!");
@@ -494,11 +574,45 @@ Example:
 
           widget_cell.style.borderTop = "1px solid black";
           widget_cell.style.paddingTop = "3px";
+          widget_cell.colSpan = "<% $f->{'colspan'} || 1 %>"
 
           widget_cell.innerHTML = newrow;
 
           row.appendChild(widget_cell);
 
+%         if ( $f->{'m2_fields'} ) {
+%           foreach my $c ( @{ $f->{'m2_fields'} } ) {
+%             my $column = $c->{field};
+%             my @column = &{ $column_sub }(%$c, 'fieldnum' => 'MAGIC_NUMBER');
+
+              var column =  <% include(@column, html_only=>1) |js_string %>;
+              column  = column.replace(  magic_regex, <%$field%>_fieldnum );
+
+              var column_label = document.createElement('TD');
+              column_label.id =
+                '<% $field %>__<% $column %>_label' + <%$field%>_fieldnum;
+
+              column_label.style.textAlign = "right";
+              column_label.style.verticalAlign = "top";
+              column_label.style.borderTop = "1px solid black";
+              column_label.style.paddingTop = "5px";
+
+              column_label.innerHTML = '<% $c->{'label'} || '' %>';
+
+              row.appendChild(column_label);
+          
+              var column_widget = document.createElement('TD');
+
+              column_widget.style.borderTop = "1px solid black";
+              column_widget.style.paddingTop = "3px";
+
+              column_widget.innerHTML = column;
+
+              row.appendChild(column_widget);
+
+%           }
+%         }
+
 %         if ( $f->{'m2_new_js'} ) {
             // take out items selected in previous dropdowns
             var new_element = document.getElementById("<%$field%>" + <%$field%>_fieldnum );
@@ -564,7 +678,7 @@ Example:
 
 <BR>
 
-<INPUT TYPE="submit" ID="submit" VALUE="<% ( !$clone && $object->$pkey() ) ? "Apply changes" : "Add $opt{'name'}" %>">
+<INPUT TYPE="submit" ID="submit" VALUE="<% ( !$clone && $object->$pkey() ) ? "Apply changes" : "Add ". ( $opt{'name'} || $opt{'name_singular'} ) %>">
 
 </FORM>
 
@@ -632,7 +746,8 @@ if ( $cgi->param('error') ) {
   $qsearch{'extra_sql'} = ' AND '. $opt{'agent_clone_extra_sql'}
     if $opt{'agent_clone_extra_sql'};
 
-  $object = qsearchs({ %qsearch, 'hashref' => { $pkey => $clone } });
+  $object = qsearchs({ %qsearch, 'hashref' => { $pkey => $clone } })
+    or die "$pkey $clone not found in $table";
 
   &{$opt{'clone_callback'}}( $cgi, $object, $fields, \%opt )
     if $opt{'clone_callback'};
@@ -684,7 +799,7 @@ if ( $cgi->param('error') ) {
 
 $opt{action} ||= $object->$pkey() ? 'Edit' : 'Add';
 
-my $title = $opt{action}. ' '. $opt{name};
+my $title = $opt{action}. ' '. ( $opt{name} || $opt{'name_singular'} );
 
 my $viewall_url = $p . ( $opt{'viewall_dir'} || 'search' ) . "/$table.html";
 $viewall_url = $opt{'viewall_url'} if $opt{'viewall_url'};