ufaclub
Полезный
- Регистрация
- 1 Май 2007
- Сообщения
- 395
- Реакции
- 19
- Автор темы
- #1
делаю сайт Для просмотра ссылки Войди или Зарегистрируйся на нем стоит меню основанное на mootools... сейчас меню работает.... (нажимаеш на родителя и открывается подменю.)
и закрываются под категории только при повторном нажатии
а надо чтобы открывшееся подменю закрывалось пр открытии следующего
исходник - Для просмотра ссылки Войдиили Зарегистрируйся
и закрываются под категории только при повторном нажатии
а надо чтобы открывшееся подменю закрывалось пр открытии следующего
исходник - Для просмотра ссылки Войди
PHP:
<?php
/**
* @package yoo_mellow Template
* @version 1.5.0 2009-10-01 16:02:39
* @author YOOtheme http://www.yootheme.com
* @copyright Copyright (C) 2007 - 2009 YOOtheme GmbH
*/
// no direct access
defined('_JEXEC') or die('Restricted access');
function YOOMenuAccordionDecorator(&$node, $args) {
$yoomenu = &YOOMenu::getInstance();
$params = $yoomenu->getParams();
$user = &JFactory::getUser();
$menu = &JSite::getMenu();
$active = $menu->getActive();
$path = isset($active) ? array_reverse($active->tree) : null;
// remove child items deeper than end level
if (($args['end']) && ($node->attributes('level') >= $args['end'])) {
$children = $node->children();
foreach ($node->children() as $child) {
if ($child->name() == 'ul') {
$node->removeChild($child);
}
}
}
if ($node->name() == 'ul') {
// remove inaccessable items according to user rights
foreach ($node->children() as $child) {
if ($child->attributes('access') > $user->get('aid', 0)) {
$node->removeChild($child);
}
}
// set order/first/last for li
$count = count($node->children());
foreach ($node->children() as $i => $child) {
if ($i == 0) $child->addAttribute('first', 1);
if ($i == $count - 1) $child->addAttribute('last', 1);
$child->addAttribute('order', $i + 1);
}
// set ul level
if (isset($node->_children[0])) {
$level = $node->_children[0]->attributes('level') - $params->get('startLevel');
$css = 'level' . $level;
$node->attributes('class') ? $node->addAttribute('class', $node->attributes('class') . ' ' . $css) : $node->addAttribute('class', $css);
}
}
// set item styling
if ($node->name() == 'li') {
$item = $menu->getItem($node->attributes('id'));
$item_params = new JParameter($item->params);
$sfx_params = new YOOTemplateParameter($params->get('class_sfx'));
$page_params = new YOOTemplateParameter($item_params->get('pageclass_sfx'));
$level = $node->attributes('level') - $params->get('startLevel');
$images = $sfx_params->get('images') != 'off';
$color = $page_params->get('itemcolor', '');
$css = 'level' . $level . ' item' . $node->attributes('order');
$span_css = '';
if ($color) $css .= ' '.$color;
if ($node->attributes('first')) $css .= ' first';
if ($node->attributes('last')) $css .= ' last';
if (isset($node->ul) && ($args['end'] == 0 || $node->attributes('level') < $args['end'])) $css .= ' parent';
if (isset($path) && in_array($node->attributes('id'), $path)) $css .= ' active';
if (isset($path) && $node->attributes('id') == $path[0]) $css .= ' current';
if ($item->type == 'separator') $css .= ' separator';
// add a/span css classes
if (isset($node->_children[0])) {
$node->_children[0]->attributes('class') ? $node->_children[0]->addAttribute('class', $node->_children[0]->attributes('class') . ' ' . $css) : $node->_children[0]->addAttribute('class', $css);
}
// add accordion css class
if (isset($node->ul[0]) && $item->type == 'separator' && $level == 1) {
$css .= ' toggler';
$node->ul[0]->addAttribute('class', 'accordion');
}
// add item css classes
$node->attributes('class') ? $node->addAttribute('class', $node->attributes('class') . ' ' . $css) : $node->addAttribute('class', $css);
// add item background image
if ($item_params->get('menu_image') && $item_params->get('menu_image') != -1) {
if (isset($node->_children[0])) {
if ($images && isset($node->_children[0]->span[0])) {
$img = 'images/stories/'.$item_params->get('menu_image');
$alt = dirname($img).'/'.JFile::stripExt(basename($img)).'_alt.'.JFile::getExt($img);
// check for alternate image
if (JFile::exists(JPATH_ROOT.DS.$alt)) {
$img = $alt;
}
$node->_children[0]->span[0]->addAttribute('style', 'background-image: url('.JURI::base().$img.');');
$span_css .= 'icon';
}
if ($img = $node->_children[0]->getElementByPath('img')) {
$node->_children[0]->removeChild($img); // remove old item image
}
}
}
// add span css and subtitle span
if (isset($node->_children[0]) && isset($node->_children[0]->span[0])) {
$node->_children[0]->span[0]->addAttribute('class', 'bg '.$span_css);
$title = $node->_children[0]->span[0];
$split = explode('||', $title->data(), 2);
if (count($split) == 2) {
$span =& $node->_children[0]->span[0]->addChild('span', array('class' => 'title'));
$span->setData(trim($split[0]));
$span =& $node->_children[0]->span[0]->addChild('span', array('class' => 'subtitle'));
$span->setData(trim($split[1]));
}
}
}
// remove inactive child items except for accordion
if (!(isset($path) && in_array($node->attributes('id'), $path))) {
if (isset($args['children']) && !$args['children']) {
$children = $node->children();
foreach ($node->children() as $child) {
if ($child->name() == 'ul') {
// dont remove children for accordion
if (!$child->attributes('class') == 'accordion') {
$node->removeChild($child);
}
}
}
}
}
$node->removeAttribute('id');
$node->removeAttribute('rel');
$node->removeAttribute('level');
$node->removeAttribute('access');
$node->removeAttribute('order');
$node->removeAttribute('first');
$node->removeAttribute('last');
}