Index: trunk/core/units/languages/languages_event_handler.php =================================================================== diff -u -N -r4000 -r4169 --- trunk/core/units/languages/languages_event_handler.php (.../languages_event_handler.php) (revision 4000) +++ trunk/core/units/languages/languages_event_handler.php (.../languages_event_handler.php) (revision 4169) @@ -19,6 +19,71 @@ } /** + * Allows to set selected language as primary + * + * @param kEvent $event + */ + function OnSetPrimary(&$event) + { + $this->StoreSelectedIDs($event); + $ids = $this->getSelectedIDs($event); + if ($ids) { + $id = array_shift($ids); + $object =& $event->getObject( Array('skip_autoload' => true) ); + $object->Load($id); + $object->setPrimary(); + } + } + + /** + * [HOOK] Reset primary status of other languages if we are saving primary language + * + * @param kEvent $event + */ + function OnUpdatePrimary(&$event) + { + $object =& $event->getObject( Array('skip_autoload' => true) ); + $object->SwitchToLive(); + + // set primary for each languages, that have this checkbox checked + $ids = explode(',', $event->MasterEvent->getEventParam('ids')); + foreach ($ids as $id) { + $object->Load($id); + if ($object->GetDBField('PrimaryLang')) { + $object->setPrimary(); + } + + } + + // if no primary language left, then set primary last language (not to load again) from edited list + $sql = 'SELECT '.$object->IDField.' + FROM '.$object->TableName.' + WHERE PrimaryLang = 1'; + $primary_language = $this->Conn->GetOne($sql); + + if (!$primary_language) { + $object->setPrimary(false); + } + } + + + /** + * Occurse before updating item + * + * @param kEvent $event + * @access public + */ + function OnBeforeItemUpdate(&$event) + { + $object =& $event->getObject(); + $status_field = array_shift( $this->Application->getUnitOption($event->Prefix, 'StatusField') ); + + if ($object->GetDBField('PrimaryLang') == 1 && $object->GetDBField($status_field) == 0) { + $object->SetDBField($status_field, 1); + } + } + + /** * Shows only enabled languages on front * * @param kEvent $event