X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=templates%2Ffactory%2Fmacros;h=59d6c925358a9cfa57a27f981a21ed927ab4f339;hb=12d8a77a713d5ed4f08414e5f34e96d45f60e2d3;hp=d4c0e5d777979f324647358e2f934e3ee04a1761;hpb=52d254200d32b47402461d325c2836c35af99201;p=maypole.git diff --git a/templates/factory/macros b/templates/factory/macros index d4c0e5d..59d6c92 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,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; @@ -54,19 +54,20 @@ for some. #%] [% MACRO display_line(item) BLOCK; - FOR col = classmetadata.columns; + FOR col = classmetadata.list_columns; NEXT IF col == "id"; ""; IF col == "url" AND item.url; ' '; item.url; ''; - ELSIF col == item.stringify_column; + ELSIF col == classmetadata.stringify_column; maybe_link_view(item); ELSE; - maybe_link_view(item.$col); + accessor = item.accessor_name(col); + maybe_link_view(item.$accessor); END; ""; END; - ""; + ''; button(item, "edit"); button(item, "delete"); ""; @@ -81,8 +82,10 @@ This is a generic button, which performs an action on an object. #%] [% MACRO button(obj, action) BLOCK; %] - - [% action %] +[% IF obj.is_public(action) %] +
+
+[% END %] [% END %] [%# @@ -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 = classmetadata.stringifycolumn %] +
[% item.$string %]
+ [% INCLUDE navbar %] + + + + + + [% 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: + +#%] + + + + + [% END; %] +
[% 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 method, or returns the object's ID +if there is no C method or other stringification method defined. + +=cut + +#%] +
+[% END %]