conditional loading of socket.io and the notes client js based on window host
authorHakim El Hattab <hakim.elhattab@gmail.com>
Wed, 4 Jul 2012 18:18:09 +0000 (14:18 -0400)
committerHakim El Hattab <hakim.elhattab@gmail.com>
Wed, 4 Jul 2012 18:18:09 +0000 (14:18 -0400)
index.html
js/reveal.slidenotes.js [new file with mode: 0644]
lib/slidenotes/client.js
lib/slidenotes/notes.html

index b08c62a55952c22cfb12fb6cc0ce831f4e43ae38..68c5e4f66186e7febb06311f384e7447707a146a 100644 (file)
@@ -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>
\ No newline at end of file
diff --git a/js/reveal.slidenotes.js b/js/reveal.slidenotes.js
new file mode 100644 (file)
index 0000000..b686ec9
--- /dev/null
@@ -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);
+       } );
+}());
index b686ec97cbb7373ee7d55dde5e63da207a014177..f594fb6293eed56c8e04bd84a6d6b12ec3c804f7 100644 (file)
@@ -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 ) {
index a0c945c87c123862048d9af07842209c02e03e00..4201647e6569a6acd95b7c472d931104794fa08f 100644 (file)
@@ -3,7 +3,7 @@
        <head>
                <meta charset="utf-8">
 
-               <title>Slide Notes</title>
+               <title>reveal.js - Slide Notes</title>
 
                <style>
                        #notes {