From 60c803f7104116b93433e417a197331f78bcb23b Mon Sep 17 00:00:00 2001 From: cash Date: Sun, 5 Dec 2010 03:02:46 +0000 Subject: Clean-up of the blog plugin - now using urls from 1.7.5 git-svn-id: http://code.elgg.org/elgg/trunk@7535 36083f99-b078-4883-b0ff-0f9b5a30f544 --- engine/lib/views.php | 2 +- languages/en.php | 1 + mod/blog/actions/blog/delete.php | 2 +- mod/blog/actions/blog/save.php | 4 +- mod/blog/languages/en.php | 3 + mod/blog/lib/blog.php | 123 ++++++++++++---------- mod/blog/start.php | 103 +++++++++++++----- mod/blog/views/default/blog/css.php | 36 +------ mod/blog/views/default/blog/forms/edit.php | 12 ++- mod/blog/views/default/blog/sidebar_menu.php | 4 +- mod/blog/views/default/blog/sidebar_revisions.php | 6 +- mod/blog/views/default/object/blog.php | 4 +- views/default/content/filter.php | 6 +- views/default/content/header.php | 2 +- views/default/css/components/forms.php | 3 + 15 files changed, 176 insertions(+), 135 deletions(-) diff --git a/engine/lib/views.php b/engine/lib/views.php index 249177c4e..2612c2363 100644 --- a/engine/lib/views.php +++ b/engine/lib/views.php @@ -907,7 +907,7 @@ function elgg_view_annotation_list($annotations, $count, $offset, $limit) { if (is_array($annotations) && sizeof($annotations) > 0) { foreach ($annotations as $annotation) { - $html .= elgg_view_annotation($annotation, "", false); + $html .= elgg_view_annotation($annotation, true); } } diff --git a/languages/en.php b/languages/en.php index 6d5ec22b5..ed012da05 100644 --- a/languages/en.php +++ b/languages/en.php @@ -251,6 +251,7 @@ $english = array( 'pageownerunavailable' => 'Warning: The page owner %d is not accessible!', 'viewfailure' => 'There was an internal failure in the view %s', + 'changebookmark' => 'Please change your bookmark for this page', /** * API */ diff --git a/mod/blog/actions/blog/delete.php b/mod/blog/actions/blog/delete.php index d338fd2df..a4606f17f 100644 --- a/mod/blog/actions/blog/delete.php +++ b/mod/blog/actions/blog/delete.php @@ -12,7 +12,7 @@ if (elgg_instanceof($blog, 'object', 'blog') && $blog->canEdit()) { $container = get_entity($blog->container_guid); if ($blog->delete()) { system_message(elgg_echo('blog:message:deleted_post')); - forward("pg/blog/$container->username/read/"); + forward("pg/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 448c76037..11d366a44 100644 --- a/mod/blog/actions/blog/save.php +++ b/mod/blog/actions/blog/save.php @@ -10,7 +10,7 @@ // store errors to pass along $error = FALSE; -$error_forward_url = $_SERVER['HTTP_REFERER']; +$error_forward_url = REFERER; $user = get_loggedin_user(); // edit or create a new entity @@ -22,7 +22,7 @@ if ($guid) { $blog = $entity; } else { register_error(elgg_echo('blog:error:post_not_found')); - forward(get_input('forward', $_SERVER['HTTP_REFERER'])); + forward(get_input('forward', REFERER)); } $success_forward_url = get_input('forward', $blog->getURL()); diff --git a/mod/blog/languages/en.php b/mod/blog/languages/en.php index 7f3954426..843d62932 100644 --- a/mod/blog/languages/en.php +++ b/mod/blog/languages/en.php @@ -43,9 +43,12 @@ $english = array( 'blog:error:post_not_found' => 'This post has been removed or is invalid.', '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.', + 'blog:error:cannot_delete_post' => 'Cannot delete blog post.', 'blog:none' => 'No blogs found', 'blog:error:missing:title' => 'Please enter a blog title!', 'blog:error:missing:description' => 'Please enter the body of your blog!', + 'blog:error:cannot_edit_post' => 'This post may not exist or you may not have permissions to edit it.', // river 'blog:river:create' => '%s wrote a new blog post', diff --git a/mod/blog/lib/blog.php b/mod/blog/lib/blog.php index 4db3effde..108f300cb 100644 --- a/mod/blog/lib/blog.php +++ b/mod/blog/lib/blog.php @@ -12,66 +12,79 @@ * @param int $guid of a blog entity. * @return string html */ -function blog_get_page_content_read($owner_guid = NULL, $guid = NULL) { - global $CONFIG; +function blog_get_page_content_read($guid = NULL) { $return = array(); - if ($guid) { - $blog = get_entity($guid); + $blog = get_entity($guid); - // no header or tabs for viewing an individual blog - $return['filter'] = ''; - $return['header'] = ''; + // no header or tabs for viewing an individual blog + $return['filter'] = ''; + $return['header'] = ''; - if (!elgg_instanceof($blog, 'object', 'blog') || ($blog->status != 'published' && !$blog->canEdit())) { - $return['content'] = elgg_echo('blog:error:post_not_found'); - } else { - elgg_push_breadcrumb($blog->title, $blog->getURL()); - $return['content'] = elgg_view_entity($blog, TRUE); - //check to see if comment are on - if ($blog->comments_on != 'Off') { - $return['content'] .= elgg_view_comments($blog); - } - } - } else { + if (!elgg_instanceof($blog, 'object', 'blog') || !$blog->canEdit()) { + $return['content'] = elgg_echo('blog:error:post_not_found'); + return $return; + } - $return['filter_context'] = $owner_guid ? 'mine' : 'everyone'; + elgg_push_breadcrumb($blog->title, $blog->getURL()); + $return['content'] = elgg_view_entity($blog, TRUE); + //check to see if comment are on + if ($blog->comments_on != 'Off') { + $return['content'] .= elgg_view_comments($blog); + } - $options = array( - 'type' => 'object', - 'subtype' => 'blog', - 'full_view' => FALSE, - //'order_by_metadata' => array('name'=>'publish_date', 'direction'=>'DESC', 'as'=>'int') - ); + return $return; +} - $loggedin_userid = get_loggedin_userid(); - if ($owner_guid) { - $options['owner_guid'] = $owner_guid; -/* - if ($owner_guid != $loggedin_userid) { - // do not show content header when viewing other users' posts - $content = elgg_view('page_elements/content_header_member', array('type' => 'blog')); - } - * +/** + * Returns HTML for listing a user's or all blogs. + * + * @param int $owner_guid The GUID of the page owner or NULL for all blogs + * @return string html */ - } +function blog_get_page_content_list($owner_guid = NULL) { - // show all posts for admin or users looking at their own blogs - // show only published posts for other users. - if (!(isadminloggedin() || (isloggedin() && $owner_guid == $loggedin_userid))) { - $options['metadata_name_value_pairs'] = array( - array('name' => 'status', 'value' => 'published'), - //array('name' => 'publish_date', 'operand' => '<', 'value' => time()) - ); - } + $return = array(); - $list = elgg_list_entities_from_metadata($options); - if (!$list) { - $return['content'] = elgg_echo('blog:none'); - } else { - $return['content'] = $list; + $return['filter_context'] = $owner_guid ? 'mine' : 'everyone'; + + $options = array( + 'type' => 'object', + 'subtype' => 'blog', + 'full_view' => FALSE, + //'order_by_metadata' => array('name'=>'publish_date', 'direction'=>'DESC', 'as'=>'int') + ); + + $loggedin_userid = get_loggedin_userid(); + if ($owner_guid) { + $options['owner_guid'] = $owner_guid; + + if ($owner_guid == $loggedin_userid) { + $return['filter_context'] = 'mine'; + } else{ + // do not show button or select a tab when viewing someone else's posts + $return['filter_context'] = 'none'; + $return['buttons'] = ''; } + } else { + $return['filter_context'] = 'everyone'; + } + + // show all posts for admin or users looking at their own blogs + // show only published posts for other users. + if (!(isadminloggedin() || (isloggedin() && $owner_guid == $loggedin_userid))) { + $options['metadata_name_value_pairs'] = array( + array('name' => 'status', 'value' => 'published'), + //array('name' => 'publish_date', 'operand' => '<', 'value' => time()) + ); + } + + $list = elgg_list_entities_from_metadata($options); + if (!$list) { + $return['content'] = elgg_echo('blog:none'); + } else { + $return['content'] = $list; } return $return; @@ -105,10 +118,10 @@ function blog_get_page_content_edit($guid, $revision = NULL) { elgg_push_breadcrumb(elgg_echo('edit')); $content = elgg_view('blog/forms/edit', $vars); - $sidebar = elgg_view('blog/sidebar_revisions', array('entity' => $blog)); + $sidebar = elgg_view('blog/sidebar_revisions', $vars); //$sidebar .= elgg_view('blog/sidebar_related'); } else { - $content = elgg_echo('blog:error:post_not_found'); + $content = elgg_echo('blog:error:cannot_edit_post'); } } else { elgg_push_breadcrumb(elgg_echo('blog:new')); @@ -127,12 +140,11 @@ function blog_get_page_content_edit($guid, $revision = NULL) { /** * Show blogs with publish dates between $lower and $upper * - * @param unknown_type $owner_guid - * @param unknown_type $lower - * @param unknown_type $upper + * @param int $owner_guid The GUID of the owner of this page + * @param int $lower Unix timestamp + * @param int $upper Unix timestamp */ function blog_get_page_content_archive($owner_guid, $lower=0, $upper=0) { - global $CONFIG; $now = time(); @@ -201,13 +213,12 @@ function blog_get_page_content_archive($owner_guid, $lower=0, $upper=0) { } /** - * Returns a view of the user's friend's posts. + * Returns a list of the user's friend's posts. * * @param int $user_guid * @return string */ function blog_get_page_content_friends($user_guid) { - global $CONFIG; elgg_push_breadcrumb(elgg_echo('friends')); diff --git a/mod/blog/start.php b/mod/blog/start.php index 9e3b8f300..f0967367d 100644 --- a/mod/blog/start.php +++ b/mod/blog/start.php @@ -9,7 +9,6 @@ * functions to work with a non-standard time_created. * Show friends blog posts * Widget - * * Pingbacks * Notifications */ @@ -23,7 +22,7 @@ function blog_init() { elgg_register_library('elgg:blog', elgg_get_plugin_path() . 'blog/lib/blog.php'); - add_menu(elgg_echo('blog:blogs'), "pg/blog/", array()); + add_menu(elgg_echo('blog:blogs'), "pg/blog/all/", array()); // run the setup upon activations or to upgrade old installations. run_function_once('blog_runonce', '1269370108'); @@ -71,36 +70,53 @@ function blog_runonce() { /** * Dispatches blog pages. - * To maintain URL backward compatibility, expects old-style URLs like: - * pg/blog/[username/[read|edit|archive|new/[time_start|guid/[time_end|title]]]] + * URLs take the form of + * pg/blog/[all|owner|read|edit|archive|new]/[username]/[time_start|guid]/[time_end|title] * - * Without a username, show all blogs - * Without an action (read|edit|archive|new), forward to pg/blog/username/read. + * Without an action, show all blogs * Without a guid, show all post for that user. * Title is ignored * * If archive, uses time_start/end * - * @todo There is no way to say "show me archive view for all blog posts" with the - * current URL scheme because $param[0] is the username instead of an action. - * Could do something hideous like make '*' mean "all users" (since a username can't be *). - * Can't change the URL scheme because of URL compatibility. + * @todo no archives for all blogs or friends * * @param array $page * @return NULL */ function blog_page_handler($page) { - global $CONFIG; + + // @todo remove the forwarder in 1.9 + // forward to correct URL for bookmaarks pre-1.7.5 + // group usernames + if (substr_count($page[0], 'group:')) { + preg_match('/group\:([0-9]+)/i', $page[0], $matches); + $guid = $matches[1]; + if ($entity = get_entity($guid)) { + blog_url_forwarder($page); + } + } + // user usernames + $user = get_user_by_username($page[0]); + if ($user) { + blog_url_forwarder($page); + } elgg_load_library('elgg:blog'); // push breadcrumb - elgg_push_breadcrumb(elgg_echo('blog:blogs'), "pg/blog"); + elgg_push_breadcrumb(elgg_echo('blog:blogs'), "pg/blog/all/"); - // see if we're showing all or just a user's - if (isset($page[0]) && !empty($page[0])) { - $username = $page[0]; + if (!isset($page[0])) { + $page[0] = 'all'; + } + // if username not set, we are showing all blog posts + if (!isset($page[1])) { + $title = elgg_echo('blog:title:all_blogs'); + $params = blog_get_page_content_list(); + } else { + $username = $page[1]; // forward away if invalid user. if (!$user = get_user_by_username($username)) { register_error('blog:error:unknown_username'); @@ -109,18 +125,23 @@ function blog_page_handler($page) { set_page_owner($user->getGUID()); $crumbs_title = elgg_echo('blog:owned_blogs', array($user->name)); - $crumbs_url = "pg/blog/$username/read"; + $crumbs_url = "pg/blog/owner/$username/"; elgg_push_breadcrumb($crumbs_title, $crumbs_url); - $action = isset($page[1]) ? $page[1] : FALSE; + $action = $page[0]; // yeah these are crap names, but they're used for different things. $page2 = isset($page[2]) ? $page[2] : FALSE; $page3 = isset($page[3]) ? $page[3] : FALSE; switch ($action) { + case 'owner': + $title = elgg_echo('blog:title:user_blogs', array($user->name)); + $params = blog_get_page_content_list($user->getGUID()); + break; + case 'read': $title = elgg_echo('blog:title:user_blogs', array($user->name)); - $params = blog_get_page_content_read($user->getGUID(), $page2); + $params = blog_get_page_content_read($page2); break; case 'new': @@ -141,16 +162,13 @@ function blog_page_handler($page) { break; default: - forward("pg/blog/$username/read/"); + forward("pg/blog/owner/$username/"); break; } - } else { - $title = elgg_echo('blog:title:all_blogs'); - $params = blog_get_page_content_read(); } $sidebar_menu = elgg_view('blog/sidebar_menu', array( - 'page' => isset($page[1]) ? $page[1] : FALSE, + 'page' => $action, )); $params['sidebar'] .= $sidebar_menu; @@ -160,6 +178,40 @@ function blog_page_handler($page) { echo elgg_view_page($title, $body); } +/** + * Forward to the new style of URLs + * + * @param string $page + */ +function blog_url_forwarder($page) { + global $CONFIG; + + if (!isset($page[1])) { + $page[1] = 'owner'; + } + + switch ($page[1]) { + case "read": + $url = "{$CONFIG->wwwroot}pg/blog/read/{$page[2]}/{$page[3]}"; + break; + case "archive": + $url = "{$CONFIG->wwwroot}pg/blog/archive/{$page[0]}/{$page[2]}/{$page[3]}"; + break; + case "friends": + $url = "{$CONFIG->wwwroot}pg/blog/friends/{$page[0]}/"; + break; + case "new": + $url = "{$CONFIG->wwwroot}pg/blog/new/{$page[0]}/"; + break; + case "owner": + $url = "{$CONFIG->wwwroot}pg/blog/owner/{$page[0]}/"; + break; + } + + register_error(elgg_echo("changebookmark")); + forward($url); +} + /** * Format and return the correct URL for blogs. * @@ -174,7 +226,7 @@ function blog_url_handler($entity) { $friendly_title = elgg_get_friendly_title($entity->title); - return "pg/blog/{$user->username}/read/{$entity->guid}/$friendly_title"; + return "pg/blog/read/{$user->username}/{$entity->guid}/$friendly_title"; } /** @@ -192,12 +244,11 @@ function blog_ecml_views_hook($hook, $entity_type, $return_value, $params) { } function blog_profile_menu($hook, $entity_type, $return_value, $params) { - global $CONFIG; if (!($params['owner'] instanceof ElggGroup)) { $return_value[] = array( 'text' => elgg_echo('blog'), - 'href' => "pg/blog/{$params['owner']->username}/read", + 'href' => "pg/blog/owner/{$params['owner']->username}/", ); } diff --git a/mod/blog/views/default/blog/css.php b/mod/blog/views/default/blog/css.php index 5808cc167..12ac4df2a 100644 --- a/mod/blog/views/default/blog/css.php +++ b/mod/blog/views/default/blog/css.php @@ -5,40 +5,10 @@ * @package Blog */ ?> -.blogpost .entity-listing-icon { - margin-top:6px; -} -.blogpost .entity-listing-info { - margin-top:4px; -} -.blog_post { - border-top:1px solid #CCCCCC; - border-bottom:1px dotted #CCCCCC; - margin:10px 0 0; - padding-bottom:40px; - padding-top:10px; -} -.blog_post p { - line-height: 1.4em; - padding-bottom:12px; -} -.blog_archives { - list-style: none; - margin-bottom:0; - padding-left:0; -} -/* blogs list view */ -.entity-listing.blog .entity-metadata { - min-width:400px; - text-align: right; -} +/* Blog Plugin */ -/* blogs edit/create form */ -form#blog_post_edit .submit-button { - margin-right:15px; -} /* force tinymce input height for a more useful editing / blog creation area */ -form#blog_post_edit #description_parent #description_ifr { +form#blog-post-edit #description_parent #description_ifr { height:400px !important; -} \ No newline at end of file +} diff --git a/mod/blog/views/default/blog/forms/edit.php b/mod/blog/views/default/blog/forms/edit.php index e9fb7d37f..8900fed25 100644 --- a/mod/blog/views/default/blog/forms/edit.php +++ b/mod/blog/views/default/blog/forms/edit.php @@ -205,7 +205,7 @@ $categories_input

- $save_status $saved + $save_status $saved

$guid_input @@ -217,7 +217,7 @@ $action_buttons ___END; echo elgg_view('input/form', array( - 'internalid' => 'blog_post_edit', + 'internalid' => 'blog-post-edit', 'internalname' => 'blog_post', 'action' => "action/blog/save", 'body' => $form_body @@ -244,10 +244,12 @@ elgg_clear_sticky_form('blog'); var d = new Date(); var mins = d.getMinutes() + ''; - if (mins.length == 1) mins = '0' + mins; - $(".blog_save_status_time").html(d.toLocaleDateString() + " @ " + d.getHours() + ":" + mins); + if (mins.length == 1) { + mins = '0' + mins; + } + $(".blog-save-status-time").html(d.toLocaleDateString() + " @ " + d.getHours() + ":" + mins); } else { - $(".blog_save_status_time").html(""); + $(".blog-save-status-time").html(""); } } diff --git a/mod/blog/views/default/blog/sidebar_menu.php b/mod/blog/views/default/blog/sidebar_menu.php index 10798d7a4..0be818c5a 100644 --- a/mod/blog/views/default/blog/sidebar_menu.php +++ b/mod/blog/views/default/blog/sidebar_menu.php @@ -40,14 +40,14 @@ if ($page_owner && $vars['page'] != 'friends') { if ($dates) { $title = elgg_echo('blog:archives'); - $content = '