aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/ComponentUI/Controller/TestModel/Foo.pm3
-rw-r--r--lib/Reaction/UI/ViewPort/Action.pm5
-rw-r--r--lib/Reaction/UI/Widget/Action.pm12
-rw-r--r--share/skin/base/layout/action.tt8
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