?
Path : /home/admin/public_html/old/plugins/system/jcemediabox/elements/ |
Current File : /home/admin/public_html/old/plugins/system/jcemediabox/elements/menuitemlegacy.php |
<?php /** * @version $Id: menuitem.php 14401 2010-01-26 14:10:00Z louis $ * @package Joomla.Framework * @subpackage Parameter * @copyright Copyright (C) 2005 - 2010 Open Source Matters. All rights reserved. * @license GNU/GPL, see LICENSE.php * Joomla! is free software. This version may have been modified pursuant * to the GNU General Public License, and as distributed it includes or * is derivative of works licensed under the GNU General Public License or * other free or open source software licenses. * See COPYRIGHT.php for copyright notices and details. */ // Check to ensure this file is within the rest of the framework defined('JPATH_BASE') or die(); /** * Renders a menu item element * * @package Joomla.Framework * @subpackage Parameter * @since 1.5 */ class JElementMenuItemLegacy extends JElement { /** * Element name * * @access protected * @var string */ var $_name = 'MenuItemLegacy'; 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(); // get state if set $state = (int) $node->attributes('state'); // only get published menu items $where .= ' AND published = 1'; // 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', ' ', '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, ' ' .$item->treename, 'value', 'text', $disable ); } } } $attribs = array('class="inputbox"'); $name = $control_name.'['.$name.']'; $id = $control_name.$name; if ($node->attributes('multiple')) { $attribs[]= 'multiple="multiple"'; $name .= '[]'; if ($node->attributes('size')) { $attribs[] = 'size="' . (int) $node->attributes('size') . '"'; } } return JHTML::_('select.genericlist', $options, $name, implode(' ', $attribs), 'value', 'text', $value, $id); } }