Example #1
0
 /**
  *
  * @param ITemplate $template
  * @return void
  */
 public static function addCustomHelpers(ITemplate $template)
 {
     $template->registerHelper('age', function ($value, $s) {
         return empty($value) ? '-' : floor((date('Ymd') - str_replace('-', '', $value)) / 10000) . $s;
     });
     $template->registerHelper('yesNo', function ($value) {
         return empty($value) ? 'ne' : 'ano';
     });
     $template->registerHelper('abbrCsMonth', function ($value) {
         $monthCsAbbr = array('01' => 'led', '02' => 'úno', '03' => 'bře', '04' => 'dub', '05' => 'kvě', '06' => 'čer', '07' => 'čvc', '08' => 'srp', '09' => 'zář', '10' => 'říj', '11' => 'lis', '12' => 'pro');
         return $monthCsAbbr[$value];
     });
 }
Example #2
0
 /**
  * Includes subtemplate.
  * @param  mixed      included file name or template
  * @param  array      parameters
  * @param  Nette\Templating\ITemplate  current template
  * @return Nette\Templating\Template
  */
 public static function includeTemplate($destination, array $params, Nette\Templating\ITemplate $template)
 {
     if ($destination instanceof Nette\Templating\ITemplate) {
         $tpl = $destination;
     } elseif ($destination == NULL) {
         // intentionally ==
         throw new Nette\InvalidArgumentException("Template file name was not specified.");
     } elseif ($template instanceof Nette\Templating\IFileTemplate) {
         if (substr($destination, 0, 1) !== '/' && substr($destination, 1, 1) !== ':') {
             $destination = dirname($template->getFile()) . '/' . $destination;
         }
         $tpl = clone $template;
         $tpl->setFile($destination);
     } else {
         throw new Nette\NotSupportedException('Macro {include "filename"} is supported only with Nette\\Templating\\IFileTemplate.');
     }
     $tpl->setParameters($params);
     // interface?
     return $tpl;
 }
Example #3
0
macroExpr(MacroNode$node,PhpWriter$writer){return$writer->write(($node->name==='?'?'':'echo ').'%modify(%node.args)');}static
function
includeTemplate($destination,array$params,Nette\Templating\ITemplate$template){if($destination
instanceof
Nette\Templating\ITemplate){$tpl=$destination;}elseif($destination==NULL){throw
new
Nette\InvalidArgumentException("Template file name was not specified.");}elseif($template
instanceof
Nette\Templating\IFileTemplate){if(substr($destination,0,1)!=='/'&&substr($destination,1,1)!==':'){$destination=dirname($template->getFile()).'/'.$destination;}$tpl=clone$template;$tpl->setFile($destination);}else{throw
new
Nette\NotSupportedException('Macro {include "filename"} is supported only with Nette\Templating\IFileTemplate.');}$tpl->setParameters($params);return$tpl;}static
Example #4
0
 /**
  * Builds final pdf
  *
  * @return mPDF
  * @throws \Exception
  */
 private function build()
 {
     if (empty($this->documentTitle)) {
         throw new \Exception("Var 'documentTitle' cannot be empty.");
     }
     if ($this->ignoreStylesInHTMLDocument) {
         if (!class_exists('Symfony\\Component\\DomCrawler\\Crawler')) {
             throw new MissingServiceException("Class 'Symfony\\Component\\DomCrawler\\Crawler' not found. Try composer-require 'symfony/dom-crawler'.");
         }
         if (!class_exists('Symfony\\Component\\CssSelector\\CssSelector')) {
             throw new MissingServiceException("Class 'Symfony\\Component\\CssSelector\\CssSelector' not found. Try composer-require 'symfony/css-selector'.");
         }
     }
     if ($this->generatedFile) {
         // singleton
         return $this->generatedFile;
     }
     if ($this->source instanceof ITemplate || $this->source instanceof Template) {
         $html = $this->source->__toString();
     } else {
         $html = $this->source;
     }
     // Fix: $html can't be empty (mPDF generates Fatal error)
     if (empty($html)) {
         $html = '<html><body></body></html>';
     }
     $mpdf = $this->getMPDF();
     $mpdf->biDirectional = $this->multiLanguage;
     $mpdf->SetAuthor($this->documentAuthor);
     $mpdf->SetTitle($this->documentTitle);
     $mpdf->SetDisplayMode($this->displayZoom, $this->displayLayout);
     $mpdf->showImageErrors = true;
     // Add styles
     if (!empty($this->styles)) {
         $mpdf->WriteHTML($this->styles, 1);
     }
     // copied from mPDF -> removes comments
     $html = preg_replace('/<!--mpdf/i', '', $html);
     $html = preg_replace('/mpdf-->/i', '', $html);
     $html = preg_replace('/<\\!\\-\\-.*?\\-\\->/s', '', $html);
     // @see: http://mpdf1.com/manual/index.php?tid=121&searchstring=writeHTML
     if ($this->ignoreStylesInHTMLDocument) {
         // deletes all <style> tags
         $crawler = new Crawler($html);
         foreach ($crawler->filter('style') as $child) {
             $child->parentNode->removeChild($child);
         }
         $html = $crawler->html();
         $mode = 2;
         // If <body> tags are found, all html outside these tags are discarded, and the rest is parsed as content for the document. If no <body> tags are found, all html is parsed as content. Prior to mPDF 4.2 the default CSS was not parsed when using mode #2
     } else {
         $mode = 0;
         // Parse all: HTML + CSS
     }
     // Add content
     $mpdf->WriteHTML($html, $mode);
     $mpdf->page = count($mpdf->pages);
     //set pointer to last page to force render of all pages
     $this->onBeforeComplete($mpdf);
     $this->generatedFile = $mpdf;
     return $this->generatedFile;
 }