Actions

API15

JElementMenuItem/fetchElement

From Joomla! Documentation

< API15:JElementMenuItem
Revision as of 11:47, 12 May 2013 by JoomlaWikiBot (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Replacement filing cabinet.png
This Namespace has been archived - Please Do Not Edit or Create Pages in this namespace. Pages contain information for a Joomla! version which is no longer supported. It exists only as a historical reference, will not be improved and its content may be incomplete.

[<! removed edit link to red link >]

<! removed transcluded page call, red link never existed >

Contents

Syntax

fetchElement($name, $value, &$node, $control_name)
Parameter Name Default Value Description
$name
$value
&$node
$control_name

Defined in

libraries/joomla/html/parameter/element/menuitem.php

Importing

jimport( 'joomla.html.parameter.element.menuitem' );

Source Body

function fetchElement($name, $value, &$node, $control_name)
{
        $db =& JFactory::getDBO();
 
        $menuType = $this->_parent->get('menu_type');
        if (!empty($menuType)) {
                $where = ' WHERE menutype = '.$db->Quote($menuType);
        } else {
                $where = ' WHERE 1';
        }
 
        // load the list of menu types
        // TODO: move query to model
        $query = 'SELECT menutype, title' .
                        ' FROM #__menu_types' .
                        ' ORDER BY title';
        $db->setQuery( $query );
        $menuTypes = $db->loadObjectList();
 
        if ($state = $node->attributes('state')) {
                $where .= ' AND published = '.(int) $state;
        }
 
        // load the list of menu items
        // TODO: move query to model
        $query = 'SELECT id, parent, name, menutype, type' .
                        ' FROM #__menu' .
                        $where .
                        ' ORDER BY menutype, parent, ordering'
                        ;
 
        $db->setQuery($query);
        $menuItems = $db->loadObjectList();
 
        // establish the hierarchy of the menu
        // TODO: use node model
        $children = array();
 
        if ($menuItems)
        {
                // first pass - collect children
                foreach ($menuItems as $v)
                {
                        $pt     = $v->parent;
                        $list   = @$children[$pt] ? $children[$pt] : array();
                        array_push( $list, $v );
                        $children[$pt] = $list;
                }
        }
 
        // second pass - get an indent list of the items
        $list = JHTML::_('menu.treerecurse', 0, '', array(), $children, 9999, 0, 0 );
 
        // assemble into menutype groups
        $n = count( $list );
        $groupedList = array();
        foreach ($list as $k => $v) {
                $groupedList[$v->menutype][] = &$list[$k];
        }
 
        // assemble menu items to the array
        $options        = array();
        $options[]      = JHTML::_('select.option', '', '- '.JText::_('Select Item').' -');
 
        foreach ($menuTypes as $type)
        {
                if ($menuType == '')
                {
                        $options[]      = JHTML::_('select.option',  '0', '&nbsp;', 'value', 'text', true);
                        $options[]      = JHTML::_('select.option',  $type->menutype, $type->title . ' - ' . JText::_( 'Top' ), 'value', 'text', true );
                }
                if (isset( $groupedList[$type->menutype] ))
                {
                        $n = count( $groupedList[$type->menutype] );
                        for ($i = 0; $i < $n; $i++)
                        {
                                $item = &$groupedList[$type->menutype][$i];
 
                                //If menutype is changed but item is not saved yet, use the new type in the list
                                if ( JRequest::getString('option', '', 'get') == 'com_menus' ) {
                                        $currentItemArray = JRequest::getVar('cid', array(0), '', 'array');
                                        $currentItemId = (int) $currentItemArray[0];
                                        $currentItemType = JRequest::getString('type', $item->type, 'get');
                                        if ( $currentItemId == $item->id && $currentItemType != $item->type) {
                                                $item->type = $currentItemType;
                                        }
                                }
 
                                $disable = strpos($node->attributes('disable'), $item->type) !== false ? true : false;
                                $options[] = JHTML::_('select.option',  $item->id, '&nbsp;&nbsp;&nbsp;' .$item->treename, 'value', 'text', $disable );
 
                        }
                }
        }
 
        return JHTML::_('select.genericlist',  $options, ''.$control_name.'['.$name.']', 'class="inputbox"', 'value', 'text', $value, $control_name.$name);
}

[<! removed edit link to red link >] <! removed transcluded page call, red link never existed >

Examples

<CodeExamplesForm />