Index: trunk/admin/install/install_lib.php =================================================================== diff -u -N -r3407 -r4133 --- trunk/admin/install/install_lib.php (.../install_lib.php) (revision 3407) +++ trunk/admin/install/install_lib.php (.../install_lib.php) (revision 4133) @@ -895,7 +895,7 @@ } /** - * Perform operations required for each module separate install (from admin) + * [INSTALL] Perform operations required for each module separate install (from admin) * * @param string $module_name * @param bool $has_theme @@ -924,4 +924,35 @@ $app->Redirect('', Array('pass' => 'all', 'admin' => 1, 'Refresh' => 1), '', 'modules/mod_status.php'); } + + /** + * [UPGRADE] Initializes [cached] category/item templates with default values for each module + * + * @param string $module + * @param string $category_template + * @param string $item_template + */ + function updateItemCategoryTemplate($module, $category_template, $item_template) + { + $table_prefix = GetTablePrefix(); + $inst_ado =& inst_GetADODBConnection(); + + // get module root category by module name + $sql = 'SELECT RootCat + FROM '.$table_prefix.'Modules + WHERE Name = '.$inst_ado->qstr($module); + $module_root = $inst_ado->GetOne($sql); + + // set category & item template to module root category + $sql = 'UPDATE '.$table_prefix.'Category + SET CategoryTemplate = '.$inst_ado->qstr($category_template).', ItemTemplate = '.$inst_ado->qstr($item_template).' + WHERE CategoryId = '.$module_root; + $inst_ado->Execute($sql); + + // set cached category & item templates to all sub-categories of module root category + $sql = 'UPDATE '.$table_prefix.'Category + SET CachedCategoryTemplate = '.$inst_ado->qstr($category_template).', CachedItemTemplate = '.$inst_ado->qstr($item_template).' + WHERE ParentPath LIKE "|'.$module_root.'|%'; + $inst_ado->Execute($sql); + } ?> Index: trunk/core/kernel/application.php =================================================================== diff -u -N -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 * Index: trunk/core/units/general/main_event_handler.php =================================================================== diff -u -N -r4000 -r4133 --- trunk/core/units/general/main_event_handler.php (.../main_event_handler.php) (revision 4000) +++ trunk/core/units/general/main_event_handler.php (.../main_event_handler.php) (revision 4133) @@ -30,8 +30,8 @@ */ function BuildEnv(&$event) { - static $ThemesCache = array(); - static $LangCache = array(); + static $ThemesCache = array(); + static $LangCache = array(); $prefix_special = $event->getPrefixSpecial(); $url_params = $event->getEventParam('url_params'); @@ -100,8 +100,9 @@ $ret = preg_replace('/(.*)\//', '\\1', $ret).'_'.$processed_params['m_cat_page'].'/'; } - $ret .= $event->getEventParam('t').'/'; - + $ret .= $url_params['t'].'/'; + unset($url_params['t']); + $event->setEventParam('url_params', $url_params); $event->setEventParam('env_string', strtolower($ret) ); } Index: trunk/kernel/units/general/main_event_handler.php =================================================================== diff -u -N -r4000 -r4133 --- trunk/kernel/units/general/main_event_handler.php (.../main_event_handler.php) (revision 4000) +++ trunk/kernel/units/general/main_event_handler.php (.../main_event_handler.php) (revision 4133) @@ -30,8 +30,8 @@ */ function BuildEnv(&$event) { - static $ThemesCache = array(); - static $LangCache = array(); + static $ThemesCache = array(); + static $LangCache = array(); $prefix_special = $event->getPrefixSpecial(); $url_params = $event->getEventParam('url_params'); @@ -100,8 +100,9 @@ $ret = preg_replace('/(.*)\//', '\\1', $ret).'_'.$processed_params['m_cat_page'].'/'; } - $ret .= $event->getEventParam('t').'/'; - + $ret .= $url_params['t'].'/'; + unset($url_params['t']); + $event->setEventParam('url_params', $url_params); $event->setEventParam('env_string', strtolower($ret) ); }