Index: branches/5.1.x/core/units/helpers/controls/minput_helper.php =================================================================== diff -u -N -r13086 -r13606 --- branches/5.1.x/core/units/helpers/controls/minput_helper.php (.../minput_helper.php) (revision 13086) +++ branches/5.1.x/core/units/helpers/controls/minput_helper.php (.../minput_helper.php) (revision 13606) @@ -1,6 +1,6 @@ '.$xml.'' : ''; } + /** + * Returns validation errors in XML format + * + * @param kDBItem $object + * @param Array $fields_hash + * @return string + */ function prepareErrorsXML(&$object, $fields_hash) { $xml = ''; + $errors = Array (); + foreach ($fields_hash as $field_name => $field_value) { - $object->SetField($field_name, $field_value); if (!$object->ValidateField($field_name)) { - $xml .= ''.$object->GetErrorMsg($field_name, false).''; + $field_options = $object->GetFieldOptions($field_name); + $error_field = array_key_exists('error_field', $field_options) ? $field_options['error_field'] : $field_name; + + $errors[$error_field] = ''.$object->GetErrorMsg($error_field, false).''; } } - return ''.$xml.''; + return ''.implode('', $errors).''; } /** @@ -73,6 +84,21 @@ if ($items_info) { list ($id, $field_values) = each($items_info); + foreach ($field_values as $field_name => $field_value) { + $object->SetField($field_name, $field_value); + } + + $event_mapping = Array ( + 'AddRecord' => 'OnBeforeItemCreate', + 'SaveRecord' => 'OnBeforeItemUpdate', + ); + + $request_type = $this->Application->GetVar('request_type'); + + if (array_key_exists($request_type, $event_mapping)) { + $event->CallSubEvent($event_mapping[$request_type]); + } + echo $this->prepareErrorsXML($object, $field_values); }