+++ /dev/null
-[%#
-
-=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;
-
-%]
-
-[%
-SET heading_shown = 0;
-FOR col = classmetadata.columns;
- NEXT IF !classmetadata.cgi.$col;
- NEXT IF col == "id" OR col == classmetadata.table _ "_id";
- # Display foreign inputs last
- IF (mykeys = classmetadata.cgi.$col.keys);
- foreign.push(col);
- names.push(classmetadata.colnames.$col);
- NEXT;
- END;
- IF ! heading_shown;
- heading = classmetadata.moniker | ucfirst;
- "<h4> $heading </h4>";
- SET heading_shown = 1;
- 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>
- [% 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;
- # has_many mapping throws a stick in our spokes because related_class returns the mapped
- # class. Sometimes we just want the has_many class.
-
- # In case of Pub Handpumps maps to Beer and we want to add Handpump to Pub, we dont
- # want the mapped data .
- # In case of "Create New Handpump" -- we want the mapped data probably so we get
- # Beer inputs and Pub select box.
-
- fclass_rel_meta = this.related_meta(request, col);
- fclass = fclass_rel_meta.foreign_class; # ignor args.mapping
- fclass_meta = this.get_classmetadata(fclass);
- fclass_meta.cgi = classmetadata.cgi.$col;
- # USE Dumper; Dumper.dump(fclass_meta);
- INCLUDE display_inputs
- col_prefix = col _ "__AF__" _ col_prefix
- errors = errors.$col
- heading = names.shift
- classmetadata = fclass_meta; # localize
- END;
-%]
-