[%# =for doc The C template takes some objects (usually just one) from C and displays the object's properties in a table. =cut #%] [% PROCESS macros %] [% INCLUDE header %] [% FOR item = objects %] [% SET string = item.stringify_column %]

[% item.$string %]

[% INCLUDE navbar %] [% FOR col = classmetadata.columns.list; NEXT IF col == "id" OR col == string; NEXT UNLESS item.$col; %] [%# =for doc It gets the displayable form of a column's name from the hash returned from the C method: #%] [% END; %]
[% classmetadata.colnames.$string %] [% item.$string %]
[% classmetadata.colnames.$col; %] [% #=cut IF col == "url"; # Possibly too much magic. " "; item.url; ""; ELSE; #=for doc #One interesting macro used in this template is C: maybe_link_view(item.$col); %] [%# This tests whether or not the returned value is an object, and if so, creates a link to a page viewing that object; if not, it just displays the text as normal. The object is linked using its stringified name; by default this calls the C method, or returns the object's ID if there is no C method or other stringification method defined. =cut #%] [% END; %]
[%# =for doc The C template also displays a list of other objects related to the first one via C style relationships; this is done by calling the C method - see L - to return a list of has-many accessors. Next it calls each of those accessors, and displays the results in a table. #%] [% view_related(item); #=cut button(item, "edit"); button(item, "delete"); %] [% END; %]