MACROS
These are some default macros which are used by various templates in the system.
link
This creates an <A HREF="... 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; '<A HREF="' _ base _ table _ "/" _ command _ "/" _ additional _ '">'; label; "</A>"; END; %]
[%#
maybe_link_view
maybe_link_view
takes something returned from the database - either some ordinary data, or an object in a related class expanded by a has-a relationship. If it is an object, it constructs a link to the view 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); ELSE; object; END; END; %]
[%#
display_line
display_line
is used in the list template to display a row from the database, by iterating over the columns and displaying the data for each column. It misses out the id
column by default, and magically URLifies columns called url
. This may be considered too much magic for some.
#%] [% MACRO display_line(item) BLOCK; FOR col = classmetadata.columns; NEXT IF col == "id"; "<td>"; IF col == "url"; "<A HREF="; item.url; "> "; item.url; "</A>"; ELSIF col == item.stringify_column; maybe_link_view(item); ELSE; maybe_link_view(item.$col); END; "</td>"; END; button(item, "edit"); button(item, "delete"); END %] [%#
button
This is a generic button, which performs an action on an object.
view_related
This takes an object, and looks up the related_accessors
; this should give a list of accessors that can be called to get a list of related objects. It then displays a title for that accessor, (i.e. "Beers" for a brewery) calls the accesor, and displays a list of the results.