Index: branches/5.0.x/core/kernel/db/dbitem.php =================================================================== diff -u -N -r13338 -r13349 --- branches/5.0.x/core/kernel/db/dbitem.php (.../dbitem.php) (revision 13338) +++ branches/5.0.x/core/kernel/db/dbitem.php (.../dbitem.php) (revision 13349) @@ -1,6 +1,6 @@ Application->recallObject('kMultiLanguageHelper'); - /* @var $ml_helper kMultiLanguageHelper */ - - $lang_count = $ml_helper->getLanguageCount(); - foreach ($this->Fields as $field => $options) - { + foreach ($this->Fields as $field => $options) { // master field is set only for CURRENT language - if (isset($options['formatter']) && $options['formatter'] == 'kMultiLanguage' && isset($options['master_field'])) { - if (preg_match('/^l([0-9]+)_(.*)/', $field, $regs)) { - $l = $regs[1]; - $name = $regs[2]; - // MuliLanguage formatter sets error_field to master_field, but in PopulateMlFields mode, we display ML fields directly - // so we set it back to itself, otherwise error will not be displayed - $this->Fields['l' . $l . '_' . $name]['error_field'] = 'l' . $l . '_' . $name; - for ($i = 1; $i <= $lang_count; $i++) { - if ($i == $l || !$ml_helper->LanguageFound($i)) continue; - $f_options = $options; - $f_options['error_field'] = 'l' . $i . '_' . $name; // set error field back to itself - see comment above - if ($i != $this->Application->GetDefaultLanguageId()) { - unset($f_options['required']); // all non-primary language field set to non-required - } - $this->Fields['l' . $i . '_' . $name] = $f_options; - } - } + $formatter = array_key_exists('formatter', $options) ? $options['formatter'] : false; + + if (($formatter == 'kMultiLanguage') && array_key_exists('master_field', $options) && array_key_exists('error_field', $options)) { + // MuliLanguage formatter sets error_field to master_field, but in PopulateMlFields mode, + // we display ML fields directly so we set it back to itself, otherwise error will not be displayed + unset($this->Fields[$field]['error_field']); } } }