aboutsummaryrefslogtreecommitdiffstats
path: root/lib/Reaction/UI/ViewPort
diff options
context:
space:
mode:
authorgroditi <groditi@03d0b0b2-0e1a-0410-a411-fdb2f4bd65d7>2008-01-02 18:49:19 +0000
committergroditi <groditi@03d0b0b2-0e1a-0410-a411-fdb2f4bd65d7>2008-01-02 18:49:19 +0000
commitc8fbb8ad6185f3f14717138aaf8bb95d6b2d27b2 (patch)
tree03f004e2e8b59e5b809444d323c48b4b9c7221fd /lib/Reaction/UI/ViewPort
parent2f670e13aa8f30bbf6ba910f2d8ef97aa8a9e3e5 (diff)
downloadreaction-c8fbb8ad6185f3f14717138aaf8bb95d6b2d27b2.tar.gz
reaction-c8fbb8ad6185f3f14717138aaf8bb95d6b2d27b2.zip
work in progress, listview still broken
Diffstat (limited to 'lib/Reaction/UI/ViewPort')
-rw-r--r--lib/Reaction/UI/ViewPort/Action.pm3
-rw-r--r--lib/Reaction/UI/ViewPort/Action/Link.pm2
-rw-r--r--lib/Reaction/UI/ViewPort/Collection.pm11
-rw-r--r--lib/Reaction/UI/ViewPort/Collection/Grid.pm5
-rw-r--r--lib/Reaction/UI/ViewPort/Collection/Grid/Member.pm4
-rw-r--r--lib/Reaction/UI/ViewPort/Field/Mutable/Array.pm2
-rw-r--r--lib/Reaction/UI/ViewPort/Field/Mutable/ChooseOne.pm4
-rw-r--r--lib/Reaction/UI/ViewPort/Field/Mutable/DateTime.pm7
-rw-r--r--lib/Reaction/UI/ViewPort/Field/Mutable/Number.pm2
-rw-r--r--lib/Reaction/UI/ViewPort/Field/Role/Choices.pm2
-rw-r--r--lib/Reaction/UI/ViewPort/Field/Role/Mutable.pm4
-rw-r--r--lib/Reaction/UI/ViewPort/ListView.pm14
-rw-r--r--lib/Reaction/UI/ViewPort/Object.pm8
-rw-r--r--lib/Reaction/UI/ViewPort/Role/Actions.pm5
14 files changed, 40 insertions, 33 deletions
diff --git a/lib/Reaction/UI/ViewPort/Action.pm b/lib/Reaction/UI/ViewPort/Action.pm
index e7a21a5..9da7191 100644
--- a/lib/Reaction/UI/ViewPort/Action.pm
+++ b/lib/Reaction/UI/ViewPort/Action.pm
@@ -17,7 +17,8 @@ use aliased 'Reaction::UI::ViewPort::Field::Mutable::ChooseMany';
#use aliased 'Reaction::UI::ViewPort::InterfaceModel::Field::Mutable::TimeRange';
class Action is 'Reaction::UI::ViewPort::Object', which {
- has '+model' => (isa => 'Reaction::InterfaceModel::Action');
+ has model => (is => 'ro', isa => 'Reaction::InterfaceModel::Action', required => 1);
+ #has '+model' => (isa => 'Reaction::InterfaceModel::Action');
has next_action => (is => 'rw', isa => 'ArrayRef');
has on_apply_callback => (is => 'rw', isa => 'CodeRef');
diff --git a/lib/Reaction/UI/ViewPort/Action/Link.pm b/lib/Reaction/UI/ViewPort/Action/Link.pm
index 314c6a3..8bc8da8 100644
--- a/lib/Reaction/UI/ViewPort/Action/Link.pm
+++ b/lib/Reaction/UI/ViewPort/Action/Link.pm
@@ -1,4 +1,4 @@
-package Reaction::UI::ViewPort::InterfaceModel::Action::Link;
+package Reaction::UI::ViewPort::Action::Link;
use Reaction::Class;
diff --git a/lib/Reaction/UI/ViewPort/Collection.pm b/lib/Reaction/UI/ViewPort/Collection.pm
index c728f8e..a260bd7 100644
--- a/lib/Reaction/UI/ViewPort/Collection.pm
+++ b/lib/Reaction/UI/ViewPort/Collection.pm
@@ -17,21 +17,24 @@ class Collection is 'Reaction::UI::ViewPort', which {
implements BUILD => as {
my ($self, $args) = @_;
- my $entity_args = delete $args->{Member};
+ my $member_args = delete $args->{Member};
$self->member_args( $member_args ) if ref $member_args;
};
+ implements _build_member_args => as{ {} };
+
implements _build_member_class => as{ Object };
after clear_current_collection => sub{
- shift->clear_entities; #clear the entitiesis the current collection changes, duh
+ shift->clear_members; #clear the members the current collection changes, duh
};
implements _build_current_collection => as {
shift->collection;
};
- implements model
+ #I'm not really sure why this is here all of a sudden.
+ implements model => as { shift->current_collection };
implements _build_members => as {
my ($self) = @_;
@@ -50,7 +53,7 @@ class Collection is 'Reaction::UI::ViewPort', which {
my $builder_cache = $builders->{$type} ||= {};
my $member = $class->new(
ctx => $ctx,
- object => $obj,
+ model => $obj,
location => join('-', $loc, $i++),
builder_cache => $builder_cache,
%$args
diff --git a/lib/Reaction/UI/ViewPort/Collection/Grid.pm b/lib/Reaction/UI/ViewPort/Collection/Grid.pm
index 3314039..bc81a0c 100644
--- a/lib/Reaction/UI/ViewPort/Collection/Grid.pm
+++ b/lib/Reaction/UI/ViewPort/Collection/Grid.pm
@@ -25,13 +25,16 @@ class Grid is 'Reaction::UI::ViewPort::Collection', which {
return \%labels;
};
+ implements _build_field_order => as { []; };
+ implements _build_excluded_fields => as { []; };
+
implements _build_ordered_fields => as {
my ($self) = @_;
confess("current_collection lacks a value for 'member_type' attribute")
unless $self->current_collection->has_member_type;
my %excluded = map { $_ => undef } @{ $self->excluded_fields };
#treat _$field_name as private and exclude fields with no reader
- my @names = grep { $_ !~ /^_/ && !exists($exclude{$_})} map { $_->name }
+ my @names = grep { $_ !~ /^_/ && !exists($excluded{$_})} map { $_->name }
grep { defined $_->get_read_method }
$self->current_collection->member_type->meta->parameter_attributes;
return $self->sort_by_spec($self->field_order, \@names);
diff --git a/lib/Reaction/UI/ViewPort/Collection/Grid/Member.pm b/lib/Reaction/UI/ViewPort/Collection/Grid/Member.pm
index 0aa5e1d..c37e10e 100644
--- a/lib/Reaction/UI/ViewPort/Collection/Grid/Member.pm
+++ b/lib/Reaction/UI/ViewPort/Collection/Grid/Member.pm
@@ -2,7 +2,7 @@ package Reaction::UI::ViewPort::Collection::Grid::Member;
use Reaction::Class;
-Class Member is 'Reaction::UI::ViewPort::Object', which {
+class Member is 'Reaction::UI::ViewPort::Object', which {
around _build_fields_for_type_Num => sub {
$_[0]->(@_[1..3], { layout => 'value/number', %{ $_[4] } })
@@ -41,3 +41,5 @@ Class Member is 'Reaction::UI::ViewPort::Object', which {
around _build_fields_for_type_Reaction_InterfaceModel_Collection => sub { return };
};
+
+1;
diff --git a/lib/Reaction/UI/ViewPort/Field/Mutable/Array.pm b/lib/Reaction/UI/ViewPort/Field/Mutable/Array.pm
index 7fa3118..49e629b 100644
--- a/lib/Reaction/UI/ViewPort/Field/Mutable/Array.pm
+++ b/lib/Reaction/UI/ViewPort/Field/Mutable/Array.pm
@@ -9,7 +9,7 @@ class Array is 'Reaction::UI::ViewPort::Field::Array', which {
my $orig = shift;
my $self = shift;
return $orig->($self) unless @_;
- my $value = defined $_[0] ? $_[0] || [];
+ my $value = defined $_[0] ? $_[0] : [];
$orig->($self, (ref $value eq 'ARRAY' ? $value : [ $value ]));
$self->sync_to_action;
};
diff --git a/lib/Reaction/UI/ViewPort/Field/Mutable/ChooseOne.pm b/lib/Reaction/UI/ViewPort/Field/Mutable/ChooseOne.pm
index 3ab97b6..12d6d11 100644
--- a/lib/Reaction/UI/ViewPort/Field/Mutable/ChooseOne.pm
+++ b/lib/Reaction/UI/ViewPort/Field/Mutable/ChooseOne.pm
@@ -4,8 +4,8 @@ use Reaction::Class;
class ChooseOne is 'Reaction::UI::ViewPort::Field', which {
- does 'Reaction::UI::ViewPort::Object::Field::Role::Mutable';
- does 'Reaction::UI::ViewPort::Object::Field::Role::Choices';
+ does 'Reaction::UI::ViewPort::Field::Role::Mutable';
+ does 'Reaction::UI::ViewPort::Field::Role::Choices';
around value => sub {
my $orig = shift;
diff --git a/lib/Reaction/UI/ViewPort/Field/Mutable/DateTime.pm b/lib/Reaction/UI/ViewPort/Field/Mutable/DateTime.pm
index f792e5c..4950aa1 100644
--- a/lib/Reaction/UI/ViewPort/Field/Mutable/DateTime.pm
+++ b/lib/Reaction/UI/ViewPort/Field/Mutable/DateTime.pm
@@ -4,8 +4,7 @@ use Reaction::Class;
use Time::ParseDate;
use DateTime;
-class 'Reaction::UI::ViewPort::Field::Mutable::DateTime'
- is 'Reaction::UI::ViewPort::Field::DateTime', which {
+class 'Reaction::UI::ViewPort::Field::Mutable::DateTime', is 'Reaction::UI::ViewPort::Field::DateTime', which {
does 'Reaction::UI::ViewPort::Field::Role::Mutable';
@@ -26,9 +25,7 @@ class 'Reaction::UI::ViewPort::Field::Mutable::DateTime'
}
};
- override accept_events => sub {
- ('value_string', super());
- };
+ around accept_events => sub { ('value_string', shift->(@_)) };
};
diff --git a/lib/Reaction/UI/ViewPort/Field/Mutable/Number.pm b/lib/Reaction/UI/ViewPort/Field/Mutable/Number.pm
index d52121b..41308f3 100644
--- a/lib/Reaction/UI/ViewPort/Field/Mutable/Number.pm
+++ b/lib/Reaction/UI/ViewPort/Field/Mutable/Number.pm
@@ -2,7 +2,7 @@ package Reaction::UI::ViewPort::Field::Mutable::Number;
use Reaction::Class;
-class Number 'Reaction::UI::ViewPort::Field::Number', which {
+class Number is 'Reaction::UI::ViewPort::Field::Number', which {
does 'Reaction::UI::ViewPort::Field::Role::Mutable';
};
diff --git a/lib/Reaction/UI/ViewPort/Field/Role/Choices.pm b/lib/Reaction/UI/ViewPort/Field/Role/Choices.pm
index db1c3af..326dc54 100644
--- a/lib/Reaction/UI/ViewPort/Field/Role/Choices.pm
+++ b/lib/Reaction/UI/ViewPort/Field/Role/Choices.pm
@@ -1,6 +1,6 @@
package Reaction::UI::ViewPort::Field::Role::Choices;
-use Reaction::Class;
+use Reaction::Role;
use URI;
use Scalar::Util 'blessed';
diff --git a/lib/Reaction/UI/ViewPort/Field/Role/Mutable.pm b/lib/Reaction/UI/ViewPort/Field/Role/Mutable.pm
index 62191ca..db6c4f3 100644
--- a/lib/Reaction/UI/ViewPort/Field/Role/Mutable.pm
+++ b/lib/Reaction/UI/ViewPort/Field/Role/Mutable.pm
@@ -1,5 +1,7 @@
package Reaction::UI::ViewPort::Field::Role::Mutable;
+use Reaction::Role;
+
use aliased 'Reaction::InterfaceModel::Action';
use aliased 'Reaction::Meta::InterfaceModel::Action::ParameterAttribute';
@@ -44,3 +46,5 @@ role Mutable, which {
around accept_events => sub { ('value', shift->(@_)) };
};
+
+1;
diff --git a/lib/Reaction/UI/ViewPort/ListView.pm b/lib/Reaction/UI/ViewPort/ListView.pm
index 5d90c76..1c2247d 100644
--- a/lib/Reaction/UI/ViewPort/ListView.pm
+++ b/lib/Reaction/UI/ViewPort/ListView.pm
@@ -1,24 +1,24 @@
package Reaction::UI::ViewPort::ListView;
use Reaction::Class;
-use aliased 'Reaction::UI::ViewPort::GridView::Entity::WithActions';
+use aliased 'Reaction::UI::ViewPort::Collection::Grid::Member::WithActions';
-class ListView is 'Reaction::UI::ViewPort::GridView', which {
+class ListView is 'Reaction::UI::ViewPort::Collection::Grid', which {
- does 'Reaction::UI::ViewPort::GridView::Role::Order';
- does 'Reaction::UI::ViewPort::GridView::Role::Pager';
- does 'Reaction::UI::ViewPort::GridView::Role::Actions';
+ does 'Reaction::UI::ViewPort::Collection::Role::Order';
+ does 'Reaction::UI::ViewPort::Collection::Role::Pager';
+ does 'Reaction::UI::ViewPort::Role::Actions';
#If I decide that object actions and collection actions should be
#lumped together i oculd move these into the collection action role
#ooor we could create a third role that does this, but gah, no?
- implements _build_entity_class => as { WithActions };
+ implements _build_member_class => as { WithActions };
#You'se has to goes aways. sorry.
#if i saved the args as an attribute i could probably get around this....
implements object_action_count => as {
my $self = shift;
- for ( @{ $self->entities } ) {
+ for ( @{ $self->members } ) {
#pickup here, and of to the widget for listview
return scalar @{ $_->action_prototypes };
}
diff --git a/lib/Reaction/UI/ViewPort/Object.pm b/lib/Reaction/UI/ViewPort/Object.pm
index d7a70c1..8a40fbf 100644
--- a/lib/Reaction/UI/ViewPort/Object.pm
+++ b/lib/Reaction/UI/ViewPort/Object.pm
@@ -9,7 +9,7 @@ use aliased 'Reaction::UI::ViewPort::Field::Boolean';
use aliased 'Reaction::UI::ViewPort::Field::String';
use aliased 'Reaction::UI::ViewPort::Field::DateTime';
use aliased 'Reaction::UI::ViewPort::Field::RelatedObject';
-use aliased 'Reaction::UI::ViewPort::Field::List';
+use aliased 'Reaction::UI::ViewPort::Field::Array';
use aliased 'Reaction::UI::ViewPort::Field::Collection';
use aliased 'Reaction::InterfaceModel::Object' => 'IM_Object';
@@ -48,14 +48,14 @@ class Object is 'Reaction::UI::ViewPort', which {
my $field = $self->$meth($obj, $attr, ($args->{$field_name} || {}));
push(@fields, $field) if $field;
}
- return \@field;
+ return \@fields;
};
implements _build_ordered_fields => as {
my ($self) = @_;
my %excluded = map { $_ => undef } @{ $self->excluded_fields };
#treat _$field_name as private and exclude fields with no reader
- my @names = grep { $_ !~ /^_/ && !exists($exclude{$_})} map { $_->name }
+ my @names = grep { $_ !~ /^_/ && !exists($excluded{$_})} map { $_->name }
grep { defined $_->get_read_method } $self->model->meta->parameter_attributes;
return $self->sort_by_spec($self->field_order, \@names);
};
@@ -164,7 +164,7 @@ class Object is 'Reaction::UI::ViewPort', which {
implements _build_fields_for_type_ArrayRef => as {
my ($self, $attr, $args) = @_;
- $self->_build_simple_field(attribute => $attr, class => List, %$args);
+ $self->_build_simple_field(attribute => $attr, class => Array, %$args);
};
implements _build_fields_for_type_Reaction_InterfaceModel_Object => as {
diff --git a/lib/Reaction/UI/ViewPort/Role/Actions.pm b/lib/Reaction/UI/ViewPort/Role/Actions.pm
index d7641be..9c99077 100644
--- a/lib/Reaction/UI/ViewPort/Role/Actions.pm
+++ b/lib/Reaction/UI/ViewPort/Role/Actions.pm
@@ -13,15 +13,12 @@ role Actions, which {
my ($self) = @_;
my (@act, $i);
my $ctx = $self->ctx;
- #if i could abstract this vs ->object for row we could eliminate the entity
- #version of this role and just use one for both things. that would be cool.
- my $obj = $self->current_collection;
my $loc = $self->location;
foreach my $proto (@{ $self->action_prototypes }) {
my $action = Reaction::UI::ViewPort::Action::Link->new
(
ctx => $ctx,
- target => $obj,
+ target => $self->model,
location => join ('-', $loc, 'action', $i++),
%$proto,
);