diff options
author | brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544> | 2010-04-21 20:20:30 +0000 |
---|---|---|
committer | brettp <brettp@36083f99-b078-4883-b0ff-0f9b5a30f544> | 2010-04-21 20:20:30 +0000 |
commit | 91b3803e754c27d0f4ed6459439b8b876fac1788 (patch) | |
tree | f364a8459e7e08b151fd87931f38f80b0bee2b43 | |
parent | 96eb12e58a36fe33dfd6af0a748ef992d0b1edf7 (diff) | |
download | elgg-91b3803e754c27d0f4ed6459439b8b876fac1788.tar.gz elgg-91b3803e754c27d0f4ed6459439b8b876fac1788.tar.bz2 |
Blog excerpts now work for MB strings and properly detect word breaks.
git-svn-id: http://code.elgg.org/elgg/trunk@5839 36083f99-b078-4883-b0ff-0f9b5a30f544
-rw-r--r-- | mod/blog/blog_lib.php | 21 | ||||
-rw-r--r-- | mod/blog/views/default/object/blog.php | 6 |
2 files changed, 20 insertions, 7 deletions
diff --git a/mod/blog/blog_lib.php b/mod/blog/blog_lib.php index 12226ee2e..b6a4d53c2 100644 --- a/mod/blog/blog_lib.php +++ b/mod/blog/blog_lib.php @@ -245,21 +245,28 @@ function blog_get_page_content_friends($user_guid) { /** * Returns an appropriate excerpt for a blog. + * Will return up to 250 chars stopping at the nearest space. + * If no spaces are found (like in Japanese) will crop off at the + * 250 char mark. * * @param string $text * @param int $words * @return string */ -function blog_make_excerpt($text, $words=60) { - $text = strip_tags($text); - preg_match("/([\S]+\s*){0,$words}/", $text, $matches); +function blog_make_excerpt($text, $chars = 250) { + $text = trim(strip_tags($text)); - $trimmed = trim($matches[0]); - if ($trimmed != $text) { - return "$trimmed …"; + // handle cases + $excerpt = elgg_substr($text, 0, $chars); + $space = elgg_strrpos($excerpt, ' ', 0); + + // don't crop if can't find a space. + if ($space === FALSE) { + $space = $chars; } + $excerpt = trim(elgg_substr($excerpt, 0, $space)); - return $trimmed; + return $excerpt ; } /** diff --git a/mod/blog/views/default/object/blog.php b/mod/blog/views/default/object/blog.php index d72d6a21d..0c8944f7d 100644 --- a/mod/blog/views/default/object/blog.php +++ b/mod/blog/views/default/object/blog.php @@ -21,6 +21,12 @@ $container = get_entity($blog->container_guid); $linked_title = "<a href=\"{$blog->getURL()}\" title=\"" . htmlentities($blog->title) . "\">{$blog->title}</a>"; $categories = elgg_view('categories/view', $vars); $excerpt = $blog->excerpt; + +// add ellipses to excerpt it not the full post +if ($excerpt != trim(strip_tags($blog->description))) { + $excerpt .= ' …'; +} + $body = autop($blog->description); $owner_icon = elgg_view("profile/icon",array('entity' => $owner, 'size' => 'tiny')); $tags = elgg_view('output/tags', array('tags' => $blog->tags)); |