service refactor!
[freeside.git] / httemplate / edit / elements / edit.html
index ac00fc5..17c5ad3 100644 (file)
 %  # 'fields' => [
 %  #               'columname',
 %  #               { 'field' => 'another_columname',
-%  #                 'type'  => 'text', #text, fixed, hidden, checkbox
-%  #                                    #eventually more for <SELECT>, etc.
-%  #                 'value' => 'Y', #only for checkbox
+%  #                 'type'  => 'text', #text
+%  #                                    #checkbox
+%  #                                    #select
+%  #                                    #hidden - hidden value from object
+%  #                                    #fixed - display fixed value from here
+%  #                                    #fixedhidden - hidden value from here
+%  #                 'value' => 'Y', #for checkbox, fixed, fixedhidden
 %  #               },
 %  #             ]
 %  #
@@ -49,6 +53,9 @@
 %  #                        # ...
 %  #                        "html_string";
 %  #                      },
+%  #
+%  # # overrides default popurl(1)."process/$table.html"
+%  # 'post_url' => popurl(1).'process/something', 
 %
 %  my(%opt) = @_;
 %
 %    &{$opt{'error_callback'}}($cgi, $object)
 %      if $opt{'error_callback'};
 %
-%  } elsif ( $cgi->keywords ) { #editing
+%  } elsif ( $cgi->keywords || $cgi->param($pkey) ) { #editing
 %
-%    my( $query ) = $cgi->keywords;
-%    $query =~ /^(\d+)$/;
+%    my $value;
+%    if ( $cgi->param($pkey) ) {
+%      $value = $cgi->param($pkey)
+%    } else { 
+%      my( $query ) = $cgi->keywords;
+%      $value = $query;
+%    }
+%    $value =~ /^(\d+)$/ or die "unparsable $pkey";
 %    $object = qsearchs( $table, { $pkey => $1 } );
 %    warn "$table $pkey => $1"
 %      if $opt{'debug'};
 %
 %  my $title = "$action $opt{'name'}";
 %
+%  my $viewall_url = $p . ( $opt{'viewall_dir'} || 'search' ) . "/$table.html";
+%  $viewall_url = $opt{'viewall_url'} if $opt{'viewall_url'};  
+%
 %  my @menubar = ();
 %  if ( $opt{'menubar'} ) {
 %    @menubar = @{ $opt{'menubar'} };
 %    @menubar = (
 %      'Main menu' => $p, #eventually get rid of this when the ACL/UI update is done
 %      #eventually use Lingua::bs to pluralize
-%      "View all $opt{'name'}s" => $p. ( $opt{'viewall_dir'} || 'search' ).
-%                                  "/$table.html",
+%      "View all $opt{'name'}s" => $viewall_url,
 %    );
 %  }
 %
   <BR><BR>
 % } 
 
+% my $url = $opt{'post_url'} || popurl(1)."process/$table.html";
 
-<FORM ACTION="<% popurl(1) %>process/<% $table %>.html" METHOD=POST>
+<FORM ACTION="<% $url %>" METHOD=POST>
+<INPUT TYPE="hidden" NAME="svcdb" VALUE="<% $table %>">
 <INPUT TYPE="hidden" NAME="<% $pkey %>" VALUE="<% $object->$pkey() %>">
 <% ( $opt{labels} && exists $opt{labels}->{$pkey} )
       ? $opt{labels}->{$pkey}
               : $field
       %>
     </TD>
-% if ( $type eq 'fixed' ) { 
 
+% if ( $type eq 'fixed' ) { 
 
       <TD BGCOLOR="#dddddd"><% $f->{'value'} %></TD>
       <INPUT TYPE="hidden" NAME="<% $field %>" VALUE="<% $f->{'value'} %>">
-% } elsif ( $type eq 'checkbox' ) { 
 
+% } elsif ( $type eq 'fixedhidden' ) {
+
+      <INPUT TYPE="hidden" NAME="<% $field %>" VALUE="<% $f->{'value'} %>">
+
+% } elsif ( $type eq 'checkbox' ) { 
 
       <TD>
         <INPUT TYPE="checkbox" NAME="<% $field %>" VALUE="<% $f->{'value'} %>" <% $object->$field() eq $f->{'value'} ? ' CHECKED' : '' %>>
       </TD>
-% } else { 
 
+% } elsif ( $type eq 'select' ) { 
+
+      <TD>
+        <SELECT NAME="<% $field %>" 
+%     my $aref = $f->{'value'}{'values'};
+%     my $vkey = $f->{'value'}{'vcolumn'};
+%     my $ckey = $f->{'value'}{'ccolumn'};
+%     foreach my $v (@$aref) {
+         <OPTION <% ($object->$field() eq $v->$vkey) ? 'SELECTED' : '' %>
+           VALUE="<% $v->$vkey %>"><% $v->$ckey %></OPTION>
+%     }
+       </SELECT>
+      </TD>
+
+% } else { 
 
       <TD>
         <INPUT TYPE="<% $type %>" NAME="<% $field %>" VALUE="<% $object->$field() %>">
       <TD>
-% } 
 
+% } 
 
   </TR>
-% } 
 
+% } 
 
 <% ref( $opt{'html_table_bottom'} )
       ? &{ $opt{'html_table_bottom'} }( $object )