Skip to content

Instantly share code, notes, and snippets.

@jeremysimmons
Forked from alexisnomine/breadcrumbs.css
Last active January 4, 2017 20:42
Show Gist options
  • Save jeremysimmons/047d007c5a865260667a58ff42b17a04 to your computer and use it in GitHub Desktop.
Save jeremysimmons/047d007c5a865260667a58ff42b17a04 to your computer and use it in GitHub Desktop.
Breadcrumb when navigating folders in a Sharepoint 2010 Document Library WebPart.(Pure JS, No jQuery, IE8+) Can be inserted via a "HTML Content Editor Web Part" or referenced in a custom masterpage.
.ms-WPHeader .breadcrumbs{
display:block;
font-style:italic;
}
.ms-WPHeader .breadcrumbs,.ms-WPHeader .breadcrumbs a{
font-size: 0.8em;
color:#D1D1D1;
}
/*
* Adds a breadcrumb to "Document Library" Web Parts
* Copyright 29/11/2013 - Alexis Nominé - MIT Licence
*/
_spBodyOnLoadFunctionNames.push("doBreadCrumbs");//execute after DOM loaded
function doBreadCrumbs(){
// Get 'RootFolder' value in URL
var rootStr = getUrlParam('RootFolder');
if (rootStr != '') {
// Get all links in WebParts titles (IE8+)
var webpartHeaders = document.querySelectorAll('.ms-WPTitle a');
// For each link
for(var i = 0; i < webpartHeaders.length; i++){
var webpartHeader = webpartHeaders[i];
// Get link target
var link = decodeURIComponent(webpartHeader.getAttribute('href'));
// If target contains 'RootFolder' value, then we have our Web Part.
// Let's generate our breadcrumb
if(rootStr.indexOf(link) != -1){
var path = rootStr.replace(link, ''); // Folder path, relative to Doc Lib
var basepath = rootStr.replace(path, ''); // Doc Lib path
var breadcrumb = '<span class="breadcrumb">';
breadcrumb += '<a href="' + location.pathname + '">Home</a>'; // link to base page
// Create link for each sub-folder
var folders = path.split('/');
for(var i = 1; i < folders.length; i++){
var currentfolder = folders[i];
basepath += "/" + currentfolder;
// Replace 'RootFolder' value in URL without touching any other variables(orderby, etc.)
var folderlink = window.location.search.replace('RootFolder=' + encodeURIComponent2(rootStr), 'RootFolder=' + encodeURIComponent(basepath));
breadcrumb += ' &gt; <a href="' + folderlink + '">' + currentfolder + '</a>';
}
breadcrumb += '</span>';
// The breadcrumb makes a hostile takeover of the existing web-part header link.
webpartHeader.parentNode.innerHTML = breadcrumb;
}
}
}
}
/* support url encoding of '.' */
function encodeURIComponent2(input) {
// encodeURIComponent doesn't encode '.' as '%2E'
return encodeURIComponent(input).replace(/\./g, '%2E');
}
/* Get param value from query string */
function getUrlParam(name) {
name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
var regexS = "[\\?&]" + name + "=([^&#]*)";
var regex = new RegExp(regexS);
var results = regex.exec(window.location.search);
if (results == null)
return "";
else
return decodeURIComponent(results[1].replace(/\+/g, " "));
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment