Index: branches/unlabeled/unlabeled-1.166.4/core/kernel/application.php =================================================================== diff -u -r6862 -r6863 --- branches/unlabeled/unlabeled-1.166.4/core/kernel/application.php (.../application.php) (revision 6862) +++ branches/unlabeled/unlabeled-1.166.4/core/kernel/application.php (.../application.php) (revision 6863) @@ -651,8 +651,8 @@ if ($this->GetVar('m_opener') == 'p') { $this->LinkVar('main_prefix'); // window prefix, that opened selector $this->LinkVar('dst_field'); // field to set value choosed in selector - $this->LinkVar('return_template'); // template to go, when something was coosen from popup (from finalizePopup) - $this->LinkVar('return_m'); // main env part to restore after popup will be closed (from finalizePopup) +// $this->LinkVar('return_template'); // template to go, when something was coosen from popup (from finalizePopup) +// $this->LinkVar('return_m'); // main env part to restore after popup will be closed (from finalizePopup) } if ($this->GetVar('ajax') == 'yes') { @@ -1075,13 +1075,24 @@ if (getArrayValue($params, 'opener') == 'u') { $wid = $this->Application->GetVar('m_wid'); - $opener_stack = $this->RecallVar(rtrim('opener_stack_'.$wid, '_')); + $stack_name = rtrim('opener_stack_'.$wid, '_'); + $opener_stack = $this->RecallVar($stack_name); if ($opener_stack && $opener_stack != serialize(Array())) { $opener_stack = unserialize($opener_stack); list($index_file, $env) = explode('|', $opener_stack[count($opener_stack) - 1]); $ret = $this->BaseURL($prefix, $ssl).$index_file.'?'.ENV_VAR_NAME.'='.$env; if ( getArrayValue($params,'escape') ) $ret = addslashes($ret); + + if (isset($params['m_opener']) && $params['m_opener'] == 'u') { + array_pop($opener_stack); + if (!$opener_stack) { + $this->RemoveVar($stack_name); + } + else { + $this->StoreVar($stack_name, serialize($opener_stack)); + } + } return $ret; } else {