Initial import.
[siap.git] / manager / core / form / fields / FieldForm.php
CommitLineData
696f20d5
MS
1<?
2class 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?>