public function after(PHPTAL_Php_CodeWriter $codewriter) { if ($this->function_name !== null) { $codewriter->doEnd(); $codewriter->pushCode('$ctx->fillSlotCallback(' . $codewriter->str($this->expression) . ', ' . $codewriter->str($this->function_name) . ', $_thistpl, clone $tpl)'); } else { $codewriter->pushCode('$ctx->fillSlot(' . $codewriter->str($this->expression) . ', ob_get_clean())'); } }
public function before(PHPTAL_Php_CodeWriter $codewriter) { $this->tmp_var = $codewriter->createTempVariable(); $codewriter->doSetVar($this->tmp_var, $codewriter->interpolateTalesVarsInString($this->expression)); $codewriter->doIf('$ctx->hasSlot(' . $this->tmp_var . ')'); $codewriter->pushCode('$ctx->echoSlot(' . $this->tmp_var . ')'); $codewriter->doElse(); }
public function after(PHPTAL_Php_CodeWriter $codewriter) { // end of if PROCEED $codewriter->doEnd(); // if trigger found, notify the end of the node $codewriter->doIf($this->var); $codewriter->pushCode($this->var . '->end(' . $codewriter->str($this->expression) . ', $tpl)'); $codewriter->doEnd(); $codewriter->recycleTempVariable($this->var); }
public function after(PHPTAL_Php_CodeWriter $codewriter) { $var = $codewriter->createTempVariable(); $codewriter->pushCode('ob_end_flush()'); $codewriter->doCatch('Exception ' . $var); $codewriter->pushCode('$tpl->addError(' . $var . ')'); $codewriter->pushCode('ob_end_clean()'); $expression = $this->extractEchoType($this->expression); $code = $codewriter->evaluateExpression($expression); switch ($code) { case PHPTAL_Php_TalesInternal::NOTHING_KEYWORD: break; case PHPTAL_Php_TalesInternal::DEFAULT_KEYWORD: $codewriter->pushHTML('<pre class="phptalError"'); $codewriter->doEchoRaw($var); $codewriter->pushHTML('</pre>'); break; default: $this->doEchoAttribute($codewriter, $code); break; } $codewriter->doEnd(); $codewriter->recycleTempVariable($var); }
/** * Attach html5 data attributes to element. * * Called before generating the compiled php for an attribute. * * Example (where 'element' is a Zend_Form_Element): * * <input ztal:data-attributes="element" /> * * Within a Zend_Form implementation: * * $this->addElement('text', 'example', array( * 'data' => array( * 'hike' => 'foo', * 'bar' => '1337', * ) * )); * * @param PHPTAL_Php_CodeWriter $codewriter The code writer. * * @return void */ public function before(\PHPTAL_Php_CodeWriter $codewriter) { $args = explode(',', $this->expression); $zendFormElement = $codewriter->evaluateExpression(trim($args[0])); $dataAttributes = $codewriter->createTempVariable(); $tmp = $codewriter->createTempVariable(); $assignment = $tmp . ' = ' . $zendFormElement . ';' . PHP_EOL; $attributes = '$attributes = ' . $tmp . '->getAttribs();'; if (count($args) > 1) { $option = $codewriter->evaluateExpression(trim($args[1])); $optionVar = $codewriter->createTempVariable(); $assignment .= $optionVar . ' = ' . $option . ';' . PHP_EOL; $attributes = '$attributes = ' . $tmp . '->getAttribsForOption(' . $optionVar . ');'; } // PHPTAL changed the method signature for phptal_escape in v1.2.3. if (defined('PHPTAL_VERSION') && version_compare(PHPTAL_VERSION, '1.2.3', '>=')) { $escapeFunctionCall = 'phptal_escape($value, \'UTF-8\')'; } else { $escapeFunctionCall = 'phptal_escape($value)'; } /** * Compiled code will loop through a Zend_Form_Element attributes * looking for the 'data' key, and assign it to a known temporary * variable. */ $source = ' ' . $assignment . ' if ((is_object(' . $tmp . ') && ' . $tmp . ' instanceof Zend_Form_Element) ) { ' . $attributes . PHP_EOL . ' ' . $dataAttributes . ' = " "; if (isset($attributes["data"]) && is_array($attributes["data"])) { foreach ($attributes["data"] as $key => $value) { ' . $dataAttributes . ' .= "data-{$key}=\\"" . ' . $escapeFunctionCall . ' . "\\" "; } ' . $dataAttributes . ' = rtrim(' . $dataAttributes . '); } }'; // persist the code for compilation $codewriter->pushCode($source); // get the current DOM element to pull in the attributes $this->phpelement->getOrCreateAttributeNode('ztal:data-attributes')->overwriteFullWithVariable($dataAttributes); }
public function after(PHPTAL_Php_CodeWriter $codewriter) { // restore source $code = $codewriter->getTranslatorReference() . '->setSource(array_pop($_i18n_sources))'; $codewriter->pushCode($code); }
public function after(PHPTAL_Php_CodeWriter $codewriter) { $codewriter->pushCode($codewriter->getTranslatorReference() . '->setVar(' . $codewriter->str($this->expression) . ', ob_get_clean())'); }
private function bufferizeContent(PHPTAL_Php_CodeWriter $codewriter) { if (!$this->_buffered) { $this->tmp_content_var = $codewriter->createTempVariable(); $codewriter->pushCode('ob_start()'); $this->phpelement->generateContent($codewriter); $codewriter->doSetVar($this->tmp_content_var, 'ob_get_clean()'); $this->_buffered = true; } $this->doDefineVarWith($codewriter, $this->tmp_content_var); }
public function after(PHPTAL_Php_CodeWriter $codewriter) { $code = '$ctx->fillSlot("' . $this->expression . '", ob_get_clean())'; $codewriter->pushCode($code); }
/** * generate code that pops macro slots * (restore slots if not inherited macro) */ private function popSlots(PHPTAL_Php_CodeWriter $codewriter) { if (!$this->phpelement->hasAttributeNS('http://xml.zope.org/namespaces/metal', 'define-macro')) { $codewriter->pushCode('$ctx->popSlots()'); } }
public function before(PHPTAL_Php_CodeWriter $codewriter) { $codewriter->doIf('$ctx->hasSlot(' . $codewriter->str($this->expression) . ')'); $codewriter->pushCode('echo $ctx->getSlot(' . $codewriter->str($this->expression) . ')'); $codewriter->doElse(); }
public function after(PHPTAL_Php_CodeWriter $codewriter) { // restore domain $code = $codewriter->getTranslatorReference() . '->useDomain(array_pop($_i18n_domains))'; $codewriter->pushCode($code); }
public function after(PHPTAL_Php_CodeWriter $codewriter) { // restore domain $code = '$_translator->useDomain(array_pop($_i18n_domains))'; $codewriter->pushCode($code); }
public function after(PHPTAL_Php_CodeWriter $codewriter) { $codewriter->pushCode('$_translator->setVar(' . $codewriter->str($this->expression) . ', ob_get_contents())'); $codewriter->pushCode('ob_end_clean()'); }