]> git.decadent.org.uk Git - maypole.git/commitdiff
added object method, not added to templates yet
authorAaron Trevena <aaron.trevena@gmail.com>
Mon, 12 Jun 2006 09:31:38 +0000 (09:31 +0000)
committerAaron Trevena <aaron.trevena@gmail.com>
Mon, 12 Jun 2006 09:31:38 +0000 (09:31 +0000)
git-svn-id: http://svn.maypole.perl.org/Maypole/trunk@491 48953598-375a-da11-a14b-00016c27c3ee

Changes
META.yml
lib/Maypole.pm
lib/Maypole/View/Base.pm
lib/Maypole/View/TT.pm

diff --git a/Changes b/Changes
index 2ca5c9ab1259347c0f7562ce8534d6fa247b3207..53feab10b1f1b88cc1662e66ff19f679f27ad2fa 100644 (file)
--- a/Changes
+++ b/Changes
@@ -48,6 +48,7 @@ API additions and enhancements:
        - improved exception handling
        - now uses File::MMagic::XS to guess mime type of output unless already set
        - new component method provides Maypole::Component functionality
+       - new object method gets/sets first/only object in objects
      Maypole::Model
        - do_delete, do_search in place of delete/search actions
      Maypole::View::TT:
index 1b7eda8fa481c5be8b576797719af941b01915a4..d0a0e42c6a2b29e43f685b2e4e52d2996b917b87 100644 (file)
--- a/META.yml
+++ b/META.yml
@@ -1,7 +1,7 @@
 # http://module-build.sourceforge.net/META-spec.html
 #XXXXXXX This is a prototype!!!  It will change in the future!!! XXXXX#
 name:         Maypole
-version:      2.11_pre3
+version:      2.11
 version_from: lib/Maypole.pm
 installdirs:  site
 requires:
@@ -20,6 +20,7 @@ requires:
     Class::DBI::SQLite:            0
     Digest::MD5:                   0
     File::MMagic::XS:              0.08
+    HTML::Element:                 0
     HTTP::Body:                    0.5
     HTTP::Headers:                 1.59
     Template:                      0
index d14f517cddd56088a338a71b33e9f3f43057d101..5837848df1c59e3ebeebec65aab5ef94dff1d744 100644 (file)
@@ -1146,6 +1146,24 @@ If the first item in C<$self-E<gt>args> can be C<retrieve()>d by the model
 class, it will be removed from C<args> and the retrieved object will be added to
 the C<objects> list. See L<Maypole::Model> for more information.
 
+
+=item object
+
+Alias to get/set the first/only model object. The object will be accessible
+in the view templates.
+
+When used to set the object, will overwrite the request objects
+with a single object.
+
+=cut
+
+sub object {
+  my ($r,$object) = @_;
+  $r->objects([$object]) if ($object);
+  return undef unless $r->objects();
+  return $r->objects->[0];
+}
+
 =item template_args
 
     $self->template_args->{foo} = 'bar';
@@ -1154,7 +1172,7 @@ Get/set a hash of template variables.
 
 =item stash
 
-A place to put custom application data. Not used by Maypole itself. 
+A place to put custom application data. Not used by Maypole itself.
 
 =item template
 
index 3164c0110ef8a25369a9dd19d1cd55c304439e18..1cc9b2bd8f78a9efc906275991eee2765ffb310e 100644 (file)
@@ -41,7 +41,8 @@ sub vars {
         request => $r,
         objects => $r->objects,
         base    => $base,
-        config  => $r->config
+        config  => $r->config,
+       object  => $r->object,
 
           # ...
     );
index c399a6f69b5ffb5afffc41608d62b6b765e5b0a7..f634ca8fedb7604ef9d97af249bcfc738f746bd7 100644 (file)
@@ -58,8 +58,8 @@ sub report_error {
     }
     if ($tt->process(\$error_template,
                     { err_type => $type, error => $error, 
-                      config => { (%{$r->{config}}) },
-                      request => $r, # We have that at least
+                      config => $r->{config},
+                      request => $r,
         eval{$self->vars($r)} }, \$output )) {
         $r->{output} = $output;
         if ($tt->error) { $r->{output} = "<html><body>Even the error template
@@ -399,19 +399,19 @@ the path "[% request.path %]". The error text returned was:
 
 <h2> Request details </h2>
 
-<table> 
-    [% FOR thing = ["model_class", "table", "template", "path",
+<table>
+    [% FOR attribute = ["model_class", "table", "template", "path",
     "content_type", "document_encoding", "action", "args", "objects"] %]
-    <tr> <td class="lhs"> [%thing %] </td> <td class="rhs"> [%
-    request.$thing.list.join(" , ") %] </td></tr>
+    <tr> <td class="lhs"> [% attribute %] </td> <td class="rhs"> [%
+    request.$attribute.list.join(" , ") %] </td></tr>
     [% END %]
 </table>
 
 <h2> Application configuration </h2>
-<table> 
-    [% FOR thing = config.keys %]
-    <tr> <td class="lhs"> [%thing %] </td> <td class="rhs"> [% 
-    config.$thing.list.join(" , ") %] </td></tr>
+<table>
+    [% FOR field IN config %]
+    <tr> <td class="lhs"> [% field.key %] </td> <td class="rhs"> [% 
+    $field.value.list.join(" , ") %] </td></tr>
     [% END %]
 </table>