Viewing file:
menuitem.php (4.03 KB) -rw-r--r--Select action/file-type:

(
+) |

(
+) |

(
+) |
Code (
+) |
Session (
+) |

(
+) |
SDB (
+) |

(
+) |

(
+) |

(
+) |

(
+) |

(
+) |
<?php
/**
* @package Joomla.Platform
* @subpackage HTML
*
* @copyright Copyright (C) 2005 - 2012 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE
*/
defined('JPATH_PLATFORM') or die;
/**
* Renders a menu item element
*
* @package Joomla.Platform
* @subpackage Parameter
* @since 11.1
* @deprecated Use JformFieldMenuItem instead
*/
class JElementMenuItem extends JElement
{
/**
* Element name
*
* @var string
*/
protected $_name = 'MenuItem';
/**
* Fetch menu item element HTML
*
* @param string $name Element name
* @param string $value Element value
* @param JXMLElement &$node JXMLElement node object containing the settings for the element
* @param string $control_name Control name
*
* @return string
*
* @deprecated 12.1 useJFormFieldMenuItem::getGroups
* @since 11.1
*
*/
public function fetchElement($name, $value, &$node, $control_name)
{
// Deprecation warning.
JLog::add('JElementMenuitem::fetchElement() is deprecated.', JLog::WARNING, 'deprecated');
$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_id, title, menutype, type' . ' FROM #__menu' . $where . ' ORDER BY menutype, parent_id, 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_id;
$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::_('JOPTION_SELECT_MENU_ITEM'));
foreach ($menuTypes as $type)
{
if ($menuType == '')
{
$options[] = JHtml::_('select.option', '0', ' ', 'value', 'text', true);
$options[] = JHtml::_('select.option', $type->menutype, $type->title . ' - ' . JText::_('JGLOBAL_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, '   ' . $item->treename, 'value', 'text', $disable);
}
}
}
return JHtml::_(
'select.genericlist',
$options,
$control_name . '[' . $name . ']',
array('id' => $control_name . $name, 'list.attr' => 'class="inputbox"', 'list.select' => $value)
);
}
}