*/
class Mage_Core_Block_Html_Select extends Mage_Core_Block_Abstract
{
protected $_options = array();
/**
* Get options of the element
*
* @return array
*/
public function getOptions()
{
return $this->_options;
}
/**
* Set options for the HTML select
*
* @param array $options
* @return Mage_Core_Block_Html_Select
*/
public function setOptions($options)
{
$this->_options = $options;
return $this;
}
/**
* Add an option to HTML select
*
* @param string $value HTML value
* @param string $label HTML label
* @param array $params HTML attributes
* @return Mage_Core_Block_Html_Select
*/
public function addOption($value, $label, $params=array())
{
$this->_options[] = array('value' => $value, 'label' => $label, 'params' => $params);
return $this;
}
/**
* Set element's HTML ID
*
* @param string $id ID
* @return Mage_Core_Block_Html_Select
*/
public function setId($id)
{
$this->setData('id', $id);
return $this;
}
/**
* Set element's CSS class
*
* @param string $class Class
* @return Mage_Core_Block_Html_Select
*/
public function setClass($class)
{
$this->setData('class', $class);
return $this;
}
/**
* Set element's HTML title
*
* @param string $title Title
* @return Mage_Core_Block_Html_Select
*/
public function setTitle($title)
{
$this->setData('title', $title);
return $this;
}
/**
* HTML ID of the element
*
* @return string
*/
public function getId()
{
return $this->getData('id');
}
/**
* CSS class of the element
*
* @return string
*/
public function getClass()
{
return $this->getData('class');
}
/**
* Returns HTML title of the element
*
* @return string
*/
public function getTitle()
{
return $this->getData('title');
}
/**
* Render HTML
*
* @return string
*/
protected function _toHtml()
{
if (!$this->_beforeToHtml()) {
return '';
}
$html = '';
return $html;
}
/**
* Return option HTML node
*
* @param array $option
* @param boolean $selected
* @return string
*/
protected function _optionToHtml($option, $selected = false)
{
$selectedHtml = $selected ? ' selected="selected"' : '';
if ($this->getIsRenderToJsTemplate() === true) {
$selectedHtml .= ' #{option_extra_attr_' . self::calcOptionHash($option['value']) . '}';
}
$params = '';
if (!empty($option['params']) && is_array($option['params'])) {
foreach ($option['params'] as $key => $value) {
if (is_array($value)) {
foreach ($value as $keyMulti => $valueMulti) {
$params .= sprintf(' %s="%s" ', $keyMulti, $valueMulti);
}
} else {
$params .= sprintf(' %s="%s" ', $key, $value);
}
}
}
return sprintf('',
$this->escapeHtml($option['value']),
$selectedHtml,
$params,
$this->escapeHtml($option['label']));
}
/**
* Alias for toHtml()
*
* @return string
*/
public function getHtml()
{
return $this->toHtml();
}
/**
* Calculate CRC32 hash for option value
*
* @param string $optionValue Value of the option
* @return string
*/
public function calcOptionHash($optionValue)
{
return sprintf('%u', crc32($this->getName() . $this->getId() . $optionValue));
}
}