Index: trunk/core/units/admin/admin_tag_processor.php =================================================================== diff -u -N -r8000 -r8002 --- trunk/core/units/admin/admin_tag_processor.php (.../admin_tag_processor.php) (revision 8000) +++ trunk/core/units/admin/admin_tag_processor.php (.../admin_tag_processor.php) (revision 8002) @@ -683,17 +683,29 @@ } /** - * Builds link to template name from session (session var name as param) + * Builds link to last template in main frame of admin * * @param Array $params * @return string */ - function SessionLink($params) + function MainFrameLink($params) { - $t = $this->Application->RecallVar($this->SelectParam($params, 'name,var')); - unset($params['name'], $params['var']); + $last_template = $this->Application->RecallVar('last_template'); + if (!$last_template) { + return false; + } - return $this->Application->HREF($t, '', Array ('pass' => 'm')); + $ssl = isset($params['__SSL__']) ? $params['__SSL__'] : null; + + list($index_file, $env) = explode('|', $last_template); + + $vars = $this->Application->HttpQuery->processQueryString(preg_replace('/(.*?)&/', '\1', $env)); + if ($vars['t'] == 'login') { + // prevents redirect recursion + return false; + } + + return $this->Application->BaseURL('/admin', $ssl).$index_file.'?'.ENV_VAR_NAME.'='.$env; } }