Index: trunk/core/kernel/application.php =================================================================== diff -u -r4077 -r4133 --- trunk/core/kernel/application.php (.../application.php) (revision 4077) +++ trunk/core/kernel/application.php (.../application.php) (revision 4133) @@ -911,40 +911,30 @@ if($main_index !== false) { unset($pass_info[$main_index]); - array_unshift($pass_info, 'm'); } - $event_params = Array('t' => $t, 'pass_events' => $pass_events); - + $params['t'] = $t; foreach($pass_info as $pass_index => $pass_element) { list($prefix) = explode('.', $pass_element); $require_rewrite = $this->findModule('Var', $prefix); - if($require_rewrite) - { + if ($require_rewrite) { // if next prefix is same as current, but with special => exclude current prefix from url $next_prefix = getArrayValue($pass_info, $pass_index + 1); - if ($next_prefix) - { + if ($next_prefix) { $next_prefix = substr($next_prefix, 0, strlen($prefix) + 1); if ($prefix.'.' == $next_prefix) continue; } - $event_params['url_params'] = $params; - $event = new kEvent($pass_element.':BuildEnv', $event_params); - $this->HandleEvent($event); - if ($event->getEventParam('env_string')) - { - $ret .= '/'.trim( $event->getEventParam('env_string'), '/'); - } - $params = $event->getEventParam('url_params'); // save back unprocessed parameters + $ret .= '/'.$this->BuildModuleEnv_NEW($pass_element, $params, $pass_events); } else { $env .= ':'.$this->BuildModuleEnv($pass_element, $params, $pass_events); } } - + $ret = $this->BuildModuleEnv_NEW('m', $params, $pass_events).$ret; + $ret = trim($ret, '/').'.html'; if($env) $params[ENV_VAR_NAME] = ltrim($env, ':'); } @@ -970,6 +960,21 @@ return $ret; } + + function BuildModuleEnv_NEW($prefix_special, &$params, $pass_events = false) + { + $event_params = Array('pass_events' => $pass_events, 'url_params' => $params); + $event = new kEvent($prefix_special.':BuildEnv', $event_params); + $this->HandleEvent($event); + $params = $event->getEventParam('url_params'); // save back unprocessed parameters + + $ret = ''; + if ($event->getEventParam('env_string')) { + $ret = trim( $event->getEventParam('env_string'), '/'); + } + return $ret; + } + /** * Builds env part that corresponds prefix passed *