API16:JHtmlMenu/linkoptions
From Joomla! Documentation
Description
Build the multiple select list for Menu Links/Pages
<! 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 transcluded page call, red link never existed >
Examples
Code Examples