Explorar el Código

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

Hakim El Hattab hace 12 años
padre
commit
0e86400943
Se han modificado 4 ficheros con 52 adiciones y 6 borrados
  1. 15 5
      index.html
  2. 35 0
      js/reveal.slidenotes.js
  3. 1 0
      lib/slidenotes/client.js
  4. 1 1
      lib/slidenotes/notes.html

+ 15 - 5
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 - 0
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 - 0
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 ) {

+ 1 - 1
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 {