diff options
Diffstat (limited to 'mod/blog')
| -rw-r--r-- | mod/blog/actions/blog/auto_save_revision.php | 4 | ||||
| -rw-r--r-- | mod/blog/actions/blog/delete.php | 4 | ||||
| -rw-r--r-- | mod/blog/actions/blog/save.php | 77 | ||||
| -rw-r--r-- | mod/blog/activate.php | 10 | ||||
| -rw-r--r-- | mod/blog/classes/ElggBlog.php | 4 | ||||
| -rw-r--r-- | mod/blog/deactivate.php | 6 | ||||
| -rw-r--r-- | mod/blog/languages/en.php | 27 | ||||
| -rw-r--r-- | mod/blog/lib/blog.php | 190 | ||||
| -rw-r--r-- | mod/blog/manifest.xml | 9 | ||||
| -rw-r--r-- | mod/blog/start.php | 148 | ||||
| -rw-r--r-- | mod/blog/views/default/blog/group_module.php | 21 | ||||
| -rw-r--r-- | mod/blog/views/default/blog/sidebar.php | 22 | ||||
| -rw-r--r-- | mod/blog/views/default/blog/sidebar/archives.php | 12 | ||||
| -rw-r--r-- | mod/blog/views/default/blog/sidebar/revisions.php | 10 | ||||
| -rw-r--r-- | mod/blog/views/default/blog/sidebar/tagcloud.php | 31 | ||||
| -rw-r--r-- | mod/blog/views/default/forms/blog/save.php | 51 | ||||
| -rw-r--r-- | mod/blog/views/default/js/blog/save_draft.php | 12 | ||||
| -rw-r--r-- | mod/blog/views/default/object/blog.php | 35 | ||||
| -rw-r--r-- | mod/blog/views/default/river/object/blog/create.php | 34 | ||||
| -rw-r--r-- | mod/blog/views/default/widgets/blog/content.php | 3 |
20 files changed, 422 insertions, 288 deletions
diff --git a/mod/blog/actions/blog/auto_save_revision.php b/mod/blog/actions/blog/auto_save_revision.php index 1acf3b31b..e33edfaab 100644 --- a/mod/blog/actions/blog/auto_save_revision.php +++ b/mod/blog/actions/blog/auto_save_revision.php @@ -7,7 +7,7 @@ $guid = get_input('guid'); $user = elgg_get_logged_in_user_entity(); -$title = get_input('title'); +$title = htmlspecialchars(get_input('title', '', false), ENT_QUOTES, 'UTF-8'); $description = get_input('description'); $excerpt = get_input('excerpt'); @@ -63,7 +63,7 @@ if ($title && $description) { if (!$auto_save) { $annotation_id = $blog->annotate('blog_auto_save', $description); } elseif ($auto_save instanceof ElggAnnotation && $auto_save->value != $description) { - $blog->clearAnnotations('blog_auto_save'); + $blog->deleteAnnotations('blog_auto_save'); $annotation_id = $blog->annotate('blog_auto_save', $description); } elseif ($auto_save instanceof ElggAnnotation && $auto_save->value == $description) { // this isn't an error because we have an up to date annotation. diff --git a/mod/blog/actions/blog/delete.php b/mod/blog/actions/blog/delete.php index 64179e09c..ca4eb8a7f 100644 --- a/mod/blog/actions/blog/delete.php +++ b/mod/blog/actions/blog/delete.php @@ -13,9 +13,9 @@ if (elgg_instanceof($blog, 'object', 'blog') && $blog->canEdit()) { if ($blog->delete()) { system_message(elgg_echo('blog:message:deleted_post')); if (elgg_instanceof($container, 'group')) { - forward("pg/blog/group/$container->guid/owner"); + forward("blog/group/$container->guid/all"); } else { - forward("pg/blog/owner/$container->username/"); + forward("blog/owner/$container->username"); } } else { register_error(elgg_echo('blog:error:cannot_delete_post')); diff --git a/mod/blog/actions/blog/save.php b/mod/blog/actions/blog/save.php index 099a89cc0..82a9e6c51 100644 --- a/mod/blog/actions/blog/save.php +++ b/mod/blog/actions/blog/save.php @@ -2,12 +2,21 @@ /** * Save blog entity * + * Can be called by clicking save button or preview button. If preview button, + * we automatically save as draft. The preview button is only available for + * non-published drafts. + * + * Drafts are saved with the access set to private. + * * @package Blog */ // start a new sticky form session in case of failure elgg_make_sticky_form('blog'); +// save or preview +$save = (bool)get_input('save'); + // store errors to pass along $error = FALSE; $error_forward_url = REFERER; @@ -54,7 +63,11 @@ $required = array('title', 'description'); // load from POST and do sanity and access checking foreach ($values as $name => $default) { - $value = get_input($name, $default); + if ($name === 'title') { + $value = htmlspecialchars(get_input('title', $default, false), ENT_QUOTES, 'UTF-8'); + } else { + $value = get_input($name, $default); + } if (in_array($name, $required) && empty($value)) { $error = elgg_echo("blog:error:missing:$name"); @@ -66,20 +79,13 @@ foreach ($values as $name => $default) { switch ($name) { case 'tags': - if ($value) { - $values[$name] = string_to_tag_array($value); - } else { - unset ($values[$name]); - } + $values[$name] = string_to_tag_array($value); break; case 'excerpt': if ($value) { - $value = elgg_get_excerpt($value); - } else { - $value = elgg_get_excerpt($values['description']); + $values[$name] = elgg_get_excerpt($value); } - $values[$name] = $value; break; case 'container_guid': @@ -95,24 +101,27 @@ foreach ($values as $name => $default) { } break; - // don't try to set the guid - case 'guid': - unset($values['guid']); - break; - default: $values[$name] = $value; break; } } +// if preview, force status to be draft +if ($save == false) { + $values['status'] = 'draft'; +} + +// if draft, set access to private and cache the future access +if ($values['status'] == 'draft') { + $values['future_access'] = $values['access_id']; + $values['access_id'] = ACCESS_PRIVATE; +} + // assign values to the entity, stopping on error. if (!$error) { foreach ($values as $name => $value) { - if (FALSE === ($blog->$name = $value)) { - $error = elgg_echo('blog:error:cannot_save' . "$name=$value"); - break; - } + $blog->$name = $value; } } @@ -123,10 +132,10 @@ if (!$error) { elgg_clear_sticky_form('blog'); // remove autosave draft if exists - $blog->clearAnnotations('blog_auto_save'); + $blog->deleteAnnotations('blog_auto_save'); // no longer a brand new post. - $blog->clearMetadata('new_post'); + $blog->deleteMetadata('new_post'); // if this was an edit, create a revision annotation if (!$new_post && $revision_text) { @@ -136,28 +145,32 @@ if (!$error) { system_message(elgg_echo('blog:message:saved')); $status = $blog->status; - $db_prefix = elgg_get_config('dbprefix'); // add to river if changing status or published, regardless of new post // because we remove it for drafts. if (($new_post || $old_status == 'draft') && $status == 'published') { - add_to_river('river/object/blog/create', 'create', elgg_get_logged_in_user_guid(), $blog->getGUID()); + add_to_river('river/object/blog/create', 'create', $blog->owner_guid, $blog->getGUID()); + // we only want notifications sent when post published + register_notification_object('object', 'blog', elgg_echo('blog:newpost')); + elgg_trigger_event('publish', 'object', $blog); + + // reset the creation time for posts that move from draft to published if ($guid) { - $q = "UPDATE {$db_prefix}entities SET time_created = '$date' - WHERE guid = $guid"; - update_data($q); + $blog->time_created = time(); + $blog->save(); } } elseif ($old_status == 'published' && $status == 'draft') { - $q = "DELETE FROM {$db_prefix}river - WHERE object_guid = $blog->guid AND action_type = 'create'"; - delete_data($q); + elgg_delete_river(array( + 'object_guid' => $blog->guid, + 'action_type' => 'create', + )); } - if ($blog->status == 'published') { + if ($blog->status == 'published' || $save == false) { forward($blog->getURL()); } else { - forward("pg/blog/edit/$blog->guid"); + forward("blog/edit/$blog->guid"); } } else { register_error(elgg_echo('blog:error:cannot_save')); @@ -166,4 +179,4 @@ if (!$error) { } else { register_error($error); forward($error_forward_url); -}
\ No newline at end of file +} diff --git a/mod/blog/activate.php b/mod/blog/activate.php new file mode 100644 index 000000000..a90525291 --- /dev/null +++ b/mod/blog/activate.php @@ -0,0 +1,10 @@ +<?php +/** + * Register the ElggBlog class for the object/blog subtype + */ + +if (get_subtype_id('object', 'blog')) { + update_subtype('object', 'blog', 'ElggBlog'); +} else { + add_subtype('object', 'blog', 'ElggBlog'); +} diff --git a/mod/blog/classes/ElggBlog.php b/mod/blog/classes/ElggBlog.php index ee2ec73ef..8d4401c57 100644 --- a/mod/blog/classes/ElggBlog.php +++ b/mod/blog/classes/ElggBlog.php @@ -1,6 +1,10 @@ <?php /** * Extended class to override the time_created + * + * @property string $status The published status of the blog post (published, draft) + * @property string $comments_on Whether commenting is allowed (Off, On) + * @property string $excerpt An excerpt of the blog post used when displaying the post */ class ElggBlog extends ElggObject { diff --git a/mod/blog/deactivate.php b/mod/blog/deactivate.php new file mode 100644 index 000000000..4a275fa94 --- /dev/null +++ b/mod/blog/deactivate.php @@ -0,0 +1,6 @@ +<?php +/** + * Deregister the ElggBlog class + */ + +update_subtype('object', 'blog'); diff --git a/mod/blog/languages/en.php b/mod/blog/languages/en.php index b11eb1e75..5248a6f51 100644 --- a/mod/blog/languages/en.php +++ b/mod/blog/languages/en.php @@ -12,16 +12,16 @@ $english = array( 'blog:blog' => 'Blog', 'item:object:blog' => 'Blogs', - 'blog:title:user_blogs' => '%s\'s Blogs', - 'blog:title:all_blogs' => 'All Site Blogs', - 'blog:title:friends' => 'Friends\' Blogs', + 'blog:title:user_blogs' => '%s\'s blogs', + 'blog:title:all_blogs' => 'All site blogs', + 'blog:title:friends' => 'Friends\' blogs', 'blog:group' => 'Group blog', 'blog:enableblog' => 'Enable group blog', 'blog:write' => 'Write a blog post', // Editing - 'blog:add' => 'New blog post', + 'blog:add' => 'Add blog post', 'blog:edit' => 'Edit blog post', 'blog:excerpt' => 'Excerpt', 'blog:body' => 'Body', @@ -41,7 +41,6 @@ $english = array( 'blog:message:saved' => 'Blog post saved.', 'blog:error:cannot_save' => 'Cannot save blog post.', 'blog:error:cannot_write_to_container' => 'Insufficient access to save blog to group.', - 'blog:error:post_not_found' => 'This post has been removed, is invalid, or you do not have permission to view it.', 'blog:messages:warning:draft' => 'There is an unsaved draft of this post!', 'blog:edit_revision_notice' => '(Old version)', 'blog:message:deleted_post' => 'Blog post deleted.', @@ -53,13 +52,27 @@ $english = array( 'blog:error:revision_not_found' => 'Cannot find this revision.', // river - 'blog:river:create' => 'published a blog post', - 'river:commented:object:blog' => 'the blog', + 'river:create:object:blog' => '%s published a blog post %s', + 'river:comment:object:blog' => '%s commented on the blog %s', + + // notifications + 'blog:newpost' => 'A new blog post', + 'blog:notification' => +' +%s made a new blog post. + +%s +%s + +View and comment on the new blog post: +%s +', // widget 'blog:widget:description' => 'Display your latest blog posts', 'blog:moreblogs' => 'More blog posts', 'blog:numbertodisplay' => 'Number of blog posts to display', + 'blog:noblogs' => 'No blog posts' ); add_translation('en', $english); diff --git a/mod/blog/lib/blog.php b/mod/blog/lib/blog.php index 0a2c3a8ac..9753f27a8 100644 --- a/mod/blog/lib/blog.php +++ b/mod/blog/lib/blog.php @@ -20,27 +20,27 @@ function blog_get_page_content_read($guid = NULL) { // no header or tabs for viewing an individual blog $return['filter'] = ''; - $return['header'] = ''; if (!elgg_instanceof($blog, 'object', 'blog')) { - $return['content'] = elgg_echo('blog:error:post_not_found'); - return $return; + register_error(elgg_echo('noaccess')); + $_SESSION['last_forward_from'] = current_page_url(); + forward(''); } - $return['title'] = htmlspecialchars($blog->title); + $return['title'] = $blog->title; $container = $blog->getContainerEntity(); $crumbs_title = $container->name; if (elgg_instanceof($container, 'group')) { - elgg_push_breadcrumb($crumbs_title, "pg/blog/group/$container->guid/owner"); + elgg_push_breadcrumb($crumbs_title, "blog/group/$container->guid/all"); } else { - elgg_push_breadcrumb($crumbs_title, "pg/blog/owner/$container->username"); + elgg_push_breadcrumb($crumbs_title, "blog/owner/$container->username"); } elgg_push_breadcrumb($blog->title); - $return['content'] = elgg_view_entity($blog, TRUE); - //check to see if comment are on - if ($blog->comments_on != 'Off') { + $return['content'] = elgg_view_entity($blog, array('full_view' => true)); + // check to see if we should allow comments + if ($blog->comments_on != 'Off' && $blog->status == 'published') { $return['content'] .= elgg_view_comments($blog); } @@ -50,7 +50,7 @@ function blog_get_page_content_read($guid = NULL) { /** * Get page components to list a user's or all blogs. * - * @param int $owner_guid The GUID of the page owner or NULL for all blogs + * @param int $container_guid The GUID of the page owner or NULL for all blogs * @return array */ function blog_get_page_content_list($container_guid = NULL) { @@ -62,11 +62,15 @@ function blog_get_page_content_list($container_guid = NULL) { $options = array( 'type' => 'object', 'subtype' => 'blog', - 'full_view' => FALSE, + 'full_view' => false, ); - $loggedin_userid = elgg_get_logged_in_user_guid(); + $current_user = elgg_get_logged_in_user_entity(); + if ($container_guid) { + // access check for closed groups + group_gatekeeper(); + $options['container_guid'] = $container_guid; $container = get_entity($container_guid); if (!$container) { @@ -77,35 +81,32 @@ function blog_get_page_content_list($container_guid = NULL) { $crumbs_title = $container->name; elgg_push_breadcrumb($crumbs_title); - if ($container_guid == $loggedin_userid) { + if ($current_user && ($container_guid == $current_user->guid)) { $return['filter_context'] = 'mine'; + } else if (elgg_instanceof($container, 'group')) { + $return['filter'] = false; } else { // do not show button or select a tab when viewing someone else's posts $return['filter_context'] = 'none'; - $return['buttons'] = ''; - } - - if (elgg_instanceof($container, 'group')) { - $return['filter'] = ''; - if ($container->isMember(elgg_get_logged_in_user_entity())) { - $url = "pg/blog/add/$container->guid"; - $params = array( - 'href' => $url, - 'text' => elgg_echo("blog:add"), - 'class' => 'elgg-button elgg-button-action', - ); - $buttons = elgg_view('output/url', $params); - $return['buttons'] = $buttons; - } } } else { $return['filter_context'] = 'all'; $return['title'] = elgg_echo('blog:title:all_blogs'); + elgg_pop_breadcrumb(); + elgg_push_breadcrumb(elgg_echo('blog:blogs')); } + elgg_register_title_button(); + // show all posts for admin or users looking at their own blogs // show only published posts for other users. - if (!(elgg_is_admin_logged_in() || (elgg_is_logged_in() && $container_guid == $loggedin_userid))) { + $show_only_published = true; + if ($current_user) { + if (($current_user->guid == $container_guid) || $current_user->isAdmin()) { + $show_only_published = false; + } + } + if ($show_only_published) { $options['metadata_name_value_pairs'] = array( array('name' => 'status', 'value' => 'published'), ); @@ -130,6 +131,9 @@ function blog_get_page_content_list($container_guid = NULL) { function blog_get_page_content_friends($user_guid) { $user = get_user($user_guid); + if (!$user) { + forward('blog/all'); + } $return = array(); @@ -137,9 +141,11 @@ function blog_get_page_content_friends($user_guid) { $return['title'] = elgg_echo('blog:title:friends'); $crumbs_title = $user->name; - elgg_push_breadcrumb($crumbs_title, "pg/blog/owner/{$user->username}"); + elgg_push_breadcrumb($crumbs_title, "blog/owner/{$user->username}"); elgg_push_breadcrumb(elgg_echo('friends')); + elgg_register_title_button(); + if (!$friends = get_user_friends($user_guid, ELGG_ENTITIES_ANY_VALUE, 0)) { $return['content'] .= elgg_echo('friends:none:you'); return $return; @@ -156,11 +162,14 @@ function blog_get_page_content_friends($user_guid) { // admin / owners can see any posts // everyone else can only see published posts - if (!(elgg_is_admin_logged_in() || (elgg_is_logged_in() && $owner_guid == elgg_get_logged_in_user_guid()))) { - if ($upper > $now) { - $upper = $now; + $show_only_published = true; + $current_user = elgg_get_logged_in_user_entity(); + if ($current_user) { + if (($user_guid == $current_user->guid) || $current_user->isAdmin()) { + $show_only_published = false; } - + } + if ($show_only_published) { $options['metadata_name_value_pairs'][] = array( array('name' => 'status', 'value' => 'published') ); @@ -189,11 +198,16 @@ function blog_get_page_content_archive($owner_guid, $lower = 0, $upper = 0) { $now = time(); - $user = get_user($owner_guid); + $owner = get_entity($owner_guid); elgg_set_page_owner_guid($owner_guid); - $crumbs_title = $user->name; - elgg_push_breadcrumb($crumbs_title, "pg/blog/owner/{$user->username}"); + $crumbs_title = $owner->name; + if (elgg_instanceof($owner, 'user')) { + $url = "blog/owner/{$owner->username}"; + } else { + $url = "blog/group/$owner->guid/all"; + } + elgg_push_breadcrumb($crumbs_title, $url); elgg_push_breadcrumb(elgg_echo('blog:archives')); if ($lower) { @@ -211,7 +225,7 @@ function blog_get_page_content_archive($owner_guid, $lower = 0, $upper = 0) { ); if ($owner_guid) { - $options['owner_guid'] = $owner_guid; + $options['container_guid'] = $owner_guid; } // admin / owners can see any posts @@ -236,17 +250,16 @@ function blog_get_page_content_archive($owner_guid, $lower = 0, $upper = 0) { $list = elgg_list_entities_from_metadata($options); if (!$list) { - $content .= elgg_echo('blog:none'); + $content = elgg_echo('blog:none'); } else { - $content .= $list; + $content = $list; } - $title = elgg_echo('date:month:' . date('n', $lower), array(date('Y', $lower))); + $title = elgg_echo('date:month:' . date('m', $lower), array(date('Y', $lower))); return array( 'content' => $content, 'title' => $title, - 'buttons' => '', 'filter' => '', ); } @@ -261,15 +274,17 @@ function blog_get_page_content_archive($owner_guid, $lower = 0, $upper = 0) { */ function blog_get_page_content_edit($page, $guid = 0, $revision = NULL) { + elgg_load_js('elgg.blog'); + $return = array( - 'buttons' => '', 'filter' => '', ); $vars = array(); $vars['id'] = 'blog-post-edit'; - $vars['name'] = 'blog_post'; + $vars['class'] = 'elgg-form-alt'; + $sidebar = ''; if ($page == 'edit') { $blog = get_entity((int)$guid); @@ -298,8 +313,7 @@ function blog_get_page_content_edit($page, $guid = 0, $revision = NULL) { elgg_push_breadcrumb($blog->title, $blog->getURL()); elgg_push_breadcrumb(elgg_echo('edit')); - $blog_js = elgg_get_simplecache_url('js', 'blog/save_draft'); - elgg_register_js($blog_js, 'blog'); + elgg_load_js('elgg.blog'); $content = elgg_view_form('blog/save', $vars, $body_vars); $sidebar = elgg_view('blog/sidebar/revisions', $vars); @@ -307,20 +321,11 @@ function blog_get_page_content_edit($page, $guid = 0, $revision = NULL) { $content = elgg_echo('blog:error:cannot_edit_post'); } } else { - if (!$guid) { - $container = elgg_get_logged_in_user_entity(); - } else { - $container = get_entity($guid); - } - elgg_push_breadcrumb(elgg_echo('blog:add')); - $body_vars = blog_prepare_form_vars($blog); + $body_vars = blog_prepare_form_vars(null); $title = elgg_echo('blog:add'); $content = elgg_view_form('blog/save', $vars, $body_vars); - - $blog_js = elgg_get_simplecache_url('js', 'blog/save_draft'); - elgg_register_js($blog_js, 'blog'); } $return['title'] = $title; @@ -352,24 +357,31 @@ function blog_prepare_form_vars($post = NULL, $revision = NULL) { 'draft_warning' => '', ); - if (elgg_is_sticky_form('blog')) { + if ($post) { foreach (array_keys($values) as $field) { - $values[$field] = elgg_get_sticky_value('blog', $field); + if (isset($post->$field)) { + $values[$field] = $post->$field; + } + } + + if ($post->status == 'draft') { + $values['access_id'] = $post->future_access; } } + if (elgg_is_sticky_form('blog')) { + $sticky_values = elgg_get_sticky_values('blog'); + foreach ($sticky_values as $key => $value) { + $values[$key] = $value; + } + } + elgg_clear_sticky_form('blog'); if (!$post) { return $values; } - foreach (array_keys($values) as $field) { - $values[$field] = $post->$field; - } - - $values['entity'] = $post; - // load the revision annotation if requested if ($revision instanceof ElggAnnotation && $revision->entity_guid == $post->getGUID()) { $values['revision'] = $revision; @@ -381,7 +393,7 @@ function blog_prepare_form_vars($post = NULL, $revision = NULL) { if ($auto_save_annotations = $post->getAnnotations('blog_auto_save', 1)) { $auto_save = $auto_save_annotations[0]; } else { - $auto_save == FALSE; + $auto_save = false; } if ($auto_save && $auto_save->id != $revision->id) { @@ -393,52 +405,74 @@ function blog_prepare_form_vars($post = NULL, $revision = NULL) { /** * Forward to the new style of URLs + * + * Pre-1.7.5 + * Group blogs page: /blog/group:<container_guid>/ + * Group blog view: /blog/group:<container_guid>/read/<guid>/<title> + * 1.7.5-1.8 + * Group blogs page: /blog/owner/group:<container_guid>/ + * Group blog view: /blog/read/<guid> + * * * @param string $page */ function blog_url_forwarder($page) { - global $CONFIG; + + $viewtype = elgg_get_viewtype(); + $qs = ($viewtype === 'default') ? "" : "?view=$viewtype"; + + $url = "blog/all"; + + // easier to work with & no notices + $page = array_pad($page, 4, ""); // group usernames - if (substr_count($page[0], 'group:')) { - preg_match('/group\:([0-9]+)/i', $page[0], $matches); + if (preg_match('~/group\:([0-9]+)/~', "/{$page[0]}/{$page[1]}/", $matches)) { $guid = $matches[1]; $entity = get_entity($guid); - if ($entity) { - $url = "{$CONFIG->wwwroot}pg/blog/group/$guid/owner"; + if (elgg_instanceof($entity, 'group')) { + if (!empty($page[2])) { + $url = "blog/view/$page[2]/"; + } else { + $url = "blog/group/$guid/all"; + } register_error(elgg_echo("changebookmark")); - forward($url); + forward($url . $qs); } } + if (empty($page[0])) { + return; + } + // user usernames $user = get_user_by_username($page[0]); if (!$user) { return; } - if (!isset($page[1])) { + if (empty($page[1])) { $page[1] = 'owner'; } switch ($page[1]) { case "read": - $url = "{$CONFIG->wwwroot}pg/blog/view/{$page[2]}/{$page[3]}"; + $url = "blog/view/{$page[2]}/{$page[3]}"; break; case "archive": - $url = "{$CONFIG->wwwroot}pg/blog/archive/{$page[0]}/{$page[2]}/{$page[3]}"; + $url = "blog/archive/{$page[0]}/{$page[2]}/{$page[3]}"; break; case "friends": - $url = "{$CONFIG->wwwroot}pg/blog/friends/{$page[0]}"; + $url = "blog/friends/{$page[0]}"; break; case "new": - $url = "{$CONFIG->wwwroot}pg/blog/add/$user->guid"; + $url = "blog/add/$user->guid"; break; case "owner": - $url = "{$CONFIG->wwwroot}pg/blog/owner/{$page[0]}"; + $url = "blog/owner/{$page[0]}"; break; } register_error(elgg_echo("changebookmark")); - forward($url); + forward($url . $qs); } diff --git a/mod/blog/manifest.xml b/mod/blog/manifest.xml index 4d853a9aa..29ee1bfc8 100644 --- a/mod/blog/manifest.xml +++ b/mod/blog/manifest.xml @@ -5,16 +5,15 @@ <version>1.8</version> <category>bundled</category> <category>content</category> + <category>widget</category> <blurb>Blog plugin</blurb> <description>Adds simple blogging capabilities to your Elgg installation.</description> <website>http://elgg.org/</website> <copyright>See COPYRIGHT.txt</copyright> - <license>GNU Public License version 2</license> + <license>GNU General Public License version 2</license> <requires> - <type>elgg_version</type> - <version>2010030101</version> + <type>elgg_release</type> + <version>1.8</version> </requires> - <admin_interface>simple</admin_interface> <activate_on_install>true</activate_on_install> - <on_activate>blog_on_activate</on_activate> </plugin_manifest> diff --git a/mod/blog/start.php b/mod/blog/start.php index 344da21d4..e724b91c2 100644 --- a/mod/blog/start.php +++ b/mod/blog/start.php @@ -18,17 +18,22 @@ elgg_register_event_handler('init', 'system', 'blog_init'); * Init blog plugin. */ function blog_init() { - + elgg_register_library('elgg:blog', elgg_get_plugins_path() . 'blog/lib/blog.php'); // add a site navigation item - $item = new ElggMenuItem('blog', elgg_echo('blog:blogs'), 'pg/blog/all'); + $item = new ElggMenuItem('blog', elgg_echo('blog:blogs'), 'blog/all'); elgg_register_menu_item('site', $item); elgg_register_event_handler('upgrade', 'upgrade', 'blog_run_upgrades'); // add to the main css - elgg_extend_view('css/screen', 'blog/css'); + elgg_extend_view('css/elgg', 'blog/css'); + + // register the blog's JavaScript + $blog_js = elgg_get_simplecache_url('js', 'blog/save_draft'); + elgg_register_simplecache_view('js/blog/save_draft'); + elgg_register_js('elgg.blog', $blog_js); // routing of urls elgg_register_page_handler('blog', 'blog_page_handler'); @@ -36,8 +41,8 @@ function blog_init() { // override the default url to view a blog object elgg_register_entity_url_handler('object', 'blog', 'blog_url_handler'); - // notifications - register_notification_object('object', 'blog', elgg_echo('blog:newpost')); + // notifications - need to register for unique event because of draft/published status + elgg_register_event_handler('publish', 'object', 'object_notifications'); elgg_register_plugin_hook_handler('notify:entity:message', 'object', 'blog_notify_message'); // add blog link to @@ -55,7 +60,7 @@ function blog_init() { elgg_extend_view('groups/tool_latest', 'blog/group_module'); // add a blog widget - elgg_register_widget_type('blog', elgg_echo('blog'), elgg_echo('blog:widget:description'), 'profile'); + elgg_register_widget_type('blog', elgg_echo('blog'), elgg_echo('blog:widget:description')); // register actions $action_path = elgg_get_plugins_path() . 'blog/actions/blog'; @@ -73,55 +78,67 @@ function blog_init() { /** * Dispatches blog pages. * URLs take the form of - * All blogs: pg/blog/all - * User's blogs: pg/blog/owner/<username> - * Friends' blog: pg/blog/friends/<username> - * User's archives: pg/blog/archives/<username>/<time_start>/<time_stop> - * Blog post: pg/blog/view/<guid>/<title> - * New post: pg/blog/add/<guid> - * Edit post: pg/blog/edit/<guid>/<revision> - * Preview post: pg/blog/preview/<guid> - * Group blog: pg/blog/group/<guid>/owner + * All blogs: blog/all + * User's blogs: blog/owner/<username> + * Friends' blog: blog/friends/<username> + * User's archives: blog/archives/<username>/<time_start>/<time_stop> + * Blog post: blog/view/<guid>/<title> + * New post: blog/add/<guid> + * Edit post: blog/edit/<guid>/<revision> + * Preview post: blog/preview/<guid> + * Group blog: blog/group/<guid>/all * * Title is ignored * * @todo no archives for all blogs or friends * * @param array $page - * @return NULL + * @return bool */ function blog_page_handler($page) { elgg_load_library('elgg:blog'); - // @todo remove the forwarder in 1.9 - // forward to correct URL for bookmarks pre-1.7.5 + // forward to correct URL for blog pages pre-1.8 blog_url_forwarder($page); - + // push all blogs breadcrumb - elgg_push_breadcrumb(elgg_echo('blog:blogs'), "pg/blog/all/"); + elgg_push_breadcrumb(elgg_echo('blog:blogs'), "blog/all"); if (!isset($page[0])) { $page[0] = 'all'; } - + $page_type = $page[0]; switch ($page_type) { case 'owner': $user = get_user_by_username($page[1]); + if (!$user) { + forward('', '404'); + } $params = blog_get_page_content_list($user->guid); break; case 'friends': $user = get_user_by_username($page[1]); + if (!$user) { + forward('', '404'); + } $params = blog_get_page_content_friends($user->guid); break; case 'archive': $user = get_user_by_username($page[1]); + if (!$user) { + forward('', '404'); + } $params = blog_get_page_content_archive($user->guid, $page[2], $page[3]); break; case 'view': $params = blog_get_page_content_read($page[1]); break; + case 'read': // Elgg 1.7 compatibility + register_error(elgg_echo("changebookmark")); + forward("blog/view/{$page[1]}"); + break; case 'add': gatekeeper(); $params = blog_get_page_content_edit($page_type, $page[1]); @@ -131,20 +148,33 @@ function blog_page_handler($page) { $params = blog_get_page_content_edit($page_type, $page[1], $page[2]); break; case 'group': - $params = blog_get_page_content_list($page[1]); + $group = get_entity($page[1]); + if (!elgg_instanceof($group, 'group')) { + forward('', '404'); + } + if (!isset($page[2]) || $page[2] == 'all') { + $params = blog_get_page_content_list($page[1]); + } else { + $params = blog_get_page_content_archive($page[1], $page[3], $page[4]); + } break; case 'all': - default: - $title = elgg_echo('blog:title:all_blogs'); $params = blog_get_page_content_list(); break; + default: + return false; + } + + if (isset($params['sidebar'])) { + $params['sidebar'] .= elgg_view('blog/sidebar', array('page' => $page_type)); + } else { + $params['sidebar'] = elgg_view('blog/sidebar', array('page' => $page_type)); } - - $params['sidebar'] .= elgg_view('blog/sidebar', array('page' => $page_type)); $body = elgg_view_layout('content', $params); echo elgg_view_page($params['title'], $body); + return true; } /** @@ -161,7 +191,7 @@ function blog_url_handler($entity) { $friendly_title = elgg_get_friendly_title($entity->title); - return "pg/blog/view/{$entity->guid}/$friendly_title"; + return "blog/view/{$entity->guid}/$friendly_title"; } /** @@ -169,12 +199,12 @@ function blog_url_handler($entity) { */ function blog_owner_block_menu($hook, $type, $return, $params) { if (elgg_instanceof($params['entity'], 'user')) { - $url = "pg/blog/owner/{$params['entity']->username}"; + $url = "blog/owner/{$params['entity']->username}"; $item = new ElggMenuItem('blog', elgg_echo('blog'), $url); $return[] = $item; } else { if ($params['entity']->blog_enable != "no") { - $url = "pg/blog/group/{$params['entity']->guid}/owner"; + $url = "blog/group/{$params['entity']->guid}/all"; $item = new ElggMenuItem('blog', elgg_echo('blog:group'), $url); $return[] = $item; } @@ -197,11 +227,18 @@ function blog_entity_menu_setup($hook, $type, $return, $params) { return $return; } - if ($entity->canEdit() && $entity->status != 'published') { + if ($entity->status != 'published') { + // draft status replaces access + foreach ($return as $index => $item) { + if ($item->getName() == 'access') { + unset($return[$index]); + } + } + $status_text = elgg_echo("blog:status:{$entity->status}"); $options = array( 'name' => 'published_status', - 'text' => $status_text, + 'text' => "<span>$status_text</span>", 'href' => false, 'priority' => 150, ); @@ -212,6 +249,33 @@ function blog_entity_menu_setup($hook, $type, $return, $params) { } /** + * Set the notification message body + * + * @param string $hook Hook name + * @param string $type Hook type + * @param string $message The current message body + * @param array $params Parameters about the blog posted + * @return string + */ +function blog_notify_message($hook, $type, $message, $params) { + $entity = $params['entity']; + $to_entity = $params['to_entity']; + $method = $params['method']; + if (elgg_instanceof($entity, 'object', 'blog')) { + $descr = $entity->excerpt; + $title = $entity->title; + $owner = $entity->getOwnerEntity(); + return elgg_echo('blog:notification', array( + $owner->name, + $title, + $descr, + $entity->getURL() + )); + } + return null; +} + +/** * Register blogs with ECML. */ function blog_ecml_views_hook($hook, $entity_type, $return_value, $params) { @@ -221,18 +285,18 @@ function blog_ecml_views_hook($hook, $entity_type, $return_value, $params) { } /** - * Runs when blog plugin is activated. See manifest file. + * Upgrade from 1.7 to 1.8. */ -function blog_on_activate() { - add_subtype('object', 'blog', 'ElggBlog'); -} +function blog_run_upgrades($event, $type, $details) { + $blog_upgrade_version = elgg_get_plugin_setting('upgrade_version', 'blogs'); + + if (!$blog_upgrade_version) { + // When upgrading, check if the ElggBlog class has been registered as this + // was added in Elgg 1.8 + if (!update_subtype('object', 'blog', 'ElggBlog')) { + add_subtype('object', 'blog', 'ElggBlog'); + } -/** - * When upgrading, check if the ElggBlog class has been registered as this - * was added in Elgg 1.8 - */ -function blog_run_upgrades() { - if (!update_subtype('object', 'blog', 'ElggBlog')) { - add_subtype('object', 'blog', 'ElggBlog'); + elgg_set_plugin_setting('upgrade_version', 1, 'blogs'); } } diff --git a/mod/blog/views/default/blog/group_module.php b/mod/blog/views/default/blog/group_module.php index 312c89c0c..6082cdafd 100644 --- a/mod/blog/views/default/blog/group_module.php +++ b/mod/blog/views/default/blog/group_module.php @@ -10,24 +10,22 @@ if ($group->blog_enable == "no") { } $all_link = elgg_view('output/url', array( - 'href' => "pg/blog/group/$group->guid/owner", + 'href' => "blog/group/$group->guid/all", 'text' => elgg_echo('link:view:all'), + 'is_trusted' => true, )); -$header = "<span class=\"groups-widget-viewall\">$all_link</span>"; -$header .= '<h3>' . elgg_echo('blog:group') . '</h3>'; - - elgg_push_context('widgets'); $options = array( 'type' => 'object', 'subtype' => 'blog', 'container_guid' => elgg_get_page_owner_guid(), + 'metadata_name_value_pairs' => array('name' => 'status', 'value' => 'published'), 'limit' => 6, 'full_view' => false, 'pagination' => false, ); -$content = elgg_list_entities($options); +$content = elgg_list_entities_from_metadata($options); elgg_pop_context(); if (!$content) { @@ -35,9 +33,14 @@ if (!$content) { } $new_link = elgg_view('output/url', array( - 'href' => "pg/blog/add/$group->guid", + 'href' => "blog/add/$group->guid", 'text' => elgg_echo('blog:write'), + 'is_trusted' => true, )); -$content .= "<span class='elgg-widget-more'>$new_link</span>"; -echo elgg_view_module('info', '', $content, array('header' => $header)); +echo elgg_view('groups/profile/module', array( + 'title' => elgg_echo('blog:group'), + 'content' => $content, + 'all_link' => $all_link, + 'add_link' => $new_link, +)); diff --git a/mod/blog/views/default/blog/sidebar.php b/mod/blog/views/default/blog/sidebar.php index 63ed85c0b..0ae2b431c 100644 --- a/mod/blog/views/default/blog/sidebar.php +++ b/mod/blog/views/default/blog/sidebar.php @@ -7,12 +7,24 @@ // fetch & display latest comments if ($vars['page'] == 'all') { - echo elgg_view_latest_comments(0, 'object', 'blog'); + echo elgg_view('page/elements/comments_block', array( + 'subtypes' => 'blog', + )); } elseif ($vars['page'] == 'owner') { - // @todo - what we want is the latest comments on this user's blog posts - elgg does not support this - echo elgg_view_latest_comments(elgg_get_page_owner_guid(), 'object', 'blog'); + echo elgg_view('page/elements/comments_block', array( + 'subtypes' => 'blog', + 'owner_guid' => elgg_get_page_owner_guid(), + )); } -echo elgg_view('blog/sidebar/archives', $vars); +// only users can have archives at present +if ($vars['page'] == 'owner' || $vars['page'] == 'group') { + echo elgg_view('blog/sidebar/archives', $vars); +} -echo elgg_view('blog/sidebar/tagcloud', $vars); +if ($vars['page'] != 'friends') { + echo elgg_view('page/elements/tagcloud_block', array( + 'subtypes' => 'blog', + 'owner_guid' => elgg_get_page_owner_guid(), + )); +} diff --git a/mod/blog/views/default/blog/sidebar/archives.php b/mod/blog/views/default/blog/sidebar/archives.php index 5eda64afb..5098e6e3e 100644 --- a/mod/blog/views/default/blog/sidebar/archives.php +++ b/mod/blog/views/default/blog/sidebar/archives.php @@ -6,18 +6,24 @@ $loggedin_user = elgg_get_logged_in_user_entity(); $page_owner = elgg_get_page_owner_entity(); +if (elgg_instanceof($page_owner, 'user')) { + $url_segment = 'blog/archive/' . $page_owner->username; +} else { + $url_segment = 'blog/group/' . $page_owner->getGUID() . '/archive'; +} + // This is a limitation of the URL schema. if ($page_owner && $vars['page'] != 'friends') { - $dates = get_entity_dates('object', 'blog', $page_owner->getGUID()); + $dates = array_reverse(get_entity_dates('object', 'blog', $page_owner->getGUID())); if ($dates) { $title = elgg_echo('blog:archives'); $content = '<ul class="blog-archives">'; - foreach($dates as $date) { + foreach ($dates as $date) { $timestamplow = mktime(0, 0, 0, substr($date,4,2) , 1, substr($date, 0, 4)); $timestamphigh = mktime(0, 0, 0, ((int) substr($date, 4, 2)) + 1, 1, substr($date, 0, 4)); - $link = elgg_get_site_url() . 'pg/blog/archive/' . $page_owner->username . '/' . $timestamplow . '/' . $timestamphigh; + $link = elgg_get_site_url() . $url_segment . '/' . $timestamplow . '/' . $timestamphigh; $month = elgg_echo('date:month:' . substr($date, 4, 2), array(substr($date, 0, 4))); $content .= "<li><a href=\"$link\" title=\"$month\">$month</a></li>"; } diff --git a/mod/blog/views/default/blog/sidebar/revisions.php b/mod/blog/views/default/blog/sidebar/revisions.php index 01eab01c4..cd2e7f3d8 100644 --- a/mod/blog/views/default/blog/sidebar/revisions.php +++ b/mod/blog/views/default/blog/sidebar/revisions.php @@ -33,13 +33,14 @@ if (elgg_instanceof($blog, 'object', 'blog') && $blog->canEdit()) { $n = count($revisions); $body = '<ul class="blog-revisions">'; - $load_base_url = "pg/blog/edit/{$blog->getGUID()}/"; + $load_base_url = "blog/edit/{$blog->getGUID()}"; // show the "published revision" if ($blog->status == 'published') { $load = elgg_view('output/url', array( 'href' => $load_base_url, - 'text' => elgg_echo('blog:status:published') + 'text' => elgg_echo('blog:status:published'), + 'is_trusted' => true, )); $time = "<span class='elgg-subtext'>" @@ -58,8 +59,9 @@ if (elgg_instanceof($blog, 'object', 'blog') && $blog->canEdit()) { $revision_lang = elgg_echo('blog:revision') . " $n"; } $load = elgg_view('output/url', array( - 'href' => $load_base_url . $revision->id, - 'text' => $revision_lang + 'href' => "$load_base_url/$revision->id", + 'text' => $revision_lang, + 'is_trusted' => true, )); $text = "$load: $time"; diff --git a/mod/blog/views/default/blog/sidebar/tagcloud.php b/mod/blog/views/default/blog/sidebar/tagcloud.php deleted file mode 100644 index 70c454390..000000000 --- a/mod/blog/views/default/blog/sidebar/tagcloud.php +++ /dev/null @@ -1,31 +0,0 @@ -<?php -/** - * Blog tag cloud - */ - -$loggedin_user = elgg_get_logged_in_user_entity(); -$page_owner = elgg_get_page_owner_entity(); - -if ($page_owner && $vars['page'] != 'friends') { - - // friends page lists all tags; mine lists owner's - $owner_guid = ($vars['page'] == 'friends') ? '' : $page_owner->getGUID(); - $options = array( - 'type' => 'object', - 'subtype' => 'blog', - 'owner_guid' => $owner_guid, - 'threshold' => 0, - 'limit' => 50, - 'tag_name' => 'tags', - ); - echo elgg_view_tagcloud($options); -} else { - $options = array( - 'type' => 'object', - 'subtype' => 'blog', - 'threshold' => 0, - 'limit' => 50, - 'tag_name' => 'tags', - ); - echo elgg_view_tagcloud($options); -} diff --git a/mod/blog/views/default/forms/blog/save.php b/mod/blog/views/default/forms/blog/save.php index b2d20579f..f825acca1 100644 --- a/mod/blog/views/default/forms/blog/save.php +++ b/mod/blog/views/default/forms/blog/save.php @@ -5,13 +5,17 @@ * @package Blog */ +$blog = get_entity($vars['guid']); +$vars['entity'] = $blog; + $draft_warning = $vars['draft_warning']; if ($draft_warning) { - $draft_warning = '<span class="message warning">' . $draft_warning . '</span>'; + $draft_warning = '<span class="mbm elgg-text-help">' . $draft_warning . '</span>'; } $action_buttons = ''; $delete_link = ''; +$preview_button = ''; if ($vars['guid']) { // add a delete button if editing @@ -19,12 +23,24 @@ if ($vars['guid']) { $delete_link = elgg_view('output/confirmlink', array( 'href' => $delete_url, 'text' => elgg_echo('delete'), - 'class' => 'elgg-button elgg-button-delete elgg-state-disabled' + 'class' => 'elgg-button elgg-button-delete float-alt' )); } -$save_button = elgg_view('input/submit', array('value' => elgg_echo('save'))); -$action_buttons = $save_button . $delete_link; +// published blogs do not get the preview button +if (!$vars['guid'] || ($blog && $blog->status != 'published')) { + $preview_button = elgg_view('input/submit', array( + 'value' => elgg_echo('preview'), + 'name' => 'preview', + 'class' => 'mls', + )); +} + +$save_button = elgg_view('input/submit', array( + 'value' => elgg_echo('save'), + 'name' => 'save', +)); +$action_buttons = $save_button . $preview_button . $delete_link; $title_label = elgg_echo('title'); $title_input = elgg_view('input/text', array( @@ -37,7 +53,7 @@ $excerpt_label = elgg_echo('blog:excerpt'); $excerpt_input = elgg_view('input/text', array( 'name' => 'excerpt', 'id' => 'blog_excerpt', - 'value' => html_entity_decode($vars['excerpt'], ENT_COMPAT, 'UTF-8') + 'value' => _elgg_html_decode($vars['excerpt']) )); $body_label = elgg_echo('blog:body'); @@ -88,7 +104,7 @@ $access_input = elgg_view('input/access', array( 'value' => $vars['access_id'] )); -$categories_input = elgg_view('categories', $vars); +$categories_input = elgg_view('input/categories', $vars); // hidden inputs $container_guid_input = elgg_view('input/hidden', array('name' => 'container_guid', 'value' => elgg_get_page_owner_guid())); @@ -109,15 +125,18 @@ $draft_warning $excerpt_input </div> -<label for="blog_description">$body_label</label> -$body_input -<br /> +<div> + <label for="blog_description">$body_label</label> + $body_input +</div> <div> <label for="blog_tags">$tags_label</label> $tags_input </div> +$categories_input + <div> <label for="blog_comments_on">$comments_label</label> $comments_input @@ -133,15 +152,15 @@ $body_input $status_input </div> -$categories_input - -<div class="elgg-subtext pvm mbn elgg-divide-top"> +<div class="elgg-foot"> + <div class="elgg-subtext mbm"> $save_status <span class="blog-save-status-time">$saved</span> -</div> + </div> -$guid_input -$container_guid_input + $guid_input + $container_guid_input -$action_buttons + $action_buttons +</div> ___HTML; diff --git a/mod/blog/views/default/js/blog/save_draft.php b/mod/blog/views/default/js/blog/save_draft.php index 1d5ae5c39..8cd07ff5d 100644 --- a/mod/blog/views/default/js/blog/save_draft.php +++ b/mod/blog/views/default/js/blog/save_draft.php @@ -12,7 +12,7 @@ elgg.provide('elgg.blog'); */ elgg.blog.saveDraftCallback = function(data, textStatus, XHR) { if (textStatus == 'success' && data.success == true) { - var form = $('form[name=blog_post]'); + var form = $('form[id=blog-post-edit]'); // update the guid input element for new posts that now have a guid form.find('input[name=guid]').val(data.guid); @@ -28,7 +28,7 @@ elgg.blog.saveDraftCallback = function(data, textStatus, XHR) { } else { $(".blog-save-status-time").html(elgg.echo('error')); } -} +}; elgg.blog.saveDraft = function() { if (typeof(tinyMCE) != 'undefined') { @@ -36,7 +36,7 @@ elgg.blog.saveDraft = function() { } // only save on changed content - var form = $('form[name=blog_post]'); + var form = $('form[id=blog-post-edit]'); var description = form.find('textarea[name=description]').val(); var title = form.find('input[name=title]').val(); @@ -55,13 +55,13 @@ elgg.blog.saveDraft = function() { }); $.post(draftURL, postData, elgg.blog.saveDraftCallback, 'json'); -} +}; elgg.blog.init = function() { // get a copy of the body to compare for auto save - oldDescription = $('form[name=blog_post]').find('textarea[name=description]').val(); + oldDescription = $('form[id=blog-post-edit]').find('textarea[name=description]').val(); setInterval(elgg.blog.saveDraft, 60000); }; -elgg.register_event_handler('init', 'system', elgg.blog.init);
\ No newline at end of file +elgg.register_hook_handler('init', 'system', elgg.blog.init);
\ No newline at end of file diff --git a/mod/blog/views/default/object/blog.php b/mod/blog/views/default/object/blog.php index 9687e8f34..4403a6006 100644 --- a/mod/blog/views/default/object/blog.php +++ b/mod/blog/views/default/object/blog.php @@ -5,7 +5,7 @@ * @package Blog */ -$full = elgg_extract('full', $vars, FALSE); +$full = elgg_extract('full_view', $vars, FALSE); $blog = elgg_extract('entity', $vars, FALSE); if (!$blog) { @@ -16,14 +16,17 @@ $owner = $blog->getOwnerEntity(); $container = $blog->getContainerEntity(); $categories = elgg_view('output/categories', $vars); $excerpt = $blog->excerpt; +if (!$excerpt) { + $excerpt = elgg_get_excerpt($blog->description); +} $owner_icon = elgg_view_entity_icon($owner, 'tiny'); $owner_link = elgg_view('output/url', array( - 'href' => "pg/blog/owner/$owner->username", + 'href' => "blog/owner/$owner->username", 'text' => $owner->name, + 'is_trusted' => true, )); $author_text = elgg_echo('byline', array($owner_link)); -$tags = elgg_view('output/tags', array('tags' => $blog->tags)); $date = elgg_view_friendly_time($blog->time_created); // The "on" status changes for comments, so best to check for !Off @@ -35,6 +38,7 @@ if ($blog->comments_on != 'Off') { $comments_link = elgg_view('output/url', array( 'href' => $blog->getURL() . '#blog-comments', 'text' => $text, + 'is_trusted' => true, )); } else { $comments_link = ''; @@ -50,8 +54,7 @@ $metadata = elgg_view_menu('entity', array( 'class' => 'elgg-menu-hz', )); -$subtitle = "<p>$author_text $date $comments_link</p>"; -$subtitle .= $categories; +$subtitle = "$author_text $date $comments_link $categories"; // do not show the metadata and controls in widget view if (elgg_in_context('widgets')) { @@ -65,24 +68,20 @@ if ($full) { 'class' => 'blog-post', )); - $header = elgg_view_title($blog->title); - $params = array( 'entity' => $blog, 'title' => false, 'metadata' => $metadata, 'subtitle' => $subtitle, - 'tags' => $tags, ); - $list_body = elgg_view('page/components/list/body', $params); + $params = $params + $vars; + $summary = elgg_view('object/elements/summary', $params); - $blog_info = elgg_view_image_block($owner_icon, $list_body); - - echo <<<HTML -$header -$blog_info -$body -HTML; + echo elgg_view('object/elements/full', array( + 'summary' => $summary, + 'icon' => $owner_icon, + 'body' => $body, + )); } else { // brief view @@ -91,10 +90,10 @@ HTML; 'entity' => $blog, 'metadata' => $metadata, 'subtitle' => $subtitle, - 'tags' => $tags, 'content' => $excerpt, ); - $list_body = elgg_view('page/components/list/body', $params); + $params = $params + $vars; + $list_body = elgg_view('object/elements/summary', $params); echo elgg_view_image_block($owner_icon, $list_body); } diff --git a/mod/blog/views/default/river/object/blog/create.php b/mod/blog/views/default/river/object/blog/create.php index bd2405d42..b808f1bdc 100644 --- a/mod/blog/views/default/river/object/blog/create.php +++ b/mod/blog/views/default/river/object/blog/create.php @@ -4,32 +4,12 @@ */ $object = $vars['item']->getObjectEntity(); -$excerpt = strip_tags($object->excerpt); -$excerpt = elgg_get_excerpt($excerpt); - -$params = array( - 'href' => $object->getURL(), - 'text' => $object->title, -); -$link = elgg_view('output/url', $params); - -$group_string = ''; -$container = $object->getContainerEntity(); -if ($container instanceof ElggGroup) { - $params = array( - 'href' => $container->getURL(), - 'text' => $container->name, - ); - $group_link = elgg_view('output/url', $params); - $group_string = elgg_echo('river:ingroup', array($group_link)); -} -echo elgg_echo('blog:river:create'); - -echo " $link $group_string"; +$excerpt = $object->excerpt ? $object->excerpt : $object->description; +$excerpt = strip_tags($excerpt); +$excerpt = elgg_get_excerpt($excerpt); -if ($excerpt) { - echo '<div class="elgg-river-content">'; - echo $excerpt; - echo '</div>'; -} +echo elgg_view('river/elements/layout', array( + 'item' => $vars['item'], + 'message' => $excerpt, +)); diff --git a/mod/blog/views/default/widgets/blog/content.php b/mod/blog/views/default/widgets/blog/content.php index 713c0f07d..330171662 100644 --- a/mod/blog/views/default/widgets/blog/content.php +++ b/mod/blog/views/default/widgets/blog/content.php @@ -18,10 +18,11 @@ $content = elgg_list_entities($options); echo $content; if ($content) { - $blog_url = "pg/blog/owner/" . elgg_get_page_owner_entity()->username; + $blog_url = "blog/owner/" . elgg_get_page_owner_entity()->username; $more_link = elgg_view('output/url', array( 'href' => $blog_url, 'text' => elgg_echo('blog:moreblogs'), + 'is_trusted' => true, )); echo "<span class=\"elgg-widget-more\">$more_link</span>"; } else { |
