Inheritance: extends Base
 /**
  * @covers eZ\Publish\Core\FieldType\Page\Parts\Page::__construct
  * @covers eZ\Publish\Core\FieldType\Page\Parts\Base::__construct
  * @covers eZ\Publish\Core\FieldType\Page\Parts\Base::getState
  */
 public function testGetState()
 {
     $zone1 = new Zone(array('id' => 'foo'));
     $zone2 = new Zone(array('id' => 'bar'));
     $zone3 = new Zone(array('id' => 'baz'));
     $properties = array('layout' => 'my_layout', 'zones' => array($zone1, $zone2, $zone3));
     $page = new Page($properties);
     $this->assertEquals($properties + array('zonesById' => array('foo' => $zone1, 'bar' => $zone2, 'baz' => $zone3), 'attributes' => array()), $page->getState());
 }
Ejemplo n.º 2
0
 /**
  * Generates XML string from $page object to be stored in storage engine
  *
  * @param \eZ\Publish\Core\FieldType\Page\Parts\Page $page
  *
  * @return string
  */
 public function generateXmlString(Parts\Page $page)
 {
     $dom = new DOMDocument('1.0', 'utf-8');
     $dom->formatOutput = true;
     $dom->loadXML('<page />');
     $pageNode = $dom->documentElement;
     foreach ($page->getState() as $attrName => $attrValue) {
         switch ($attrName) {
             case 'id':
                 $pageNode->setAttribute('id', $attrValue);
                 break;
             case 'zones':
                 foreach ($page->{$attrName} as $zone) {
                     $pageNode->appendChild($this->generateZoneXmlString($zone, $dom));
                 }
                 break;
             case 'layout':
                 $node = $dom->createElement('zone_layout', $attrValue);
                 $pageNode->appendChild($node);
                 break;
             case 'attributes':
                 foreach ($attrValue as $arrayItemKey => $arrayItemValue) {
                     $this->addNewXmlElement($dom, $pageNode, $arrayItemKey, $arrayItemValue);
                 }
                 break;
             case 'zonesById':
                 // Do not store
                 break;
             default:
                 $this->addNewNotEmptyXmlElement($dom, $pageNode, $attrName, $attrValue);
                 break;
         }
     }
     return $dom->saveXML();
 }