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()); }
/** * 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; }
/** * 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()); }
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); }