Index: core/install/english.lang =================================================================== --- core/install/english.lang +++ core/install/english.lang @@ -294,13 +294,13 @@ dXNlciBub3QgZm91bmQ= WW91IG11c3Qgc2VsZWN0IG9ubHkgb25lIHVzZXI= SW5jb3JyZWN0IGRhdGUgZm9ybWF0LCBwbGVhc2UgdXNlICglcykgZXguICglcyk= - SW5jb3JyZWN0IGRhdGEgZm9ybWF0LCBwbGVhc2UgdXNlICVz + SW5jb3JyZWN0IGRhdGEgZm9ybWF0LCBwbGVhc2UgdXNlIHt0eXBlfQ== SW52YWxpZCBGb3JtYXQ= - RmllbGQgdmFsdWUgbGVuZ3RoIGlzIG91dCBvZiByYW5nZSwgcG9zc2libGUgdmFsdWUgbGVuZ3RoIGZyb20gJXMgdG8gJXM= + RmllbGQgdmFsdWUgbGVuZ3RoIGlzIG91dCBvZiByYW5nZSwgcG9zc2libGUgdmFsdWUgbGVuZ3RoIGZyb20ge21pbl9sZW5ndGh9IHRvIHttYXhfbGVuZ3RofQ== UHJpbWFyeSBMYW5nLiB2YWx1ZSBSZXF1aXJlZA== RmllbGQgaXMgcmVxdWlyZWQ= RmllbGQgdmFsdWUgbXVzdCBiZSB1bmlxdWU= - RmllbGQgdmFsdWUgaXMgb3V0IG9mIHJhbmdlLCBwb3NzaWJsZSB2YWx1ZXMgZnJvbSAlcyB0byAlcw== + RmllbGQgdmFsdWUgaXMgb3V0IG9mIHJhbmdlLCBwb3NzaWJsZSB2YWx1ZXMgZnJvbSB7bWluX3ZhbHVlfSB0byB7bWF4X3ZhbHVlfQ== RXhwb3J0IGZvbGRlciBpcyBub3Qgd3JpdGFibGU= RXJyb3IgY3JlYXRpbmcgZm9sZGVyLiBFcnJvciBudW1iZXI6 UGxlYXNlIG5hbWUgeW91ciBmaWxlcyB0byBiZSB3ZWItZnJpZW5kbHkuIFdlIHJlY29tbWVuZCB1c2luZyBvbmx5IHRoZXNlIGNoYXJhY3RlcnMgaW4gZmlsZSBuYW1lczogDQpMZXR0ZXJzIGEteiwgQS1aLCBOdW1iZXJzIDAtOSwgIl8iICh1bmRlcnNjb3JlKSwgIi0iIChkYXNoKSwgIiAiIChzcGFjZSksICIuIiAocGVyaW9kKQ0KUGxlYXNlIGF2b2lkIHVzaW5nIGFueSBvdGhlciBjaGFyYWN0ZXJzIGxpa2UgcXVvdGVzLCBicmFja2V0cywgcXVvdGF0aW9uIG1hcmtzLCAiPyIsICIhIiwgIj0iLCBmb3JlaWduIHN5bWJvbHMsIGV0Yy4= Index: core/install/upgrades.sql =================================================================== --- core/install/upgrades.sql +++ core/install/upgrades.sql @@ -2909,3 +2909,16 @@ WHERE PhraseKey = 'LA_SECTION_FILE'; # ===== v 5.2.1 ===== + +# ===== v 5.2.2-B1 ===== +UPDATE LanguageLabels +SET l1_Translation = 'Incorrect data format, please use {type}' +WHERE PhraseKey = 'LA_ERR_BAD_TYPE'; + +UPDATE LanguageLabels +SET l1_Translation = 'Field value is out of range, possible values from {min_value} to {max_value}' +WHERE PhraseKey = 'LA_ERR_VALUE_OUT_OF_RANGE'; + +UPDATE LanguageLabels +SET l1_Translation = 'Field value length is out of range, possible value length from {min_length} to {max_length}' +WHERE PhraseKey = 'LA_ERR_LENGTH_OUT_OF_RANGE'; Index: core/kernel/utility/validator.php =================================================================== --- core/kernel/utility/validator.php +++ core/kernel/utility/validator.php @@ -208,7 +208,7 @@ } if ( !$res ) { - $this->SetError($field, 'bad_type', null, Array ($params['type'])); + $this->SetError($field, 'bad_type', null, array('type' => $params['type'])); return false; } @@ -256,7 +256,10 @@ if ( !isset($min_val) ) $min_val = '-∞'; if ( !isset($max_val) ) $max_val = '∞'; - $this->SetError($field, 'value_out_of_range', null, Array ($min_val, $max_val)); + $this->SetError($field, 'value_out_of_range', null, array( + 'min_value' => $min_val, + 'max_value' => $max_val + )); return false; } @@ -271,7 +274,11 @@ } if ( !$res ) { - $error_params = Array ((int)getArrayValue($params, 'min_len'), (int)getArrayValue($params, 'max_len'), mb_strlen($val)); + $error_params = array( + 'min_length' => (int)getArrayValue($params, 'min_len'), + 'max_length' => (int)getArrayValue($params, 'max_len'), + 'value' => mb_strlen($val) + ); $this->SetError($field, 'length_out_of_range', null, $error_params); return false; @@ -425,7 +432,29 @@ $msg = $this->Application->ReplaceLanguageTags($msg, $force_escape); if ( isset($this->FieldErrors[$field]['params']) ) { - return vsprintf($msg, $this->FieldErrors[$field]['params']); + $params = $this->FieldErrors[$field]['params']; + } + else { + $params = array(); + } + + $field_options = $this->dataSource->GetFieldOptions($field); + + if ( $this->Application->isAdmin ) { + $field_phrase = !empty($field_options['admin_label']) ? $field_options['admin_label'] : 'la_fld_' . $field; + } + else { + $field_phrase = !empty($field_options['front_label']) ? $field_options['front_label'] : 'lu_fld_' . $field; + } + + $params['field'] = $this->Application->Phrase($field_phrase); + + foreach ( $params as $param_name => $param_value ) { + $msg = str_replace('{' . $param_name . '}', $param_value, $msg, $replacement_count); + } + + if ( strpos($msg, '%s') !== false ) { + trigger_error('Unexpected "%s" in field "' . $field . '" validation error message (pseudo: "' . $error_pseudo . '") in "' . $this->dataSource->Prefix . '" unit', E_USER_WARNING); } return $msg; @@ -501,4 +530,4 @@ { $this->FieldErrors = Array(); } -} \ No newline at end of file +} Index: core/units/forms/form_submissions/form_submissions_eh.php =================================================================== --- core/units/forms/form_submissions/form_submissions_eh.php +++ core/units/forms/form_submissions/form_submissions_eh.php @@ -166,6 +166,9 @@ } } + $field_options['front_label'] = $options['FieldLabel']; + $field_options['admin_label'] = $options['Prompt']; + $conf_fields['fld_' . $field_id] = $field_options; }