Mercurial > pub > Impl
comparison Lib/Form/ValueItem.pm @ 0:03e58a454b20
Создан репозитарий
author | Sergey |
---|---|
date | Tue, 14 Jul 2009 12:54:37 +0400 |
parents | |
children | 16ada169ca75 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:03e58a454b20 |
---|---|
1 package Form::ValueItem; | |
2 use strict; | |
3 use base qw(Form::Item); | |
4 use Common; | |
5 use Form::Filter; | |
6 | |
7 BEGIN { | |
8 DeclareProperty Value => ACCESS_ALL; | |
9 DeclareProperty Type => ACCESS_READ; | |
10 DeclareProperty Schema => ACCESS_READ; | |
11 } | |
12 | |
13 sub CTOR { | |
14 my ($this,%args) = @_; | |
15 | |
16 $this->SUPER::CTOR(@args{qw(Id Form Parent Attributes)}); | |
17 $this->{$Type} = $args{'Type'}; | |
18 $this->{$Schema} = $args{'Schema'} or die new Exception('A field schema is required'); | |
19 } | |
20 | |
21 sub isEmpty { | |
22 my ($this) = @_; | |
23 | |
24 return length $this->{$Value} ? 0 : 1; | |
25 } | |
26 | |
27 sub Validate { | |
28 my ($this,$rhDisableFilters) = @_; | |
29 | |
30 $rhDisableFilters ||= {}; | |
31 | |
32 my @errors; | |
33 | |
34 foreach my $filter (grep {$_->SUPPORTED_CONTEXT & (Form::Filter::CTX_SINGLE) and not exists $rhDisableFilters->{$_}} map {$_->Instance} $this->{$Schema}->Filters) { | |
35 my $result = $filter->Invoke($this,Form::Filter::CTX_SINGLE | Form::Filter::CTX_EXISTENT,$this->{$Schema},$this->Parent); | |
36 if ($result->State == Form::FilterResult::STATE_SUCCESS_STOP) { | |
37 return (); | |
38 } elsif ($result->State == Form::FilterResult::STATE_ERROR) { | |
39 push @errors,$result; | |
40 } | |
41 } | |
42 | |
43 return @errors; | |
44 } | |
45 | |
46 | |
47 1; |