Index: branches/5.2.x/core/units/translator/translator_event_handler.php =================================================================== diff -u -N -r14244 -r14628 --- branches/5.2.x/core/units/translator/translator_event_handler.php (.../translator_event_handler.php) (revision 14244) +++ branches/5.2.x/core/units/translator/translator_event_handler.php (.../translator_event_handler.php) (revision 14628) @@ -1,6 +1,6 @@ getPrefixAndField($event); @@ -63,13 +65,23 @@ return Array($prefix, $field); } - function OnLoad(&$event) + /** + * Loads record to be translated + * + * @param kEvent $event + * @return void + * @access protected + */ + protected function OnLoad(&$event) { list($obj_prefix, $field) = $this->getPrefixAndField($event); $object =& $this->Application->recallObject($obj_prefix); - $translator =& $this->Application->recallObject($event->getPrefixSpecial()); + /* @var $object kDBItem */ + $translator =& $event->getObject(); + /* @var $translator kDBItem */ + $def_lang = $this->Application->GetDefaultLanguageId(); $current_lang = $translator->GetDBField('Language'); @@ -88,46 +100,73 @@ $translator->SetDBField('Translation', $object->GetDBField('l'.$current_lang.'_'.$field)); $cur_lang =& $this->Application->recallObject('lang.current'); + /* @var $cur_lang LanguagesItem */ + $cur_lang->Load($current_lang); $translator->SetDBField('Charset', $cur_lang->GetDBField('Charset')); $event->redirect = false; } - function OnSaveAndClose(&$event) + /** + * Saves changes into temporary table and closes editing window + * + * @param kEvent $event + * @return void + * @access protected + */ + protected function OnSaveAndClose(&$event) { $event->CallSubEvent('OnPreSave'); - $this->finalizePopup($event); + + $event->SetRedirectParam('opener', 'u'); } - function OnPreSave(&$event) + /** + * Saves edited item into temp table + * If there is no id, new item is created in temp table + * + * @param kEvent $event + * @return void + * @access protected + */ + protected function OnPreSave(&$event) { - $translator =& $this->Application->recallObject($event->getPrefixSpecial()); + $translator =& $event->getObject(); + /* @var $translator kDBItem */ - $items_info = $this->Application->GetVar( $event->getPrefixSpecial(true) ); - if($items_info) $field_values = array_shift($items_info); + $translator->SetFieldsFromHash( $this->getSubmittedFields($event) ); - $translator->SetFieldsFromHash($field_values); - list($obj_prefix, $field) = $this->getPrefixAndField($event); $object =& $this->Application->recallObject($obj_prefix); /* @var $object kDBItem */ $lang = $translator->GetDBField('Language'); - $object->SetFieldOptions('l'.$lang.'_'.$field, Array ()); - $object->SetDBField('l'.$lang.'_'.$field, $translator->GetDBField('Translation')); + $object->SetFieldOptions('l' . $lang . '_' . $field, Array ()); + $object->SetDBField('l' . $lang . '_' . $field, $translator->GetDBField('Translation')); $this->RemoveRequiredFields($object); $object->Update(); } - function OnChangeLanguage(&$event) + /** + * Changes current language in translation popup + * + * @param kEvent $event + * @return void + * @access protected + */ + protected function OnChangeLanguage(&$event) { $event->CallSubEvent('OnPreSave'); - $translator =& $this->Application->recallObject($event->getPrefixSpecial()); - $translator->SetDBField('Language', $translator->GetDBField('SwitchLanguage')); + + $object =& $event->getObject(); + /* @var $object kDBItem */ + + $object->SetDBField('Language', $object->GetDBField('SwitchLanguage')); + $event->CallSubEvent('OnLoad'); $event->redirect = false; }