Initial import.
[siap.git] / manager / core / form / fields / FieldMultiItems.php
CommitLineData
696f20d5
MS
1<?\r
2class FieldMultiItems extends Field {\r
3 var $menu;\r
4 \r
5 var $_table_rel;\r
6 var $_table_rel_from_index;\r
7 var $_table_rel_to_index;\r
8 \r
9 var $number_cols;\r
10 \r
11 function FieldMultiItems($tmp_params) {\r
12 parent::Field("multiItems", $tmp_params[0]);\r
13 \r
14 $this->label = $tmp_params[1];\r
15 $this->validation = "CHK";\r
16 \r
17 if (isset($tmp_params[2])) {\r
18 $this->_table_rel = $tmp_params[2];\r
19 }\r
20 \r
21 if (isset($tmp_params[3])) {\r
22 $this->_table_rel_from_index = $tmp_params[3];\r
23 }\r
24 \r
25 if (isset($tmp_params[4])) {\r
26 $this->_table_rel_to_index = $tmp_params[4];\r
27 }\r
28 \r
29 $this->is_required = false;\r
30 $this->is_sql_affect = false;\r
31 $this->number_cols = 4;\r
32 \r
33 $this->accept_flags = "IUL";\r
34 }\r
35 \r
36 //private functions\r
37 function getInput() {\r
38 global $routine;\r
39 global $db;\r
40 global $form;\r
41 \r
42 //get values\r
43 $arr_values = array();\r
44 \r
45 if ($routine == "update") {\r
46 $sql = "select " . $this->_table_rel_to_index . " as k from " . $this->_table_rel . " where " . $this->_table_rel_from_index . " = '" . $form->fields("id") . "'";\r
47 $rs = $db->execute($sql);\r
48 \r
49 while (!$rs->EOF) {\r
50 $arr_values[$rs->fields("k")] = true;\r
51 \r
52 $rs->moveNext();\r
53 }\r
54 }\r
55 \r
56 \r
57 //list\r
58 $i = 1;\r
59 $s = "";\r
60 $html = "<table cellspaccing='0' cellpadding='0' width='100%'><tr><td>";\r
61 $disabled = '';\r
62 if($this->is_static){\r
63 $disabled = ' disabled ';\r
64 }\r
65 foreach ($this->elements as $k => $v) {\r
66 if (array_key_exists($k, $arr_values)) {\r
67 $s = " checked".$disabled;\r
68 } else {\r
69 $s = "".$disabled;\r
70 }\r
71 \r
72 $id = $this->_getFormatedId($i);\r
73 \r
74 $html .= "<div class='item' style='width:". floor(100 / $this->number_cols) ."%;'>";\r
75 $html .= "<div id='input'>";\r
76 $html .= "<input type='checkbox' id='" . $id . "' name='" . $this->name . "_" . $i . "' value='" . $k . "'" . $s . " " . $this->input_extra . ">";\r
77 $html .= "</div><div id='label' style='width:auto;'>";\r
78 $html .= "<label for='" . $id . "'>" . $v . "</label>";\r
79 $html .= "</div>";\r
80 $html .= "</div>" . LF;\r
81 \r
82 $i++;\r
83 }\r
84 \r
85 $html .= "<input type='hidden' name='" . $this->name . "_total' id='" . $this->_getFormatedId() . "' value='" . ($i-1) . "'>";\r
86 \r
87 if (($this->menu != "") && (!$this->is_static)) {\r
88 global $menu;\r
89 \r
90 $n = "";\r
91 \r
92 foreach ($menu->_itens as $k => $v) {\r
93 foreach ($v["subs"] as $k2 => $v2) {\r
94 if ($v2->class == $this->menu) {\r
95 $n = $k . "-" . $k2;\r
96 \r
97 break;\r
98 }\r
99 }\r
100 }\r
101 \r
102 if ($n != "") {\r
103 $html .= "</td><td align='right' valign='top' width='0'><img style='position: absolute; margin-left: -12px; cursor: pointer;' title='Editar registros' align='top' onclick=\"javascript: { document.location = '?menu=" . $n . "'; }\" src='../img/icons/table_edit.gif'>";\r
104 }\r
105 }\r
106 \r
107 $html .= "</td></tr></table>";\r
108 if($this->is_static){\r
109 $this->value = $html;\r
110 } else {\r
111 return $html;\r
112 }\r
113 }\r
114 \r
115 function onPosPost() {\r
116 global $db;\r
117 global $form;\r
118 global $routine;\r
119 global $input;\r
120 \r
121 if ($this->_table_rel != "") {\r
122 if ($routine == "update") {\r
123 $this->onDelete();\r
124 }\r
125 \r
126 $total = $input->post($this->name . "_total");\r
127 $i = 1;\r
128 $id = $form->fields("id");\r
129 \r
130 $inserts = array();\r
131 \r
132 while ($i <= $total) {\r
133 $v = $input->post($this->name . "_" . $i);\r
134 \r
135 if ($v != "") {\r
136 $inserts[] = "('" . $id . "', '" . $v . "')";\r
137 }\r
138 \r
139 $i++;\r
140 }\r
141 \r
142 if (sizeof($inserts) > 0) {\r
143 $sql = "insert into " . $this->_table_rel . " (" . $this->_table_rel_from_index . ", " . $this->_table_rel_to_index . ") values " . implode(", ", $inserts) . ";";\r
144 $db->execute($sql);\r
145 }\r
146 }\r
147 }\r
148 \r
149 function onDelete() {\r
150 global $form;\r
151 global $db;\r
152 \r
153 $sql = "delete from " . $this->_table_rel . " where " . $this->_table_rel_from_index . " = '" . $form->fields("id") . "'";\r
154 $db->execute($sql);\r
155 }\r
156 \r
157 function getHtmlList($tmp_extra) {\r
158 $this->formatValue();\r
159 \r
160 $this->element_key = $this->value;\r
161 if (array_key_exists($this->value, $this->elements)) {\r
162 $this->value = $this->elements[$this->value];\r
163 } else {\r
164 $this->value = "";\r
165 }\r
166 \r
167 if ($this->value == "") {\r
168 if ($this->element_key == "") {\r
169 $this->value = "<font color='silver'>(vazio)</font>";\r
170 } else {\r
171 $this->value = "<font color='silver'>[" . $this->element_key . "]</font>";\r
172 }\r
173 }\r
174 \r
175 $html = "<td " . $tmp_extra . ">" . $this->value . "</td>" . LF;\r
176 \r
177 return $html;\r
178 }\r
179}\r
180?>