From 9cdfc0ce8a5c8a272161c3db28ff19a73623b631 Mon Sep 17 00:00:00 2001 From: jekkos Date: Sun, 23 Sep 2018 01:47:14 +0200 Subject: [PATCH] Fix css overflow + form refresh --- application/controllers/Items.php | 19 ++++++++++++++++++- application/helpers/tabular_helper.php | 14 ++++++++++---- application/models/Item.php | 3 +-- .../models/reports/Detailed_receivings.php | 5 ++--- application/models/reports/Detailed_sales.php | 5 ++--- application/views/attributes/form.php | 1 - application/views/attributes/item.php | 12 +++++------- application/views/items/form.php | 4 +++- 8 files changed, 41 insertions(+), 22 deletions(-) diff --git a/application/controllers/Items.php b/application/controllers/Items.php index be843fc00..c3a50ae09 100644 --- a/application/controllers/Items.php +++ b/application/controllers/Items.php @@ -397,8 +397,25 @@ class Items extends Secure_Controller $data['definition_values'] = $this->Attribute->get_attributes_by_item($item_id) + $this->Attribute->get_values_by_definitions($definition_ids); $data['definition_names'] = $this->Attribute->get_definition_names(); - foreach($data['definition_values'] as $definition_id => $attribute_value) + foreach($data['definition_values'] as $definition_id => $definition_value) { + $attribute_value = $this->Attribute->get_attribute_value($item_id, $definition_id); + $attribute_id = (empty($attribute_value) || empty($attribute_value->attribute_id)) ? NULL : $attribute_value->attribute_id; + $values = &$data['definition_values'][$definition_id]; + $values['attribute_id'] = $attribute_id; + $values['attribute_value'] = $attribute_value; + + if ($definition_value['definition_type'] == DROPDOWN) + { + $values['values'] = $this->Attribute->get_definition_values($definition_id); + $values['selected_value'] = $this->Attribute->get_link_value($item_id, $definition_id); + } + + if (!empty($definition_ids[$definition_id])) + { + $values['selected_value'] = $definition_ids[$definition_id]; + } + unset($data['definition_names'][$definition_id]); } diff --git a/application/helpers/tabular_helper.php b/application/helpers/tabular_helper.php index 36ab83302..c61fb9205 100644 --- a/application/helpers/tabular_helper.php +++ b/application/helpers/tabular_helper.php @@ -340,7 +340,7 @@ function get_items_manage_table_headers() foreach($definition_names as $definition_id => $definition_name) { - $headers[] = array($definition_name => $definition_name); + $headers[] = array($definition_id => $definition_name); } return transform_headers($headers); @@ -411,12 +411,18 @@ function get_item_data_row($item) array('class' => 'modal-dlg', 'data-btn-submit' => $CI->lang->line('common_submit'), 'title' => $CI->lang->line($controller_name.'_update')) )); - $attribute_values = explode(',', (property_exists($item, 'attribute_values')) ? $item->attribute_values : ""); + $attribute_values = explode('|', (property_exists($item, 'attribute_values')) ? $item->attribute_values : ""); + + $indexed_values = array(); + foreach($attribute_values as $attribute_value) + { + $exploded_value = explode(':', $attribute_value); + $indexed_values[$exploded_value[0]] = $exploded_value[1]; + } foreach($definition_names as $definition_id => $definition_name) { - $result[$definition_name] = array_shift($attribute_values); - + $result[$definition_id] = $indexed_values[$definition_id]; } return $result; diff --git a/application/models/Item.php b/application/models/Item.php index 7d95bd3f7..d66bcb6f0 100644 --- a/application/models/Item.php +++ b/application/models/Item.php @@ -193,10 +193,9 @@ class Item extends CI_Model } else if (count($filters['definition_ids']) > 0) { - $this->db->select('GROUP_CONCAT(attribute_value) AS attribute_values'); + $this->db->select('GROUP_CONCAT(DISTINCT CONCAT_WS(\':\', definition_id, attribute_value) ORDER BY definition_id SEPARATOR \'|\') AS attribute_values'); $this->db->join('attribute_links', 'attribute_links.item_id = items.item_id AND attribute_links.receiving_id IS NULL AND attribute_links.sale_id IS NULL AND definition_id IN (' . implode(',', $filters['definition_ids']) . ')', 'left'); $this->db->join('attribute_values', 'attribute_values.attribute_id = attribute_links.attribute_id', 'left'); - $this->db->order_by('definition_id'); } $this->db->where('items.deleted', $filters['is_deleted']); diff --git a/application/models/reports/Detailed_receivings.php b/application/models/reports/Detailed_receivings.php index 748d88042..0a3038115 100644 --- a/application/models/reports/Detailed_receivings.php +++ b/application/models/reports/Detailed_receivings.php @@ -102,10 +102,9 @@ class Detailed_receivings extends Report $this->db->join('items', 'receivings_items_temp.item_id = items.item_id'); if (count($inputs['definition_ids']) > 0) { - $this->db->select('GROUP_CONCAT(attribute_value SEPARATOR \'|\') AS attribute_values'); + $this->db->select('GROUP_CONCAT(DISTINCT attribute_value ORDER BY definition_id SEPARATOR \'|\') AS attribute_values'); $this->db->join('attribute_links', 'attribute_links.item_id = items.item_id AND attribute_links.receiving_id = receivings_items_temp.receiving_id AND definition_id IN (' . implode(',', $inputs['definition_ids']) . ')', 'left'); - $this->db->join('attribute_values', 'attribute_values.attribute_id = attribute_links.attribute_id', 'left'); - $this->db->order_by('definition_id'); + $this->db->join('attribute_values', 'attribute_values.attribute_id = attribute_links.attribute_id'); $this->db->group_by('receivings_items_temp.receiving_id'); } $this->db->where('receivings_items_temp.receiving_id', $value['receiving_id']); diff --git a/application/models/reports/Detailed_sales.php b/application/models/reports/Detailed_sales.php index 3c929b46f..efcf2ed1b 100644 --- a/application/models/reports/Detailed_sales.php +++ b/application/models/reports/Detailed_sales.php @@ -148,10 +148,9 @@ class Detailed_sales extends Report $this->db->from('sales_items_temp'); if (count($inputs['definition_ids']) > 0) { - $this->db->select('GROUP_CONCAT(attribute_value SEPARATOR \'|\') AS attribute_values'); + $this->db->select('GROUP_CONCAT(DISTINCT attribute_value ORDER BY definition_id SEPARATOR \'|\') AS attribute_values'); $this->db->join('attribute_links', 'attribute_links.item_id = sales_items_temp.item_id AND attribute_links.sale_id = sales_items_temp.sale_id AND definition_id IN (' . implode(',', $inputs['definition_ids']) . ')', 'left'); - $this->db->join('attribute_values', 'attribute_values.attribute_id = attribute_links.attribute_id', 'left'); - $this->db->order_by('definition_id'); + $this->db->join('attribute_values', 'attribute_values.attribute_id = attribute_links.attribute_id'); $this->db->group_by('sales_items_temp.sale_id'); } $this->db->where('sales_items_temp.sale_id', $value['sale_id']); diff --git a/application/views/attributes/form.php b/application/views/attributes/form.php index f2e5a9d1c..0562e8b77 100644 --- a/application/views/attributes/form.php +++ b/application/views/attributes/form.php @@ -65,7 +65,6 @@ //validation and submit handling $(document).ready(function() { - $('.modal-body').css('overflow-y', 'visible'); var values = []; var definition_id = ; var is_new = definition_id == -1; diff --git a/application/views/attributes/item.php b/application/views/attributes/item.php index 7b8e90484..42748f160 100644 --- a/application/views/attributes/item.php +++ b/application/views/attributes/item.php @@ -18,10 +18,9 @@ foreach($definition_values as $definition_id => $definition_value)
Attribute->get_attribute_value($item_id, $definition_id); - $attribute_id = (empty($attribute_value) || empty($attribute_value->attribute_id)) ? NULL : $attribute_value->attribute_id; - echo form_hidden("attribute_ids[$definition_id]", $attribute_id); + echo form_hidden("attribute_ids[$definition_id]", $definition_value['attribute_id']); + $attribute_value = $definition_value['attribute_value']; if ($definition_value['definition_type'] == DATETIME) { $value = (empty($attribute_value) || empty($attribute_value->attribute_datetime)) ? DEFAULT_DATETIME : strtotime($attribute_value->attribute_datetime); @@ -34,13 +33,12 @@ foreach($definition_values as $definition_id => $definition_value) } else if ($definition_value['definition_type'] == DROPDOWN) { - $values = $this->Attribute->get_definition_values($definition_id); - $selected_value = $this->Attribute->get_link_value($item_id, $definition_id); - echo form_dropdown("attribute_links[$definition_id]", $values, (empty($selected_value) ? NULL : $selected_value->attribute_id), "class='form-control' data-definition-id='$definition_id'"); + $selected_value = empty($selected_value) ? $definition_value['selected_value'] : $selected_value->attribute_id; + echo form_dropdown("attribute_links[$definition_id]", $definition_value['values'], $selected_value, "class='form-control' data-definition-id='$definition_id'"); } else if ($definition_value['definition_type'] == TEXT) { - $value = (empty($attribute_value) || empty($attribute_value->attribute_value)) ? NULL : $attribute_value->attribute_value; + $value = (empty($attribute_value) || empty($attribute_value->attribute_value)) ? $definition_value['selected_value'] : $attribute_value->attribute_value; echo form_input("attribute_links[$definition_id]", $value, "class='form-control' data-definition-id='$definition_id'"); } ?> diff --git a/application/views/items/form.php b/application/views/items/form.php index 9cd9c634e..fd16a9a97 100644 --- a/application/views/items/form.php +++ b/application/views/items/form.php @@ -47,7 +47,9 @@
- load->view('attributes/item', array('item_id' => $item_info->item_id)); ?> +