Actions

API16

JHtmlMenu/linkoptions

From Joomla! Documentation

< API16:JHtmlMenu
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.

Contents

Description

Build the multiple select list for Menu Links/Pages

[<! removed edit link to red link >]

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

Syntax

static linkoptions($all=false, $unassigned=false)
Parameter Name Default Value Description
$all false
$unassigned false

Defined in

libraries/joomla/html/html/menu.php

Importing

jimport( 'joomla.html.html.menu' );

Source Body

public static function linkoptions($all=false, $unassigned=false)
{
        $db = &JFactory::getDbo();
 
        // get a list of the menu items
        $query = 'SELECT m.id, m.parent_id, m.title, m.menutype'
        . ' FROM #__menu AS m'
        . ' WHERE m.published = 1'
        . ' ORDER BY m.menutype, m.parent_id, m.ordering'
        ;
        $db->setQuery($query);
 
        $mitems = $db->loadObjectList();
 
        // Check for a database error.
        if ($db->getErrorNum()) {
                JError::raiseNotice(500, $db->getErrorMsg());
        }
 
        if (!$mitems) {
                $mitems = array();
        }
 
        $mitems_temp = $mitems;
 
        // establish the hierarchy of the menu
        $children = array();
        // first pass - collect children
        foreach ($mitems as $v)
        {
                $id = $v->id;
                $pt = $v->parent_id;
                $list = @$children[$pt] ? $children[$pt] : array();
                array_push($list, $v);
                $children[$pt] = $list;
        }
        // second pass - get an indent list of the items
        $list = JHtmlMenu::TreeRecurse(intval($mitems[0]->parent_id), '', array(), $children, 9999, 0, 0);
 
        // Code that adds menu name to Display of Page(s)
        $mitems_spacer  = $mitems_temp[0]->menutype;
 
        $mitems = array();
        if ($all | $unassigned) {
                $mitems[] = JHtml::_('select.option',  '<OPTGROUP>', JText::_('COM_MENUS_OPTION_MENU'));
 
                if ($all) {
                        $mitems[] = JHtml::_('select.option',  0, JText::_('JOPTION_ALL'));
                }
                if ($unassigned) {
                        $mitems[] = JHtml::_('select.option',  -1, JText::_('JOPTION_UNASSIGNED'));
                }
 
                $mitems[] = JHtml::_('select.option',  '</OPTGROUP>');
        }
 
        $lastMenuType   = null;
        $tmpMenuType    = null;
        foreach ($list as $list_a)
        {
                if ($list_a->menutype != $lastMenuType)
                {
                        if ($tmpMenuType) {
                                $mitems[] = JHtml::_('select.option',  '</OPTGROUP>');
                        }
                        $mitems[] = JHtml::_('select.option',  '<OPTGROUP>', $list_a->menutype);
                        $lastMenuType = $list_a->menutype;
                        $tmpMenuType  = $list_a->menutype;
                }
 
                $mitems[] = JHtml::_('select.option',  $list_a->id, $list_a->treename);
        }
        if ($lastMenuType !== null) {
                $mitems[] = JHtml::_('select.option',  '</OPTGROUP>');
        }
 
        return $mitems;
}

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

Examples

<CodeExamplesForm />