Browse Source

conditional loading of socket.io and the notes client js based on window host

embed
Hakim El Hattab 13 years ago
parent
commit
0e86400943
  1. 20
      index.html
  2. 35
      js/reveal.slidenotes.js
  3. 1
      lib/slidenotes/client.js
  4. 2
      lib/slidenotes/notes.html

20
index.html

@ -4,7 +4,7 @@
<head>
<meta charset="utf-8">
<title>reveal.js</title>
<title>reveal.js - HTML5 Presentations</title>
<meta name="description" content="An easy to use CSS 3D slideshow tool for quickly creating good looking HTML presentations.">
<meta name="author" content="Hakim El Hattab">
@ -313,11 +313,21 @@ linkify( 'a' );
transition: query.transition || 'default' // default/cube/page/concave/linear(2d)
});
// Fire off syntax highlighting for potential code samples in the slides
hljs.initHighlightingOnLoad();
</script>
<!-- The next two lines enable the speaker notes server -->
<script src="socket.io/socket.io.js"></script>
<script src="lib/slidenotes/client.js"></script>
// If we're runnning the notes node server we need to include some
// additional JS
if( window.location.host === 'localhost:1947' ) {
var notes_socket = document.createElement( 'script' );
notes_socket.setAttribute( 'src', 'socket.io/socket.io.js' );
document.body.appendChild( notes_socket );
var notes_client = document.createElement( 'script' );
notes_client.setAttribute( 'src', 'lib/slidenotes/client.js' );
document.body.appendChild( notes_client );
}
</script>
</body>
</html>

35
js/reveal.slidenotes.js

@ -0,0 +1,35 @@
(function() {
// don't emit events from inside the previews themselves
var qs = window.location.href.split('?');
if (qs.length > 1 && qs[1].match('receiver')) { return; }
var socket = io.connect(window.location.origin);
var socketId = Math.random().toString().slice(2);
console.log('View slide notes at ' + window.location.origin + '/notes/' + socketId);
Reveal.addEventListener( 'slidechanged', function( event ) {
var nextindexh;
var nextindexv;
var slideElement = event.currentSlide;
if (slideElement.nextElementSibling && slideElement.parentNode.nodeName == 'SECTION') {
nextindexh = event.indexh;
nextindexv = event.indexv + 1;
} else {
nextindexh = event.indexh + 1;
nextindexv = 0;
}
var notes = slideElement.querySelector('aside.notes');
var slideData = {
notes : notes ? notes.innerHTML : '',
indexh : event.indexh,
indexv : event.indexv,
nextindexh : nextindexh,
nextindexv : nextindexv,
socketId : socketId
};
socket.emit('slidechanged', slideData);
} );
}());

1
lib/slidenotes/client.js

@ -5,6 +5,7 @@
var socket = io.connect(window.location.origin);
var socketId = Math.random().toString().slice(2);
console.log('View slide notes at ' + window.location.origin + '/notes/' + socketId);
Reveal.addEventListener( 'slidechanged', function( event ) {

2
lib/slidenotes/notes.html

@ -3,7 +3,7 @@
<head>
<meta charset="utf-8">
<title>Slide Notes</title>
<title>reveal.js - Slide Notes</title>
<style>
#notes {

Loading…
Cancel
Save