do not display the pager for 1 page long results
groditi [Tue, 6 May 2008 01:01:30 +0000 (01:01 +0000)]
lib/Reaction/UI/Controller/Collection.pm
lib/Reaction/UI/Controller/Collection/CRUD.pm
lib/Reaction/UI/Widget/ListView.pm
share/skin/default/layout/list_view.tt

index 683473e..265ff79 100644 (file)
@@ -5,7 +5,7 @@ use warnings;
 use base 'Reaction::UI::Controller';
 use Reaction::Class;
 
-use aliased 'Reaction::UI::ViewPort::ListView';
+use aliased 'Reaction::UI::ViewPort::Collection::Grid';
 use aliased 'Reaction::UI::ViewPort::Object';
 
 has 'model_name'      => (isa => 'Str', is => 'rw', required => 1);
@@ -16,7 +16,7 @@ has action_viewport_args => (isa => 'HashRef', is => 'rw', lazy_build => 1);
 
 sub _build_action_viewport_map {
   return {
-          list => ListView,
+          list => Grid,
           view => Object,
          };
 }
index a44054c..ab0fc9b 100644 (file)
@@ -6,9 +6,11 @@ use base 'Reaction::UI::Controller::Collection';
 use Reaction::Class;
 
 use aliased 'Reaction::UI::ViewPort::Action';
+use aliased 'Reaction::UI::ViewPort::ListView';
 
 sub _build_action_viewport_map {
   my $map = shift->next::method(@_);
+  $map->{list} = ListView;
   $map->{$_} = Action for qw/create update delete delete_all/;
   return $map;
 }
index baf6105..ab041e6 100644 (file)
@@ -8,6 +8,13 @@ class ListView is 'Reaction::UI::Widget::Collection::Grid', which {
     arg pager_obj => $_{viewport}->pager;
   };
 
+  implements fragment pager_fragment {
+    my $pager = $_{pager_obj};
+    if( $pager->last_page > $pager->first_page ) {
+      render 'pager';
+    }
+  };
+
   implements fragment actions {
     render action => over $_{viewport}->actions;
   };
index f4f6501..f7a4ef4 100644 (file)
@@ -2,11 +2,11 @@
 
 =for layout widget
 
-[% pager %]
+[% pager_fragment %]
 
 [% call_next %]
 
-[% pager %]
+[% pager_fragment %]
 
 [% actions %]