diff options
Diffstat (limited to 'lib/Reaction/UI/Widget/ListView.pm')
-rw-r--r-- | lib/Reaction/UI/Widget/ListView.pm | 53 |
1 files changed, 52 insertions, 1 deletions
diff --git a/lib/Reaction/UI/Widget/ListView.pm b/lib/Reaction/UI/Widget/ListView.pm index 9562900..cfd8028 100644 --- a/lib/Reaction/UI/Widget/ListView.pm +++ b/lib/Reaction/UI/Widget/ListView.pm @@ -4,6 +4,10 @@ use Reaction::UI::WidgetClass; class ListView is 'Reaction::UI::Widget::GridView', which { + after fragment widget { + arg pager_obj => $_{viewport}->pager; + }; + implements fragment actions { render action => over $_{viewport}->actions; }; @@ -28,7 +32,54 @@ class ListView is 'Reaction::UI::Widget::GridView', which { }; implements fragment header_action_cell { - arg 'col_count' => $_{viewport}->object_action_count; + arg col_count => $_{viewport}->object_action_count; + }; + + implements fragment page_list { + render numbered_page_fragment + => over [ $_{pager_obj}->first_page .. $_{pager_obj}->last_page ]; + }; + + implements fragment numbered_page_fragment { + arg page_uri => event_uri { page => $_ }; + arg page_number => $_; + if ($_{pager_obj}->current_page == $_) { + render 'numbered_page_this_page'; + } else { + render 'numbered_page'; + } + }; + + implements fragment first_page { + arg page_uri => event_uri { page => $_{pager_obj}->first_page }; + arg page_name => 'First'; + render 'named_page'; + }; + + implements fragment last_page { + arg page_uri => event_uri { page => $_{pager_obj}->last_page }; + arg page_name => 'Last'; + render 'named_page'; + }; + + implements fragment next_page { + arg page_name => 'Next'; + if (my $page = $_{pager_obj}->next_page) { + arg page_uri => event_uri { page => $page }; + render 'named_page'; + } else { + render 'named_page_no_page'; + } + }; + + implements fragment previous_page { + arg page_name => 'Previous'; + if (my $page = $_{pager_obj}->previous_page) { + arg page_uri => event_uri { page => $page }; + render 'named_page'; + } else { + render 'named_page_no_page'; + } }; }; |