Сменить сценарий JS

Discussion in 'PHP' started by ufalog, 24 Dec 2009.

  1. ufalog

    ufalog Elder - Старейшина

    Joined:
    28 Jul 2007
    Messages:
    174
    Likes Received:
    6
    Reputations:
    -5
    делаю сайт http://www.egodesign.ru/ на нем стоит меню основанное на mootools... сейчас меню работает.... (нажимаеш на родителя и открывается подменю.)

    и закрываются под категории только при повторном нажатии

    а надо чтобы открывшееся подменю закрывалось пр открытии следующего


    исходник - http://egoweb.ru/mod_mainmenu.rar


    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'] == || $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');
    }




     
  2. LStr1ke

    LStr1ke Elder - Старейшина

    Joined:
    29 Jul 2009
    Messages:
    800
    Likes Received:
    145
    Reputations:
    73
    Ну напиши отдельную функцию которая закрывает все выпадающие меню. и Вставь ее в начало функции открывания.

    Пользователь нажимает на ссылку -> все закрывается -> выпадает выбранное им
     
  3. ufalog

    ufalog Elder - Старейшина

    Joined:
    28 Jul 2007
    Messages:
    174
    Likes Received:
    6
    Reputations:
    -5

    uгмс.... не подскажеш как? :rolleyes: я просто слаб в js.....
     
  4. ufalog

    ufalog Elder - Старейшина

    Joined:
    28 Jul 2007
    Messages:
    174
    Likes Received:
    6
    Reputations:
    -5
    народ помогите а....

    за небольшое вознаграждение даже можно....