message and error message support. why has this been missing for so long?
groditi [Thu, 8 Jan 2009 22:46:04 +0000 (22:46 +0000)]
lib/ComponentUI/Controller/TestModel/Foo.pm
lib/Reaction/UI/ViewPort/Action.pm
lib/Reaction/UI/Widget/Action.pm
share/skin/base/layout/action.tt

index 99f33c1..56839a2 100644 (file)
@@ -23,6 +23,9 @@ __PACKAGE__->config(
         excluded_fields => [qw/id/],
       },
     },
+    delete => {
+      ViewPort => {message => 'Are you sure you want to delete this Foo?'}
+    },
   },
 );
 
index 6a2ac58..97f5a44 100644 (file)
@@ -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',
index 2957317..9c94174 100644 (file)
@@ -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';
index 5ef48cd..581c886 100644 (file)
@@ -11,6 +11,8 @@
 
 =for layout header
 
+[% error_message %]
+
 =for layout container_list
 
 [% call_next %]
 
 =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