public function asHtml(ElementNode $el) { $content = ''; foreach ($el->getChildren() as $child) { $content .= $child->getAsHTML(); } $param = $el->getAttribute(); if (is_array($param)) { $param = array_shift($param); } $param = trim($param); if ($content == '' and $param == '') { return ''; } // Erlaubte Farbnamen $allowed_colors = (array) $this->config->get('callbacks.color_param.allowed_colors'); $color = mb_convert_case($param, MB_CASE_TITLE); // Wenn im Parameter keine erlaubte Farbe steht if (!in_array($color, $allowed_colors)) { // Prüfen, ob eine hexadezimale Farbe angegeben wurde if (strlen($param) == 7 && $param[0] == '#' and preg_match('~#[a-f0-9]{6}~i', $param)) { $color = $param; } else { $color = $this->config->get('callbacks.color_param.default_color'); } } // Ansonsten ist der Farbnamen gülig return Html::span($content, ['style' => 'color:' . $color . ';']); }
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())); }
public function asHtml(ElementNode $el) { // Try to execute the image filter try { $filter = $this->config->get('filter.image', null); if (is_object($filter) and $filter instanceof FilterInterface) { $filter->setConfig($this->config); return $filter->execute($el); } } catch (FilterException $e) { } $content = ''; // Soll das Bild verlinkt werden? $use_anchor = true; // Prüfen, ob wir uns innerhalb eines [url] Tags befinden if ($el->closestParentOfType('url')) { $use_anchor = false; } foreach ($el->getChildren() as $child) { $content .= $child->getAsText(); } // Mögliche Leerzeichen trimmen $url = trim($content); // URL Schema voranstellen, wenn nichts angegeben wurde if ($url !== '' and parse_url($url, PHP_URL_SCHEME) === null) { $url = 'http://' . $url; } // Wenn die URL nicht gültig ist, zeigen wir nur den Text if ($url === '' or !$this->config->getValidation()->isValidUrl($url)) { return $content; } // Prüfen, ob die URL wirklich auf ein Bild zeigt // Wenn es kein Bild ist, nicht einbetten, sondern nur verlinken if ($this->config->get('callbacks.image.force_check') and !$this->config->getValidation()->isValidImageUrl($url)) { // Bild nicht verlinken if (!$use_anchor) { return $content; } // Bild nur verlinken $definition = new UrlOption($this->config); return $definition->asHtml($el); } $attr = array('class' => 'img-responsive', 'border' => '0'); $img_code = Html::img($url, $attr); if (!$use_anchor) { return $img_code; } return Html::anchor($url, $img_code, ['target' => '_blank']); }
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); }
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 ''; } if ($param == '') { // Die Email steht im Content $email = ''; foreach ($el->getChildren() as $child) { $email .= $child->getAsText(); } } else { // Die Email steht im Parameter $email = $param; $content = ''; foreach ($el->getChildren() as $child) { $content .= $child->getAsHTML(); } } // Nur Content anzeigen, wenn keine gültige Email angegeben wurde if (!$this->config->getValidation()->isValidEmail($email)) { return $content; } // Mail vor Bots schützen? if ($this->config->get('callbacks.email_content.protect_email')) { return Html::mail_to_safe($email, $content); } return Html::mail_to($email, $content); }
public function asHtml(ElementNode $el) { $content = ''; foreach ($el->getChildren() as $child) { $content .= $child->getAsHTML(); } $param = $el->getAttribute(); if (is_array($param)) { $param = array_shift($param); } $param = trim($param); if ($content == '') { return ''; } $size = intval($param); if ($size == 0) { $size = 100; } // Mindestgröße: 75% $size = max($size, $this->config->get('callbacks.size_param.min_size')); // Maximale Größe: 150% $size = min($size, $this->config->get('callbacks.size_param.max_size')); return Html::span($content, ['style' => 'font-size:' . $size . '%;']); }