Index: trunk/core/kernel/event_manager.php =================================================================== diff -u -N -r4625 -r4626 --- trunk/core/kernel/event_manager.php (.../event_manager.php) (revision 4625) +++ trunk/core/kernel/event_manager.php (.../event_manager.php) (revision 4626) @@ -217,8 +217,10 @@ function ProcessRequest() { + $skip_last_template = $this->Application->GetVar('skip_last_template'); + $this->processOpener(); - + // 1. get events from $_POST $events = $this->Application->GetVar('events'); if ($events === false) $events = Array(); @@ -270,10 +272,13 @@ } else { $event->redirect = $event->getEventParam('no_permissions_template'); + // restore stuff, that processOpener() changed + $this->Application->RestoreVar('opener_stack'); + $this->Application->SetVar('skip_last_template', $skip_last_template); + $this->Application->SetVar('m_opener', 's'); // stay, because "no_permission" template is not edit template } - if($event->status==erSUCCESS && ($event->redirect === true || strlen($event->redirect) > 0) ) - { + if ($event->status == erSUCCESS && ($event->redirect === true || strlen($event->redirect) > 0)) { $this->Application->Redirect($event->redirect, $event->redirect_params, null, $event->redirect_script); } } @@ -284,13 +289,12 @@ function processOpener() { - $opener_action=$this->Application->GetVar('m_opener'); - $opener_stack=$this->Application->RecallVar('opener_stack'); - $opener_stack=$opener_stack?unserialize($opener_stack):Array(); - switch($opener_action) - { + $opener_action = $this->Application->GetVar('m_opener'); + $opener_stack = $this->Application->RecallVar('opener_stack'); + $opener_stack = $opener_stack ? unserialize($opener_stack) : Array(); + switch ($opener_action) { case 'r': // "reset" opener stack - $opener_stack=Array(); + $opener_stack = Array(); break; case 'd': // "down/push" new template to opener stack, deeplevel++ @@ -313,10 +317,11 @@ default: // "s/0," stay on same deep level break; } - if ( !$this->Application->GetVar('skip_last_template') ) { - $this->Application->SetVar('m_opener','s'); + + if (!$this->Application->GetVar('skip_last_template')) { + $this->Application->SetVar('m_opener', 's'); } - $this->Application->StoreVar('opener_stack',serialize($opener_stack)); + $this->Application->StoreVar('opener_stack', serialize($opener_stack)); } function registerHook($hookto_prefix, $hookto_special, $hookto_event, $mode, $do_prefix, $do_special, $do_event, $conditional)