X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;ds=sidebyside;f=templates%2Ffactory%2Fview;h=29b817e4378d4eba48313173ae8615d8ade874e7;hb=763567374b3430c726dc2fdfb38362fb960ce1eb;hp=48dec99074ebdb887c4cdb4056cbba6898805e2c;hpb=0ad4ba7aa71b7dda17f0b07ccc9d8f0ad3424b82;p=maypole.git
diff --git a/templates/factory/view b/templates/factory/view
index 48dec99..29b817e 100644
--- a/templates/factory/view
+++ b/templates/factory/view
@@ -1,26 +1,92 @@
-[% MACRO button(obj, action) BLOCK; %]
+[%#
-
-
- |
-[% END %]
+=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 %]
-
-[% FOR col = classmetadata.columns.list;
- NEXT IF col == "id";
- "";
- classmetadata.colnames.$col; ":";
- " "; item.$col;"
";
- END;
+[% SET string = item.stringify_column %]
+ [% item.$string %]
+
+[% INCLUDE navbar %]
+
+
+ [% classmetadata.colnames.$string %] | [% item.$string %] |
+[%
+ 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:
+
+#%]
+
+
+ [% 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; %]
+ |
+
+[% 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;
%]
+[% END; %]