yƥƥƥƥ@ƥƥƥk=ƥ@ƥu=ƥ@ƥTƥƥƥƥƥƥƥƥƥ`ƥ@ƥRƥƥƥƥƥ~ƥƥƥƥ ƥƥ@ƥƥpƥƥƥW%W5W^W  :!Z*Z*o`ƥƥ(7ƥ X ƥ  ƥ_ƥȬ ooo oooh9ƥo$-ƥ0ƥ;ƥ^ƥ|ƥmƥƥƥƥ ƥƥƥ.ƥP}ƥ`ƥ0[ƥƥƥ0ƥ@ƥƥcƥpƥƥ5ƥPƥ{ƥ ƥ@ƥƥ0ƥPƥƥƥCƥiƥƥ`ƥƥƥ0ƥƥ08ƥ^ƥ ƥVƥƥ9ƥ]ƥƥƥƥƥƥp|ƥƥ@hƥ`ƥ07ƥ@9ƥ@dƥ@ƥƥcƥƥ =ƥ=ƥƥƥ ƥ:ƥƥƥƥCƥƥƥ4ƥjƥiƥ3ƥƥ`ƥ ƥƥƥƥ<ƥpƥPƥƥDƥmƥPƥ@NƥCƥmƥƥƥkƥƥ;ƥ;ƥƥ\ƥƥcƥ0MƥеƥQƥdƥƥƥ@ƥ[ƥƥƥƥƥ`[ƥ^ƥƥpƥ|ƥƥƥ:ƥiƥƥ:ƥƥ0{ƥ@ƥ@ƥƥƥƥƥƥƥ@ƥ@ƥ@ƥƥ0]ƥƥƥ@8ƥƥ@ƥƥZƥƥ@ƥƥƥ@ƥ@ƥƥƥƥ@ƥƥƥ@ƥƥƥ@ƥNƥ@ƥƥƥƥZƥƥƥ@ƥ`dƥ@ƥƥƥƥƥƥƥ0ƥ ƥƥƥƥpZƥ@ƥƥ@ƥ2ƥƥƥƥ@ƥƥƥƥƥƥƥƥƥ@ƥ@ƥ@ƥƥ@ƥƥƥƥƥƥƥƥ@ƥƥƥƥƥ@ƥ@ƥƥƥƥƥƥƥ0ƥƥ@ƥ ƥƥƥƥƥƥƥƥ dƥƥ@ƥƥƥƥƥ@ƥƥƥ/ƥƥ@ƥƥƥƥ@ƥƥƥ@̵ƥƥKƥƥ@ƥƥ@ƥƥ@ƥ@ƥƥƥƥƥƥƥƥ@ƥ System::getContainer()->get('contao.string.html_decoder'); /** @var HtmlHeadBag $htmlHeadBag */ $htmlHeadBag = $responseContext->get(HtmlHeadBag::class); $htmlHeadBag->setTitle($htmlDecoder->inputEncodedToPlainText($this->title ?? '')); if ($this->teaser) { $htmlHeadBag->setMetaDescription($htmlDecoder->htmlToPlainText($this->teaser)); } } } $this->Template->printable = false; $this->Template->backlink = false; // Back link if (!$this->multiMode && $strArticle && ($strArticle == $this->id || $strArticle == $this->alias)) { $this->Template->backlink = $objPage->getFrontendUrl(); $this->Template->back = StringUtil::specialchars($GLOBALS['TL_LANG']['MSC']['goBack']); } $arrElements = array(); $objCte = ContentModel::findPublishedByPidAndTable($this->id, 'tl_article'); if ($objCte !== null) { while ($objCte->next()) { $arrElements[] = $this->getContentElement($objCte->current(), $this->strColumn); } } $this->Template->teaser = $this->teaser; $this->Template->elements = $arrElements; // Backwards compatibility if ($this->keywords) { $GLOBALS['TL_KEYWORDS'] .= ($GLOBALS['TL_KEYWORDS'] ? ', ' : '') . $this->keywords; } // Deprecated since Contao 4.0, to be removed in Contao 5.0 if ($this->printable == 1) { trigger_deprecation('contao/core-bundle', '4.0', 'Setting tl_article.printable to "1" has been deprecated and will no longer work in Contao 5.0.'); $this->Template->printable = !empty($GLOBALS['TL_HOOKS']['printArticleAsPdf']); $this->Template->pdfButton = $this->Template->printable; } // New structure elseif ($this->printable) { $options = StringUtil::deserialize($this->printable); if (!empty($options) && \is_array($options)) { // Remove the PDF option if there is no PDF handler (see #417) if (empty($GLOBALS['TL_HOOKS']['printArticleAsPdf']) && ($key = array_search('pdf', $options)) !== false) { unset($options[$key]); } if (!empty($options)) { $this->Template->printable = true; $this->Template->printButton = \in_array('print', $options); $this->Template->pdfButton = \in_array('pdf', $options); $this->Template->facebookButton = \in_array('facebook', $options); $this->Template->twitterButton = \in_array('twitter', $options); } } } // Add syndication variables if ($this->Template->printable) { $request = Environment::get('indexFreeRequest'); // URL encoding will be handled by the Symfony router, so do not apply rawurlencode() here anymore $this->Template->print = '#'; $this->Template->encUrl = Environment::get('base') . Environment::get('request'); $this->Template->encTitle = $objPage->pageTitle; $this->Template->href = $request . ((strpos($request, '?') !== false) ? '&' : '?') . 'pdf=' . $this->id; $this->Template->printTitle = StringUtil::specialchars($GLOBALS['TL_LANG']['MSC']['printPage']); $this->Template->pdfTitle = StringUtil::specialchars($GLOBALS['TL_LANG']['MSC']['printAsPdf']); $this->Template->facebookTitle = StringUtil::specialchars($GLOBALS['TL_LANG']['MSC']['facebookShare']); $this->Template->twitterTitle = StringUtil::specialchars($GLOBALS['TL_LANG']['MSC']['twitterShare']); } // HOOK: add custom logic if (isset($GLOBALS['TL_HOOKS']['compileArticle']) && \is_array($GLOBALS['TL_HOOKS']['compileArticle'])) { foreach ($GLOBALS['TL_HOOKS']['compileArticle'] as $callback) { $this->import($callback[0]); $this->{$callback[0]}->{$callback[1]}($this->Template, $this->arrData, $this); } } } /** * Print an article as PDF and stream it to the browser */ public function generatePdf() { $this->headline = $this->title; $this->printable = false; $container = System::getContainer(); // Generate article $strArticle = $container->get('contao.insert_tag.parser')->replaceInline($this->generate()); $strArticle = html_entity_decode($strArticle, ENT_QUOTES, $container->getParameter('kernel.charset')); $strArticle = $this->convertRelativeUrls($strArticle, '', true); if (empty($GLOBALS['TL_HOOKS']['printArticleAsPdf'])) { throw new \Exception('No PDF extension found. Did you forget to install contao/tcpdf-bundle?'); } trigger_deprecation('contao/core-bundle', '4.13', 'Printing an article as PDF has been deprecated in Contao 4.13 and will be removed in Contao 5.0'); // HOOK: allow individual PDF routines if (isset($GLOBALS['TL_HOOKS']['printArticleAsPdf']) && \is_array($GLOBALS['TL_HOOKS']['printArticleAsPdf'])) { foreach ($GLOBALS['TL_HOOKS']['printArticleAsPdf'] as $callback) { $this->import($callback[0]); $this->{$callback[0]}->{$callback[1]}($strArticle, $this); } } } protected function getResponseCacheTags(): array { // Do not tag with 'contao.db.tl_module.' when rendering articles (see #2814) return array(); } } class_alias(ModuleArticle::class, 'ModuleArticle'); An Error Occurred: Internal Server Error

Oops! An Error Occurred

The server returned a "500 Internal Server Error".

Something is broken. Please let us know what you were doing when this error occurred. We will fix it as soon as possible. Sorry for any inconvenience caused.