public function testConditionalPlaceHolders()
 {
     $template = new TemplateTag();
     $template->setContent('<cond:placeholder name="foo">${content}</cond:placeholder>|' . '<cond:placeholder name="bar">${content}</cond:placeholder>');
     $template->onParseTime();
     $template->onAfterAppend();
     $template->setPlaceHolders(['foo' => '1', 'bar' => '2']);
     $this->assertEquals('1|2', $template->transformTemplate());
     $template->clear();
     $this->assertEquals('|', $template->transformTemplate());
 }
예제 #2
0
 /**
  * Test DOM node relocation including static content and transformation.
  */
 public function testComplexUseCse()
 {
     $tag = new TemplateTag();
     $tag->setContent('<core:appendnode includestatic="true" namespace="' . __NAMESPACE__ . '\\templates" template="include_complex" />');
     $tag->onParseTime();
     $tag->onAfterAppend();
     $expected = 'static text';
     // fill template with place holder
     /* @var $template TemplateTag */
     $template = $tag->getChildNode('name', 'test', Template::class);
     $template->setPlaceHolder('test', $expected);
     $template->transformOnPlace();
     $tag->setPlaceHolder('test', $expected);
     $actual = $tag->transformTemplate();
     // 6 = 4 static + 1 template place holder + 1 place holder
     $this->assertTrue(substr_count($actual, $expected) === 6);
 }
    /**
     * @return TemplateTag
     */
    private function getTemplate()
    {
        $doc = new TemplateTag();
        $doc->setContent('<cond:template content-mapping="teaser" expression="content->displayIt()" condition="true()">
   <h2 class="...">${content->getHeadline()}</h2>
   <cond:template content-mapping="content" expression="content->getSubHeadline()" condition="notEmpty()">
      <h3 class="...">${content->getSubHeadline()}</h3>
   </cond:template>
   <p>${content->getText()}</p>
   <cond:template content-mapping="content->getMoreLink()" expression="content" condition="notEmpty()">
      <a href="${content->getUrl()}">${content->getLabel()}</a>
   </cond:template>
</cond:template>');
        $doc->onParseTime();
        $doc->onAfterAppend();
        $doc->transformOnPlace();
        return $doc;
    }
 /**
  * @return DomNode
  */
 protected function getDocument()
 {
     $doc = new TemplateTag();
     $doc->setContent('<cond:placeholder name="name" condition="empty()">
      <p>No entry available.</p>
   </cond:placeholder>
   <cond:placeholder name="name" condition="notEmpty()">
      <p>Name: ${content}</p>
   </cond:placeholder>');
     $doc->onParseTime();
     $doc->onAfterAppend();
     $doc->transformOnPlace();
     return $doc;
 }
예제 #5
0
 /**
  * Complex use case within a template. Checks whether place holder in place holder works.
  */
 public function testLanguageLabel4()
 {
     $node = new TemplateTag();
     $node->setContent('<h2><html:getstring id="foo" ' . 'namespace="' . self::TEST_VENDOR . '" ' . 'config="' . self::CONFIG_FILE_NAME . '"' . ' entry="complex" /></h2>');
     $node->onParseTime();
     $node->onAfterAppend();
     $node->getChildNode('id', 'foo', LanguageLabelTag::class)->setPlaceHolder('place-holder', 'test');
     $this->assertEquals('<h2>This is a test!</h2>', $node->transformTemplate());
 }
예제 #6
0
 public function testExtractExpressionTags4()
 {
     $property = new ReflectionProperty(Document::class, 'knownExpressions');
     $property->setAccessible(true);
     // inject special conditions that apply for this
     $original = $property->getValue(null);
     $property->setValue(null, []);
     // setup template
     $doc = new TemplateTag();
     $doc->setContent('${expression}');
     $doc->onParseTime();
     try {
         $doc->onAfterAppend();
         $this->fail('knownExpressions() should throw a ParserException in case no expression applies!');
     } catch (ParserException $e) {
         // this is expected behavior
     }
     // reset to original setup
     $property->setValue(null, $original);
 }