diff options
-rw-r--r-- | lib/ComponentUI/Controller/TestModel/Foo.pm | 3 | ||||
-rw-r--r-- | lib/Reaction/UI/ViewPort/Action.pm | 5 | ||||
-rw-r--r-- | lib/Reaction/UI/Widget/Action.pm | 12 | ||||
-rw-r--r-- | share/skin/base/layout/action.tt | 8 |
4 files changed, 26 insertions, 2 deletions
diff --git a/lib/ComponentUI/Controller/TestModel/Foo.pm b/lib/ComponentUI/Controller/TestModel/Foo.pm index 99f33c1..56839a2 100644 --- a/lib/ComponentUI/Controller/TestModel/Foo.pm +++ b/lib/ComponentUI/Controller/TestModel/Foo.pm @@ -23,6 +23,9 @@ __PACKAGE__->config( excluded_fields => [qw/id/], }, }, + delete => { + ViewPort => {message => 'Are you sure you want to delete this Foo?'} + }, }, ); diff --git a/lib/Reaction/UI/ViewPort/Action.pm b/lib/Reaction/UI/ViewPort/Action.pm index 6a2ac58..97f5a44 100644 --- a/lib/Reaction/UI/ViewPort/Action.pm +++ b/lib/Reaction/UI/ViewPort/Action.pm @@ -2,7 +2,7 @@ package Reaction::UI::ViewPort::Action; use Reaction::Class; -use MooseX::Types::Moose qw/Int/; +use MooseX::Types::Moose qw/Int Str/; use Reaction::Types::Core qw/NonEmptySimpleStr/; use namespace::clean -except => [ qw(meta) ]; @@ -10,6 +10,9 @@ use namespace::clean -except => [ qw(meta) ]; extends 'Reaction::UI::ViewPort::Object::Mutable'; with 'Reaction::UI::ViewPort::Action::Role::OK'; +has message => (is => 'rw', isa => Str); +has error_message => (is => 'rw', isa => Str); + #this has to fucking go. it BLOWS. has method => ( is => 'rw', diff --git a/lib/Reaction/UI/Widget/Action.pm b/lib/Reaction/UI/Widget/Action.pm index 2957317..9c94174 100644 --- a/lib/Reaction/UI/Widget/Action.pm +++ b/lib/Reaction/UI/Widget/Action.pm @@ -9,6 +9,18 @@ after fragment widget { arg 'method' => $_{viewport}->method; }; +implements fragment message { + return unless $_{viewport}->has_message; + arg message_string => $_{viewport}->message; + render 'message_layout'; +}; + +implements fragment error_message { + return unless $_{viewport}->has_error_message; + arg message_string => $_{viewport}->error_message; + render 'error_message_layout'; +}; + implements fragment ok_button_fragment { if (grep { $_ eq 'ok' } $_{viewport}->accept_events) { arg 'event_id' => event_id 'ok'; diff --git a/share/skin/base/layout/action.tt b/share/skin/base/layout/action.tt index 5ef48cd..581c886 100644 --- a/share/skin/base/layout/action.tt +++ b/share/skin/base/layout/action.tt @@ -11,6 +11,8 @@ =for layout header +[% error_message %] + =for layout container_list [% call_next %] @@ -27,7 +29,11 @@ =for layout message_layout -<span class="action_message">[% as_string %]</span> +<span class="action_message">[% message_string %]</span> + +=for layout message_layout + +<span class="action_error_message">[% message_string %]</span> =for layout standard_button |