Index: branches/5.2.x/core/kernel/utility/opener_stack.php =================================================================== diff -u -N -r14795 -r14895 --- branches/5.2.x/core/kernel/utility/opener_stack.php (.../opener_stack.php) (revision 14795) +++ branches/5.2.x/core/kernel/utility/opener_stack.php (.../opener_stack.php) (revision 14895) @@ -1,6 +1,6 @@ data[$index]; } - list ($index_file, $env) = explode('|', $this->data[$index], 2); - $params = $this->Application->processQueryString($env, 'pass'); + list ($index_file, $original_env) = explode('|', $this->data[$index], 2); + $fixed_env = str_replace(Array ('&', '%5C'), Array ('&', '\\'), $original_env); + $params = $this->Application->processQueryString($fixed_env, 'pass'); + // detect "__URLENCODE__" parameter value, used when opener stack element was built // without it rebuilding opener stack element will convert all "&" to "&" elements - $params['__URLENCODE__'] = (strpos($env, '&') !== false && strpos($env, '&') === false) || (strpos($env, '\\') !== false && strpos($env, '%5C') === false) ? 1 : 0; + $params['__URLENCODE__'] = $original_env != $fixed_env ? 1 : 0; $template = kUtil::popParam('t', $params, '');