aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorgroditi <groditi@03d0b0b2-0e1a-0410-a411-fdb2f4bd65d7>2009-09-25 18:58:40 +0000
committergroditi <groditi@03d0b0b2-0e1a-0410-a411-fdb2f4bd65d7>2009-09-25 18:58:40 +0000
commit9bb62506e33250989de0bbd80bdd182d9425e5c6 (patch)
tree8dedefd3c8125053ca598a9786cdbf6889456543 /lib
parent730673c65f90d99322d641f7bb2783c5bb93c291 (diff)
parent987fc6e26baea18fa0c3c48fb1208c5c350a4bc1 (diff)
downloadreaction-9bb62506e33250989de0bbd80bdd182d9425e5c6.tar.gz
reaction-9bb62506e33250989de0bbd80bdd182d9425e5c6.zip
r31500@martha (orig r1229): purge | 2009-09-11 05:51:11 -0400
make_immutable for new moose r31688@martha (orig r1231): mateu | 2009-09-13 18:18:07 -0400 Bump version of SQL::Translator required for testing so t/im_dbic.t passes. r31689@martha (orig r1232): wreis | 2009-09-14 13:35:30 -0400 fixed child_event_sinks for SearchableListViewContainer vp r31690@martha (orig r1233): wreis | 2009-09-14 13:35:58 -0400 collection-grid already does Pager and Actions r31691@martha (orig r1234): edenc | 2009-09-14 23:51:37 -0400 added search spec sample to demo app r31692@martha (orig r1235): wreis | 2009-09-15 11:36:30 -0400 no divs in base skin r31693@martha (orig r1236): purge | 2009-09-17 10:21:58 -0400 pass through layout_args to actions r31694@martha (orig r1237): edenc | 2009-09-17 14:14:04 -0400 compatibility fixes for Class::MOP 0.93
Diffstat (limited to 'lib')
-rw-r--r--lib/ComponentUI/Controller/TestModel/Foo.pm24
-rw-r--r--lib/ComponentUI/TestModel/Foo/Action/SearchSpec/Update.pm15
-rw-r--r--lib/ComponentUI/TestModel/Foo/SearchSpec.pm24
-rw-r--r--lib/Reaction/Class.pm2
-rw-r--r--lib/Reaction/Object.pm2
-rw-r--r--lib/Reaction/UI/Controller.pm3
-rw-r--r--lib/Reaction/UI/Skin.pm3
-rw-r--r--lib/Reaction/UI/ViewPort/ListViewWithSearch.pm2
-rw-r--r--lib/Reaction/UI/ViewPort/Role/Actions.pm2
-rw-r--r--lib/Reaction/UI/ViewPort/SearchableListViewContainer.pm2
10 files changed, 68 insertions, 11 deletions
diff --git a/lib/ComponentUI/Controller/TestModel/Foo.pm b/lib/ComponentUI/Controller/TestModel/Foo.pm
index 2fb994c..04a56e8 100644
--- a/lib/ComponentUI/Controller/TestModel/Foo.pm
+++ b/lib/ComponentUI/Controller/TestModel/Foo.pm
@@ -3,6 +3,10 @@ package ComponentUI::Controller::TestModel::Foo;
use base 'Reaction::UI::Controller::Collection::CRUD';
use Reaction::Class;
+use aliased 'Reaction::UI::ViewPort::SearchableListViewContainer';
+use aliased 'ComponentUI::TestModel::Foo::SearchSpec';
+use aliased 'ComponentUI::TestModel::Foo::Action::SearchSpec::Update';
+
__PACKAGE__->config(
model_name => 'TestModel',
collection_name => 'Foo',
@@ -49,11 +53,19 @@ for my $action (qw/view create update/){
);
}
-# sub _build_action_viewport_args {
-# my $self = shift;
-# my $args = $self->next::method(@_);
-# # $args->{list}{action_prototypes}{delete_all}{label} = 'Delete All Records';
-# return $args;
-# }
+override _build_action_viewport_map => sub {
+ my $map = super();
+ $map->{list} = SearchableListViewContainer;
+ return $map;
+};
+
+override _build_action_viewport_args => sub {
+ my $args = super();
+ $args->{list}{spec_class} = SearchSpec;
+ $args->{list}{action_class} = Update;
+ return $args;
+};
1;
+
+__END__;
diff --git a/lib/ComponentUI/TestModel/Foo/Action/SearchSpec/Update.pm b/lib/ComponentUI/TestModel/Foo/Action/SearchSpec/Update.pm
new file mode 100644
index 0000000..97d2feb
--- /dev/null
+++ b/lib/ComponentUI/TestModel/Foo/Action/SearchSpec/Update.pm
@@ -0,0 +1,15 @@
+package ComponentUI::TestModel::Foo::Action::SearchSpec::Update;
+use Reaction::Class;
+use namespace::autoclean;
+
+use MooseX::Types::Common::String qw/NonEmptySimpleStr/;
+
+extends 'Reaction::InterfaceModel::Action';
+with 'Reaction::InterfaceModel::Search::UpdateSpec';
+
+has 'first_name' => (isa => NonEmptySimpleStr, is => 'rw', required => 0);
+has 'last_name' => (isa => NonEmptySimpleStr, is => 'rw', required => 0);
+
+sub _reflection_info {{ normal => [qw/first_name last_name/] }}
+
+1;
diff --git a/lib/ComponentUI/TestModel/Foo/SearchSpec.pm b/lib/ComponentUI/TestModel/Foo/SearchSpec.pm
new file mode 100644
index 0000000..4664ec6
--- /dev/null
+++ b/lib/ComponentUI/TestModel/Foo/SearchSpec.pm
@@ -0,0 +1,24 @@
+package ComponentUI::TestModel::Foo::SearchSpec;
+use Reaction::Class;
+use namespace::autoclean;
+
+use MooseX::Types::Common::String qw/NonEmptySimpleStr/;
+
+with 'Reaction::InterfaceModel::Search::Spec';
+
+has 'first_name' => (isa => NonEmptySimpleStr, is => 'rw', required => 0);
+has 'last_name' => (isa => NonEmptySimpleStr, is => 'rw', required => 0);
+
+sub _build__search_spec {
+ my($self) = @_;
+ my %search;
+ $search{first_name} = $self->first_name if $self->has_first_name;
+ $search{last_name} = $self->last_name if $self->has_last_name;
+ return [\%search];
+}
+
+# no special packing/unpacking required for Foo
+sub _to_string_pack_value { $_[1] }
+sub _from_string_unpack_value { $_[1] }
+
+1;
diff --git a/lib/Reaction/Class.pm b/lib/Reaction/Class.pm
index a57dcdf..9f61bbf 100644
--- a/lib/Reaction/Class.pm
+++ b/lib/Reaction/Class.pm
@@ -233,6 +233,8 @@ sub next_import {
sub next_import_package { 'Moose' }
+__PACKAGE__->meta->make_immutable;
+
1;
#---------#---------#---------#---------#---------#---------#---------#--------#
diff --git a/lib/Reaction/Object.pm b/lib/Reaction/Object.pm
index 7440bd3..de4c740 100644
--- a/lib/Reaction/Object.pm
+++ b/lib/Reaction/Object.pm
@@ -7,6 +7,8 @@ use Moose qw(extends);
extends 'Moose::Object';
+__PACKAGE__->meta->make_immutable;
+
no Moose;
1;
diff --git a/lib/Reaction/UI/Controller.pm b/lib/Reaction/UI/Controller.pm
index 8ed781f..2d1b843 100644
--- a/lib/Reaction/UI/Controller.pm
+++ b/lib/Reaction/UI/Controller.pm
@@ -11,7 +11,8 @@ with 'Catalyst::Component::InstancePerContext';
sub build_per_context_instance {
my ($self, $c, @args) = @_;
- my $newself = $self->new($self->_application, {%$self, context => $c, @args});
+ my $class = ref($self) || $self;
+ my $newself = $class->new($self->_application, {%$self, context => $c, @args});
return $newself;
}
diff --git a/lib/Reaction/UI/Skin.pm b/lib/Reaction/UI/Skin.pm
index 237279d..0683258 100644
--- a/lib/Reaction/UI/Skin.pm
+++ b/lib/Reaction/UI/Skin.pm
@@ -71,6 +71,7 @@ sub _find_skin_dir {
};
sub _load_skin_config {
my ($self, $args) = @_;
+ my $class = ref($self) || $self;
my $base = $self->skin_dir;
my $lst = sub { (ref $_[0] eq 'ARRAY') ? $_[0] : [$_[0]] };
my @files = (
@@ -84,7 +85,7 @@ sub _load_skin_config {
})}
);
if (my $super_name = $cfg{extends}) {
- my $super = $self->new(
+ my $super = $class->new(
name => $super_name,
view => $self->view,
skin_base_dir => $args->{skin_base_dir},
diff --git a/lib/Reaction/UI/ViewPort/ListViewWithSearch.pm b/lib/Reaction/UI/ViewPort/ListViewWithSearch.pm
index ee5f738..c199f7d 100644
--- a/lib/Reaction/UI/ViewPort/ListViewWithSearch.pm
+++ b/lib/Reaction/UI/ViewPort/ListViewWithSearch.pm
@@ -6,8 +6,6 @@ extends 'Reaction::UI::ViewPort::Collection::Grid';
with 'Reaction::UI::ViewPort::Collection::Role::UseSearchSpec';
with 'Reaction::UI::ViewPort::Collection::Role::Order';
-with 'Reaction::UI::ViewPort::Collection::Role::Pager';
-with 'Reaction::UI::ViewPort::Role::Actions';
__PACKAGE__->meta->make_immutable;
diff --git a/lib/Reaction/UI/ViewPort/Role/Actions.pm b/lib/Reaction/UI/ViewPort/Role/Actions.pm
index 32c7bbb..89b5ae3 100644
--- a/lib/Reaction/UI/ViewPort/Role/Actions.pm
+++ b/lib/Reaction/UI/ViewPort/Role/Actions.pm
@@ -62,12 +62,14 @@ sub _build_actions {
my $uri = $proto->{uri} or confess('uri is required in prototype action');
my $label = exists $proto->{label} ? $proto->{label} : $proto_name;
my $layout = exists $proto->{layout} ? $proto->{layout} : 'uri';
+ my $layout_args = exists $proto->{layout_args} ? $proto->{layout_args} : {};
my $action = Reaction::UI::ViewPort::URI->new(
location => join ('-', $loc, 'action', $i++),
uri => ( ref($uri) eq 'CODE' ? $uri->($target, $ctx) : $uri ),
display => ( ref($label) eq 'CODE' ? $label->($target, $ctx) : $label ),
layout => ( ref($layout) eq 'CODE' ? $layout->($target, $ctx) : $layout ),
+ layout_args => ( ref($layout_args) eq 'CODE' ? $layout_args->($target, $ctx) : $layout_args ),
);
push(@act, $action);
}
diff --git a/lib/Reaction/UI/ViewPort/SearchableListViewContainer.pm b/lib/Reaction/UI/ViewPort/SearchableListViewContainer.pm
index d83941b..4468275 100644
--- a/lib/Reaction/UI/ViewPort/SearchableListViewContainer.pm
+++ b/lib/Reaction/UI/ViewPort/SearchableListViewContainer.pm
@@ -74,7 +74,7 @@ override BUILDARGS => sub {
};
override child_event_sinks => method () {
- ((map $self->$_, 'listview', 'search_form'), super);
+ ((map $self->$_, 'search_form', 'listview'), super);
};
1;