blob: a4eeab3c970af4c9959c37d45718c37077111b3a (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
package Reaction::UI::ViewPort::GridView::Action;
use Reaction::Class;
class Action is 'Reaction::UI::ViewPort', which {
has label => (is => 'rw', required => 1);
has uri => ( is => 'rw', lazy_build => 1);
has target => (isa => 'Object', is => 'rw', required => 1);
has action => (isa => 'CodeRef', is => 'rw', required => 1);
implements BUILD => as{
my $self = shift;
$self->label( $self->label->($self->target) ) if ref $self->label eq 'CODE';
};
implements build_uri => as{
my $self = shift;
my $c = $self->ctx;
my ($c_name, $a_name, @rest) = @{ $self->action->($self->target, $c) };
$c->uri_for($c->controller($c_name)->action_for($a_name),@rest);
};
};
1;
|