Index: trunk/core/kernel/event_manager.php =================================================================== diff -u -N -r4626 -r4627 --- trunk/core/kernel/event_manager.php (.../event_manager.php) (revision 4626) +++ trunk/core/kernel/event_manager.php (.../event_manager.php) (revision 4627) @@ -267,18 +267,19 @@ $event->redirect = true; $event_handler =& $this->Application->recallObject($event->Prefix.'_EventHandler'); - if ($event_handler->CheckPermission($event)) { + if (($this->Application->GetVar('u_id') == -1) || $event_handler->CheckPermission($event)) { $this->HandleEvent($event); } - else { - $event->redirect = $event->getEventParam('no_permissions_template'); + + if ($event->status == erPERM_FAIL) { + $event->redirect = $event->getEventParam('no_permissions_template') ? $event->getEventParam('no_permissions_template') : 'no_permissions'; // 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)) { + // should do redirect but to no_permissions template + if ( ($event->status == erSUCCESS || $event->status == erPERM_FAIL) && ($event->redirect === true || strlen($event->redirect) > 0)) { $this->Application->Redirect($event->redirect, $event->redirect_params, null, $event->redirect_script); } }