Index: branches/5.2.x/core/kernel/managers/request_manager.php =================================================================== diff -u -N -r14664 -r14665 --- branches/5.2.x/core/kernel/managers/request_manager.php (.../request_manager.php) (revision 14664) +++ branches/5.2.x/core/kernel/managers/request_manager.php (.../request_manager.php) (revision 14665) @@ -1,6 +1,6 @@ samePageRedirect($event) && ($event->getEventParam('pass_category') === false) && $this->Application->GetVar('m_cat_id') ) { $event->SetRedirectParam('pass_category', 1); } $wid = $this->Application->GetVar('m_wid'); + $redirect_params = $event->getRedirectParams(); - if ($wid && $event->getRedirectParam('opener') == 'u') { - $event->SetRedirectParam('opener', 's'); // because Application->HREF will react differently when 'opener' = 'u' + if ( $wid && $event->getRedirectParam('opener') == 'u' ) { + // update last element in current opener stack + unset($redirect_params['opener']); + $redirect_template = is_string($event->redirect) ? $event->redirect : null; + $this->openerStackChange($redirect_template, $redirect_params); + + // reset opener, because kApplication::HREF will react differently when 'opener' => 'u' + $event->SetRedirectParam('opener', 's'); $event->redirect = defined('CLOSE_POPUP_TPL') ? CLOSE_POPUP_TPL : 'incs/close_popup'; } @@ -413,9 +420,9 @@ * * @param string $new_template * @param Array $new_params - * @access public + * @access protected */ - public function openerStackChange($new_template = null, $new_params = null) + protected function openerStackChange($new_template = null, $new_params = null) { $opener_stack =& $this->Application->makeClass('kOpenerStack'); /* @var $opener_stack kOpenerStack */