示例#1
0
 public function generateCode(PHPTAL_Php_CodeWriter $codewriter)
 {
     if ($codewriter->getOutputMode() === PHPTAL::HTML5) {
         $codewriter->setDocType('<!DOCTYPE html>');
     } else {
         $codewriter->setDocType($this->getValueEscaped());
     }
     $codewriter->doDoctype();
 }
示例#2
0
 public function generateCode(PHPTAL_Php_CodeWriter $codewriter)
 {
     $mode = $codewriter->getOutputMode();
     $value = $this->getValueEscaped();
     $inCDATAelement = PHPTAL_Dom_Defs::getInstance()->isCDATAElementInHTML($this->parentNode->getNamespaceURI(), $this->parentNode->getLocalName());
     // in HTML5 must limit it to <script> and <style>
     if ($mode === PHPTAL::HTML5 && $inCDATAelement) {
         $codewriter->pushHTML($codewriter->interpolateCDATA(str_replace('</', '<\\/', $value)));
     } elseif ($mode === PHPTAL::XHTML && $inCDATAelement || $mode === PHPTAL::XML && preg_match('/[<>&]/', $value) || $mode !== PHPTAL::HTML5 && preg_match('/<\\?|\\${structure/', $value)) {
         // in text/html "</" is dangerous and the only sensible way to escape is ECMAScript string escapes.
         if ($mode === PHPTAL::XHTML) {
             $value = str_replace('</', '<\\/', $value);
         }
         $codewriter->pushHTML($codewriter->interpolateCDATA('<![CDATA[' . $value . ']]>'));
     } else {
         $codewriter->pushHTML($codewriter->interpolateHTML(htmlspecialchars($value, ENT_QUOTES, $codewriter->getEncoding())));
     }
 }
示例#3
0
 private function generateAttributes(PHPTAL_Php_CodeWriter $codewriter)
 {
     $html5mode = $codewriter->getOutputMode() === PHPTAL::HTML5;
     foreach ($this->getAttributeNodes() as $attr) {
         // xmlns:foo is not allowed in text/html
         if ($html5mode && $attr->isNamespaceDeclaration()) {
             continue;
         }
         switch ($attr->getReplacedState()) {
             case PHPTAL_Dom_Attr::NOT_REPLACED:
                 $codewriter->pushHTML(' ' . $attr->getQualifiedName());
                 if ($codewriter->getOutputMode() !== PHPTAL::HTML5 || !PHPTAL_Dom_Defs::getInstance()->isBooleanAttribute($attr->getQualifiedName())) {
                     $html = $codewriter->interpolateHTML($attr->getValueEscaped());
                     $codewriter->pushHTML('=' . $codewriter->quoteAttributeValue($html));
                 }
                 break;
             case PHPTAL_Dom_Attr::HIDDEN:
                 break;
             case PHPTAL_Dom_Attr::FULLY_REPLACED:
                 $codewriter->pushHTML($attr->getValueEscaped());
                 break;
             case PHPTAL_Dom_Attr::VALUE_REPLACED:
                 $codewriter->pushHTML(' ' . $attr->getQualifiedName() . '="');
                 $codewriter->pushHTML($attr->getValueEscaped());
                 $codewriter->pushHTML('"');
                 break;
         }
     }
 }