private function parsemenu(&$str) { $result =& $this->theme->templates; $s = $this->parsetag($str, 'menulist', '$template.menu'); if ($s == '') { return $this->copy('menu'); } $default =& $this->default->templates; $item = trim($this->parsetag($s, 'item', '$item')); $result['menu.item.submenu'] = $this->parsetag($item, 'submenu', '$submenu', $default['menu.item.submenu']); $result['menu.item'] = $item != '' ? $item : $default['menu.item']; $result['menu.current'] = $this->parsetag($s, 'current', '', $default['menu.current']); //fix old version if ($this->fixold) { if (strpos($result['menu.item.submenu'], '%')) { $result['menu.item.submenu'] = sprintf($result['menu.item.submenu'], '$items'); } if (strpos($result['menu.item'], '%')) { $result['menu.item'] = sprintf($result['menu.item'], '$link', '$title', '$submenu'); } if (strpos($result['menu.current'], '%')) { $result['menu.current'] = sprintf($result['menu.current'], '$link', '$title', '$submenu'); } } //hover $nohover = '<!--nohover-->'; if (is_int($i = strpos($s, $nohover))) { $result['menu.hover'] = 'false'; $s = substr_replace($s, '', $i, strlen($nohover)); } elseif ($id = tcontentfilter::getidtag('*', $s)) { preg_match('/\\<(\\w*)/', $item, $t); $tag = $t[1]; $result['menu.hover'] = 'true'; $js = sprintf(' <script type="text/javascript"> $(document).ready(function() { $("#%s %s").hover(function(){$(this).addClass("jshover");}, function(){$(this).removeClass("jshover");}); }); </script>', $id, $tag); $s = $js . $s; } $s = $this->deletespaces($s); if ($s == '') { if (!isset($result['menu.hover'])) { $result['menu.hover'] = $menu->hover; } $result['menu'] = $default['menu']; } else { if (!isset($result['menu.hover'])) { $result['menu.hover'] = 'false'; } $result['menu'] = $s; } }