]> git.decadent.org.uk Git - maypole.git/blob - templates/factory/view
Big fat d'oh.
[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
14 [% FOR item = objects %]
15 [% SET string = item.stringify_column %]
16 <h2> [% item.$string %]</h2>
17
18 [% INCLUDE navbar %]
19
20 <TABLE class="view">
21     <TR><TD class="field">[% classmetadata.colnames.$string %]</TD><TD> [% item.$string %] </TD></TR>
22 [% 
23     FOR col = classmetadata.columns.list;
24     NEXT IF col == "id" OR col == string;
25     NEXT UNLESS item.$col;
26 %]
27
28 [%# 
29
30 =for doc
31
32 It gets the displayable form of a column's name from the hash returned
33 from the C<column_names> method:
34
35 #%]
36
37     <TR>
38     <TD class="field"> [% classmetadata.colnames.$col; %] </TD>
39     <TD> [%
40
41 #=cut
42
43     IF col == "url";  # Possibly too much magic.
44                 "<A HREF="; item.url; "> "; item.url; "</A>";
45     ELSE;
46
47 #=for doc
48
49 #One interesting macro used in this template is C<maybe_link_view>:
50
51         maybe_link_view(item.$col); 
52 %] 
53
54 [%#
55
56 This tests whether or not the returned value is an object, and if so,
57 creates a link to a page viewing that object; if not, it just displays
58 the text as normal. The object is linked using its stringified name;
59 by default this calls the C<name> method, or returns the object's ID
60 if there is no C<name> method or other stringification method defined.
61
62 =cut
63
64 #%] 
65
66 [% END; %]
67  </TD>
68 </TR>
69 [% END; %]
70 </TABLE>
71
72 [%#
73
74 =for doc
75
76 The C<view> template also displays a list of other objects related to the first
77 one via C<has_many> style relationships; this is done by calling the
78 C<related_accessors> method - see L<Model/related_accessors> - to return
79 a list of has-many accessors. Next it calls each of those accessors, and
80 displays the results in a table.
81
82 #%]
83 [%
84     view_related(item);
85
86 #=cut
87
88     button(item, "edit");
89     button(item, "delete");
90 %]
91 [% END; %]
92