Index: branches/5.0.x/core/units/helpers/permissions_helper.php =================================================================== diff -u -N -r12786 -r12877 --- branches/5.0.x/core/units/helpers/permissions_helper.php (.../permissions_helper.php) (revision 12786) +++ branches/5.0.x/core/units/helpers/permissions_helper.php (.../permissions_helper.php) (revision 12877) @@ -1,6 +1,6 @@ Application->GetVar('t'); + $redirect_params = $this->Application->HttpQuery->getRedirectParams(true); + $next_template = $this->Application->HREF($t, '', $redirect_params); + + $event->SetRedirectParam('m_cat_id', 0); // category means nothing on admin login screen + $event->SetRedirectParam('next_template', urlencode('external:' . $next_template)); + if ($this->Application->isDebugMode()) { // for debugging purposes $event->SetRedirectParam('section', $event->getSection()); $event->SetRedirectParam('main_prefix', $event->getEventParam('top_prefix')); $event->SetRedirectParam('event_name', $event->Name); - $event->SetRedirectParam('next_template', $this->Application->GetVar('t')); } $event->status = erPERM_FAIL; @@ -455,15 +461,25 @@ $redirect_params['pass_category'] = $params['pass_cateogry']; } + $redirect_params = Array ( + 'm_cat_id' => 0, // category means nothing on admin login screen + 'next_template' => urlencode('external:' . $this->Application->HREF($t, '', $redirect_params)), + ); + + if ($this->Application->isAdmin) { + $redirect_params['m_wid'] = ''; // remove wid, otherwise parent window may add wid to its name breaking all the frameset (for targets) + $redirect_params['pass'] = 'm'; // don't pass any other (except "m") prefixes to admin login template + } + if (!$this->Application->LoggedIn()) { $redirect_template = array_key_exists('login_template', $params) ? $params['login_template'] : ''; + if (!$redirect_template && $this->Application->isAdmin) { $redirect_template = 'login'; } - $redirect_params['next_template'] = $t; } else { - if (isset($params['no_permissions_template'])) { + if (array_key_exists('no_permissions_template', $params)) { $redirect_template = $params['no_permissions_template']; } else { @@ -473,15 +489,14 @@ if ($this->Application->isDebugMode()) { $redirect_params['from_template'] = 1; $redirect_params['perms'] = $params[ isset($params['permissions']) ? 'permissions' : 'perm_event' ]; - $redirect_params['next_template'] = $t; } } if (isset($params['index_file']) && $params['index_file']) { $redirect_params['index_file'] = $params['index_file']; } - return Array($redirect_template, $redirect_params); + return Array ($redirect_template, $redirect_params); } /**