/** * Traverse through all elements of specified XML-node and schedule structural elements of it * * @param Mage_Core_Model_Layout_Element $parent */ protected function _readStructure($parent) { foreach ($parent as $node) { /** @var $node Mage_Core_Model_Layout_Element */ switch ($node->getName()) { case self::TYPE_CONTAINER: case self::TYPE_BLOCK: $this->_scheduleStructure($node, $parent); $this->_readStructure($node); break; case self::TYPE_REFERENCE: $this->_readStructure($node); break; case self::TYPE_ACTION: $referenceName = $parent->getAttribute('name'); $element = $this->_scheduledStructure->getStructureElement($referenceName, array()); $element['actions'][] = array($node, $parent); $this->_scheduledStructure->setStructureElement($referenceName, $element); break; case self::TYPE_ARGUMENTS: $referenceName = $parent->getAttribute('name'); $element = $this->_scheduledStructure->getStructureElement($referenceName, array()); $args = $this->_readArguments($node); $element['arguments'] = $this->_mergeArguments($element, $args); $this->_scheduledStructure->setStructureElement($referenceName, $element); break; case self::TYPE_MOVE: $this->_scheduleMove($node); break; case self::TYPE_REMOVE: $this->_scheduledStructure->setElementToRemoveList((string) $node->getAttribute('name')); break; } } }
/** * @covers Mage_Core_Model_Layout_ScheduledStructure::setElementToRemoveList */ public function testSetElementToRemoveList() { $this->assertNotContains('element1', $this->_model->getListToRemove()); $this->_model->setElementToRemoveList('element1'); $this->assertContains('element1', $this->_model->getListToRemove()); }