function wpm_menu($node_id, $level, $css, $ul, $li) { if ($node_id == 0) { return array('output' => '', 'hilite' => false); } $item = wpm_readnode($node_id); $itemdown = wpm_menu($item->down, $level, $css, $ul, $li); $name = $item->name ? __($item->name) : ""; $attributes = $item->attributes ? __($item->attributes) : ""; $class = $item->cssclass ? " class=\"{$item->cssclass}\"" : ""; $selected = $item->cssclass ? " class=\"{$item->cssclass} active selected\"" : " class=\"active selected\""; if ($itemdown['hilite']) { $class = $selected; } if ($itemdown['output']) { $itemdown['output'] = sprintf($ul, $itemdown['output']); } switch ($item->type) { case 'Menu': $mid = 'wpmenu' . $item->id; $mclass = $css ? substr($css, 0, -4) : $item->selection; $javascript = ' <script type="text/javascript"> // <![CDATA[ ' . $mid . 'Hover = function() { var wpmEls = document.getElementById("' . $mid . '").getElementsByTagName("li"); for (var i=0; i<wpmEls.length; i++) { wpmEls[i].onmouseover=function() { this.className+=" wpmhover"; } wpmEls[i].onmouseout=function() { this.className=this.className.replace(new RegExp(" wpmhover\\\\b"), ""); } } } if (window.attachEvent) window.attachEvent("onload", ' . $mid . 'Hover); // ]]> </script> '; echo "<div class=\"{$mclass}-before\"></div>\n"; echo "<div id=\"{$mid}\" class=\"{$mclass}\">"; echo $javascript; echo $itemdown['output']; echo "</div>\n"; echo "<div class=\"{$mclass}-after\"></div>\n"; return; case 'Home': $sof = get_option('show_on_front'); $pfp = get_option('page_for_posts'); if (is_home()) { $class = $selected; } if ($sof == 'page') { $url = $pfp ? get_page_link($pfp) : ''; } else { $url = get_bloginfo('url', 'display'); } break; case 'FrontPage': $sof = get_option('show_on_front'); $pof = get_option('page_on_front'); if ($sof == 'page' and $pof) { if (is_page($pof)) { $class = $selected; } } else { if (is_home()) { $class = $selected; } } $url = get_bloginfo('url', 'display'); break; case 'Heading': $url = '*'; break; case 'Category': if (is_category($item->selection) or is_single() and in_category($item->selection)) { $class = $selected; } else { foreach ((array) get_term_children($item->selection, 'category') as $child) { if (is_category($child) or is_single() and in_category($child)) { $class = $selected; } } } $url = get_category_link($item->selection); break; case 'CategoryTree': if (is_category($item->selection) or is_single() and in_category($item->selection)) { $class = $selected; } else { foreach ((array) get_term_children($item->selection, 'category') as $child) { if (is_category($child) or is_single() and in_category($child)) { $class = $selected; } } } $url = get_category_link($item->selection); $href = $item->selection ? "href=\"{$url}\"" : "style=\"cursor:default;\""; $list = wp_list_categories('echo=0&title_li=&child_of=' . $item->selection); if ($list != '<li>' . __('No categories') . '</li>') { $ulist = sprintf($ul, $list); } $output = sprintf($li, $class, " {$href} {$attributes}", $name, $ulist); $url = ''; break; case 'Page': if (is_page($item->selection)) { $class = $selected; } $url = get_page_link($item->selection); break; case 'PageTree': if (wpm_is_descendant($item->selection)) { $class = $selected; } $url = get_page_link($item->selection); $href = $item->selection ? "href=\"{$url}\"" : "style=\"cursor:default;\""; $list = wp_list_pages('echo=0&title_li=&child_of=' . $item->selection); if ($list != '') { $ulist = sprintf($ul, $list); } $output = sprintf($li, $class, " {$href} {$attributes}", $name, $ulist); $url = ''; break; case 'Post': if (is_single($item->selection)) { $class = $selected; } $url = get_permalink($item->selection); break; case 'External': $url = $item->selection; break; default: $url = ''; break; } if ($url) { $href = $url != '*' ? "href=\"{$url}\"" : "style=\"cursor:default;\""; $output = sprintf($li, $class, " {$href} {$attributes}", $name, $itemdown['output']); } $itemside = wpm_menu($item->side, $level, $css, $ul, $li); $output .= $itemside['output']; $hilite = $class == $selected || $itemside['hilite']; return array('output' => $output, 'hilite' => $hilite); }
function wpm_read_node($node_id) { $node = wpm_readnode($node_id); return $node; }