{php}>
//********************* custom main menu *********************//
// There must be an easier way to achieve this but this is what I //
// came up with. Smarty programming seems to be acting wierd in a //
// template so i have to do it the old fashioned way: straight PHP //
// Broke up the menu building into simple functions to keep HTML //
// tags out of the menu code. ONLY EDIT THE $htmlcode="..."; LINES //
// It's dirty but it works. //
// -xoopstuner //
//*****************************************************************//
//mini template for custom main menu
function xtnrMenu($Menu,$activeModuleName,$activeModuleLink,$activeModuleSublinks){
$htmlcode="
";
return $htmlcode;
}
//mini template for menu link and sublinks placement
function xtnrMenuLink($linktitle,$link,$sublinks){
$htmlcode="
$linktitle
";
return $htmlcode;
}
//mini template for menu link when there are no sublinks, active takes precidence
function xtnrMenuLinkEmpty($linktitle,$link){
$htmlcode="
$linktitle
";
return $htmlcode;
}
//mini template for menu link and sublinks placement for currently selected module
function xtnrMenuLinkActive($linktitle,$link,$sublinks){
$htmlcode="
$linktitle
";
return $htmlcode;
}
//mini template for sublinks
function xtnrMenuSublink($linktitle,$link){
$htmlcode="
---$linktitle
";
return $htmlcode;
}
//mini template for sublinks of currently active module
function xtnrMenuSublinkActive($linktitle,$link){
$htmlcode="
---$linktitle -active
";
return $htmlcode;
}
//modified main menu block code
global $xoopsUser,$xoopsModule,$customMainMenu,$activeModuleName,$activeModuleLink,$activeModuleSublinks,$temp;
$block = array();
$block['lang_home'] = _MB_SYSTEM_HOME;
$block['lang_close'] = _CLOSE;
$module_handler =& xoops_gethandler('module');
$criteria = new CriteriaCompo(new Criteria('hasmain', 1));
$criteria->add(new Criteria('isactive', 1));
$criteria->add(new Criteria('weight', 0, '>'));
$modules =& $module_handler->getObjects($criteria, true);
$moduleperm_handler =& xoops_gethandler('groupperm');
$groups = is_object($xoopsUser) ? $xoopsUser->getGroups() : XOOPS_GROUP_ANONYMOUS;
$read_allowed =& $moduleperm_handler->getItemIds('module_read', $groups);
foreach (array_keys($modules) as $i) {
if (in_array($i, $read_allowed)) {
$modulesname = $modules[$i]->getVar('name');
$moduledirectory = $modules[$i]->getVar('dirname');
$sublinks =& $modules[$i]->subLink();
$sublinkshtmlout = '';
if (empty($xoopsModule)) {
//system module; fill in defaults
$mid=-1;
$activeModuleName="Home";
$activeModuleLink=XOOPS_URL;
$activeModuleSublinks='';
} else {
$mid=$xoopsModule->getVar('mid');
}
//build sublinks for module
if ((count($sublinks) > 0)) {
if ($i == $mid) {
foreach($sublinks as $sublink){
//current active module
$sublinkshtmlout =$sublinkshtmlout.xtnrMenuSublinkActive ($sublink['name'],XOOPS_URL.'/modules/'.$modules[$i]->getVar('dirname').'/'.$sublink['url'] );
$activeModuleSublinks =$activeModuleSublinks.xtnrMenuSublinkActive ($sublink['name'],XOOPS_URL.'/modules/'.$modules[$i]->getVar('dirname').'/'.$sublink['url'] );
}
} else {
foreach($sublinks as $sublink){
//not current active module
$sublinkshtmlout =$sublinkshtmlout.xtnrMenuSublink ($sublink['name'],XOOPS_URL.'/modules/'.$modules[$i]->getVar('dirname').'/'.$sublink['url'] );
}
}
} else {
$block['modules'][$i]['sublinks'] = array();
}
// Build Main Menu Link From mini template
if ($i == $mid) {
//current active module
$activeModuleName = $modulesname;
$customMainMenu = $customMainMenu.xtnrMenuLinkActive($modulesname, XOOPS_URL.'/modules/'.$moduledirectory, $sublinkshtmlout);
$activeModuleLink = $activeModuleLink.xtnrMenuLinkActive($modulesname, XOOPS_URL.'/modules/'.$moduledirectory, $sublinkshtmlout);
} else {
//not current active module
if ($sublinkshtmlout==''){
$customMainMenu =$customMainMenu.xtnrMenuLinkEmpty($modulesname, XOOPS_URL.'/modules/'.$moduledirectory);
} else {
$customMainMenu =$customMainMenu.xtnrMenuLink($modulesname, XOOPS_URL.'/modules/'.$moduledirectory, $sublinkshtmlout);
}
}
}
}
$customMainMenu = xtnrMenu($customMainMenu,$activeModuleName,$activeModuleLink,$activeModuleSublinks);
//no output if no modules
if (count(array_keys($modules))==0) {$customMainMenu ='';}
<{/php}>
<{$xoops_sitename}> - <{$xoops_pagetitle}>
<{$xoops_module_header}>
<{$xoops_sitename}>
<{if $xoops_showcblock == 1}>
<{foreach item=block from=$xoops_ccblocks}>
<{include file="refresh/theme_blockcenter_c.html"}>
<{/foreach}>
<{foreach item=block from=$xoops_clblocks}>
<{include file="refresh/theme_blockcenter_l.html"}>
<{/foreach}>
<{foreach item=block from=$xoops_crblocks}>
<{include file="refresh/theme_blockcenter_r.html"}>
<{/foreach}>
<{/if}>
<{$xoops_contents}>
<{if $xoBlocks.page_bottomleft or $xoBlocks.page_bottomright or $xoBlocks.page_bottomcenter}>
<{if $xoBlocks.page_bottomcenter}>
<{foreach from=$xoBlocks.page_bottomcenter item=block}><{include file="refresh/theme_blockcenter_c.html"}><{/foreach}>
<{/if}>
<{if $xoBlocks.page_bottomleft or $xoBlocks.page_bottomright}>
<{foreach from=$xoBlocks.page_bottomleft item=block}><{include file="refresh/theme_blockcenter_l.html"}><{/foreach}>
<{foreach from=$xoBlocks.page_bottomright item=block}><{include file="refresh/theme_blockcenter_r.html"}><{/foreach}>
<{/if}>
<{/if}>