--- /dev/null
+[%#
+
+=head1 display_search_inputs
+
+This displays inputs for search page. Override in individual class template
+directories as needed.
+
+Vars it needs:
+classmetadata-- the hash of inputs keyed on column names
+errors -- hash of errors keyed on columns
+=cut
+
+#%]
+
+[% IF errors.FATAL; "FATAL ERROR: "; errors.FATAL; "<br>"; END %]
+
+[% USE this = Class(classmetadata.name);
+ SET srch_fields = classmetadata.search_columns ||
+ classmetadata.columns;
+ SET cgi = classmetadata.cgi;
+ SET delimiter = this.foreign_input_delimiter;
+ FOR field IN srch_fields;
+ NEXT IF !cgi.$field;
+ # Recursivly call this tmeplate if we have foreign field
+ # (hash of foreign inputs should come with it)
+ IF ( cgi.$field.keys );
+ fclass = this.related_class(request, field);
+ fclass_meta = this.get_classmetadata(fclass);
+ fclass_meta.cgi = cgi.$field;
+ tbl = fclass_meta.table;
+ INCLUDE display_search_inputs
+ col_prefix = col _ delimiter _ col_prefix
+ classmetadata = fclass_meta;
+ NEXT;
+ END;
+
+ NEXT IF field == 'id' OR field == classmetadata.table _ 'id';
+ SET element = cgi.$field;
+%]
+
+<label>
+ <span class="field">
+ [%
+ classmetadata.colnames.$field || field | ucfirst | replace('_',' '); %]
+ </span>
+ [% IF element.tag == "select";
+ # set the previous value
+ IF cgi_params.exists(field);
+ set_selected(element, cgi_params.$field);
+ END;
+
+ END;
+ IF element.tag == "input"; # wipe out any default value
+ old_val = element.attr('value', '');
+ END;
+
+
+ element.as_XML;
+ %]
+</label>
+[% END; %]
+
+