|
Moderator |
Joined: Fri Jul 20, 2007 8:27 am Posts: 1259
|
I hacked some custom fields into the database and noticed that I could not edit the data when it was displayed. The patch below is the minimum amount of changes to get data edit working. [attachment=0]
edit_custom_fields.txt [3.96 KiB]
Downloaded 340 times
[code] --- code_igniter/application/controllers/ajax.php Thu Jan 15 01:13:00 1970 +++ code_igniter/application/controllers/ajax.php Thu Jan 15 01:13:00 1970 @@ -113,15 +113,15 @@ if ((mb_substr_count($this->data['field_name'], 'custom_') > 0) && ($access_level >= 7)) { $data = explode("_", $this->data['field_name']); $sql = "SELECT * FROM sys_man_additional_fields_data WHERE field_details_id = ? AND system_id = ?"; - $data_array = array($data[3], $this->data['system_id']); + $data_array = array($data[2], $this->data['system_id']); $query = $this->db->query($sql, $data_array); if ($query->num_rows() > 0) { - $sql = "update sys_man_additional_fields_data SET field_" . $data[1] . " = '" . urldecode($this->data['field_data']) . "' WHERE field_details_id = '" . $data[3] . "'"; + $sql = "update sys_man_additional_fields_data SET field_" . $data[1] . " = '" . urldecode($this->data['field_data']) . "' WHERE field_details_id = " . $data[2]; $query = $this->db->query($sql); $this->m_audit_log->insert_audit_event("sys_man_additional_fields_data", urldecode($this->data['field_data']), $this->data['system_id']); echo urldecode($this->data['field_data']); } else { - $sql = "insert into sys_man_additional_fields_data (field_details_id, system_id, field_id, field_" . $data[1] . ") VALUES (NULL, '" . $this->data['system_id'] . "', '" . $data[3] . "', '" . urldecode($this->data['field_data']) . "')"; + $sql = "insert into sys_man_additional_fields_data (field_details_id, system_id, field_id, field_" . $data[1] . ") VALUES (NULL, '" . $this->data['system_id'] . "', " . $data[2] . ", '" . urldecode($this->data['field_data']) . "')"; $query = $this->db->query($sql, $data); $this->m_audit_log->insert_audit_event("sys_man_additional_fields_data", urldecode($this->data['field_data']), $this->data['system_id']); echo urldecode($this->data['field_data']); --- code_igniter/application/models/m_additional_fields.php Thu Jan 15 01:13:00 1970 +++ code_igniter/application/models/m_additional_fields.php Thu Jan 15 01:13:00 1970 @@ -50,6 +50,7 @@ sys_man_additional_fields.field_name, sys_man_additional_fields.field_type, sys_man_additional_fields.field_placement, + sys_man_additional_fields_data.field_details_id, sys_man_additional_fields_data.field_datetime, sys_man_additional_fields_data.field_varchar, sys_man_additional_fields_data.field_int, --- code_igniter/application/views/theme-tango/v_display_system.php Thu Jan 15 01:13:00 1970 +++ code_igniter/application/views/theme-tango/v_display_system.php Thu Jan 15 01:13:00 1970 @@ -2578,8 +2578,7 @@ { if ($field->field_placement == $field_placement) { - $data_id = "field_" . $field->field_type; - $data_id = $field->$data_id; + $data_id = $field->field_lower_name; $data_value = "field_" . $field->field_type; $data_value = $field->$data_value; $width = "120"; @@ -2589,8 +2588,8 @@ } # TODO - fix this string output hack with real html entities echo "<div style=\"float: left; width: 90%; \">\n"; - echo "<label for=\"custom_" . $field->field_type . "_" . str_replace(" ", "_", str_replace("#", "", ($data_id))) . "_" . $field->field_id . "_placement\" >" . __($field->field_name) . ": </label>"; - echo "<span id=\"custom_" . $field->field_type . "_" . str_replace(" ", "_", str_replace("#", "", ($data_id))) . "_" . $field->field_id . "_placement\"" . $edit . ">" . print_something($data_value) . "</span>\n"; + echo "<label for=\"custom_" . $field->field_type . "_" . $field->field_details_id . "_" . str_replace(" ", "_", str_replace("#", "", ($data_id))) . "_placement\" >" . __($field->field_name) . ": </label>"; + echo "<span id=\"custom_" . $field->field_type . "_" . $field->field_details_id . "_" . str_replace(" ", "_", str_replace("#", "", ($data_id))) . "_placement\" " . $edit . ">" . print_something($data_value) . "</span>\n"; echo "</div>\n"; } }[/code]
|
|