Subversion Repositories owmoduleforms

[/] [trunk/] [classes/] [formelements/] [owformcontainer.php] - Blame information for rev 32

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 3 fmagnan
<?php
2
 
3
class owFormContainer extends owFormElement
4
{
5 10 fmagnan
    var $form_elements;
6 32 fmagnan
    var $type='container';
7 8 fmagnan
 
8 10 fmagnan
    public function __construct($options=array())
9
    {
10
        parent::__construct($options);
11 16 fmagnan
        $html_container_attributes = array('onclick', 'ondblclick', 'onmousedown', 'onmousemove', 'onmouseout','onmouseover', 'onmouseup', 'onkeydown', 'onkeypress', 'onkeyup');
12
        $this->available_html_attributes = array_merge($this->available_html_attributes, $html_container_attributes);
13
        $this->form_elements = array();
14 10 fmagnan
    }
15 8 fmagnan
 
16 26 fmagnan
    public function addFormElement($element)
17 10 fmagnan
    {
18
        if ($element instanceof owFormElement)
19
        {
20
            $this->form_elements[] = $element;
21
        }
22
        else
23
        {
24 22 fmagnan
            eZDebug::writeError('Unable to add element ' . get_class($element));
25 10 fmagnan
        }
26
    }
27 8 fmagnan
 
28 26 fmagnan
    public function checkRequired()
29 10 fmagnan
    {
30 17 fmagnan
        $is_empty = false;
31
        if ($this->isRequired())
32
        {
33
            $is_empty = true;
34
            foreach ($this->children() as $element)
35
            {
36
                if ($element->getValue())
37
                {
38
                    $is_empty=false;
39
                }
40
            }
41
        }
42
        if ($is_empty)
43
        {
44
            $this->addRequiredError();
45
        }
46
    }
47
 
48 26 fmagnan
    public function children()
49 19 fmagnan
    {
50 26 fmagnan
        return $this->form_elements;
51
    }
52
 
53
    public function getSubmittedButton()
54
    {
55 19 fmagnan
        foreach ($this->children() as $element)
56
        {
57 26 fmagnan
            if ( $button = $element->getSubmittedButton())
58 19 fmagnan
            {
59 26 fmagnan
                return $button;
60 19 fmagnan
            }
61
        }
62
        return false;
63
    }
64 20 fmagnan
 
65 26 fmagnan
    public function getSubmittedData()
66 20 fmagnan
    {
67
        $valued_elements = array();
68
        foreach($this->children() as $child)
69
        {
70
            if ($child instanceof owFormInput)
71
            {
72 26 fmagnan
                $valued_elements[$child->getName()] = $child;
73 20 fmagnan
            }
74
            else
75
            {
76
                $valued_elements = array_merge($valued_elements, $child->getSubmittedData());
77
            }
78
        }
79
        return $valued_elements;
80
    }
81 22 fmagnan
 
82 26 fmagnan
    public function getValue()
83 22 fmagnan
    {
84 26 fmagnan
        $value = array();
85
        foreach($this->children() as $child)
86
        {
87
            $value[$child->getName()] = $child->getValue();
88
        }
89
        return $value;
90
    }
91
 
92
    public function isMultipartForm()
93
    {
94
        foreach ($this->children() as $element)
95
        {
96
            if ($element->isMultipartForm())
97
            {
98
                return true;
99
            }
100
        }
101
        return false;
102
    }
103
 
104
    public function processSubmit()
105
    {
106 22 fmagnan
        foreach ($this->children() as $child)
107
        {
108
            $child->processSubmit();
109
        }
110
    }
111 26 fmagnan
 
112
    public function validate($http_method)
113
    {
114
        foreach ($this->children() as $element)
115
        {
116
            $element->setValueFromRequest($http_method);
117
            $element->checkRequired();
118
            $element->validate($http_method);
119
            foreach ($element->errors as $error)
120
            {
121
                if (!array_key_exists('children_errors', $this->errors))
122
                {
123
                    $this->errors['children_errors'] = array();
124
                }
125
                $this->errors['children_errors'][] = $error;
126
            }
127
        }
128
        $this->checkRequired();
129
        parent::validate($http_method);
130
    }
131
 
132 3 fmagnan
}
133
 
134
?>