]> git.decadent.org.uk Git - maypole.git/blob - templates/factory/view
cf7822e5498298cdb27516bb58b57218340331b7
[maypole.git] / templates / factory / view
1 [%#
2
3 =for doc
4
5 The C<view> template takes some objects (usually just one) from
6 C<objects> and displays the object's properties in a table. 
7
8 =cut
9
10 #%]
11 [% PROCESS macros %]
12 [% INCLUDE header %]
13 [% FOR item = objects %]
14     [% SET string = item.stringify_column %]
15     <h2> [% item.$string %]</h2>
16     [% INCLUDE navbar %]
17     <table class="view">
18         <tr>
19             <td class="field">[% classmetadata.colnames.$string %]</td>
20             <td>[% item.$string %]</td>
21         </tr>
22         [% FOR col = classmetadata.columns.list;
23             NEXT IF col == "id" OR col == string;
24             NEXT UNLESS item.$col;
25         %]
26 [%# 
27
28 =for doc
29
30 It gets the displayable form of a column's name from the hash returned
31 from the C<column_names> method:
32
33 #%]
34             <tr>
35                 <td class="field">[% classmetadata.colnames.$col; %]</td>
36                 <td>
37                     [% IF col == "url" && item.url;  # Possibly too much magic.
38                         '<a href="'; item.url; '"> '; item.url; '</a>';
39                     ELSE;
40                         maybe_link_view(item.$col); 
41                     END; %]
42 [%#
43
44 This tests whether or not the returned value is an object, and if so,
45 creates a link to a page viewing that object; if not, it just displays
46 the text as normal. The object is linked using its stringified name;
47 by default this calls the C<name> method, or returns the object's ID
48 if there is no C<name> method or other stringification method defined.
49
50 =cut
51
52 #%] 
53                 </td>
54             </tr>
55         [% END; %]
56     </table>
57 [%#
58
59 =for doc
60
61 The C<view> template also displays a list of other objects related to the first
62 one via C<has_many> style relationships; this is done by calling the
63 C<related_accessors> method - see L<Model/related_accessors> - to return
64 a list of has-many accessors. Next it calls each of those accessors, and
65 displays the results in a table.
66
67 #%]
68 [% view_related(item); %]
69     
70 [%
71     button(item, "edit");
72     button(item, "delete");
73 %]
74 [% END; %]
75 [% INCLUDE footer %]