<%args> <%doc> =for doc The C template takes some objects (usually just one) from C and displays the object's properties in a table. =cut <& header, %ARGS &> %foreach my $item (@$objects) { % my $string = $item->stringify_column;

<% $item->get($string) %>

<& navbar, %ARGS &> %foreach my $col (@{$classmetadata->{columns}}) { % next if $col eq "id" or $col eq $string; % next unless $item->$col; <%doc> =for doc It gets the displayable form of a column's name from the hash returned from the C method: %}
<% $classmetadata->{colnames}->{$string} %> <% $item->{$string} %>
<% $classmetadata->{colnames}->{$col} %> %#=cut % if ($col eq "url" && $item->url) { # Possibly too much magic. <%$item->url%> % } else { %#=for doc %#One interesting macro used in this template is C: <& macros/maybe_link_view, %ARGS, item=>$item->$col &> <%doc> 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 %}
<%doc> =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. <& macros/view_related, %ARGS, object=>$item &> %#=cut <& macros/button, %ARGS, item=>$item, action=> "edit" &> <& macros/button, %ARGS, item=>$item, action=> "delete" &> %} <& footer, %ARGS &>