示例#1
0
 /**
  * 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;
         }
     }
 }
示例#2
0
 /**
  * @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());
 }