فهرست منبع

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

Hakim El Hattab 12 سال پیش
والد
کامیت
0e86400943
4فایلهای تغییر یافته به همراه52 افزوده شده و 6 حذف شده
  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 {