Browse Source

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

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

18
index.html

@ -4,7 +4,7 @@
<head> <head>
<meta charset="utf-8"> <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="description" content="An easy to use CSS 3D slideshow tool for quickly creating good looking HTML presentations.">
<meta name="author" content="Hakim El Hattab"> <meta name="author" content="Hakim El Hattab">
@ -313,11 +313,21 @@ linkify( 'a' );
transition: query.transition || 'default' // default/cube/page/concave/linear(2d) transition: query.transition || 'default' // default/cube/page/concave/linear(2d)
}); });
// Fire off syntax highlighting for potential code samples in the slides
hljs.initHighlightingOnLoad(); hljs.initHighlightingOnLoad();
// 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> </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>
</body> </body>
</html> </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 socket = io.connect(window.location.origin);
var socketId = Math.random().toString().slice(2); var socketId = Math.random().toString().slice(2);
console.log('View slide notes at ' + window.location.origin + '/notes/' + socketId); console.log('View slide notes at ' + window.location.origin + '/notes/' + socketId);
Reveal.addEventListener( 'slidechanged', function( event ) { Reveal.addEventListener( 'slidechanged', function( event ) {

2
lib/slidenotes/notes.html

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

Loading…
Cancel
Save