/** * @see parent::getHtmlValue() */ function getHtmlValue($object, $smarty = null, $params = array()) { $value = $object->{$this->fieldName}; // Empty value: no paragraph if (!$value) { return ""; } // Truncate case: no breakers but inline bullets instead if ($truncate = CValue::read($params, "truncate")) { $value = CMbString::truncate($value, $truncate === true ? null : $truncate); $value = CMbString::nl2bull($value); return CMbString::htmlSpecialChars($value); } // Markdown case: full delegation if ($this->markdown) { // In order to prevent from double escaping $content = CMbString::markdown(html_entity_decode($value)); return "<div class='markdown'>{$content}</div>"; } // Standard case: breakers and paragraph enhancers $text = ""; $value = str_replace(array("\r\n", "\r"), "\n", $value); $paragraphs = preg_split("/\n{2,}/", $value); foreach ($paragraphs as $_paragraph) { if (!empty($_paragraph)) { $_paragraph = nl2br(CMbString::htmlSpecialChars($_paragraph)); $text .= "<p>{$_paragraph}</p>"; } } return $text; }
/** * Truncate a string, with a full string titled span if actually truncated * Example: {$value|spancate} * * @param string $string The string to truncate * @param int $length The maximum string length * @param string $etc The ellipsis * @param bool $break_words Break words * @param bool $middle Put the ellipsis at the middle of the string instead of at the end * * @return string */ function spancate($string, $length = 80, $etc = '...', $break_words = true, $middle = false) { CAppUI::requireLibraryFile("smarty/libs/plugins/modifier.truncate"); $string = html_entity_decode($string); $truncated = smarty_modifier_truncate($string, $length, $etc, $break_words, $middle); $truncated = CMbString::nl2bull($truncated); $string = CMbString::htmlEntities($string); return strlen($string) > $length ? "<span title=\"{$string}\">{$truncated}</span>" : $truncated; }