Index: branches/RC/core/kernel/session/session.php =================================================================== diff -u -r8929 -r9259 --- branches/RC/core/kernel/session/session.php (.../session.php) (revision 8929) +++ branches/RC/core/kernel/session/session.php (.../session.php) (revision 9259) @@ -799,7 +799,8 @@ $last_template = basename($_SERVER['PHP_SELF']).'|'.substr($last_env, strlen(ENV_VAR_NAME) + 1); $this->StoreVar(rtrim('last_template_'.$wid, '_'), $last_template); - $last_env = $this->getLastTemplateENV($t, Array()); + $last_env = $this->getLastTemplateENV($t, null, false); + $last_template = basename($_SERVER['PHP_SELF']).'|'.substr($last_env, strlen(ENV_VAR_NAME) + 1); $this->StoreVar(rtrim('last_template_popup_'.$wid, '_'), $last_template); @@ -825,6 +826,7 @@ // check directly in GET, bacause LinkVar (session -> request) used on these vars $last_template .= '§ion='.$this->Application->GetVar('section').'&module='.$this->Application->GetVar('module'); } + $this->StorePersistentVar('last_template_popup', $last_template); } } @@ -837,10 +839,20 @@ } } - function getLastTemplateENV($t, $params) + function getLastTemplateENV($t, $params = null, $encode = true) { - $params['__URLENCODE__'] = 1; - return $this->Application->BuildEnv($t, $params, 'all'); + if (!isset($params)) { + $params = Array (); + } + + $params['__URLENCODE__'] = 1; // uses "&" instead of "&" for url part concatenation + replaces "\" to "%5C" (works in HTML) + $ret = $this->Application->BuildEnv($t, $params, 'all'); + + if (!$encode) { + // cancels 2nd part of replacements, that URLENCODE does + $ret = str_replace('%5C', '\\', $ret); + } + return $ret; } function StoreVar($name, $value)