示例#1
0
 public function visitTextNode(TextNode $text_node)
 {
     $urllinker = new UrlLinker();
     // Email-Adressen sollen nicht verlinkt werden
     $urllinker->setEmailLinkCreator(function ($email, $content) {
         return $email;
     });
     $urllinker->setHtmlLinkCreator(function ($url, $content) {
         // Wir vergeben extra zweimal $url, weil $content durch UrlLinker gekürzt wird
         return Html::anchorFromConfig($url, $url, $this->config);
     });
     $text_node->setValue($urllinker->linkUrlsAndEscapeHtml($text_node->getValue()));
 }
示例#2
0
 public function asHtml(ElementNode $el)
 {
     $content = '';
     foreach ($el->getChildren() as $child) {
         $content .= $child->getAsText();
     }
     $param = $el->getAttribute();
     if (is_array($param)) {
         $param = array_shift($param);
     }
     $param = trim($param);
     if ($content == '' and $param == '') {
         return '';
     }
     $short_url = $this->config->get('callbacks.url_content.short_url');
     // Url finden
     if ($param == '') {
         // Die Url steht im Content
         $url = $content;
         // In der anzuzeigenden URL kein & anzeigen
         $content = str_replace('&', '&', $content);
     } else {
         // Die Url steht im Parameter
         $url = $param;
         $short_url = false;
         $content = '';
         foreach ($el->getChildren() as $child) {
             $content .= $child->getAsHTML();
         }
     }
     // http:// voranstellen, wenn nichts angegeben
     if (!preg_match('~^[a-z]+://~i', $url)) {
         $url = "http://" . $url;
     }
     // Wenn die URL nicht gültig ist, zeigen wir nur den Text
     if (!$this->config->getValidation()->isValidUrl($url)) {
         return $content;
     }
     return Html::anchorFromConfig($url, $content, $this->config);
 }