Simon Cozens > Maypole > templates/factory/macros

Download:
Maypole-1.7.tar.gz

Annotate this POD

CPAN RT

New  7
Open  5
View/Report Bugs
Source   Latest Release: Maypole-2.10

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.

syntax highlighting: