From 7b5e71adcc00ae151a7908c2cddcd7323408efc7 Mon Sep 17 00:00:00 2001 From: groditi Date: Wed, 8 Jul 2009 22:54:19 +0000 Subject: use more MooseX::Types and support actionattribute in Action vp to explicitly provide the URI to post to --- Changes | 4 ++++ Makefile.PL | 1 + lib/ComponentUI/Controller/TestModel/Bar.pm | 9 +++++++++ lib/Reaction/UI/ViewPort/Action.pm | 5 ++++- lib/Reaction/UI/ViewPort/Action/Link.pm | 10 ++++++---- lib/Reaction/UI/ViewPort/Action/Role/OK.pm | 2 +- lib/Reaction/UI/ViewPort/Collection.pm | 6 ++++-- lib/Reaction/UI/ViewPort/Collection/Grid.pm | 15 ++++++++------- lib/Reaction/UI/ViewPort/Collection/Role/Order.pm | 10 +++++----- lib/Reaction/UI/ViewPort/Collection/Role/Pager.pm | 8 ++++---- lib/Reaction/UI/ViewPort/Field.pm | 8 +++++--- lib/Reaction/UI/ViewPort/Field/Array.pm | 18 +++++++++++------- lib/Reaction/UI/ViewPort/Field/Boolean.pm | 9 ++++----- lib/Reaction/UI/ViewPort/Field/Collection.pm | 8 +++----- lib/Reaction/UI/ViewPort/Field/Container.pm | 8 +++++--- lib/Reaction/UI/ViewPort/Field/DateTime.pm | 6 +++--- lib/Reaction/UI/ViewPort/Field/File.pm | 12 +++++++----- lib/Reaction/UI/ViewPort/Field/Integer.pm | 9 ++++----- lib/Reaction/UI/ViewPort/Field/Mutable/ChooseMany.pm | 3 ++- lib/Reaction/UI/ViewPort/Field/Mutable/HiddenArray.pm | 5 +++-- .../UI/ViewPort/Field/Mutable/MatchingPasswords.pm | 5 +++-- lib/Reaction/UI/ViewPort/Field/Number.pm | 9 ++++----- lib/Reaction/UI/ViewPort/Field/Password.pm | 7 ++----- lib/Reaction/UI/ViewPort/Field/RelatedObject.pm | 5 ++--- lib/Reaction/UI/ViewPort/Field/Role/Choices.pm | 8 ++++---- lib/Reaction/UI/ViewPort/Field/Role/Mutable.pm | 7 ++++--- lib/Reaction/UI/ViewPort/Field/String.pm | 9 ++++----- lib/Reaction/UI/ViewPort/Field/Text.pm | 9 ++++----- lib/Reaction/UI/ViewPort/Image.pm | 9 ++++++--- lib/Reaction/UI/ViewPort/Object.pm | 18 ++++++++++-------- lib/Reaction/UI/ViewPort/SiteLayout.pm | 19 ++++++++----------- lib/Reaction/UI/ViewPort/URI.pm | 3 ++- lib/Reaction/UI/Widget/Action.pm | 5 ++++- share/skin/base/layout/action.tt | 2 +- 34 files changed, 151 insertions(+), 120 deletions(-) diff --git a/Changes b/Changes index 1242047..fd95283 100644 --- a/Changes +++ b/Changes @@ -5,6 +5,10 @@ Revision history for Reaction belongs_to rels and fields that do not map directly to columns. - Fix Package names in POD for various files. this was causing some weirdness in CPAN. + - All Reaction::UI::ViewPort::* now uses MooseX::Types + - Add 'action' attribute to Action viewport + - Adapt widget and layout to changes + - Add example of explicitly stating action to ComponentUI 0.002000 - 29 Apr 2008 - Update CheckUniques role to use around instead of overrides diff --git a/Makefile.PL b/Makefile.PL index cf1a802..705461c 100644 --- a/Makefile.PL +++ b/Makefile.PL @@ -30,6 +30,7 @@ requires 'File::ShareDir' => '1.00'; requires 'File::Spec' => '3.29'; requires 'Moose' => '0.74'; requires 'MooseX::Types' => '0.10'; +requires 'MooseX::Types::URI' => '0.02'; requires 'MooseX::Types::Common' => '0.001000'; requires 'MooseX::Types::DateTime' => '0.03'; requires 'Path::Class::Dir'; diff --git a/lib/ComponentUI/Controller/TestModel/Bar.pm b/lib/ComponentUI/Controller/TestModel/Bar.pm index 4b592c0..4859b7d 100644 --- a/lib/ComponentUI/Controller/TestModel/Bar.pm +++ b/lib/ComponentUI/Controller/TestModel/Bar.pm @@ -23,4 +23,13 @@ sub get_collection { return $collection->where({}, { prefetch => 'foo' }); } +sub create :Chained('base') { + my $self = shift; + my ($c) = @_; + my $action_vp = $self->next::method(@_); + my $self_uri = $c->uri_for($self->action_for('create')); + $action_vp->action($self_uri); + return $action_vp; +} + 1; diff --git a/lib/Reaction/UI/ViewPort/Action.pm b/lib/Reaction/UI/ViewPort/Action.pm index f883b92..a19f2ca 100644 --- a/lib/Reaction/UI/ViewPort/Action.pm +++ b/lib/Reaction/UI/ViewPort/Action.pm @@ -2,8 +2,9 @@ package Reaction::UI::ViewPort::Action; use Reaction::Class; +use MooseX::Types::URI qw/Uri/; use MooseX::Types::Moose qw/Int Str/; -use Reaction::Types::Core qw/NonEmptySimpleStr/; +use MooseX::Types::Common::String qw/NonEmptySimpleStr/; use namespace::clean -except => [ qw(meta) ]; @@ -20,6 +21,8 @@ has method => ( default => sub { 'post' } ); +has action => ( is => 'rw', isa => Uri ); + has changed => ( is => 'rw', isa => Int, diff --git a/lib/Reaction/UI/ViewPort/Action/Link.pm b/lib/Reaction/UI/ViewPort/Action/Link.pm index 190b393..76bf55e 100644 --- a/lib/Reaction/UI/ViewPort/Action/Link.pm +++ b/lib/Reaction/UI/ViewPort/Action/Link.pm @@ -1,15 +1,17 @@ package Reaction::UI::ViewPort::Action::Link; use Reaction::Class; +extends 'Reaction::UI::ViewPort'; use namespace::clean -except => [ qw(meta) ]; -extends 'Reaction::UI::ViewPort'; +use MooseX::Types::URI qw/Uri/; +use MooseX::Types::Moose qw/Object CodeRef/; -has uri => ( is => 'rw', lazy_build => 1); +has uri => ( is => 'rw', isa => Uri, lazy_build => 1); has label => (is => 'rw', required => 1); -has target => (isa => 'Object', is => 'rw', required => 1); -has action => (isa => 'CodeRef', is => 'rw', required => 1); +has target => (isa => Object, is => 'rw', required => 1); +has action => (isa => CodeRef, is => 'rw', required => 1); sub BUILD { my $self = shift; diff --git a/lib/Reaction/UI/ViewPort/Action/Role/OK.pm b/lib/Reaction/UI/ViewPort/Action/Role/OK.pm index 06fe0c7..0dbbde3 100644 --- a/lib/Reaction/UI/ViewPort/Action/Role/OK.pm +++ b/lib/Reaction/UI/ViewPort/Action/Role/OK.pm @@ -4,7 +4,7 @@ use Reaction::Role; use MooseX::Types::Moose qw/Str/; with 'Reaction::UI::ViewPort::Action::Role::Close'; -has ok_label => (is => 'rw', isa => 'Str', lazy_build => 1); +has ok_label => (is => 'rw', isa => Str, lazy_build => 1); sub _build_ok_label { 'ok' } diff --git a/lib/Reaction/UI/ViewPort/Collection.pm b/lib/Reaction/UI/ViewPort/Collection.pm index 05b2d6a..a3cb0af 100644 --- a/lib/Reaction/UI/ViewPort/Collection.pm +++ b/lib/Reaction/UI/ViewPort/Collection.pm @@ -5,6 +5,8 @@ use Scalar::Util qw/blessed/; use aliased 'Reaction::InterfaceModel::Collection' => 'IM_Collection'; use aliased 'Reaction::UI::ViewPort::Object'; +use MooseX::Types::Moose qw/Str HashRef/; + use namespace::clean -except => [ qw(meta) ]; extends 'Reaction::UI::ViewPort'; @@ -13,8 +15,8 @@ has members => (is => 'rw', isa => 'ArrayRef', lazy_build => 1); has collection => (is => 'ro', isa => IM_Collection, required => 1); has current_collection => (is => 'rw', isa => IM_Collection, lazy_build => 1); -has member_args => ( is => 'rw', isa => 'HashRef', lazy_build => 1); -has member_class => ( is => 'ro', isa => 'Str', lazy_build => 1); +has member_args => ( is => 'rw', isa => HashRef, lazy_build => 1); +has member_class => ( is => 'ro', isa => Str, lazy_build => 1); sub BUILD { my ($self, $args) = @_; diff --git a/lib/Reaction/UI/ViewPort/Collection/Grid.pm b/lib/Reaction/UI/ViewPort/Collection/Grid.pm index 95fe43a..1cf3fd9 100644 --- a/lib/Reaction/UI/ViewPort/Collection/Grid.pm +++ b/lib/Reaction/UI/ViewPort/Collection/Grid.pm @@ -6,30 +6,31 @@ use aliased 'Reaction::InterfaceModel::Collection' => 'IM_Collection'; use aliased 'Reaction::UI::ViewPort::Collection::Grid::Member::WithActions'; use namespace::clean -except => [ qw(meta) ]; +use MooseX::Types::Moose qw/ArrayRef HashRef Int/; extends 'Reaction::UI::ViewPort::Collection'; -has field_order => ( is => 'ro', isa => 'ArrayRef', lazy_build => 1); -has excluded_fields => ( is => 'ro', isa => 'ArrayRef', lazy_build => 1); -has included_fields => ( is => 'ro', isa => 'ArrayRef', lazy_build => 1); -has computed_field_order => (is => 'ro', isa => 'ArrayRef', lazy_build => 1); +has field_order => ( is => 'ro', isa => ArrayRef, lazy_build => 1); +has excluded_fields => ( is => 'ro', isa => ArrayRef, lazy_build => 1); +has included_fields => ( is => 'ro', isa => ArrayRef, lazy_build => 1); +has computed_field_order => (is => 'ro', isa => ArrayRef, lazy_build => 1); has _raw_field_labels => ( is => 'rw', - isa => 'HashRef', + isa => HashRef, init_arg => 'field_labels', default => sub { {} }, ); has field_labels => ( is => 'ro', - isa => 'HashRef', + isa => HashRef, lazy_build => 1, init_arg => undef, ); has member_action_count => ( is => 'rw', - isa => 'Int', + isa => Int, required => 1, lazy => 1, default => sub { diff --git a/lib/Reaction/UI/ViewPort/Collection/Role/Order.pm b/lib/Reaction/UI/ViewPort/Collection/Role/Order.pm index 48a5001..da2edc8 100644 --- a/lib/Reaction/UI/ViewPort/Collection/Role/Order.pm +++ b/lib/Reaction/UI/ViewPort/Collection/Role/Order.pm @@ -3,19 +3,19 @@ package Reaction::UI::ViewPort::Collection::Role::Order; use Reaction::Role; use namespace::clean -except => [ qw(meta) ]; - -has enable_order_by => (is => 'rw', isa => 'ArrayRef'); -has coerce_order_by => (isa => 'HashRef', is => 'rw'); +use MooseX::Types::Moose qw/Int HashRef Str ArrayRef/; +has enable_order_by => (is => 'rw', isa => ArrayRef); +has coerce_order_by => (is => 'rw', isa => HashRef); has order_by => ( - isa => 'Str', + isa => Str, is => 'rw', trigger_adopt('order_by'), clearer => 'clear_order_by' ); has order_by_desc => ( - isa => 'Int', + isa => Int, is => 'rw', trigger_adopt('order_by'), lazy_build => 1 diff --git a/lib/Reaction/UI/ViewPort/Collection/Role/Pager.pm b/lib/Reaction/UI/ViewPort/Collection/Role/Pager.pm index 5947752..42907a9 100644 --- a/lib/Reaction/UI/ViewPort/Collection/Role/Pager.pm +++ b/lib/Reaction/UI/ViewPort/Collection/Role/Pager.pm @@ -6,14 +6,14 @@ use aliased 'Reaction::InterfaceModel::Collection'; # XX This needs to be consumed after Ordered use namespace::clean -except => [ qw(meta) ]; - +use MooseX::Types::Moose qw/Int/; #has paged_collection => (isa => Collection, is => 'rw', lazy_build => 1); has pager => (isa => 'Data::Page', is => 'rw', lazy_build => 1); -has page => (isa => 'Int', is => 'rw', lazy_build => 1, trigger_adopt('page'), clearer => 'clear_page'); -has per_page => (isa => 'Int', is => 'rw', lazy_build => 1, trigger_adopt('page')); -has per_page_max => (isa => 'Int', is => 'rw', lazy_build => 1); +has page => (isa => Int, is => 'rw', lazy_build => 1, trigger_adopt('page'), clearer => 'clear_page'); +has per_page => (isa => Int, is => 'rw', lazy_build => 1, trigger_adopt('page')); +has per_page_max => (isa => Int, is => 'rw', lazy_build => 1); sub _build_page { 1 }; sub _build_per_page { 10 }; sub _build_per_page_max { 100 }; diff --git a/lib/Reaction/UI/ViewPort/Field.pm b/lib/Reaction/UI/ViewPort/Field.pm index ff89075..8611b71 100644 --- a/lib/Reaction/UI/ViewPort/Field.pm +++ b/lib/Reaction/UI/ViewPort/Field.pm @@ -4,13 +4,15 @@ use Reaction::Class; use aliased 'Reaction::InterfaceModel::Object'; use aliased 'Reaction::Meta::InterfaceModel::Object::ParameterAttribute'; +use MooseX::Types::Moose qw/Str/; + use namespace::clean -except => [ qw(meta) ]; extends 'Reaction::UI::ViewPort'; has value => (is => 'rw', lazy_build => 1); -has name => (is => 'rw', isa => 'Str', lazy_build => 1); -has label => (is => 'rw', isa => 'Str', lazy_build => 1); -has value_string => (is => 'rw', isa => 'Str', lazy_build => 1); +has name => (is => 'rw', isa => Str, lazy_build => 1); +has label => (is => 'rw', isa => Str, lazy_build => 1); +has value_string => (is => 'rw', isa => Str, lazy_build => 1); has model => (is => 'ro', isa => Object, required => 1); has attribute => (is => 'ro', isa => ParameterAttribute, required => 1); diff --git a/lib/Reaction/UI/ViewPort/Field/Array.pm b/lib/Reaction/UI/ViewPort/Field/Array.pm index 82e01d2..ed9ddeb 100644 --- a/lib/Reaction/UI/ViewPort/Field/Array.pm +++ b/lib/Reaction/UI/ViewPort/Field/Array.pm @@ -2,25 +2,29 @@ package Reaction::UI::ViewPort::Field::Array; use Reaction::Class; use Scalar::Util 'blessed'; -use aliased 'Reaction::UI::ViewPort::Field'; + +extends 'Reaction::UI::ViewPort::Field'; use namespace::clean -except => [ qw(meta) ]; -extends Field; +use MooseX::Types::Moose qw/Str ArrayRef/;; -has '+value' => (isa => 'ArrayRef'); +has '+value' => (isa => ArrayRef); -has value_names => (isa => 'ArrayRef', is => 'ro', lazy_build => 1); +has value_names => (isa => ArrayRef, is => 'ro', lazy_build => 1); has value_map_method => ( - isa => 'Str', is => 'ro', required => 1, default => sub { 'display_name' }, + isa => Str, is => 'ro', required => 1, default => sub { 'display_name' }, ); + sub _build_value_names { my $self = shift; my $meth = $self->value_map_method; my @names = map { blessed($_) ? $_->$meth : $_ } @{ $self->value }; return [ sort @names ]; -}; -sub _empty_value { [] }; +} + +sub _empty_value { [] } + __PACKAGE__->meta->make_immutable; diff --git a/lib/Reaction/UI/ViewPort/Field/Boolean.pm b/lib/Reaction/UI/ViewPort/Field/Boolean.pm index 53356ef..626045c 100644 --- a/lib/Reaction/UI/ViewPort/Field/Boolean.pm +++ b/lib/Reaction/UI/ViewPort/Field/Boolean.pm @@ -1,16 +1,15 @@ package Reaction::UI::ViewPort::Field::Boolean; use Reaction::Class; -use aliased 'Reaction::UI::ViewPort::Field'; +extends 'Reaction::UI::ViewPort::Field'; use namespace::clean -except => [ qw(meta) ]; -extends Field; +use MooseX::Types::Moose qw/Bool/; - -has '+value' => (isa => 'Bool'); +has '+value' => (isa => Bool); override _empty_string_value => sub { 0 }; -__PACKAGE__->meta->make_immutable; +__PACKAGE__->meta->make_immutable; 1; diff --git a/lib/Reaction/UI/ViewPort/Field/Collection.pm b/lib/Reaction/UI/ViewPort/Field/Collection.pm index 02dfa75..f686c62 100644 --- a/lib/Reaction/UI/ViewPort/Field/Collection.pm +++ b/lib/Reaction/UI/ViewPort/Field/Collection.pm @@ -2,23 +2,21 @@ package Reaction::UI::ViewPort::Field::Collection; use Reaction::Class; use Scalar::Util 'blessed'; -use aliased 'Reaction::UI::ViewPort::Field::Array'; use namespace::clean -except => [ qw(meta) ]; -extends Array; - - +extends 'Reaction::UI::ViewPort::Field::Array'; has value => ( is => 'rw', lazy_build => 1, isa => 'Reaction::InterfaceModel::Collection' ); + sub _build_value_names { my $self = shift; my $meth = $self->value_map_method; my @names = map { blessed($_) ? $_->$meth : $_ } $self->value->members; return [ sort @names ]; -}; +} __PACKAGE__->meta->make_immutable; diff --git a/lib/Reaction/UI/ViewPort/Field/Container.pm b/lib/Reaction/UI/ViewPort/Field/Container.pm index 8f7dd3b..eddd899 100644 --- a/lib/Reaction/UI/ViewPort/Field/Container.pm +++ b/lib/Reaction/UI/ViewPort/Field/Container.pm @@ -5,9 +5,11 @@ use Reaction::Class; use namespace::clean -except => [ qw(meta) ]; extends 'Reaction::UI::ViewPort'; -has label => (is => 'ro', isa => 'Str'); -has name => (is => 'ro', isa => 'Str', required => 1); -has fields => (is => 'ro', isa => 'ArrayRef', required => 1); +use MooseX::Types::Moose qw/Str ArrayRef/; + +has label => (is => 'ro', isa => Str); +has name => (is => 'ro', isa => Str, required => 1); +has fields => (is => 'ro', isa => ArrayRef, required => 1); __PACKAGE__->meta->make_immutable; diff --git a/lib/Reaction/UI/ViewPort/Field/DateTime.pm b/lib/Reaction/UI/ViewPort/Field/DateTime.pm index 46fbb60..a7e953b 100644 --- a/lib/Reaction/UI/ViewPort/Field/DateTime.pm +++ b/lib/Reaction/UI/ViewPort/Field/DateTime.pm @@ -3,16 +3,16 @@ package Reaction::UI::ViewPort::Field::DateTime; use Scalar::Util 'blessed'; use Reaction::Class; use Reaction::Types::DateTime (); -use aliased 'Reaction::UI::ViewPort::Field'; use namespace::clean -except => [ qw(meta) ]; -extends Field; +extends 'Reaction::UI::ViewPort::Field'; +use MooseX::Types::Moose qw/Str/; has '+value' => (isa => Reaction::Types::DateTime::DateTime()); has value_string_default_format => ( - isa => 'Str', is => 'rw', required => 1, default => sub { "%F %H:%M:%S" } + isa => Str, is => 'rw', required => 1, default => sub { "%F %H:%M:%S" } ); around _value_string_from_value => sub { diff --git a/lib/Reaction/UI/ViewPort/Field/File.pm b/lib/Reaction/UI/ViewPort/Field/File.pm index 5d731e6..adb0155 100644 --- a/lib/Reaction/UI/ViewPort/Field/File.pm +++ b/lib/Reaction/UI/ViewPort/Field/File.pm @@ -6,23 +6,25 @@ use Reaction::Types::File; use namespace::clean -except => [ qw(meta) ]; extends 'Reaction::UI::ViewPort::Field'; - +use MooseX::Types::Moose qw/CodeRef/; has '+value' => (isa => Reaction::Types::File::File()); has uri => ( is => 'rw', lazy_build => 1); -has action => (isa => 'CodeRef', is => 'rw', required => 1); +has action => (isa => CodeRef, is => 'rw', required => 1); + sub _build_uri { my $self = shift; my $c = $self->ctx; my ($c_name, $a_name, @rest) = @{ $self->action->($self->model, $c) }; $c->uri_for($c->controller($c_name)->action_for($a_name),@rest); -}; +} + sub _value_string_from_value { shift->value->stringify; -}; - +} + __PACKAGE__->meta->make_immutable; diff --git a/lib/Reaction/UI/ViewPort/Field/Integer.pm b/lib/Reaction/UI/ViewPort/Field/Integer.pm index 7064edb..8a050a4 100644 --- a/lib/Reaction/UI/ViewPort/Field/Integer.pm +++ b/lib/Reaction/UI/ViewPort/Field/Integer.pm @@ -1,14 +1,13 @@ package Reaction::UI::ViewPort::Field::Integer; use Reaction::Class; -use aliased 'Reaction::UI::ViewPort::Field'; - use namespace::clean -except => [ qw(meta) ]; -extends Field; +use MooseX::Types::Moose qw/Int/; +extends 'Reaction::UI::ViewPort::Field'; -has '+value' => (isa => 'Int'); -__PACKAGE__->meta->make_immutable; +has '+value' => (isa => Int); +__PACKAGE__->meta->make_immutable; 1; diff --git a/lib/Reaction/UI/ViewPort/Field/Mutable/ChooseMany.pm b/lib/Reaction/UI/ViewPort/Field/Mutable/ChooseMany.pm index 6c421c8..1b7a411 100644 --- a/lib/Reaction/UI/ViewPort/Field/Mutable/ChooseMany.pm +++ b/lib/Reaction/UI/ViewPort/Field/Mutable/ChooseMany.pm @@ -8,13 +8,14 @@ my $listify = sub{ }; use namespace::clean -except => [ qw(meta) ]; +use MooseX::Types::Moose qw/ArrayRef/; extends 'Reaction::UI::ViewPort::Field'; with 'Reaction::UI::ViewPort::Field::Role::Mutable'; with 'Reaction::UI::ViewPort::Field::Role::Choices'; #MUST BE HERE, BELOW THE 'does', OR THE TRIGGER WILL NOT HAPPEN! -has '+value' => (isa => 'ArrayRef'); +has '+value' => (isa => ArrayRef); around value => sub { my $orig = shift; diff --git a/lib/Reaction/UI/ViewPort/Field/Mutable/HiddenArray.pm b/lib/Reaction/UI/ViewPort/Field/Mutable/HiddenArray.pm index fa75e3c..77df3de 100644 --- a/lib/Reaction/UI/ViewPort/Field/Mutable/HiddenArray.pm +++ b/lib/Reaction/UI/ViewPort/Field/Mutable/HiddenArray.pm @@ -1,13 +1,14 @@ package Reaction::UI::ViewPort::Field::Mutable::HiddenArray; use Reaction::Class; - use namespace::clean -except => [ qw(meta) ]; +use MooseX::Types::Moose qw/ArrayRef/; + extends 'Reaction::UI::ViewPort::Field'; with 'Reaction::UI::ViewPort::Field::Role::Mutable'; -has '+value' => (isa => 'ArrayRef'); +has '+value' => (isa => ArrayRef); around value => sub { my $orig = shift; diff --git a/lib/Reaction/UI/ViewPort/Field/Mutable/MatchingPasswords.pm b/lib/Reaction/UI/ViewPort/Field/Mutable/MatchingPasswords.pm index 845b8b5..6f7aad8 100644 --- a/lib/Reaction/UI/ViewPort/Field/Mutable/MatchingPasswords.pm +++ b/lib/Reaction/UI/ViewPort/Field/Mutable/MatchingPasswords.pm @@ -2,11 +2,12 @@ package Reaction::UI::ViewPort::Field::Mutable::MatchingPasswords; use Reaction::Class; use namespace::clean -except => [ qw(meta) ]; +use MooseX::Types::Moose qw/Str/; extends 'Reaction::UI::ViewPort::Field::Mutable::Password'; -has check_value => (is => 'rw', isa => 'Str', ); -has check_label => (is => 'rw', isa => 'Str', lazy_build => 1); +has check_value => (is => 'rw', isa => Str, ); +has check_label => (is => 'rw', isa => Str, lazy_build => 1); sub _build_check_label { my $orig_label = shift->label; diff --git a/lib/Reaction/UI/ViewPort/Field/Number.pm b/lib/Reaction/UI/ViewPort/Field/Number.pm index a7ccc55..e8bab8a 100644 --- a/lib/Reaction/UI/ViewPort/Field/Number.pm +++ b/lib/Reaction/UI/ViewPort/Field/Number.pm @@ -1,14 +1,13 @@ package Reaction::UI::ViewPort::Field::Number; use Reaction::Class; -use aliased 'Reaction::UI::ViewPort::Field'; - use namespace::clean -except => [ qw(meta) ]; -extends Field; +use MooseX::Types::Moose qw/Num/; +extends 'Reaction::UI::ViewPort::Field'; -has '+value' => (isa => 'Num'); -__PACKAGE__->meta->make_immutable; +has '+value' => (isa => Num); +__PACKAGE__->meta->make_immutable; 1; diff --git a/lib/Reaction/UI/ViewPort/Field/Password.pm b/lib/Reaction/UI/ViewPort/Field/Password.pm index edb8fd2..4d24ad6 100644 --- a/lib/Reaction/UI/ViewPort/Field/Password.pm +++ b/lib/Reaction/UI/ViewPort/Field/Password.pm @@ -1,13 +1,10 @@ package Reaction::UI::ViewPort::Field::Password; use Reaction::Class; - -use Reaction::Types::Core qw(SimpleStr); - use namespace::clean -except => [ qw(meta) ]; -extends 'Reaction::UI::ViewPort::Field::String'; - +use MooseX::Types::Common::String qw(SimpleStr); +extends 'Reaction::UI::ViewPort::Field::String'; has '+value' => (isa => SimpleStr); #has '+layout' => (default => 'password'); diff --git a/lib/Reaction/UI/ViewPort/Field/RelatedObject.pm b/lib/Reaction/UI/ViewPort/Field/RelatedObject.pm index ec5c883..2c05e59 100644 --- a/lib/Reaction/UI/ViewPort/Field/RelatedObject.pm +++ b/lib/Reaction/UI/ViewPort/Field/RelatedObject.pm @@ -2,14 +2,13 @@ package Reaction::UI::ViewPort::Field::RelatedObject; use Reaction::Class; use Scalar::Util 'blessed'; +use MooseX::Types::Moose qw/Str/; use namespace::clean -except => [ qw(meta) ]; extends 'Reaction::UI::ViewPort::Field'; - - has value_map_method => ( - isa => 'Str', is => 'ro', required => 1, default => sub { 'display_name' }, + isa => Str, is => 'ro', required => 1, default => sub { 'display_name' }, ); around _value_string_from_value => sub { diff --git a/lib/Reaction/UI/ViewPort/Field/Role/Choices.pm b/lib/Reaction/UI/ViewPort/Field/Role/Choices.pm index fa329b7..b3525cb 100644 --- a/lib/Reaction/UI/ViewPort/Field/Role/Choices.pm +++ b/lib/Reaction/UI/ViewPort/Field/Role/Choices.pm @@ -5,12 +5,12 @@ use URI; use Scalar::Util 'blessed'; use namespace::clean -except => [ qw(meta) ]; +use MooseX::Types::Moose qw/ArrayRef Str/; - -has valid_values => (isa => 'ArrayRef', is => 'ro', lazy_build => 1); -has value_choices => (isa => 'ArrayRef', is => 'ro', lazy_build => 1); +has valid_values => (isa => ArrayRef, is => 'ro', lazy_build => 1); +has value_choices => (isa => ArrayRef, is => 'ro', lazy_build => 1); has value_map_method => ( - isa => 'Str', is => 'ro', required => 1, default => sub { 'display_name' }, + isa => Str, is => 'ro', required => 1, default => sub { 'display_name' }, ); sub str_to_ident { my ($self, $str) = @_; diff --git a/lib/Reaction/UI/ViewPort/Field/Role/Mutable.pm b/lib/Reaction/UI/ViewPort/Field/Role/Mutable.pm index 59a97ad..94953f4 100644 --- a/lib/Reaction/UI/ViewPort/Field/Role/Mutable.pm +++ b/lib/Reaction/UI/ViewPort/Field/Role/Mutable.pm @@ -4,6 +4,7 @@ use Reaction::Role; use aliased 'Reaction::InterfaceModel::Action'; use aliased 'Reaction::Meta::InterfaceModel::Action::ParameterAttribute'; +use MooseX::Types::Moose qw/Int Str/; use namespace::clean -except => [ qw(meta) ]; @@ -14,11 +15,11 @@ has value => ( is => 'rw', lazy_build => 1, trigger_adopt('value'), clearer => 'clear_value', ); -has needs_sync => (is => 'rw', isa => 'Int', default => 0); +has needs_sync => (is => 'rw', isa => Int, default => 0); #should be bool? -has message => (is => 'rw', isa => 'Str', clearer => 'clear_message'); +has message => (is => 'rw', isa => Str, clearer => 'clear_message'); -has is_modified => ( +has is_modified => ( #sould be bool? is => 'ro', writer => '_set_modified', required => 1, default => 1, init_arg => undef ); diff --git a/lib/Reaction/UI/ViewPort/Field/String.pm b/lib/Reaction/UI/ViewPort/Field/String.pm index ec7e295..e699d53 100644 --- a/lib/Reaction/UI/ViewPort/Field/String.pm +++ b/lib/Reaction/UI/ViewPort/Field/String.pm @@ -1,14 +1,13 @@ package Reaction::UI::ViewPort::Field::String; use Reaction::Class; -use aliased 'Reaction::UI::ViewPort::Field'; - use namespace::clean -except => [ qw(meta) ]; -extends Field; +use MooseX::Types::Moose qw/Str/; +extends 'Reaction::UI::ViewPort::Field'; -has '+value' => (isa => 'Str'); -__PACKAGE__->meta->make_immutable; +has '+value' => (isa => Str); +__PACKAGE__->meta->make_immutable; 1; diff --git a/lib/Reaction/UI/ViewPort/Field/Text.pm b/lib/Reaction/UI/ViewPort/Field/Text.pm index b0c90da..22a67b7 100644 --- a/lib/Reaction/UI/ViewPort/Field/Text.pm +++ b/lib/Reaction/UI/ViewPort/Field/Text.pm @@ -1,14 +1,13 @@ package Reaction::UI::ViewPort::Field::Text; use Reaction::Class; -use aliased 'Reaction::UI::ViewPort::Field'; - use namespace::clean -except => [ qw(meta) ]; -extends Field; +use MooseX::Types::Moose qw/Str/; +extends 'Reaction::UI::ViewPort::Field'; -has '+value' => (isa => 'Str'); -__PACKAGE__->meta->make_immutable; +has '+value' => (isa => Str); +__PACKAGE__->meta->make_immutable; 1; diff --git a/lib/Reaction/UI/ViewPort/Image.pm b/lib/Reaction/UI/ViewPort/Image.pm index dd974e0..cd763ef 100644 --- a/lib/Reaction/UI/ViewPort/Image.pm +++ b/lib/Reaction/UI/ViewPort/Image.pm @@ -4,9 +4,12 @@ use Reaction::Class; use namespace::clean -except => [ qw(meta) ]; extends 'Reaction::UI::ViewPort'; -has uri => ( is => 'rw', isa => 'URI', required => 1); -has width => ( is => 'rw', isa => 'Int'); -has height => ( is => 'rw', isa => 'Int'); +use MooseX::Types::URI qw/Uri/; +use MooseX::Types::Moose qw/Int/; + +has uri => ( is => 'rw', isa => Uri, required => 1); +has width => ( is => 'rw', isa => Int); +has height => ( is => 'rw', isa => Int); __PACKAGE__->meta->make_immutable; diff --git a/lib/Reaction/UI/ViewPort/Object.pm b/lib/Reaction/UI/ViewPort/Object.pm index 62c71c3..9a8738e 100644 --- a/lib/Reaction/UI/ViewPort/Object.pm +++ b/lib/Reaction/UI/ViewPort/Object.pm @@ -16,24 +16,26 @@ use aliased 'Reaction::UI::ViewPort::Field::Container'; use aliased 'Reaction::InterfaceModel::Object' => 'IM_Object'; +use MooseX::Types::Moose qw/ArrayRef HashRef/; + use namespace::clean -except => [ qw(meta) ]; extends 'Reaction::UI::ViewPort'; #everything is read only right now. Later I can make somethings read-write #but first I need to figure out what depends on what so we can have decent triggers has model => (is => 'ro', isa => IM_Object, required => 1); -has fields => (is => 'ro', isa => 'ArrayRef', lazy_build => 1); +has fields => (is => 'ro', isa => ArrayRef, lazy_build => 1); has field_args => (is => 'rw'); -has field_order => (is => 'ro', isa => 'ArrayRef'); +has field_order => (is => 'ro', isa => ArrayRef); -has builder_cache => (is => 'ro', isa => 'HashRef', lazy_build => 1); -has excluded_fields => (is => 'ro', isa => 'ArrayRef', lazy_build => 1); -has included_fields => (is => 'ro', isa => 'ArrayRef', lazy_build => 1); -has computed_field_order => (is => 'ro', isa => 'ArrayRef', lazy_build => 1); +has builder_cache => (is => 'ro', isa => HashRef, lazy_build => 1); +has excluded_fields => (is => 'ro', isa => ArrayRef, lazy_build => 1); +has included_fields => (is => 'ro', isa => ArrayRef, lazy_build => 1); +has computed_field_order => (is => 'ro', isa => ArrayRef, lazy_build => 1); -has containers => ( is => 'ro', isa => 'ArrayRef', lazy_build => 1); -has container_layouts => ( is => 'rw', isa => 'ArrayRef' ); +has containers => ( is => 'ro', isa => ArrayRef, lazy_build => 1); +has container_layouts => ( is => 'rw', isa => ArrayRef ); sub BUILD { my ($self, $args) = @_; diff --git a/lib/Reaction/UI/ViewPort/SiteLayout.pm b/lib/Reaction/UI/ViewPort/SiteLayout.pm index 2c53f8b..227e8ac 100644 --- a/lib/Reaction/UI/ViewPort/SiteLayout.pm +++ b/lib/Reaction/UI/ViewPort/SiteLayout.pm @@ -1,23 +1,20 @@ package Reaction::UI::ViewPort::SiteLayout; use Reaction::Class; -use aliased 'Reaction::UI::ViewPort'; +extends 'Reaction::UI::ViewPort'; use namespace::clean -except => [ qw(meta) ]; -extends ViewPort; - - - -has 'title' => (isa => 'Str', is => 'rw', lazy_fail => 1); - -has 'static_base_uri' => (isa => 'Str', is => 'rw', lazy_fail => 1); +use MooseX::Types::Moose qw/Str HashRef/; +has 'title' => (isa => Str, is => 'rw', lazy_fail => 1); +has 'static_base_uri' => (isa => Str, is => 'rw', lazy_fail => 1); has 'meta_info' => ( - is => 'rw', isa => 'HashRef', - required => '1', default => sub { {} } + is => 'rw', + isa => HashRef, + required => 1, + default => sub { {} } ); __PACKAGE__->meta->make_immutable; - 1; diff --git a/lib/Reaction/UI/ViewPort/URI.pm b/lib/Reaction/UI/ViewPort/URI.pm index 1a266a7..a23330f 100644 --- a/lib/Reaction/UI/ViewPort/URI.pm +++ b/lib/Reaction/UI/ViewPort/URI.pm @@ -2,9 +2,10 @@ package Reaction::UI::ViewPort::URI; use Reaction::Class; use namespace::clean -except => [ qw(meta) ]; +use MooseX::Types::URI qw/Uri/; extends 'Reaction::UI::ViewPort'; -has uri => ( is => 'rw', isa => 'URI', required => 1); +has uri => ( is => 'rw', isa => Uri, required => 1); has display => ( is => 'rw' ); __PACKAGE__->meta->make_immutable; diff --git a/lib/Reaction/UI/Widget/Action.pm b/lib/Reaction/UI/Widget/Action.pm index 0994e6e..3d8b1c4 100644 --- a/lib/Reaction/UI/Widget/Action.pm +++ b/lib/Reaction/UI/Widget/Action.pm @@ -6,7 +6,10 @@ use namespace::clean -except => [ qw(meta) ]; extends 'Reaction::UI::Widget::Object::Mutable'; after fragment widget { - arg 'method' => $_{viewport}->method; + my $vp = $_{viewport}; + arg 'method' => $vp->method; + arg 'form_id' => $vp->location; + arg 'action' => $vp->has_action ? $vp->action : ''; }; implements fragment message { diff --git a/share/skin/base/layout/action.tt b/share/skin/base/layout/action.tt index 86eabeb..b5cb708 100644 --- a/share/skin/base/layout/action.tt +++ b/share/skin/base/layout/action.tt @@ -1,7 +1,7 @@ =for layout widget
-
+ [% header %] [% container_list %] [% buttons %] -- cgit v1.2.3-54-g00ecf