<?php /* Fabien Benetou Based on http://www.pmwiki.org/wiki/Cookbook/SlideShow Installing: Download reveal.js and uncompress it to pub/reveal folder in your "Farm" directory Using: Include this (reveal.php) file in your config.php. Create a page using section to define slides and then access the page with action=reveal If you defined a master/client keypair configure them further in the multiplex parameters */ Markup('section','fulltext','/\(:section:\)/e',"Keep('<section>')"); Markup('sectionend','fulltext','/\(:sectionend:\)/e',"Keep('</section>')"); Markup('sectionextended','fulltext','/\(:sectionextended (.*?):\)/e',"Keep('<section $1>')"); SDV($HandleActions['reveal'],'HandleRevealSlides'); SDV($SlideShowFmt, '<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>reveal.js - Barebones</title> <link rel="stylesheet" href="$FarmPubDirUrl/reveal.js-master/css/reveal.css" type="text/css" /> </head> <body> <div class="reveal"> <div class="slides"> $Slide </div> </div> <script src="$FarmPubDirUrl/reveal.js-master/js/reveal.js"></script> <script> Reveal.initialize({ // other options... multiplex: { // Example values. To generate your own, see the socket.io server instructions. secret: null, // Obtained from the socket.io server. Gives this (the master) control of the presentation id: "", // Obtained from socket.io server url: "https://reveal-multiplex.glitch.me/" // Location of socket.io server }, // Don"t forget to add the dependencies dependencies: [ { src: "//cdn.socket.io/socket.io-1.3.5.js", async: true }, { src: "/pub/reveal.js-master/plugin/multiplex/client.js", async: true }, // other dependencies... ] }); </script> </body> </html> '); function HandleRevealSlides($pagename, $auth = 'read') { global $SlideShowFmt,$FmtV,$ScriptUrl,$Group,$Name; $page = RetrieveAuthPage($pagename, $auth, false, READPAGE_CURRENT); if (!$page) Abort("?cannot read $pagename"); $FmtV['$Slide'] = MarkupToHTML($pagename, $page['text']); FmtPageName($SlideShowFmt, $pagename); PrintFmt($pagename,$SlideShowFmt); exit(); } /* For master control of slides (ALL presentations!) {"secret":"14731768290817665483","socketId":"1ff0f582dc396a71"} Example of working control http://fabien.benetou.fr/pub/home/testingrevealremote/ */ SDV($HandleActions['revealcontrol'],'ControlSlides'); SDV($SlideShowFmtControl, '<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>reveal.js - Barebones</title> <link rel="stylesheet" href="$FarmPubDirUrl/reveal.js-master/css/reveal.css" type="text/css" /> </head> <body> <div class="reveal"> <div class="slides"> $Slide </div> </div> <script src="$FarmPubDirUrl/reveal.js-master/js/reveal.js"></script> <script> Reveal.initialize({ // other options... multiplex: { // Example values. To generate your own, see the socket.io server instructions. secret: "", // Obtained from the socket.io server. Gives this (the master) control of the presentation id: "", // Obtained from socket.io server url: "https://reveal-multiplex.glitch.me/" // Location of socket.io server }, // Don"t forget to add the dependencies dependencies: [ { src: "//cdn.socket.io/socket.io-1.3.5.js", async: true }, { src: "/pub/reveal.js-master/plugin/multiplex/master.js", async: true }, // other dependencies... ] }); </script> </body> </html> '); function ControlSlides($pagename, $auth = 'read') { global $SlideShowFmtControl,$FmtV,$ScriptUrl,$Group,$Name; $page = RetrieveAuthPage($pagename, $auth, false, READPAGE_CURRENT); if (!$page) Abort("?cannot read $pagename"); $FmtV['$Slide'] = MarkupToHTML($pagename, $page['text']); FmtPageName($SlideShowFmtControl, $pagename); PrintFmt($pagename,$SlideShowFmtControl); exit(); } ?>