Commit | Line | Data |
---|---|---|
696f20d5 MS |
1 | <? |
2 | class FieldForm extends Field { | |
3 | var $default_order; | |
4 | ||
5 | var $_field_rel; | |
6 | var $_field_parent_id; | |
7 | ||
8 | var $_flags2; //Permission flags [IUD] | |
9 | ||
10 | var $_fieldset; //Fields loaded from config | |
11 | var $_fields_index; //Index of fields for addField method | |
12 | ||
13 | var $db_table; //Class DBTabele of table | |
14 | ||
15 | function FieldForm($tmp_params) { | |
16 | parent::Field("form", $tmp_params[0]); | |
17 | ||
18 | $this->label = $tmp_params[1]; | |
19 | $this->is_sql_affect = false; | |
20 | $this->flags_accept = "IU"; | |
21 | $this->is_required = false; | |
22 | ||
23 | $this->_flags2 = $tmp_params[2]; | |
24 | ||
25 | $this->_field_rel = $tmp_params[3]; | |
26 | ||
27 | global $form; | |
28 | $this->_field_parent_id = $form->key_field; | |
29 | ||
30 | $this->db_table = new DBTable($tmp_params[0]); | |
31 | } | |
32 | ||
33 | function newField($tmp_type, $tmp_params = array()) { | |
34 | global $form; | |
35 | ||
36 | $this->_fields_index++; | |
37 | ||
38 | if (!in_array($tmp_type, $form->_fields_loaded)) { | |
39 | global $load; | |
40 | $include = $load->manager("core/form/fields/Field" . ucfirst($tmp_type) . ".php", false); | |
41 | ||
42 | if (!$include) { | |
43 | $load->config("exeptions/fields/Field" . ucfirst($tmp_type) . ".php"); | |
44 | } | |
45 | ||
46 | $form->_fields_loaded[] = $tmp_type; | |
47 | } | |
48 | ||
49 | if ($tmp_params == array()) { | |
50 | $tmp_params = array("", ""); | |
51 | } | |
52 | ||
53 | $class = "Field" . $tmp_type; | |
54 | $f = new $class($tmp_params); | |
55 | ||
56 | $f->index_list = $this->_fields_index; | |
57 | $f->index_filter = $this->_fields_index; | |
58 | $f->index_form = $this->_fields_index; | |
59 | ||
60 | //Set value | |
61 | $f->value = $this->db_table->fields($f->name); | |
62 | $f->formatValue(); | |
63 | $f->value_static = $f->value; | |
64 | ||
65 | return $f; | |
66 | } | |
67 | ||
68 | function addField(&$tmp_field, $tmp_flags = "") { | |
69 | if ($tmp_field->is_html) { | |
70 | $tmp_flags = "IU"; | |
71 | } | |
72 | ||
73 | $tmp_field->flags = $tmp_flags; | |
74 | ||
75 | if ($tmp_field->is_static) { | |
76 | $tmp_field->is_required = false; | |
77 | ||
78 | if ($tmp_field->value_static == "") { | |
79 | $tmp_field->is_sql_affect = false; | |
80 | } | |
81 | } | |
82 | ||
83 | $this->_fieldset[] = $tmp_field; | |
84 | } | |
85 | ||
86 | //private functions | |
87 | function testFlag2($tmp_flag) { | |
88 | if (strpos($this->_flags2, $tmp_flag) !== false) { | |
89 | return true; | |
90 | } else { | |
91 | return false; | |
92 | } | |
93 | } | |
94 | ||
95 | function getInput() { | |
96 | $html = $this->_getList(); | |
97 | ||
98 | return $html; | |
99 | } | |
100 | ||
101 | function _getList() { | |
102 | global $form; | |
103 | global $db; | |
104 | global $routine; | |
105 | ||
106 | $old_routine = $routine; | |
107 | $routine = "list"; | |
108 | ||
109 | $headers = $this->getHeaders(); | |
110 | ||
111 | $sql = "select * from " . $this->name . " where " . $this->_field_rel . " = '" . $form->fields($form->key_field) . "' " . $headers["sql"]; | |
112 | $rs_list = $db->execute($sql); | |
113 | ||
114 | $html = ' | |
115 | <table cellpadding="0" cellspacing="1" width="768" class="listagem"> | |
116 | <thead> | |
117 | <tr> | |
118 | '; | |
119 | if ($this->testFlag2("D")) { | |
120 | $html .= '<td class="header_cinza" width="30"><input id="chk_todos" type="checkbox" onClick="javascript: check(this); "></td>'; | |
121 | } | |
122 | ||
123 | $html .= $headers["html"]; | |
124 | ||
125 | $html .= '</tr> | |
126 | </thead> | |
127 | <tbody> | |
128 | '; | |
129 | if (!$rs_list->EOF) { | |
130 | $css = 2; | |
131 | $i = 1; | |
132 | ||
133 | $fields = $this->_fieldset; | |
134 | ||
135 | while (!$rs_list->EOF) { | |
136 | $css = 3 - $css; | |
137 | ||
138 | $html .= "<tr id='tr_" . $i . "' onmouseover=\"javascript: listOverOut('over', '" . $i . "');\" onmouseout=\"javascript: listOverOut('out', '" . $i . "');\">" . CRLF; | |
139 | ||
140 | $extra = "class='td" . $css . "' "; | |
141 | if ($this->testFlag2("U")) { | |
142 | $extra .= "onclick=\"javascript: listUpdate('" . $rs_list->fields($this->db_table->key_field) . "');\""; | |
143 | } else { | |
144 | $extra .= "style=\"cursor: default;\""; | |
145 | } | |
146 | ||
147 | if ($this->testFlag2("D")) { | |
148 | $html .= " <td align='center'><input type='checkbox' name='chk_" . $i . "' id='chk_" . $i . "' value='" . $rs_list->fields($this->db_table->key_field) . "' onclick=\"javascript: { checkMostrar(); listOverOut('over', '" . $i . "'); }\"></td>" . CRLF; | |
149 | } | |
150 | ||
151 | $this->db_table->setValuesFromRs($rs_list); | |
152 | ||
153 | foreach ($fields as $k => $v) { | |
154 | if ($v->testFlag("L")) { | |
155 | $v->value = $rs_list->fields($v->name); | |
156 | $v->is_formated = false; | |
157 | ||
158 | $html .= " " . trim($v->getHtmlList($extra)) . LF; | |
159 | } | |
160 | } | |
161 | ||
162 | $html .= "</tr>"; | |
163 | ||
164 | $rs_list->moveNext(); | |
165 | $i++; | |
166 | } | |
167 | } else { | |
168 | $html .= '<tr><td colspan="100%" align="center" style="height: 40px; background: #ECD9D5;"><strong style="color: #9D412C;">Nenhum registro encontrado</strong></td></tr>'; | |
169 | } | |
170 | ||
171 | $html .= '</table>'; | |
172 | ||
173 | $routine = $old_routine; | |
174 | ||
175 | return $html; | |
176 | } | |
177 | ||
178 | function getHeaders() { | |
179 | $order = $this->_getOrderValue(); | |
180 | $order_parsed = explode("#", $order); | |
181 | ||
182 | if (sizeof($order_parsed) > 1) { | |
183 | $order_name = $order_parsed[0]; | |
184 | $order_direction = $order_parsed[1]; | |
185 | $sql = " order by " . $order_name . " " . $order_direction; | |
186 | } else { | |
187 | $order_name = ""; | |
188 | $order_direction = ""; | |
189 | $sql = ""; | |
190 | } | |
191 | ||
192 | $fields = $this->_fieldset; | |
193 | ||
194 | $html = ""; | |
195 | foreach($fields as $k => $v) { | |
196 | if ($v->testFlag("L")) { | |
197 | $css = ""; | |
198 | $a = ""; | |
199 | if ($v->testFlag("O")) { | |
200 | if ($v->name == $order_name) { | |
201 | if ($order_direction == "asc") { | |
202 | $css = "_down"; | |
203 | $a = "onclick=\"javascript: listOrder('" . $v->name . "#desc');\" style='cursor: pointer;' title='Ordem decrescente'"; | |
204 | } else { | |
205 | $css = "_up"; | |
206 | $a = "onclick=\"javascript: listOrder('" . $v->name . "#asc');\" style='cursor: pointer;' title='Ordem crescente'"; | |
207 | } | |
208 | } else { | |
209 | $a = "onclick=\"javascript: listOrder('" . $v->name . "#asc');\" style='cursor: pointer;' title='Ordem crescente'"; | |
210 | } | |
211 | } | |
212 | ||
213 | if ($v->list_width > 0) { | |
214 | $a .= " width='" . $v->list_width . "'"; | |
215 | } | |
216 | ||
217 | $html .= "<td class='header" . $css . "' " . $a . ">" . $v->label . "</td>" . LF; | |
218 | } | |
219 | } | |
220 | ||
221 | return array("html" => $html, "sql" => $sql); | |
222 | } | |
223 | ||
224 | function _getOrderValue() { | |
225 | global $input; | |
226 | global $menu; | |
227 | ||
228 | $sub = $menu->index . "-" . $menu->index_sub . " : " . $this->name; | |
229 | ||
230 | if ($input->post("order") != "") { | |
231 | $r = $input->post("order"); | |
232 | } elseif ($input->session($sub . " order") != "") { | |
233 | $r = $input->session($sub . " order"); | |
234 | } elseif ($this->default_order != "") { | |
235 | $r = $this->default_order; | |
236 | } else { | |
237 | $r = ""; | |
238 | } | |
239 | ||
240 | $input->setSession($sub . " order", $r); | |
241 | ||
242 | return $r; | |
243 | } | |
244 | } | |
245 | ?> |