factor out error_for_attribute so that can emulate required => sub {} behaviour
wreis [Thu, 28 Feb 2008 16:20:20 +0000 (16:20 +0000)]
lib/Reaction/InterfaceModel/Action.pm
lib/Reaction/UI/Widget/Field/Mutable.pm

index 68a6e5b..0c17b4e 100644 (file)
@@ -34,7 +34,7 @@ class Action which {
     my ($self) = @_;
     foreach my $attr ($self->parameter_attributes) {
       my $predicate = $attr->predicate;
-      if ($attr->is_required) {
+      if ($self->attribute_is_required($attr)) {
         return 0 unless $self->$predicate;
       }
       if ($attr->has_valid_values) {
@@ -60,7 +60,7 @@ class Action which {
 
   implements error_for_attribute => as {
     my ($self, $attr) = @_;
-    if ($attr->is_required) {
+    if ($self->attribute_is_required($attr)) {
       my $predicate = $attr->predicate;
       unless ($self->$predicate) {
         return $attr->name." is required";
@@ -75,6 +75,11 @@ class Action which {
     return; # ok
   };
 
+  implements attribute_is_required => as {
+    my ($self, $attr) = @_;
+    return $attr->is_required;
+  };
+
   sub sync_all { }
 
 };
index e323c33..98d7e9b 100644 (file)
@@ -18,7 +18,9 @@ class Mutable is 'Reaction::UI::Widget::Field', which {
    };
 
    implements fragment field_is_required {
-     if ( $_{viewport}->attribute->is_required ) {
+     my $model = $_{viewport}->model;
+     my $attr  = $_{viewport}->attribute;
+     if ( $model->attribute_is_required($attr) ) {
          render 'field_is_required_yes';
      } else {
          render 'field_is_required_no';