mirror of
https://github.com/moodle/moodle.git
synced 2025-06-03 22:55:39 +02:00
Breadcrumbs: Core functionality changes
- Added build_navigation function to create an XHTML breadcrumb list and to allow filtering of breadcrumbs to remove the activity from the trail. - modified print_navigation to print the output of build_navigation whilst maintaining backward compatibility with old style string breadcrumbs. Author: Matt Clarkson <mattc@catalyst.net.nz> Committer: Matt Clarkson <mattc@catalyst.net.nz>
This commit is contained in:
parent
77ac808e51
commit
ac4feb59af
@ -6925,5 +6925,78 @@ function setup_lang_from_browser() {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
/**
|
||||
* This function will build the navigation string to be used by print_header
|
||||
* and others
|
||||
* @uses $CFG
|
||||
* @uses $THEME
|
||||
* @param $extrabreadcrumbs - array of associative arrays, keys: name, link, type
|
||||
* @param $course - possibily the site course.
|
||||
* @return $navigation as an object so it can be differentiated from old style
|
||||
* navigation strings.
|
||||
*/
|
||||
function build_navigation($extrabreadcrumbs, $course = false) {
|
||||
global $CFG, $THEME;
|
||||
|
||||
$navigation = '';
|
||||
check_theme_arrows();
|
||||
|
||||
//Site name
|
||||
if ($site = get_site()) {
|
||||
$breadcrumbs[] = array('name' => format_string($site->shortname), 'link' => "$CFG->wwwroot/", 'type' => 'home');
|
||||
}
|
||||
|
||||
|
||||
if ($course) {
|
||||
if ($course->id != SITEID) {
|
||||
//Course
|
||||
$breadcrumbs[] = array('name' => format_string($course->shortname), 'link' => "$CFG->wwwroot/course/view.php?id=$course->id",'type' => 'course');
|
||||
}
|
||||
}
|
||||
|
||||
//Merge in extra bread crumbs
|
||||
$breadcrumbs = array_merge($breadcrumbs, $extrabreadcrumbs);
|
||||
|
||||
//Construct an unordered list from $breadcrumbs
|
||||
$navigation = "<ul>\n";
|
||||
$countcrumb = count($breadcrumbs);
|
||||
|
||||
for($i=0;$i<$countcrumb;$i++) {
|
||||
|
||||
// Check the link type to see if this link should appear in the trail
|
||||
if ($breadcrumbs[$i]['type'] == 'activity' && $i+1 < $countcrumb && ($CFG->hideactivitytypecrumb == 2 || ($CFG->hideactivitytypecrumb == 1 && !has_capability('moodle/course:manageactivities', get_context_instance(CONTEXT_COURSE, $course->id))))) {
|
||||
continue;
|
||||
}
|
||||
$navigation .= '<li class="first">';
|
||||
if ($i > 0) {
|
||||
$navigation .= '<span class="sep"> '.$THEME->rarrow.' </span>';
|
||||
}
|
||||
if ($breadcrumbs[$i]['link'] && $i+1 < $countcrumb) {
|
||||
$navigation .= "<a onclick=\"this.target='$CFG->framename'\" href=\"{$breadcrumbs[$i]['link']}\">";
|
||||
}
|
||||
$navigation .= "{$breadcrumbs[$i]['name']}";
|
||||
if ($breadcrumbs[$i]['link'] && $i+1 < $countcrumb) {
|
||||
$navigation .= "</a>";
|
||||
}
|
||||
|
||||
$navigation .= "</li>";
|
||||
}
|
||||
|
||||
$navigation .= "</ul>";
|
||||
|
||||
return(array('newnav' => true, 'breadcrumbs' => $navigation));
|
||||
|
||||
}
|
||||
|
||||
function is_newnav($navigation) {
|
||||
if (is_array($navigation) && $navigation['newnav']) {
|
||||
return(true);
|
||||
} else {
|
||||
return(false);
|
||||
}
|
||||
}
|
||||
|
||||
// vim:autoindent:expandtab:shiftwidth=4:tabstop=4:tw=140:
|
||||
?>
|
||||
|
@ -2127,12 +2127,15 @@ function print_header ($title='', $heading='', $navigation='', $focus='',
|
||||
/// Add the required JavaScript Libraries
|
||||
$meta .= "\n".require_js();
|
||||
|
||||
|
||||
if ($navigation == 'home') {
|
||||
$home = true;
|
||||
$navigation = '';
|
||||
} else {
|
||||
if(is_newnav($navigation)){
|
||||
$home = false;
|
||||
} else {
|
||||
if ($navigation == 'home') {
|
||||
$home = true;
|
||||
$navigation = '';
|
||||
} else {
|
||||
$home = false;
|
||||
}
|
||||
}
|
||||
|
||||
/// This is another ugly hack to make navigation elements available to print_footer later
|
||||
@ -2362,7 +2365,12 @@ function print_header_simple($title='', $heading='', $navigation='', $focus='',
|
||||
$shortname = '<a href="'.$CFG->wwwroot.'/course/view.php?id='. $COURSE->id .'">'. $COURSE->shortname .'</a> ->';
|
||||
}
|
||||
|
||||
$output = print_header($COURSE->shortname .': '. $title, $COURSE->fullname .' '. $heading, $shortname.' '. $navigation, $focus, $meta,
|
||||
// If old style nav prepend course short name otherwise leave $navigation object alone
|
||||
if (!is_newnav($navigation)) {
|
||||
$navigation = $shortname.' '.$navigation;
|
||||
}
|
||||
|
||||
$output = print_header($COURSE->shortname .': '. $title, $COURSE->fullname .' '. $heading, $navigation, $focus, $meta,
|
||||
$cache, $button, $menu, $usexml, $bodytags, true);
|
||||
|
||||
if ($return) {
|
||||
@ -2855,6 +2863,17 @@ function print_navigation ($navigation, $separator=0, $return=false) {
|
||||
}
|
||||
|
||||
if ($navigation) {
|
||||
|
||||
if (is_newnav($navigation)) {
|
||||
if ($return) {
|
||||
return($navigation['breadcrumbs']);
|
||||
} else {
|
||||
echo $navigation['breadcrumbs'];
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
debugging('Navigation needs to be updated to use build_navigation()', DEBUG_DEVELOPER);
|
||||
}
|
||||
|
||||
if (!is_array($navigation)) {
|
||||
$ar = explode('->', $navigation);
|
||||
|
Loading…
x
Reference in New Issue
Block a user