From: brettp Date: Thu, 11 Mar 2010 18:07:26 +0000 (+0000) Subject: Added breadcrumb support and updated the mods with old-style breadcrumbs. X-Git-Url: https://gitweb.fluxo.info/?a=commitdiff_plain;h=bdacb612f3fffa967ef6fda89c081fb7a59894d2;p=lorea%2Felgg.git Added breadcrumb support and updated the mods with old-style breadcrumbs. git-svn-id: http://code.elgg.org/elgg/trunk@5366 36083f99-b078-4883-b0ff-0f9b5a30f544 --- diff --git a/CHANGES.txt b/CHANGES.txt index 8e0af58b3..d4f5507dc 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -2,7 +2,11 @@ Version 1.8.0 (??? from http://code.elgg.org/branches/1.8/) API changes: - * added elgg_instanceof(). + * Added elgg_instanceof(). + + UI/UX + * Added elgg_push_breadcrumb(), elgg_pop_breadcrumb(), and elgg_get_breadcrumbs(). + * Added navigation/breadcrumbs. diff --git a/engine/lib/elgglib.php b/engine/lib/elgglib.php index 42d6ffc6f..fd270bc1d 100644 --- a/engine/lib/elgglib.php +++ b/engine/lib/elgglib.php @@ -2661,6 +2661,54 @@ function elgg_http_add_url_query_elements($url, array $elements) { return $string; } + +/** + * Breadcrumb support. + */ + +/** + * Adds a breadcrumb to the stack + * + * @param string $title The title to display + * @param string $link Optional. The link for the title. + */ +function elgg_push_breadcrumb($title, $link = NULL) { + global $CONFIG; + if (!is_array($CONFIG->breadcrumbs)) { + $CONFIG->breadcrumbs = array(); + } + + // avoid key collisions. + $CONFIG->breadcrumbs[] = array('title' => $title, 'link' => $link); +} + +/** + * Removes last breadcrumb entry. + * + * @return array popped item. + */ +function elgg_pop_breadcrumb() { + global $CONFIG; + + if (is_array($CONFIG->breadcrumbs)) { + array_pop($CONFIG->breadcrumbs); + } + + return FALSE; +} + +/** + * Returns all breadcrumbs + * + * @return array Breadcrumbs + */ +function elgg_get_breadcrumbs() { + global $CONFIG; + + return (is_array($CONFIG->breadcrumbs)) ? $CONFIG->breadcrumbs : array(); +} + + /** * Returns the PHP INI setting in bytes * diff --git a/mod/bookmarks/add.php b/mod/bookmarks/add.php index 6f4ca7889..e5bc67a1a 100644 --- a/mod/bookmarks/add.php +++ b/mod/bookmarks/add.php @@ -1,7 +1,7 @@ @@ -13,10 +13,10 @@ 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)) { @@ -25,17 +25,16 @@ if ($page_owner === false || is_null($page_owner)) { } if ($page_owner instanceof ElggGroup) $container = $page_owner->guid; - + //set up breadcrumbs -$area1 .= elgg_view('page_elements/breadcrumbs', array( - 'breadcrumb_root_url' => $CONFIG->wwwroot."mod/bookmarks/all.php", - 'breadcrumb_root_text' => elgg_echo('bookmarks:all'), - 'breadcrumb_currentpage' => elgg_echo("bookmarks:add") - )); - +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); @@ -48,12 +47,12 @@ if ($this_guid = get_input('bookmark',0)) { $area3 = elgg_view('bookmarks/ownerblock'); // if logged in, get the bookmarklet -$area3 .= elgg_view("bookmarks/bookmarklet"); +$area3 .= elgg_view("bookmarks/bookmarklet"); //include a view for plugins to extend -$area3 .= elgg_view("bookmarks/sidebar_options", array("object_type" => 'bookmarks')); - +$area3 .= elgg_view("bookmarks/sidebar_options", array("object_type" => 'bookmarks')); + // 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/index.php b/mod/bookmarks/index.php index baff805bf..55f854121 100644 --- a/mod/bookmarks/index.php +++ b/mod/bookmarks/index.php @@ -1,7 +1,7 @@ @@ -19,20 +19,18 @@ 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_user()->guid){ +if(page_owner() == get_loggedin_userid()) { $area1 .= elgg_view('page_elements/content_header', array('context' => "own", 'type' => 'bookmarks')); -}else{ - $area1 .= elgg_view('page_elements/breadcrumbs', array( - 'breadcrumb_root_url' => $CONFIG->wwwroot."mod/bookmarks/all.php", - 'breadcrumb_root_text' => elgg_echo('bookmarks:all'), - 'breadcrumb_currentpage' => sprintf(elgg_echo("bookmarks:user"),$page_owner->name) - )); - +} else { + $area1 .= elgg_view('navigation/breadcrumbs'); $area1 .= elgg_view('page_elements/content_header_member', array('type' => 'bookmarks')); } - + // List bookmarks set_context('search'); $bookmarks = list_entities('object','bookmarks',page_owner()); @@ -44,16 +42,16 @@ 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'); -}else{ +}else{ if(isloggedin()){ // if logged in, get the bookmarklet $area3 .= elgg_view("bookmarks/bookmarklet"); - } + } } //include a view for plugins to extend -$area3 .= elgg_view("bookmarks/sidebar_options", array("object_type" => 'bookmarks')); +$area3 .= elgg_view("bookmarks/sidebar_options", array("object_type" => 'bookmarks')); // 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/groups/forum.php b/mod/groups/forum.php index 12c84adb5..f59c3ed30 100644 --- a/mod/groups/forum.php +++ b/mod/groups/forum.php @@ -1,7 +1,7 @@ '', - 'breadcrumb_root_text' => 'Parent Group Name', - 'breadcrumb_currentpage' => elgg_echo('item:object:groupforumtopic') - )); - - + set_context('search'); + + // set up breadcrumbs + elgg_push_breadcrumb('Parent Group Name'); + elgg_push_breadcrumb(elgg_echo('item:object:groupforumtopic')); + $area1 .= elgg_view("forum/topics", array('topics' => $topics)); set_context('groups'); - + $body = elgg_view_layout('one_column_with_sidebar', $area1); - + $title = elgg_echo('item:object:groupforumtopic'); - + // Finally draw the page page_draw($title, $body); diff --git a/mod/groups/views/default/forms/forums/addtopic.php b/mod/groups/views/default/forms/forums/addtopic.php index 37075aa6d..e3bc3e1c6 100644 --- a/mod/groups/views/default/forms/forums/addtopic.php +++ b/mod/groups/views/default/forms/forums/addtopic.php @@ -1,13 +1,13 @@ * @copyright Curverider Ltd 2008-2010 * @link http://elgg.com/ - * + * * @uses $vars['object'] Optionally, the topic to edit */ @@ -20,22 +20,20 @@ $message_id = ""; $status = ""; $access_id = ACCESS_DEFAULT; - - // get the group guid - $group_guid = (int) get_input('group_guid'); - - // set breadcrumbs - echo elgg_view('page_elements/breadcrumbs', array( - 'breadcrumb_root_url' => '', - 'breadcrumb_root_text' => 'Parent Group Name', - 'breadcrumb_level1_url' => '#', - 'breadcrumb_level1_text' => elgg_echo('item:object:groupforumtopic'), - 'breadcrumb_currentpage' => elgg_echo("groups:addtopic") - )); - + + // get the group guid + $group_guid = (int) get_input('group_guid'); + + // set breadcrumbs + elgg_push_breadcrumb('', 'Parent Group Name'); + elgg_push_breadcrumb(elgg_echo('item:object:groupforumtopic'), ''); + elgg_push_breadcrumb(elgg_echo("groups:addtopic")); + + echo elgg_view('navigation/breadcrumbs'); + // set the title echo elgg_view_title(elgg_echo("groups:addtopic")); - + ?>
@@ -44,7 +42,7 @@

- +

- +

- +

- +

- +

- +

diff --git a/mod/groups/views/default/forum/viewposts.php b/mod/groups/views/default/forum/viewposts.php index efb7e595c..02ed06b62 100644 --- a/mod/groups/views/default/forum/viewposts.php +++ b/mod/groups/views/default/forum/viewposts.php @@ -1,8 +1,8 @@ + elgg_push_breadcrumb('', 'Parent Group Name'); + elgg_push_breadcrumb(elgg_echo('item:object:groupforumtopic'), ''); + elgg_push_breadcrumb($vars['entity']->title); - '', - 'breadcrumb_root_text' => 'Parent Group Name', - 'breadcrumb_level1_url' => '#', - 'breadcrumb_level1_text' => elgg_echo('item:object:groupforumtopic'), - 'breadcrumb_currentpage' => $vars['entity']->title - )); + echo elgg_view('navigation/breadcrumbs'); - + //display follow up comments + $count = $vars['entity']->countAnnotations('group_topic_post'); + $offset = (int) get_input('offset',0); - //display follow up comments - $count = $vars['entity']->countAnnotations('group_topic_post'); - $offset = (int) get_input('offset',0); - - $baseurl = $vars['url'] . "mod/groups/topicposts.php?topic={$vars['entity']->guid}&group_guid={$vars['entity']->container_guid}"; - echo elgg_view('navigation/pagination',array( - 'limit' => 50, - 'offset' => $offset, - 'baseurl' => $baseurl, - 'count' => $count, - )); + $baseurl = $vars['url'] . "mod/groups/topicposts.php?topic={$vars['entity']->guid}&group_guid={$vars['entity']->container_guid}"; + echo elgg_view('navigation/pagination',array( + 'limit' => 50, + 'offset' => $offset, + 'baseurl' => $baseurl, + 'count' => $count, + )); ?>

title; ?>

getAnnotations('group_topic_post', 50, $offset, "asc") as $post) { - - echo elgg_view("forum/topicposts",array('entity' => $post)); - + + foreach($vars['entity']->getAnnotations('group_topic_post', 50, $offset, "asc") as $post) { + + echo elgg_view("forum/topicposts",array('entity' => $post)); + } - + // check to find out the status of the topic and act - if($vars['entity']->status != "closed" && page_owner_entity()->isMember($vars['user'])){ - - //display the add comment form, this will appear after all the existing comments - echo elgg_view("forms/forums/addpost", array('entity' => $vars['entity'])); - - } elseif($vars['entity']->status == "closed") { - - //this topic has been closed by the owner - echo "

" . elgg_echo("groups:topicisclosed") . "

"; - echo "

" . elgg_echo("groups:topiccloseddesc") . "

"; - - } else { - } + if($vars['entity']->status != "closed" && page_owner_entity()->isMember($vars['user'])){ + + //display the add comment form, this will appear after all the existing comments + echo elgg_view("forms/forums/addpost", array('entity' => $vars['entity'])); + + } elseif($vars['entity']->status == "closed") { + + //this topic has been closed by the owner + echo "

" . elgg_echo("groups:topicisclosed") . "

"; + echo "

" . elgg_echo("groups:topiccloseddesc") . "

"; + + } else { + } ?> diff --git a/mod/messages/views/default/messages/messages.php b/mod/messages/views/default/messages/messages.php index 5c2630ad6..29178bf6d 100644 --- a/mod/messages/views/default/messages/messages.php +++ b/mod/messages/views/default/messages/messages.php @@ -17,15 +17,15 @@ if(get_input("type") == "sent"){ // send back to the users sentbox $url = $vars['url'] . "mod/messages/sent.php"; - // set up breadcrumbs context - $breadcrumb_root_text = elgg_echo('messages:sent'); + // set up breadcrumbs context + elgg_push_breadcrumb(elgg_echo('messages:sent'), $url); //this is used on the delete link so we know which type of message it is $type = "sent"; } else { //send back to the users inbox $url = $vars['url'] . "pg/messages/" . $vars['user']->username; - // set up breadcrumbs context - $breadcrumb_root_text = elgg_echo('messages:inbox'); + // set up breadcrumbs context + elgg_push_breadcrumb(elgg_echo('messages:inbox'), $url); //this is used on the delete link so we know which type of message it is $type = "inbox"; } @@ -41,11 +41,8 @@ if (isloggedin()) if ($vars['entity']->toId == $vars['user']->guid || $vars['entity']->owner_guid == $vars['user']->guid) { // display breadcrumbs - echo elgg_view('page_elements/breadcrumbs', array( - 'breadcrumb_root_url' => $url, - 'breadcrumb_root_text' => $breadcrumb_root_text, - 'breadcrumb_currentpage' => $vars['entity']->title - )); + elgg_push_breadcrumb($vars['entity']->title); + echo elgg_view('navigation/breadcrumbs'); ?>
@@ -57,45 +54,45 @@ if (isloggedin()) 'text' => elgg_echo('delete'), 'confirm' => elgg_echo('deleteconfirm'), 'class' => "action_button disabled" - )); + )); ?>
- -
- toId); - $message_icon = elgg_view("profile/icon",array('entity' => $user_object, 'size' => 'tiny')); - $message_owner = elgg_echo('messages:to').": username."'>".$user_object->name.""; - }else{ - $user_object = get_entity($vars['entity']->fromId); - $message_icon = elgg_view("profile/icon",array('entity' => $user_object, 'size' => 'tiny')); - $message_owner = elgg_echo('messages:from').": username."'>".get_entity($vars['entity']->fromId)->name.""; - } - ?> -
-

+ +
+ toId); + $message_icon = elgg_view("profile/icon",array('entity' => $user_object, 'size' => 'tiny')); + $message_owner = elgg_echo('messages:to').": username."'>".$user_object->name.""; + }else{ + $user_object = get_entity($vars['entity']->fromId); + $message_icon = elgg_view("profile/icon",array('entity' => $user_object, 'size' => 'tiny')); + $message_owner = elgg_echo('messages:from').": username."'>".get_entity($vars['entity']->fromId)->name.""; + } + ?> +
+

time_created); ?>

-
- -
- (anyone?) - if($main_message = $vars['entity']->getEntitiesFromRelationship("reply")){ - echo $main_message[0][description]; - } - ?> +
+ +
+ (anyone?) + if($main_message = $vars['entity']->getEntitiesFromRelationship("reply")){ + echo $main_message[0][description]; + } + ?> $vars['entity']->description)); ?>
- + - + ?>
+ getGUID() . "' />"; diff --git a/views/default/navigation/breadcrumbs.php b/views/default/navigation/breadcrumbs.php new file mode 100644 index 000000000..1dc97f29c --- /dev/null +++ b/views/default/navigation/breadcrumbs.php @@ -0,0 +1,45 @@ + 'The title', 'link' => 'url') + * + */ + +if (isset($vars['breadcrumbs'])) { + $breadcrumbs = $vars['breadcrumbs']; +} else { + $breadcrumbs = elgg_get_breadcrumbs(); +} + +$formatted_breadcrumbs = array(); + +foreach ($breadcrumbs as $breadcrumb) { + $link = $breadcrumb['link']; + $title = $breadcrumb['title']; + + if (!empty($link)) { + $formatted_breadcrumbs[] = elgg_view('output/url', array( + 'href' => $link, + 'text' => $title + )); + } else { + $formatted_breadcrumbs[] = $title; + } +} + +$breadcrumbs_html = implode(' > ', $formatted_breadcrumbs); + +echo <<<___END + + + +___END; +?> \ No newline at end of file diff --git a/views/default/page_elements/breadcrumbs.php b/views/default/page_elements/breadcrumbs.php deleted file mode 100644 index 165a6c7dd..000000000 --- a/views/default/page_elements/breadcrumbs.php +++ /dev/null @@ -1,26 +0,0 @@ - - \ No newline at end of file diff --git a/views/default/page_elements/content_header.php b/views/default/page_elements/content_header.php index 9d7bea08a..95e754d59 100644 --- a/views/default/page_elements/content_header.php +++ b/views/default/page_elements/content_header.php @@ -1,44 +1,51 @@ "; @@ -47,10 +54,10 @@ if(isloggedin()) { $location_filter .= ""; $location_filter .= ""; $location_filter = "
".$location_filter."
"; - + // action buttons if(get_context() != 'bookmarks'){ - $url = $CONFIG->wwwroot . "pg/{$type}/". $page_owner->username . "/new/"; + $url = $CONFIG->wwwroot . "pg/{$type}/". $page_owner->username . "/new"; } else { $url = $CONFIG->wwwroot . "pg/{$type}/". $page_owner->username . "/add"; } @@ -61,7 +68,7 @@ if(isloggedin()) { // if we're on an action page - we'll just have a simple page title, and no filter menu $title = "
".elgg_view_title($title = elgg_echo($type . ':add'))."
"; } -} +} ?>