% # '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
% # },
% # ]
% #
% # # ...
% # "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 )