diff options
Diffstat (limited to 'mod/blog/start.php')
| -rw-r--r-- | mod/blog/start.php | 116 |
1 files changed, 88 insertions, 28 deletions
diff --git a/mod/blog/start.php b/mod/blog/start.php index 7d42e80b9..e724b91c2 100644 --- a/mod/blog/start.php +++ b/mod/blog/start.php @@ -18,7 +18,7 @@ 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 @@ -32,6 +32,7 @@ function blog_init() { // 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 @@ -40,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 @@ -59,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'; @@ -85,47 +86,59 @@ function blog_init() { * New post: blog/add/<guid> * Edit post: blog/edit/<guid>/<revision> * Preview post: blog/preview/<guid> - * Group blog: blog/group/<guid>/owner + * 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'), "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]); @@ -135,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; } /** @@ -178,7 +204,7 @@ function blog_owner_block_menu($hook, $type, $return, $params) { $return[] = $item; } else { if ($params['entity']->blog_enable != "no") { - $url = "blog/group/{$params['entity']->guid}/owner"; + $url = "blog/group/{$params['entity']->guid}/all"; $item = new ElggMenuItem('blog', elgg_echo('blog:group'), $url); $return[] = $item; } @@ -201,7 +227,14 @@ 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', @@ -216,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) { @@ -225,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'); } } |
