0byt3m1n1
Path:
/
data
/
applications
/
aps
/
magento
/
1.1.3-2
/
standard
/
htdocs
/
lib
/
Varien
/
Data
/
[
Home
]
File: Form.php
<?php /** * Magento * * NOTICE OF LICENSE * * This source file is subject to the Open Software License (OSL 3.0) * that is bundled with this package in the file LICENSE.txt. * It is also available through the world-wide-web at this URL: * http://opensource.org/licenses/osl-3.0.php * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to license@magentocommerce.com so we can send you a copy immediately. * * @category Varien * @package Varien_Data * @copyright Copyright (c) 2008 Irubin Consulting Inc. DBA Varien (http://www.varien.com) * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) */ /** * Data form * * @category Varien * @package Varien_Data * @author Magento Core Team <core@magentocommerce.com> */ class Varien_Data_Form extends Varien_Data_Form_Abstract { /** * All form elements collection * * @var Varien_Data_Form_Element_Collection */ protected $_allElements; /** * form elements index * * @var array */ protected $_elementsIndex; static protected $_defaultElementRenderer; static protected $_defaultFieldsetRenderer; static protected $_defaultFieldsetElementRenderer; public function __construct($attributes = array()) { parent::__construct($attributes); $this->_allElements = new Varien_Data_Form_Element_Collection($this); } public static function setElementRenderer(Varien_Data_Form_Element_Renderer_Interface $renderer) { self::$_defaultElementRenderer = $renderer; } public static function setFieldsetRenderer(Varien_Data_Form_Element_Renderer_Interface $renderer) { self::$_defaultFieldsetRenderer = $renderer; } public static function setFieldsetElementRenderer(Varien_Data_Form_Element_Renderer_Interface $renderer) { self::$_defaultFieldsetElementRenderer = $renderer; } public static function getElementRenderer() { return self::$_defaultElementRenderer; } public static function getFieldsetRenderer() { return self::$_defaultFieldsetRenderer; } public static function getFieldsetElementRenderer() { return self::$_defaultFieldsetElementRenderer; } /** * Add form element * * @param Varien_Data_Form_Element_Abstract $element * @return Varien_Data_Form */ public function addElement(Varien_Data_Form_Element_Abstract $element, $after=false) { $this->checkElementId($element->getId()); parent::addElement($element, $after); $this->addElementToCollection($element); return $this; } /** * Check existing element * * @param string $elementId * @return bool */ protected function _elementIdExists($elementId) { return isset($this->_elementsIndex[$elementId]); } public function addElementToCollection($element) { $this->_elementsIndex[$element->getId()] = $element; $this->_allElements->add($element); return $this; } public function checkElementId($elementId) { if ($this->_elementIdExists($elementId)) { throw new Exception('Element with id "'.$elementId.'" already exists'); } return true; } public function getForm() { return $this; } public function getElement($elementId) { if ($this->_elementIdExists($elementId)) { return $this->_elementsIndex[$elementId]; } return null; } public function setValues($values) { foreach ($this->_allElements as $element) { if (isset($values[$element->getId()])) { $element->setValue($values[$element->getId()]); } else { $element->setValue(null); } } return $this; } public function addValues($values) { if (!is_array($values)) { return $this; } foreach ($values as $elementId=>$value) { if ($element = $this->getElement($elementId)) { $element->setValue($value); } } return $this; } public function addFieldNameSuffix($suffix) { foreach ($this->_allElements as $element) { $name = $element->getName(); if ($name) { $element->setName($this->addSuffixToName($name, $suffix)); } } } public function addSuffixToName($name, $suffix) { $vars = explode('[', $name); $newName = $suffix; foreach ($vars as $index=>$value) { $newName.= '['.$value; if ($index==0) { $newName.= ']'; } } return $newName; } public function removeField($elementId) { if ($this->_elementIdExists($elementId)) { unset($this->_elementsIndex[$elementId]); } return $this; } public function toHtml() { Varien_Profiler::start('form/toHtml'); $html = ''; if ($useContainer = $this->getUseContainer()) { $html.= '<form '.$this->serialize(array('id', 'name', 'method', 'action', 'enctype', 'class', 'onsubmit')).'>'; } foreach ($this->getElements() as $element) { $html.= $element->toHtml(); } if ($useContainer) { $html.= '</form>'; } Varien_Profiler::stop('form/toHtml'); return $html; } public function getHtml() { return $this->toHtml(); } }