From ca325e68ce3620b52a3c8c9ed437ed79c5d1a744 Mon Sep 17 00:00:00 2001 From: Simon Cozens Date: Fri, 6 Feb 2004 15:05:43 +0000 Subject: [PATCH] A little bit of refactoring and documentation. git-svn-id: http://svn.maypole.perl.org/Maypole/trunk@50 48953598-375a-da11-a14b-00016c27c3ee --- templates/factory/addnew | 12 ++++++ templates/factory/edit | 9 +++++ templates/factory/macros | 81 +++++++++++++++++++++++++++++++++++++--- templates/factory/navbar | 25 +++++++++---- templates/factory/pager | 15 ++++++-- 5 files changed, 126 insertions(+), 16 deletions(-) diff --git a/templates/factory/addnew b/templates/factory/addnew index f541e27..56e794b 100644 --- a/templates/factory/addnew +++ b/templates/factory/addnew @@ -1,3 +1,15 @@ +[%# + +=head1 addnew + +This is the interface to adding a new instance of an object. (or a new +row in the database, if you want to look at it that way) It displays a +form containing a list of HTML components for each of the columns in the +table. + +=cut + +#%]

Add a new [%classmetadata.moniker%]

diff --git a/templates/factory/edit b/templates/factory/edit index 712348a..0de9f79 100644 --- a/templates/factory/edit +++ b/templates/factory/edit @@ -1,3 +1,12 @@ +[%# + +=head1 edit + +This is the edit page. It edits the passed-in object, by displaying a +form similar to L but with the current values filled in. + +#%] + [% PROCESS macros %] [% INCLUDE header %] diff --git a/templates/factory/macros b/templates/factory/macros index 044ba45..7e3284c 100644 --- a/templates/factory/macros +++ b/templates/factory/macros @@ -1,19 +1,61 @@ -[% MACRO maybe_link_view(object) BLOCK; +[%# + +=head1 MACROS + +These are some default macros which are used by various templates in the +system. + +=head2 link + +This creates an '; + label; + ""; +END; +%] + +[%# + +=head2 maybe_link_view + +C 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.moniker; # It's an object, i.e. a has-a - ""; - object; - ""; + link(object.moniker, "view", object.id, object); ELSE; object; END; END; %] +[%# + +=head2 display_line + +C 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 C column by default, and magically +URLifies columns called C. This may be considered too much magic +for some. + +#%] [% MACRO display_line(item) BLOCK; FOR col = classmetadata.columns; NEXT IF col == "id"; ""; - IF col == "url"; # Possibly too much magic. + IF col == "url"; " "; item.url; ""; ELSIF col == "name"; maybe_link_view(item); @@ -25,7 +67,15 @@ END; button(item, "edit"); button(item, "delete"); END %] +[%# + +=head2 button +This is a generic button, which performs an action on an object. + +=cut + +#%] [% MACRO button(obj, action) BLOCK; %] @@ -33,8 +83,20 @@ END %] [% END %] +[%# + +=head2 view_related -[% MACRO view_related(object) BLOCK; +This takes an object, and looks up the C; 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. + +=cut + +#%] +[% +MACRO view_related(object) BLOCK; FOR accessor = classmetadata.related_accessors.list; "

"; accessor | ucfirst; "

\n"; "
    "; @@ -44,4 +106,11 @@ END %] "
"; END; END; + +MACRO test_xxxx(myblock) BLOCK; + FOR col = classmetadata.columns; + NEXT IF col == "id"; + myblock; + END; +END; %] diff --git a/templates/factory/navbar b/templates/factory/navbar index 3e5c1c5..b2dac72 100644 --- a/templates/factory/navbar +++ b/templates/factory/navbar @@ -1,14 +1,25 @@ +[%# + +=head1 navbar + +This is a navigation bar to go across the page. (Or down the side, or +whatetver you want to do with it.) It displays all the tables which are +accessible, with a link to the list page for each one. + +#%] +[% PROCESS macros %]