-[%#
-
-=head1 display_inputs
-
-This *RECURSIVELY* displays inputs for a hash of html elements
-
-Vars it needs:
- classmetadata-- the hash of bunch of data:
- cgi -- inputs keyed on column names
- table -- table inputs are for
- columns -- list in order want displayed inputs
- colnames -- hash of what to label inputs
-
-errors -- hash of errors keyed on columns
-
-
-TODO -- make it recognize a general submit button for redisplaying
-values on errors
-
-=cut
-
-#
-%]
-
-[% # some variables
- foreign = [];
- names = [];
- # get hash of related classes keyed on accessor for Foreign Inputs
- USE this = Class(classmetadata.name);
- tbl = classmetadata.table;
- required = { };
- FOR c IN request.config.$tbl.required_cols;
- required.$c = 1;
- END;
-%]
-
-[% FOR col = classmetadata.columns;
- NEXT IF !classmetadata.cgi.$col;
- NEXT IF col == "id";
-
- # Display foreign inputs last
- IF (mykeys = classmetadata.cgi.$col.keys);
- foreign.push(col);
- names.push(classmetadata.colnames.$col);
- NEXT;
- END;
-%]
-
-[% # Base case starts here
-
- SET elem = classmetadata.cgi.$col; #.clone; # not sure why clone
- IF elem.type == 'hidden';
- elem.as_XML;
- NEXT;
- ELSIF cgi_params;
- param_col = col_prefix _ col;
- IF elem.tag == "textarea";
- elem = elem.push_content(cgi_params.$param_col);
- ELSIF elem.tag == "select";
- oldval = set_selected(elem, cgi_params.$col);
- ELSE;
- oldval = elem.attr("value", cgi_params.$param_col);
- END;
- END;
-%]
-
- <label>
- [% req_indicator = '';
- SET indicator = '*' IF (required.$col);
- %]
- <span class="field">
- [% indicator _ classmetadata.colnames.$col ||
- col | replace('_',' ') | ucfirst %]
- </span>
- [% elem.as_XML; %]
- </label>
-
- [% IF errors.$col %]
- <span class="error">[% errors.$col | html %]</span>
- [% END %]
-[% END; %]
-
-<!-- Display the differnt component inputs -->
-
-[% USE this = Class(classmetadata.name);
- FOR col IN foreign;
- fclass = this.related_class(request, col);
- fclass_meta = this.get_classmetadata(fclass);
- fclass_meta.cgi = classmetadata.cgi.$col;
- INCLUDE display_inputs
- col_prefix = col _ "__AF__" _ col_prefix
- errors = errors.$col
- heading = names.shift
- classmetadata = fclass_meta; # localize
- END;
-%]
-