public function render(Varien_Data_Form_Element_Abstract $element) { $this->setElement($this); $this->getType($element->getType()); $this->setLabelHtml($this->_getLabelHtml($element)); $this->setElementHtml($this->_getElementHtml($element)); return $this->toHtml(); }
/** * Return checkbox html with hidden field for correct config values * * @param string $elementId * @return string */ public function getElementHtml(Varien_Data_Form_Element_Abstract $element) { if ($element->getType() != 'checkbox') { return $element->getElementHtml(); } $configValue = (string) $element->getValue(); if ($configValue) { $element->setChecked(true); } else { $element->setValue('1'); } if ($element->getCanUseDefaultValue() && $element->getInherit()) { $element->setDisabled(true); } $hidden = new Varien_Data_Form_Element_Hidden(array('html_id' => $element->getHtmlId() . '_value', 'name' => $element->getName(), 'value' => '0')); $hidden->setForm($element->getForm()); return $hidden->getElementHtml() . $element->getElementHtml(); }
/** * Copy data level up from _data['field_config'] so it could be later used by button element * * @param Varien_Data_Form_Element_Abstract $element * @return string */ protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element) { /** * There's no way to unset the renderer from the element. We need to clone the current one and set additional * data and default renderer to keep standard look and feel. */ /* @see Varien_Data_Form_Abstract::addField() */ $elementClassName = 'Varien_Data_Form_Element_' . ucfirst(strtolower($element->getType())); /* @var $newElement Varien_Data_Form_Element_Abstract */ $newElement = new $elementClassName($element->getData()); $newElement->setId($element->getHtmlId()); $newElement->setForm($this->getForm()); /* @see Mage_Adminhtml_Block_System_Config_Form::_initObjects() */ $newElement->setRenderer(Mage::getBlockSingleton('adminhtml/system_config_form_field')); if (isset($element->getFieldConfig()->config)) { // Push data into internal array from <config> section, so we can reach it later in element building model. $newElement->addData((array) $element->getFieldConfig()->config); } return $newElement->toHtml(); }