浏览代码

server side notes plugin now supports input via data-notes attribute

Hakim El Hattab 11 年之前
父节点
当前提交
a22d00ab25
共有 2 个文件被更改,包括 43 次插入23 次删除
  1. 28 17
      plugin/notes-server/client.js
  2. 15 6
      plugin/notes/notes.js

+ 28 - 17
plugin/notes-server/client.js

@@ -1,12 +1,13 @@
 (function() {
 	// don't emit events from inside the previews themselves
-	if ( window.location.search.match( /receiver/gi ) ) { return; }
+	if( window.location.search.match( /receiver/gi ) ) { 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);
-	window.open(window.location.origin + '/notes/' + socketId, 'notes-' + socketId);
+	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 );
+
+	window.open( window.location.origin + '/notes/' + socketId, 'notes-' + socketId );
 
 	// Fires when a fragment is shown
 	Reveal.addEventListener( 'fragmentshown', function( event ) {
@@ -23,16 +24,17 @@
 			fragment : 'previous',
 			socketId : socketId
 		};
-		socket.emit('fragmentchanged', fragmentData);
+		socket.emit( 'fragmentchanged', fragmentData );
 	} );
 
 	// Fires when slide is changed
 	Reveal.addEventListener( 'slidechanged', function( event ) {
-		var nextindexh;
-		var nextindexv;
-		var slideElement = event.currentSlide;
+		var nextindexh,
+			nextindexv,
+			slideElement = event.currentSlide,
+			notesElement = slideElement.querySelector( 'aside.notes' );
 
-		if (slideElement.nextElementSibling && slideElement.parentNode.nodeName == 'SECTION') {
+		if( slideElement.nextElementSibling && slideElement.parentNode.nodeName == 'SECTION' ) {
 			nextindexh = event.indexh;
 			nextindexv = event.indexv + 1;
 		} else {
@@ -40,18 +42,27 @@
 			nextindexv = 0;
 		}
 
-		var notes = slideElement.querySelector('aside.notes');
-		var slideData = {
-			notes : notes ? notes.innerHTML : '',
+		var messageData = {
+			notes : '',
 			indexh : event.indexh,
 			indexv : event.indexv,
 			nextindexh : nextindexh,
 			nextindexv : nextindexv,
 			socketId : socketId,
-			markdown : notes ? typeof notes.getAttribute('data-markdown') === 'string' : false
-
+			markdown : false
 		};
 
-		socket.emit('slidechanged', slideData);
+		// Look for notes defined in a slide attribute
+		if( slideElement.hasAttribute( 'data-notes' ) ) {
+			messageData.notes = slideElement.getAttribute( 'data-notes' );
+		}
+
+		// Look for notes defined in an aside element
+		if( notesElement ) {
+			messageData.notes = notesElement.innerHTML;
+			messageData.markdown = typeof notesElement.getAttribute( 'data-markdown' ) === 'string';
+		}
+
+		socket.emit( 'slidechanged', messageData );
 	} );
 }());

+ 15 - 6
plugin/notes/notes.js

@@ -24,9 +24,7 @@ var RevealNotes = (function() {
 		function post() {
 			var slideElement = Reveal.getCurrentSlide(),
 				slideIndices = Reveal.getIndices(),
-				messageData;
-
-			var notes = slideElement.querySelector( 'aside.notes' ),
+				notesElement = slideElement.querySelector( 'aside.notes' ),
 				nextindexh,
 				nextindexv;
 
@@ -38,16 +36,27 @@ var RevealNotes = (function() {
 				nextindexv = 0;
 			}
 
-			messageData = {
-				notes : notes ? notes.innerHTML : '',
+			var messageData = {
+				notes : '',
 				indexh : slideIndices.h,
 				indexv : slideIndices.v,
 				indexf : slideIndices.f,
 				nextindexh : nextindexh,
 				nextindexv : nextindexv,
-				markdown : notes ? typeof notes.getAttribute( 'data-markdown' ) === 'string' : false
+				markdown : false
 			};
 
+			// Look for notes defined in a slide attribute
+			if( slideElement.hasAttribute( 'data-notes' ) ) {
+				messageData.notes = slideElement.getAttribute( 'data-notes' );
+			}
+
+			// Look for notes defined in an aside element
+			if( notesElement ) {
+				messageData.notes = notesElement.innerHTML;
+				messageData.markdown = typeof notesElement.getAttribute( 'data-markdown' ) === 'string';
+			}
+
 			notesPopup.postMessage( JSON.stringify( messageData ), '*' );
 		}