Index: units/languages/languages_event_handler.php =================================================================== --- units/languages/languages_event_handler.php (revision 13571) +++ units/languages/languages_event_handler.php (working copy) @@ -49,8 +49,16 @@ $event->status = erSTOP; } - if (is_object($event->MasterEvent) && $event->MasterEvent->status != erSUCCESS) { - return ; + if (is_object($event->MasterEvent)) { + if ($event->MasterEvent->status != erSUCCESS) { + // only rebuild when all fields are validated + return ; + } + + if (($event->MasterEvent->Name == 'OnSave') && !$this->Application->GetVar('new_language')) { + // only rebuild during new language adding + return ; + } } $ml_helper =& $this->Application->recallObject('kMultiLanguageHelper'); @@ -237,6 +245,26 @@ $object->SetDBField('CopyFromLanguage', $primary_lang_id); } + /** + * Sets new language mark + * + * @param kEvent $event + */ + function OnBeforeDeleteFromLive(&$event) + { + $id_field = $this->Application->getUnitOption($event->Prefix, 'IDField'); + $table_name = $this->Application->getUnitOption($event->Prefix, 'TableName'); + + $sql = 'SELECT ' . $id_field . ' + FROM ' . $table_name . ' + WHERE ' . $id_field . ' = ' . $event->getEventParam('id'); + $id = $this->Conn->GetOne($sql); + + if (!$id) { + $this->Application->SetVar('new_language', 1); + } + } + function OnChangeLanguage(&$event) { $language_id = $this->Application->GetVar('language');