diff Lib/Form/Filter/Depends.pm @ 0:03e58a454b20

Создан репозитарий
author Sergey
date Tue, 14 Jul 2009 12:54:37 +0400
parents
children 16ada169ca75
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Lib/Form/Filter/Depends.pm	Tue Jul 14 12:54:37 2009 +0400
@@ -0,0 +1,34 @@
+package Form::Filter::Depends;
+use base qw(Form::Filter);
+
+use Common;
+
+BEGIN {
+    DeclareProperty Fields => ACCESS_READ;
+}
+
+sub SUPPORTED_CONTEXT { Form::Filter::CTX_SINGLE | Form::Filter::CTX_SET }
+
+sub CTOR {
+    my ($this,$name,$message,@fields) = @_;
+    
+    $this->SUPER::CTOR($name,$message);
+    $this->{$Fields} = \@fields;
+}
+
+sub Invoke {
+    my ($this,$object,$context,$schemaTarget) = @_;
+
+    foreach my $field (@{$this->{$Fields}}) {
+        my $objProv = $object->Navigate($object->Form->MakeItemId($field,$object->Parent));
+
+        if ( not $objProv or $objProv->isEmpty ) {
+            return new Form::FilterResult(State => Form::FilterResult::STATE_STOP);
+        }
+
+    }
+
+    return new Form::FilterResult(State => Form::FilterResult::STATE_SUCCESS_STAY);
+}
+
+1;
\ No newline at end of file