X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=templates%2Ffactory%2Fview;h=29b817e4378d4eba48313173ae8615d8ade874e7;hb=23a99cfd4af079b968c4a32a8d7c02cc5a525d3d;hp=64c760b11cc0f9672957bf8669828e143e5b2276;hpb=e419be5cf346381154e2256548e94968db293d02;p=maypole.git diff --git a/templates/factory/view b/templates/factory/view index 64c760b..29b817e 100644 --- a/templates/factory/view +++ b/templates/factory/view @@ -1,33 +1,90 @@ +[%# + +=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 %] -

[% item.name %]

+[% SET string = item.stringify_column %] +

[% item.$string %]

[% INCLUDE navbar %] - + [% FOR col = classmetadata.columns.list; - NEXT IF col == "id" OR col == "name"; + 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: + +#%] + + + +#=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; %] + [% END; %]
Name [% item.name %]
[% classmetadata.colnames.$string %] [% item.$string %]
[% classmetadata.colnames.$col; %] [% +#=cut + IF col == "url"; # Possibly too much magic. " "; item.url; ""; ELSE; - maybe_link_view(item.$col); 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"); %]