1 package Reaction::UI::Controller::Role::Action::List;
3 use Moose::Role -traits => 'MethodAttributes';
4 use Reaction::UI::ViewPort::Collection;
6 requires qw/get_collection setup_viewport/;
8 sub list :Action :Args(0) {
10 my $collection = $c->stash->{collection} || $self->get_collection($c);
11 $self->setup_viewport($c, { collection => $collection });
14 around _build_action_viewport_map => sub {
16 my $map = shift->$orig( @_ );
17 $map->{list} = 'Reaction::UI::ViewPort::Collection';
27 Reaction::UI::Controller::Role::Action::List - List action
31 Provides a C<list> action, which sets up an L<Collection Viewport|Reaction::UI::Viewport::Collection>
32 using the collection contained in the C<collection> slot of the stash, if
33 present, or using the object returned by the method C<get_collection>.
37 package MyApp::Controller::Foo;
39 use base 'Reaction::Controller';
43 'Reaction::UI::Controller::Role::GetCollection',
44 'Reaction::UI::Controller::Role::Action::Simple',
45 'Reaction::UI::Controller::Role::Action::List'
49 __PACKAGE__->config( action => {
50 list => { Chained => 'base' },
53 sub base :Chained('/base') :CaptureArgs(0) {
59 This role also consumes the following roles:
63 =item L<Reaction::UI::Controller::Role::Action::Simple>
67 =head1 REQUIRED METHODS
69 The following methods must be provided by the consuming class:
73 =item C<get_collection>
81 Chain endpoint with no args, sets up the viewport with the appropriate action.
85 =head2 _build_action_viewport_map
87 Extends to set the C<list> key in the map to L<Reaction::UI::ViewPort::Action>
93 =item L<Reaction::UI::Controller>
95 =item L<Reaction::UI::Controller::Role::GetCollection>
97 =item L<Reaction::UI::Controller::Role::Action::Simple>
99 =item L<Reaction::UI::Controller::Role::Action::View>
101 =item L<Reaction::UI::Controller::Role::Action::Object>
103 =item L<Reaction::UI::Controller::Role::Action::Create>
105 =item L<Reaction::UI::Controller::Role::Action::Update>
107 =item L<Reaction::UI::Controller::Role::Action::Delete>
109 =item L<Reaction::UI::Controller::Role::Action::DeleteAll>
115 See L<Reaction::Class> for authors.
119 See L<Reaction::Class> for the license.