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);
}