You've already forked joomla_test
							
							
		
			
	
	
		
			119 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
		
		
			
		
	
	
			119 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
|   | <?php | ||
|  | /** | ||
|  |  * @package     Joomla.Platform | ||
|  |  * @subpackage  Form | ||
|  |  * | ||
|  |  * @copyright   Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved. | ||
|  |  * @license     GNU General Public License version 2 or later; see LICENSE | ||
|  |  */ | ||
|  | 
 | ||
|  | defined('JPATH_PLATFORM') or die; | ||
|  | 
 | ||
|  | /** | ||
|  |  * Form Field class for the Joomla Platform. | ||
|  |  * Supports a generic list of options. | ||
|  |  * | ||
|  |  * @package     Joomla.Platform | ||
|  |  * @subpackage  Form | ||
|  |  * @since       11.1 | ||
|  |  */ | ||
|  | class JFormFieldList extends JFormField | ||
|  | { | ||
|  | 	/** | ||
|  | 	 * The form field type. | ||
|  | 	 * | ||
|  | 	 * @var    string | ||
|  | 	 * @since  11.1 | ||
|  | 	 */ | ||
|  | 	protected $type = 'List'; | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * Method to get the field input markup for a generic list. | ||
|  | 	 * Use the multiple attribute to enable multiselect. | ||
|  | 	 * | ||
|  | 	 * @return  string  The field input markup. | ||
|  | 	 * | ||
|  | 	 * @since   11.1 | ||
|  | 	 */ | ||
|  | 	protected function getInput() | ||
|  | 	{ | ||
|  | 		$html = array(); | ||
|  | 		$attr = ''; | ||
|  | 
 | ||
|  | 		// Initialize some field attributes.
 | ||
|  | 		$attr .= $this->element['class'] ? ' class="' . (string) $this->element['class'] . '"' : ''; | ||
|  | 
 | ||
|  | 		// To avoid user's confusion, readonly="true" should imply disabled="true".
 | ||
|  | 		if ((string) $this->element['readonly'] == 'true' || (string) $this->element['disabled'] == 'true') | ||
|  | 		{ | ||
|  | 			$attr .= ' disabled="disabled"'; | ||
|  | 		} | ||
|  | 
 | ||
|  | 		$attr .= $this->element['size'] ? ' size="' . (int) $this->element['size'] . '"' : ''; | ||
|  | 		$attr .= $this->multiple ? ' multiple="multiple"' : ''; | ||
|  | 		$attr .= $this->required ? ' required="required" aria-required="true"' : ''; | ||
|  | 
 | ||
|  | 		// Initialize JavaScript field attributes.
 | ||
|  | 		$attr .= $this->element['onchange'] ? ' onchange="' . (string) $this->element['onchange'] . '"' : ''; | ||
|  | 
 | ||
|  | 		// Get the field options.
 | ||
|  | 		$options = (array) $this->getOptions(); | ||
|  | 
 | ||
|  | 		// Create a read-only list (no name) with a hidden input to store the value.
 | ||
|  | 		if ((string) $this->element['readonly'] == 'true') | ||
|  | 		{ | ||
|  | 			$html[] = JHtml::_('select.genericlist', $options, '', trim($attr), 'value', 'text', $this->value, $this->id); | ||
|  | 			$html[] = '<input type="hidden" name="' . $this->name . '" value="' . $this->value . '"/>'; | ||
|  | 		} | ||
|  | 		// Create a regular list.
 | ||
|  | 		else | ||
|  | 		{ | ||
|  | 			$html[] = JHtml::_('select.genericlist', $options, $this->name, trim($attr), 'value', 'text', $this->value, $this->id); | ||
|  | 		} | ||
|  | 
 | ||
|  | 		return implode($html); | ||
|  | 	} | ||
|  | 
 | ||
|  | 	/** | ||
|  | 	 * Method to get the field options. | ||
|  | 	 * | ||
|  | 	 * @return  array  The field option objects. | ||
|  | 	 * | ||
|  | 	 * @since   11.1 | ||
|  | 	 */ | ||
|  | 	protected function getOptions() | ||
|  | 	{ | ||
|  | 		$options = array(); | ||
|  | 
 | ||
|  | 		foreach ($this->element->children() as $option) | ||
|  | 		{ | ||
|  | 
 | ||
|  | 			// Only add <option /> elements.
 | ||
|  | 			if ($option->getName() != 'option') | ||
|  | 			{ | ||
|  | 				continue; | ||
|  | 			} | ||
|  | 
 | ||
|  | 			// Create a new option object based on the <option /> element.
 | ||
|  | 			$tmp = JHtml::_( | ||
|  | 				'select.option', (string) $option['value'], | ||
|  | 				JText::alt(trim((string) $option), preg_replace('/[^a-zA-Z0-9_\-]/', '_', $this->fieldname)), 'value', 'text', | ||
|  | 				((string) $option['disabled'] == 'true') | ||
|  | 			); | ||
|  | 
 | ||
|  | 			// Set some option attributes.
 | ||
|  | 			$tmp->class = (string) $option['class']; | ||
|  | 
 | ||
|  | 			// Set some JavaScript option attributes.
 | ||
|  | 			$tmp->onclick = (string) $option['onclick']; | ||
|  | 
 | ||
|  | 			// Add the option object to the result set.
 | ||
|  | 			$options[] = $tmp; | ||
|  | 		} | ||
|  | 
 | ||
|  | 		reset($options); | ||
|  | 
 | ||
|  | 		return $options; | ||
|  | 	} | ||
|  | } |