/** * @param Varien_Simplexml_Element $xmlData * @param boolean $isSingleStoreMode * @param Varien_Simplexml_Element $node * @param string $website * @param string $store * @param mixed $expectedResult * @param string $message * @dataProvider addItemFilterDataProvider */ public function testHasChildren($xmlData, $isSingleStoreMode, $node, $website, $store, $expectedResult, $message) { $app = $this->getMock('Mage_Core_Model_App', array('isSingleStoreMode'), array(), '', true); $app->expects($this->any())->method('isSingleStoreMode')->will($this->returnValue($isSingleStoreMode)); $config = new Mage_Adminhtml_Model_Config(array('data' => $xmlData, 'app' => $app)); $result = $config->hasChildren($node, $website, $store); $this->assertEquals($expectedResult, $result, $message); }
/** * Enter description here... * * @return Mage_Adminhtml_Block_System_Config_Form */ public function initForm() { $this->_initObjects(); $form = new Varien_Data_Form(); $sections = $this->_configFields->getSection($this->getSectionCode(), $this->getWebsiteCode(), $this->getStoreCode()); if (empty($sections)) { $sections = array(); } foreach ($sections as $section) { /* @var $section Varien_Simplexml_Element */ if (!$this->_canShowField($section)) { continue; } foreach ($section->groups as $groups) { $groups = (array) $groups; usort($groups, array($this, '_sortForm')); foreach ($groups as $group) { /* @var $group Varien_Simplexml_Element */ if (!$this->_canShowField($group)) { continue; } if ($group->frontend_model) { $fieldsetRenderer = Mage::getBlockSingleton((string) $group->frontend_model); } else { $fieldsetRenderer = $this->_defaultFieldsetRenderer; } $fieldsetRenderer->setForm($this); $fieldsetRenderer->setConfigData($this->_configData); $fieldsetRenderer->setGroup($group); if ($this->_configFields->hasChildren($group, $this->getWebsiteCode(), $this->getStoreCode())) { $helperName = $this->_configFields->getAttributeModule($section, $group); $fieldsetConfig = array('legend' => Mage::helper($helperName)->__((string) $group->label)); if (!empty($group->comment)) { $fieldsetConfig['comment'] = (string) $group->comment; } $fieldset = $form->addFieldset($section->getName() . '_' . $group->getName(), $fieldsetConfig)->setRenderer($fieldsetRenderer); $this->_addElementTypes($fieldset); if ($group->clone_fields) { if ($group->clone_model) { $cloneModel = Mage::getModel((string) $group->clone_model); } else { Mage::throwException('Config form fieldset clone model required to be able to clone fields'); } foreach ($cloneModel->getPrefixes() as $prefix) { $this->initFields($fieldset, $group, $section, $prefix['field'], $prefix['label']); } } else { $this->initFields($fieldset, $group, $section); } $this->_fieldsets[$group->getName()] = $fieldset; } } } } $this->setForm($form); return $this; }
/** * Init config group * * @param Varien_Data_Form $form * @param Varien_Simplexml_Element $group * @param Varien_Simplexml_Element $section * @param Varien_Data_Form_Element_Fieldset|null $parentElement */ protected function _initGroup($form, $group, $section, $parentElement = null) { if ($group->frontend_model) { $fieldsetRenderer = Mage::getBlockSingleton((string) $group->frontend_model); } else { $fieldsetRenderer = $this->_defaultFieldsetRenderer; } $fieldsetRenderer->setForm($this)->setConfigData($this->_configData); if ($this->_configFields->hasChildren($group, $this->getWebsiteCode(), $this->getStoreCode())) { $helperName = $this->_configFields->getAttributeModule($section, $group); $fieldsetConfig = array('legend' => Mage::helper($helperName)->__((string) $group->label)); if (!empty($group->comment)) { $fieldsetConfig['comment'] = Mage::helper($helperName)->__((string) $group->comment); } if (!empty($group->expanded)) { $fieldsetConfig['expanded'] = (bool) $group->expanded; } $fieldset = new Varien_Data_Form_Element_Fieldset($fieldsetConfig); $fieldset->setId($section->getName() . '_' . $group->getName())->setRenderer($fieldsetRenderer)->setGroup($group); if ($parentElement) { $fieldset->setIsNested(true); $parentElement->addElement($fieldset); } else { $form->addElement($fieldset); } $this->_prepareFieldOriginalData($fieldset, $group); $this->_addElementTypes($fieldset); $this->_fieldsets[$group->getName()] = $fieldset; if ($group->clone_fields) { if ($group->clone_model) { $cloneModel = Mage::getModel((string) $group->clone_model); } else { Mage::throwException($this->__('Config form fieldset clone model required to be able to clone fields')); } foreach ($cloneModel->getPrefixes() as $prefix) { $this->initFields($fieldset, $group, $section, $prefix['field'], $prefix['label']); } } else { $this->initFields($fieldset, $group, $section); } } }