5 This *RECURSIVELY* displays inputs for a hash of html elements
8 classmetadata-- the hash of bunch of data:
9 cgi -- inputs keyed on column names
10 table -- table inputs are for
11 columns -- list in order want displayed inputs
12 colnames -- hash of what to label inputs
14 errors -- hash of errors keyed on columns
17 TODO -- make it recognize a general submit button for redisplaying
28 # get hash of related classes keyed on accessor for Foreign Inputs
29 USE this = Class(classmetadata.name);
30 tbl = classmetadata.table;
32 FOR c IN request.config.$tbl.required_cols;
37 [% FOR col = classmetadata.columns;
38 NEXT IF !classmetadata.cgi.$col;
39 NEXT IF col == "id" OR col == classmetadata.table _ "_id";
41 # Display foreign inputs last
42 IF (mykeys = classmetadata.cgi.$col.keys);
44 names.push(classmetadata.colnames.$col);
49 [% # Base case starts here
51 SET elem = classmetadata.cgi.$col; #.clone; # not sure why clone
52 IF elem.type == 'hidden';
56 param_col = col_prefix _ col;
57 IF elem.tag == "textarea";
58 elem = elem.push_content(cgi_params.$param_col);
59 ELSIF elem.tag == "select";
60 oldval = set_selected(elem, cgi_params.$col);
62 oldval = elem.attr("value", cgi_params.$param_col);
69 SET indicator = '*' IF (required.$col);
72 [% indicator _ classmetadata.colnames.$col ||
73 col | replace('_',' ') | ucfirst %]
79 <span class="error">[% errors.$col | html %]</span>
83 <!-- Display the differnt component inputs -->
85 [% USE this = Class(classmetadata.name);
87 fclass = this.related_class(request, col);
88 fclass_meta = this.get_classmetadata(fclass);
89 fclass_meta.cgi = classmetadata.cgi.$col;
90 INCLUDE display_inputs
91 col_prefix = col _ "__AF__" _ col_prefix
94 classmetadata = fclass_meta; # localize