diff options
Diffstat (limited to 'mod/blog')
-rw-r--r-- | mod/blog/actions/blog/delete.php | 2 | ||||
-rw-r--r-- | mod/blog/actions/blog/save.php | 4 | ||||
-rw-r--r-- | mod/blog/languages/en.php | 3 | ||||
-rw-r--r-- | mod/blog/lib/blog.php | 123 | ||||
-rw-r--r-- | mod/blog/start.php | 103 | ||||
-rw-r--r-- | mod/blog/views/default/blog/css.php | 36 | ||||
-rw-r--r-- | mod/blog/views/default/blog/forms/edit.php | 12 | ||||
-rw-r--r-- | mod/blog/views/default/blog/sidebar_menu.php | 4 | ||||
-rw-r--r-- | mod/blog/views/default/blog/sidebar_revisions.php | 6 | ||||
-rw-r--r-- | mod/blog/views/default/object/blog.php | 4 |
10 files changed, 167 insertions, 130 deletions
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; @@ -161,6 +179,40 @@ function blog_page_handler($page) { } /** + * 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. * * @param ElggObject $entity @@ -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 <div class="divider"></div> <p class="margin-none margin-top entity-subtext"> - $save_status <span class="blog_save_status_time">$saved</span> + $save_status <span class="blog-save-status-time">$saved</span> </p> $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("<?php echo elgg_echo('error'); ?>"); + $(".blog-save-status-time").html("<?php echo elgg_echo('error'); ?>"); } } 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 = '<ul class="blog_archives">'; + $content = '<ul class="blog-archives">'; foreach($dates as $date) { $date = $date->yearmonth; $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/' . $page_owner->username . '/archive/' . $timestamplow . '/' . $timestamphigh; + $link = elgg_get_site_url() . 'pg/blog/archive/' . $page_owner->username . '/' . $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 fc5170ddc..ca0a642f2 100644 --- a/mod/blog/views/default/blog/sidebar_revisions.php +++ b/mod/blog/views/default/blog/sidebar_revisions.php @@ -31,9 +31,9 @@ if (elgg_instanceof($blog, 'object', 'blog') && $blog->canEdit()) { $title = elgg_echo('blog:revisions'); $n = count($revisions); - $body = '<ul class="blog_revisions">'; + $body = '<ul class="blog-revisions">'; - $load_base_url = "pg/blog/{$owner->username}/edit/{$blog->getGUID()}/"; + $load_base_url = "pg/blog/edit/{$owner->username}/{$blog->getGUID()}/"; // show the "published revision" if ($blog->status == 'published') { @@ -63,7 +63,7 @@ if (elgg_instanceof($blog, 'object', 'blog') && $blog->canEdit()) { )); $text = "$load: $time"; - $class = 'class="auto_saved"'; + $class = 'class="auto-saved"'; $n--; diff --git a/mod/blog/views/default/object/blog.php b/mod/blog/views/default/object/blog.php index 0638c2fc4..7e6be0b21 100644 --- a/mod/blog/views/default/object/blog.php +++ b/mod/blog/views/default/object/blog.php @@ -20,7 +20,7 @@ $excerpt = $blog->excerpt; $body = autop($blog->description); $owner_icon = elgg_view('profile/icon', array('entity' => $owner, 'size' => 'tiny')); -$owner_blog_link = "<a href=\"" . elgg_get_site_url() . "pg/blog/$owner->username\">{$owner->name}</a>"; +$owner_blog_link = "<a href=\"" . elgg_get_site_url() . "pg/blog/owner/$owner->username\">{$owner->name}</a>"; $author_text = elgg_echo('blog:author_by_line', array($owner_blog_link)); if ($blog->tags) { $tags = "<p class=\"elgg-tags\">" . elgg_view('output/tags', array('tags' => $blog->tags)) . "</p>"; @@ -48,7 +48,7 @@ $edit = elgg_view('output/access', array('entity' => $vars['entity'])); // links to delete or edit. if ($blog->canEdit()) { - $edit_url = elgg_get_site_url()."pg/blog/{$owner->username}/edit/{$blog->getGUID()}/"; + $edit_url = elgg_get_site_url()."pg/blog/edit/{$owner->username}/{$blog->getGUID()}/"; $edit_link = "<span class='entity-edit'><a href=\"$edit_url\">" . elgg_echo('edit') . '</a></span>'; $delete_url = "action/blog/delete?guid={$blog->getGUID()}"; |