Slideshow Demo (000001)

S9-Style Slideshow in Sputnik

S9 is a tool written in Ruby

  • Converts Markdown into a web presentation
  • Requires FullerScreen
  • https://addons.mozilla.org/en-US/firefox/addon/4650
  • See http://slideshow.rubyforge.org/

We Likes It

...but not so excited about Ruby

Let's do the same in Sputnik

(But kudos to S9 for showing us the way!)

Make the Template

  1. Look at the HTML generated by S9
  2. Turn it into a Cosmo template
  3. Save it to http://sputnik.freewisdom.org/en/_templates_for_s9
    • set "prototype" to "@Lua_Config"

The only complicated part is the $do_slides:

$do_slides[=[
 <div class='slide'>
  <h1>$heading</h1>
  $content
 </div>
]=]

Write an Action

We'll also need an "action".

It's simple: most of the work is done by markdown

module(..., package.seeall)

actions = {}
actions.slides = function(node, request, sputnik)
   require"markdown"
   local delim = "@@@@@@@@@@"
   local html = ("\n"..markdown(node.content).."<h2>"):gsub("<h2>", "\n"..delim.."\n<h2>").."\n"..delim
   return cosmo.f(node.templates.SLIDESHOW){
      title = node.title,
      do_slides = function()
                     for heading, content in html:gmatch("\n<h2>(.-)</h2>(.-)\n"..delim) do
                        cosmo.yield{heading=heading, content=content}
                     end
                  end
   }
end

Save this to ~/sputnik/share/lua/5.1/sputnik/actions/s9.lua

Make a Slide Node

Let's make a node "Slideshow_Demo". (Yes, this one.)

  1. Put the markdown-formatted presentation in the body.
    • Use H2 (##) as slide titles
  2. Set templates to \_templates\_for\_s9
  3. Set actions to slides="s9.slides"

Save.

Check that Slideshow_Demo displays fine. Now try "Slideshow_Demo.slides".

(Remember that you need "FullerScreen" - https://addons.mozilla.org/en-US/firefox/addon/4650)

Things to Try Next

If we are making several slideshows, we can create a prototype:

  1. Create a node "@Slideshow"
  2. Set templates to \_templates\_for\_s9
  3. Set actions to slides="s9.slides"

Then create new slideshow nodes by just setting prototype to `@Slideshow'

Powered by Sputnik | XHTML 1.1