X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=templates%2Ffactory%2Fmacros;h=8743afc4d1fe53b7e7e9d83abda195288a365395;hb=87b344ae821415d62efc0c100836155a9e518c71;hp=e7396d3365d3732d568d494d6e3d5a469cba7042;hpb=5b439f6cd78f1565e380151e102f05941cd02fd6;p=maypole.git
diff --git a/templates/factory/macros b/templates/factory/macros
index e7396d3..8743afc 100644
--- a/templates/factory/macros
+++ b/templates/factory/macros
@@ -7,7 +7,7 @@ system.
=head2 link
-This creates an to a command in the Apache::MVC system by
catenating the base URL, table, command, and any arguments.
#%]
@@ -34,7 +34,7 @@ command for that object. Otherwise, it just displays the data.
[%
MACRO maybe_link_view(object) BLOCK;
- IF object.table; # It's an object, i.e. a has-a
+ IF object.isa('Maypole::Model::Base');
link(object.table, "view", object.id.join('/'), object);
ELSE;
object;
@@ -62,7 +62,8 @@ for some.
ELSIF col == item.stringify_column;
maybe_link_view(item);
ELSE;
- maybe_link_view(item.$col);
+ accessor = item.accessor_name(col);
+ maybe_link_view(item.$accessor);
END;
"";
END;
@@ -81,9 +82,11 @@ This is a generic button, which performs an action on an object.
#%]
[% MACRO button(obj, action) BLOCK; %]
+[% IF obj.is_public(action) %]
[% END %]
+[% END %]
[%#
=head2 view_related
@@ -115,3 +118,57 @@ MACRO test_xxxx(myblock) BLOCK;
END;
END;
%]
+[%#
+
+=head2 view_item
+
+This takes an object and and displays its properties in a table.
+
+=cut
+
+#%]
+[% MACRO view_item(item) BLOCK; %]
+ [% SET string = item.stringify_column %]
+
[% classmetadata.colnames.$string %] | +[% item.$string %] | +
[% classmetadata.colnames.$col; %] | +
+ [% IF col == "url" && item.url; # Possibly too much magic.
+ ' '; item.url; '';
+ ELSE;
+ maybe_link_view(item.$col);
+ END; %]
+[%#
+
+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 |
+