X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;ds=inline;f=templates%2Ffactory%2Fmacros;h=8743afc4d1fe53b7e7e9d83abda195288a365395;hb=8fbe91d3208f182f78e2cd316f2c0c7a5c76edb8;hp=3d45a6fa65c36bae4d5a48db84e17722b41b38d2;hpb=d77cc42a2fd0ae059128043822ef127199e55ed2;p=maypole.git diff --git a/templates/factory/macros b/templates/factory/macros index 3d45a6f..8743afc 100644 --- a/templates/factory/macros +++ b/templates/factory/macros @@ -7,13 +7,15 @@ system. =head2 link -This creates an to a command in the Apache::MVC system by catenating the base URL, table, command, and any arguments. #%] [% MACRO link(table, command, additional, label) BLOCK; - ''; + SET lnk = base _ "/" _ table _ "/" _ command _ "/" _ additional; + lnk = lnk | uri | html; + ''; label; ""; END; @@ -32,8 +34,8 @@ 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 - link(object.table, "view", object.id, object); + IF object.isa('Maypole::Model::Base'); + link(object.table, "view", object.id.join('/'), object); ELSE; object; END; @@ -52,20 +54,23 @@ for some. #%] [% MACRO display_line(item) BLOCK; - FOR col = classmetadata.columns; + FOR col = classmetadata.list_columns; NEXT IF col == "id"; "
[% 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 |
+