From 65b53458f584d3a4f6441f6c4ee353bccbd69ae2 Mon Sep 17 00:00:00 2001 From: brettp Date: Mon, 26 Apr 2010 17:36:33 +0000 Subject: Bookmarks work with groups and use new style content header filter. git-svn-id: http://code.elgg.org/elgg/trunk@5878 36083f99-b078-4883-b0ff-0f9b5a30f544 --- mod/bookmarks/add.php | 58 -------------- mod/bookmarks/all.php | 37 --------- mod/bookmarks/friends.php | 34 -------- mod/bookmarks/index.php | 60 -------------- mod/bookmarks/start.php | 199 ++++++++++++++++++++++++++++++++-------------- 5 files changed, 140 insertions(+), 248 deletions(-) delete mode 100644 mod/bookmarks/add.php delete mode 100644 mod/bookmarks/all.php delete mode 100644 mod/bookmarks/friends.php delete mode 100644 mod/bookmarks/index.php diff --git a/mod/bookmarks/add.php b/mod/bookmarks/add.php deleted file mode 100644 index 7fe6e8956..000000000 --- a/mod/bookmarks/add.php +++ /dev/null @@ -1,58 +0,0 @@ - - * @copyright Curverider Ltd 2008-2010 - * @link http://elgg.org/ - */ - -global $CONFIG; - -// Start engine -require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php"); - -// You need to be logged in for this one -gatekeeper(); - -// Get the current page's owner -$page_owner = page_owner_entity(); -if ($page_owner === false || is_null($page_owner)) { - $page_owner = $_SESSION['user']; - set_page_owner($page_owner->getGUID()); -} -if ($page_owner instanceof ElggGroup) - $container = $page_owner->guid; - -//set up breadcrumbs -elgg_push_breadcrumb(elgg_echo('bookmarks:all'), $CONFIG->wwwroot."mod/bookmarks/all.php"); -elgg_push_breadcrumb(elgg_echo("bookmarks:add")); - -$area1 .= elgg_view('navigation/breadcrumbs'); - -// get the filter menu -$area1 .= elgg_view('page_elements/content_header', array('context' => "action", 'type' => 'bookmarks')); - -// If we've been given a bookmark to edit, grab it -if ($this_guid = get_input('bookmark',0)) { - $entity = get_entity($this_guid); - if ($entity->canEdit()) { - $area2 .= elgg_view('bookmarks/form',array('entity' => $entity, 'container_guid' => $container)); - } -} else { - $area2 .= elgg_view('bookmarks/form', array('container_guid' => $container)); -} - -$area3 = elgg_view('bookmarks/ownerblock'); -// include a view for plugins to extend -$area3 .= elgg_view("bookmarks/sidebar", array("object_type" => 'bookmarks')); -// if logged in, get the bookmarklet -$area3 .= elgg_view("bookmarks/bookmarklet"); - -// Format page -$body = elgg_view_layout('one_column_with_sidebar', $area1.$area2, $area3); - -// Draw it -echo page_draw(elgg_echo('bookmarks:add'),$body); \ No newline at end of file diff --git a/mod/bookmarks/all.php b/mod/bookmarks/all.php deleted file mode 100644 index 87dd5f852..000000000 --- a/mod/bookmarks/all.php +++ /dev/null @@ -1,37 +0,0 @@ - - * @copyright Curverider Ltd 2008-2010 - * @link http://elgg.org/ - */ - -// Start engine -require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php"); - -// get the filter menu -$area1 = elgg_view('page_elements/content_header', array('context' => "everyone", 'type' => 'bookmarks')); - -// List bookmarks -set_context('search'); -$area2 .= elgg_list_entities(array('type' => 'object', 'subtype' => 'bookmarks')); -set_context('bookmarks'); - -// include a view for plugins to extend -$area3 = elgg_view("bookmarks/sidebar", array("object_type" => 'bookmarks')); - -// if logged in, get the bookmarklet -if(isloggedin()){ - $area3 .= elgg_view("bookmarks/bookmarklet"); -} -// include statistics -$count = elgg_get_entities(array('type' => 'object', 'subtype' => 'bookmarks', 'count' => true)); -$area3 .= elgg_view("bookmarks/stats", array('count' => $count)); -// Format page -$body = elgg_view_layout('one_column_with_sidebar', $area1.$area2, $area3); - -// Draw it -echo page_draw(elgg_echo('bookmarks:all'),$body); \ No newline at end of file diff --git a/mod/bookmarks/friends.php b/mod/bookmarks/friends.php deleted file mode 100644 index 158108553..000000000 --- a/mod/bookmarks/friends.php +++ /dev/null @@ -1,34 +0,0 @@ - - * @copyright Curverider Ltd 2008-2010 - * @link http://elgg.org/ - */ - -// Start engine -require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php"); - -// get the filter menu -$area1 = elgg_view("page_elements/content_header", array('context' => "friends", 'type' => 'bookmarks')); - -// List bookmarks -set_context('search'); -$area2 .= list_user_friends_objects(page_owner(),'bookmarks',10,false,false); -set_context('bookmarks'); - -// include a view for plugins to extend -$area3 = elgg_view("bookmarks/sidebar", array("object_type" => 'bookmarks')); - -// if logged in, get the bookmarklet -if(isloggedin()){ - $area3 .= elgg_view("bookmarks/bookmarklet"); -} -// Format page -$body = elgg_view_layout('one_column_with_sidebar', $area1.$area2, $area3); - -// Draw it -echo page_draw(elgg_echo('bookmarks:friends'),$body); \ No newline at end of file diff --git a/mod/bookmarks/index.php b/mod/bookmarks/index.php deleted file mode 100644 index 21166f7a9..000000000 --- a/mod/bookmarks/index.php +++ /dev/null @@ -1,60 +0,0 @@ - - * @copyright Curverider Ltd 2008-2010 - * @link http://elgg.org/ - */ - -global $CONFIG; - -// Start engine -require_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php"); - -// access check for closed groups -group_gatekeeper(); - -$page_owner = page_owner_entity(); -if ($page_owner === false || is_null($page_owner)) { - $page_owner = $_SESSION['user']; - set_page_owner($page_owner->getGUID()); -} - -elgg_push_breadcrumb(elgg_echo('bookmarks:all'), $CONFIG->wwwroot."mod/bookmarks/all.php"); -elgg_push_breadcrumb(sprintf(elgg_echo("bookmarks:user"),$page_owner->name)); - -//set bookmarks header -if(page_owner() == get_loggedin_userid()) { - $area1 .= elgg_view('page_elements/content_header', array('context' => "mine", 'type' => 'bookmarks')); -} else { - $area1 .= elgg_view('navigation/breadcrumbs'); - $area1 .= elgg_view('page_elements/content_header_member', array('type' => 'bookmarks')); -} - -// List bookmarks -set_context('search'); -$bookmarks = elgg_list_entities(array('type' => 'object', 'subtype' => 'bookmarks', 'owner_guid' => page_owner())); -if(!$bookmarks && ($page_owner->guid == get_loggedin_user()->guid)) - $bookmarks = elgg_view('help/bookmarks'); -$area2 .= $bookmarks; -set_context('bookmarks'); - -//if the logged in user is not looking at their stuff, display the ownerblock -if(page_owner() != get_loggedin_user()->guid){ - $area3 = elgg_view('bookmarks/ownerblock'); -} -// include a view for plugins to extend -$area3 .= elgg_view("bookmarks/sidebar", array("object_type" => 'bookmarks')); - -if(isloggedin()){ - // if logged in, get the bookmarklet - $area3 .= elgg_view("bookmarks/bookmarklet"); -} -// Format page -$body = elgg_view_layout('one_column_with_sidebar', $area1.$area2, $area3); - -// Draw it -echo page_draw(sprintf(elgg_echo("bookmarks:user"),page_owner_entity()->name), $body); \ No newline at end of file diff --git a/mod/bookmarks/start.php b/mod/bookmarks/start.php index c37899034..ec1fb1c3a 100644 --- a/mod/bookmarks/start.php +++ b/mod/bookmarks/start.php @@ -15,7 +15,7 @@ function bookmarks_init() { global $CONFIG; //add a tools menu option - add_menu(elgg_echo('bookmarks'), $CONFIG->wwwroot . 'mod/bookmarks/all.php'); + add_menu(elgg_echo('bookmarks'), $CONFIG->wwwroot . 'pg/bookmarks'); // Register a page handler, so we can have nice URLs register_page_handler('bookmarks', 'bookmarks_page_handler'); @@ -42,10 +42,9 @@ function bookmarks_init() { // Add group menu option add_group_tool_option('bookmarks',elgg_echo('bookmarks:enablebookmarks'),true); - - // Extend Groups profile page - elgg_extend_view('groups/tool_latest','bookmarks/group_bookmarks'); + // Extend Groups profile page + elgg_extend_view('groups/tool_latest','bookmarks/group_bookmarks'); } /** @@ -55,88 +54,170 @@ function bookmarks_init() { function bookmarks_pagesetup() { global $CONFIG; - // Set up menu for logged in users - // add submenu options - @todo partially removed - now provided by drop-down menu filter in content area - if (get_context() == "bookmarks") { -/* - if (isloggedin()) { - if (page_owner()) { - $page_owner = page_owner_entity(); - add_submenu_item(elgg_echo('bookmarks:read'),$CONFIG->wwwroot."pg/bookmarks/" . $page_owner->username . "/items"); - } - if(!$page_owner instanceof ElggGroup) - add_submenu_item(elgg_echo('bookmarks:friends'),$CONFIG->wwwroot."pg/bookmarks/" . $_SESSION['user']->username . "/friends"); - } - - if(!$page_owner instanceof ElggGroup) - add_submenu_item(elgg_echo('bookmarks:everyone'),$CONFIG->wwwroot."mod/bookmarks/everyone.php"); -*/ - - // Bookmarklet - if ((isloggedin()) && (page_owner()) && (can_write_to_container(0, page_owner()))) { - $page_owner = page_owner_entity(); - $bmtext = elgg_echo('bookmarks:bookmarklet'); - if ($page_owner instanceof ElggGroup) - $bmtext = elgg_echo('bookmarks:bookmarklet:group'); - // add_submenu_item($bmtext, $CONFIG->wwwroot . "pg/bookmarks/{$page_owner->username}/bookmarklet"); - } - } - - $page_owner = page_owner_entity(); + $page_owner = page_owner_entity(); + // Add group bookmark menu item + if (isloggedin()) { if ($page_owner instanceof ElggGroup && get_context() == 'groups') { - if($page_owner->bookmarks_enable != "no"){ - add_submenu_item(sprintf(elgg_echo("bookmarks:group"),$page_owner->name), $CONFIG->wwwroot . "pg/bookmarks/" . $page_owner->username . '/items'); + if ($page_owner->bookmarks_enable != "no") { + add_submenu_item(sprintf(elgg_echo("bookmarks:group"),$page_owner->name), $CONFIG->wwwroot . "pg/bookmarks/" . $page_owner->username . '/items'); + } } } } /** - * Bookmarks page handler; allows the use of fancy URLs + * Bookmarks page handler + * Expects URLs like: + * pg/bookmarks/username/[friends||items||add||edit||bookmarklet] + * * * @param array $page From the page_handler function * @return true|false Depending on success */ function bookmarks_page_handler($page) { + global $CONFIG; // The first component of a bookmarks URL is the username + // If the username is set_input()'d and has group:NN in it, magic happens + // and the page_owner_entity() is the group. if (isset($page[0])) { - set_input('username',$page[0]); + $owner_name = $page[0]; + set_input('username', $owner_name); + + // grab the page owner here so the group magic works. + $owner = page_owner_entity(); } - // The second part dictates what we're doing - if (isset($page[1])) { - switch($page[1]) { - case "friends": - include(dirname(__FILE__) . "/friends.php"); - return true; + // owner name passed but invalid. + if ($owner_name && !$owner) { + $sidebar = elgg_view('bookmarks/sidebar', array('object_type' => 'bookmarks')); + $content = elgg_echo("bookmarks:unknown_user"); + + $body = elgg_view_layout('one_column_with_sidebar', $content, $sidebar); + echo page_draw(sprintf(elgg_echo("bookmarks:user"), page_owner_entity()->name), $body); + + return FALSE; + } + + $logged_in_user = get_loggedin_user(); + $section = (isset($page[1])) ? $page[1] : $section = 'items'; + + elgg_push_breadcrumb(elgg_echo('bookmarks:all'), $CONFIG->wwwroot . 'pg/bookmarks/'); + + if ($owner) { + switch($section) { + case 'friends': + elgg_push_breadcrumb(sprintf(elgg_echo('bookmarks:friends'), $owner->name)); + + $content = list_user_friends_objects($owner->getGUID(), 'bookmarks', 10, false, false); + $context = ($owner == $logged_in_user) ? 'friends' : ''; break; - case "items": - include(dirname(__FILE__) . "/index.php"); - return true; + + default: + case 'items': + elgg_push_breadcrumb(sprintf(elgg_echo('bookmarks:user'), $owner->name)); + + group_gatekeeper(); + $options = array( + 'type' => 'object', + 'subtype' => 'bookmarks' + ); + + if ($owner instanceof ElggGroup) { + $options['container_guid'] = $owner->getGUID(); + } else { + $options['owner_guid'] = $owner->getGUID(); + } + + $content = elgg_list_entities($options); + + if (!$content && ($owner == $logged_in_user)) { + $content = elgg_view('help/bookmarks'); + } + + $context = ($owner == $logged_in_user) ? 'mine' : ''; break; - case "add": - include(dirname(__FILE__) . "/add.php"); - return true; + + case 'add': + gatekeeper(); + elgg_push_breadcrumb(elgg_echo('bookmarks:add')); + + $vars = array(); + if ($owner instanceof ElggGroup) { + $vars['container_guid'] = $owner->getGUID(); + } + + $context = 'action'; + $content = elgg_view('bookmarks/form', $vars); break; - case "edit": - set_input('bookmark',$page[2]); - include(dirname(__FILE__) . "/add.php"); - return true; + + case 'edit': + gatekeeper(); + + elgg_push_breadcrumb(elgg_echo('bookmarks:edit')); + + $vars = array(); + // this will never be the case. + if ($owner instanceof ElggGroup) { + $vars['container_guid'] = $owner->getGUID(); + } + + $bookmark = (isset($page[2])) ? get_entity($page[2]) : FALSE; + + if ($bookmark && elgg_instanceof($bookmark, 'object', 'bookmarks') && $bookmark->canEdit()) { + $vars['entity'] = $bookmark; + $content = elgg_view('bookmarks/form', $vars); + } else { + $content = elgg_echo('bookmarks:cannot_find_bookmark'); + } + break; - case "bookmarklet": - include(dirname(__FILE__) . "/bookmarklet.php"); - return true; + + // I don't think this is used. + case 'bookmarklet': + gatekeeper(); + + $content = elgg_view_title(elgg_echo('bookmarks:bookmarklet')); + $content .= elgg_view('bookmarks/bookmarklet', array('pg_owner' => $owner)); + break; } - // If the URL is just 'bookmarks/username', or just 'bookmarks/', load the standard bookmarks index + } else { - include(dirname(__FILE__) . "/index.php"); - return true; + // no owner name passed, show everything. + $content = elgg_list_entities(array('type' => 'object', 'subtype' => 'bookmarks')); + $context = 'everyone'; } - return false; + // sidebar + if ($logged_in_user != $owner) { + $area3 = elgg_view('bookmarks/ownerblock'); + } + + $sidebar = elgg_view('bookmarks/sidebar', array('object_type' => 'bookmarks')); + + if (isloggedin()){ + $sidebar .= elgg_view('bookmarks/bookmarklet'); + } + + // main content + if ($owner != $logged_in_user || $context == 'action') { + $header = elgg_view('navigation/breadcrumbs'); + } + + $header .= elgg_view("page_elements/content_header", array( + 'context' => $context, + 'type' => 'bookmarks', + 'all_link' => "{$CONFIG->url}pg/bookmarks/", + 'new_link' => "{$CONFIG->url}pg/bookmarks/{$owner_name}/add" + )); + + $content = $header . $content; + $body = elgg_view_layout('one_column_with_sidebar', $content, $sidebar); + echo page_draw(sprintf(elgg_echo("bookmarks:user"), page_owner_entity()->name), $body); + return TRUE; } /** -- cgit v1.2.3