Index: trunk/core/kernel/db/db_event_handler.php =================================================================== diff -u -r4850 -r4928 --- trunk/core/kernel/db/db_event_handler.php (.../db_event_handler.php) (revision 4850) +++ trunk/core/kernel/db/db_event_handler.php (.../db_event_handler.php) (revision 4928) @@ -1712,36 +1712,48 @@ } // 1. get custom field information - $sql = 'SELECT FieldName, CustomFieldId + $sql = 'SELECT * FROM '.TABLE_PREFIX.'CustomField WHERE Type = '.$item_type.' ORDER BY CustomFieldId'; - $custom_fields = $this->Conn->GetCol($sql, 'CustomFieldId'); + $custom_fields = $this->Conn->Query($sql, 'CustomFieldId'); if (!$custom_fields) { // config doesn't have custom fields return false; } - + // 2. create fields (for customdata item) $fields = $this->Application->getUnitOption($event->Prefix, 'Fields', Array()); $field_options = Array('type' => 'string', 'formatter' => 'kMultiLanguage', 'not_null' => 1, 'db_type' => 'text', 'default' => ''); - foreach ($custom_fields as $custom_id => $custom_name) { + foreach ($custom_fields as $custom_id => $custom_params) { $fields['cust_'.$custom_id] = $field_options; } $this->Application->setUnitOption($event->Prefix, 'Fields', $fields); // 3. create virtual & calculated fields (for main item) $calculated_fields = $this->Application->getUnitOption($main_prefix.'.', 'CalculatedFields', Array()); $virtual_fields = $this->Application->getUnitOption($main_prefix, 'VirtualFields', Array()); - - $ml_formatter =& $this->Application->recallObject('kMultiLanguage'); + + $cf_helper =& $this->Application->recallObject('InpCustomFieldsHelper'); $field_options = Array('type' => 'string', 'not_null' => 1, 'default' => ''); - foreach ($custom_fields as $custom_id => $custom_name) { + $ml_formatter =& $this->Application->recallObject('kMultiLanguage'); + $option_types = Array('select', 'radio'); + foreach ($custom_fields as $custom_id => $custom_params) { + if (in_array($custom_params['ElementType'], $option_types) && $custom_params['ValueList']) { + $field_options['options'] = $cf_helper->GetValuesHash($custom_params['ValueList']); + $field_options['formatter'] = 'kOptionsFormatter'; + } + else { + unset($field_options['options'], $field_options['formatter']); + } + + $custom_name = $custom_params['FieldName']; $calculated_fields['cust_'.$custom_name] = 'cust.'.$ml_formatter->LangFieldName('cust_'.$custom_id); if (!isset($virtual_fields['cust_'.$custom_name])) { $virtual_fields['cust_'.$custom_name] = Array(); } $virtual_fields['cust_'.$custom_name] = array_merge_recursive2($field_options, $virtual_fields['cust_'.$custom_name]); + $custom_fields[$custom_id] = $custom_name; } $this->Application->setUnitOption($main_prefix, 'CustomFields', $custom_fields); $this->Application->setUnitOption($main_prefix.'.', 'CalculatedFields', $calculated_fields);