]> git.decadent.org.uk Git - maypole.git/commitdiff
Remove "name" magic, replace with "stringify_column" magic.
authorSimon Cozens <simon@simon-cozens.org>
Mon, 22 Mar 2004 16:45:28 +0000 (16:45 +0000)
committerSimon Cozens <simon@simon-cozens.org>
Mon, 22 Mar 2004 16:45:28 +0000 (16:45 +0000)
git-svn-id: http://svn.maypole.perl.org/Maypole/trunk@89 48953598-375a-da11-a14b-00016c27c3ee

lib/Maypole/Model/CDBI.pm
templates/factory/macros
templates/factory/view

index b2a79b494d8699d6fa677625891e4d9136c28cbe..e7330e48abeafe98fe9ae807f5313cc13ee2e930 100644 (file)
@@ -61,12 +61,20 @@ sub delete :Exported {
     $r->{template} = "list";
 }
 
+sub stringify_column {
+    my $class = shift;
+    return ($class->columns("Stringify"),
+                (grep { $_ ne "id" } $class->primary_columns),
+                (grep { $_ eq "name" } $class->columns)
+               )[0];
+}
+
 sub adopt {
     my ($self, $child) = @_;
     $child->autoupdate(1);
-    if (grep { $_ eq "name" } $child->columns) { # Common case
-        $child->columns( Stringify => qw/ name / );
-    } # Otherwise, work it out for yourself.
+    if (my $col = $child->stringify_column) {
+        $child->columns( Stringify => $col );
+    }
 }
 
 sub search :Exported {
index 7e3284c3861196d45be137e0e57b1765ef9a40a3..e142916d6dd304aa7af9c3d4e42194375f16c798 100644 (file)
@@ -31,6 +31,7 @@ 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
         link(object.moniker, "view", object.id, object);
@@ -57,7 +58,7 @@ for some.
         "<td>";
         IF col == "url";
             "<A HREF="; item.url; "> "; item.url; "</A>";
-        ELSIF col == "name";
+        ELSIF col == item.stringify_column;
             maybe_link_view(item);
         ELSE;
             maybe_link_view(item.$col);
index 0ea412e2291831ecef58891ce43c3f22bd8ac0c2..0a0860e404e349652fd977fdbfd27c3cb58344a1 100644 (file)
@@ -12,15 +12,16 @@ C<objects> and displays the object's properties in a table.
 [% INCLUDE header %]
 
 [% FOR item = objects %]
-<h2> [% item.name %]</h2>
+[% SET string = item.stringify_column %]
+<h2> [% item.$string %]</h2>
 
 [% INCLUDE navbar %]
 
 <TABLE class="view">
-    <TR><TD class="field">Name</TD><TD> [% item.name %] </TD></TR>
+    <TR><TD class="field">[% classmetadata.colnames.$string %]</TD><TD> [% item.$string %] </TD></TR>
 [% 
     FOR col = classmetadata.columns.list;
-    NEXT IF col == "id" OR col == "name";
+    NEXT IF col == "id" OR col == string;
     NEXT UNLESS item.$col;
 %]
 
@@ -31,7 +32,7 @@ C<objects> and displays the object's properties in a table.
 It gets the displayable form of a column's name from the hash returned
 from the C<column_names> method:
 
-%#]
+#%]
 
     <TR>
     <TD class="field"> [% classmetadata.colnames.$col; %] </TD>
@@ -48,7 +49,7 @@ from the C<column_names> method:
 #One interesting macro used in this template is C<maybe_link_view>:
 
         maybe_link_view(item.$col); 
-%]
+%] 
 
 [%#