Skip to content

Commit

Permalink
Merge pull request hakimel#2133 from sean-parent/master
Browse files Browse the repository at this point in the history
Adding support for hash linked slideNumber
  • Loading branch information
hakimel committed Apr 16, 2018
2 parents fa17b57 + ccc0c6a commit bfee8af
Showing 1 changed file with 52 additions and 33 deletions.
85 changes: 52 additions & 33 deletions js/reveal.js
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,10 @@

// Display the page number of the current slide
slideNumber: false,

// Use 1 based indexing for # links to match slide number (default is zero
// based)
hashOneBasedIndex: false,

// Determine which displays to show the slide number on
showSlideNumber: 'all',
Expand Down Expand Up @@ -2251,7 +2255,41 @@
return overview;

}

/**
* Return a hash URL that will resolve to the current slide location.
*/

function locationHash() {

var url = '/';

// Attempt to create a named link based on the slide's ID
var id = currentSlide ? currentSlide.getAttribute( 'id' ) : null;
if( id ) {
id = encodeURIComponent( id );
}

var indexf;
if( config.fragmentInURL ) {
indexf = getIndices().f;
}

// If the current slide has an ID, use that as a named link,
// but we don't support named links with a fragment index
if( typeof id === 'string' && id.length && indexf === undefined ) {
url = '/' + id;
}
// Otherwise use the /h/v index
else {
if( indexh > 0 || indexv > 0 || indexf !== undefined ) url += indexh + config.hashOneBasedIndex;
if( indexv > 0 || indexf !== undefined ) url += '/' + (indexv + config.hashOneBasedIndex);
if( indexf !== undefined ) url += '/' + indexf;
}

return url;
}

/**
* Checks if the current or specified slide is vertical
* (nested within another slide).
Expand Down Expand Up @@ -2917,6 +2955,7 @@

}


/**
* Updates the slide number div to reflect the current slide.
*
Expand Down Expand Up @@ -2970,14 +3009,18 @@
* @return {string} HTML string fragment
*/
function formatSlideNumber( a, delimiter, b ) {

var url = '#' + locationHash();
if( typeof b === 'number' && !isNaN( b ) ) {
return '<span class="slide-number-a">'+ a +'</span>' +
return '<a href="' + url + '">' +
'<span class="slide-number-a">'+ a +'</span>' +
'<span class="slide-number-delimiter">'+ delimiter +'</span>' +
'<span class="slide-number-b">'+ b +'</span>';
'<span class="slide-number-b">'+ b +'</span>' +
'</a>';
}
else {
return '<span class="slide-number-a">'+ a +'</span>';
return '<a href="' + url + '">' +
'<span class="slide-number-a">'+ a +'</span>' +
'</a>';
}

}
Expand Down Expand Up @@ -3796,8 +3839,9 @@
}
else {
// Read the index components of the hash
var h = parseInt( bits[0], 10 ) || 0,
v = parseInt( bits[1], 10 ) || 0,

var h = parseInt( bits[0], 10 ) || 0 - config.hashOneBasedIndex,
v = parseInt( bits[1], 10 ) || 0 - config.hashOneBasedIndex,
f;
if( config.fragmentInURL ) {
f = parseInt( bits[2], 10 );
Expand All @@ -3812,7 +3856,7 @@
}

}

/**
* Updates the page URL (hash) to reflect the current
* state.
Expand All @@ -3832,32 +3876,7 @@
writeURLTimeout = setTimeout( writeURL, delay );
}
else if( currentSlide ) {
var url = '/';

// Attempt to create a named link based on the slide's ID
var id = currentSlide.getAttribute( 'id' );
if( id ) {
id = encodeURIComponent( id );
}

var indexf;
if( config.fragmentInURL ) {
indexf = getIndices().f;
}

// If the current slide has an ID, use that as a named link,
// but we don't support named links with a fragment index
if( typeof id === 'string' && id.length && indexf === undefined ) {
url = '/' + id;
}
// Otherwise use the /h/v index
else {
if( indexh > 0 || indexv > 0 || indexf !== undefined ) url += indexh;
if( indexv > 0 || indexf !== undefined ) url += '/' + indexv;
if( indexf !== undefined ) url += '/' + indexf;
}

window.location.hash = url;
window.location.hash = locationHash();
}
}

Expand Down

0 comments on commit bfee8af

Please sign in to comment.