Index: trunk/core/kernel/event_manager.php =================================================================== diff -u -N -r7391 -r7635 --- trunk/core/kernel/event_manager.php (.../event_manager.php) (revision 7391) +++ trunk/core/kernel/event_manager.php (.../event_manager.php) (revision 7635) @@ -196,20 +196,20 @@ { $unit_config_reader =& $this->Application->recallObject('kUnitConfigReader'); $unit_config_reader->loadConfig($event->Prefix); + if( !$this->Application->prefixRegistred($event->Prefix) ) + { + trigger_error('Prefix '.$event->Prefix.' not registred (requested event '.$event->Name.')', E_USER_NOTICE); + return false; + } } - if( !$this->Application->prefixRegistred($event->Prefix) ) - { - trigger_error('Prefix '.$event->Prefix.' not registred (requested event '.$event->Name.')', E_USER_NOTICE); - return false; - } - if (!$event->SkipBeforeHooks) { $this->processHooks($event, hBEFORE); if ($event->status == erFATAL) return true; } $event_handler =& $this->Application->recallObject($event->Prefix.'_EventHandler'); + /* @var $event_handler kEventHandler */ $event_handler->processEvent($event); if ($event->status == erFATAL) return true; @@ -218,7 +218,6 @@ } $this->popEvent(); - return true; } @@ -249,13 +248,13 @@ } // 3. store all prefixes passed before event processing, because they are used by GetTopmostPrefix - $passed = explode(',', $this->Application->GetVar('passed')); + $all_passed = explode(',', $this->Application->GetVar('passed')); foreach ($events as $prefix_special => $event_name) { if (!$event_name) continue; $prefix_special = explode('.',$prefix_special); - array_push($passed, $prefix_special[0]); + array_push($all_passed, $prefix_special[0]); } - $this->Application->SetVar('passed', implode(',', $passed)); + $this->Application->SetVar('all_passed', implode(',', $all_passed)); foreach ($events as $prefix_special => $event_name) { if (!$event_name) continue; @@ -278,6 +277,7 @@ $event->redirect = true; $event_handler =& $this->Application->recallObject($event->Prefix.'_EventHandler'); + /* @var $event_handler kEventHandler */ $event->setEventParam('top_prefix', $this->Application->GetTopmostPrefix($event->Prefix, true)); if (($this->Application->RecallVar('user_id') == -1) || $event_handler->CheckPermission($event)) { $this->HandleEvent($event); @@ -306,15 +306,15 @@ $wid = $this->Application->GetVar('m_wid'); if ($wid && $event->redirect_params['opener'] == 'u') { $event->redirect_params['opener'] = 's'; // because Application->HREF will react differently when 'opener' = 'u' - $event->redirect = 'incs/close_popup'; + $event->redirect = defined('CLOSE_POPUP_TPL') ? CLOSE_POPUP_TPL : 'incs/close_popup'; } $this->Application->Redirect($event->redirect, $event->redirect_params, null, $event->redirect_script); } } $this->Application->SetVar('events', $events); -// $this->Application->SetVar('passed', implode(',', $passed)); + $this->Application->SetVar('passed', implode(',', $all_passed)); } function processOpener() @@ -381,9 +381,9 @@ * @param Array $params * @param string $pass */ - function openerStackPush($t, $params, $pass = 'all') + function openerStackPush($t, $params, $pass = 'all', $wid=null) { - $wid = $this->Application->GetVar('m_wid'); + if (!isset($wid)) $wid = $this->Application->GetVar('m_wid'); $stack_name = rtrim('opener_stack_'.$wid, '_'); $opener_stack = $this->Application->RecallVar($stack_name);