Open main menu

Changes

983 bytes removed ,  23:27, 5 December 2008
link to where I found the script
One method is to simply parse the wiki markup itself and turn that into slides by effectively walking through the structure of the page (one slide for each section, and stepping through the bullets). For this approach, a Greasemonkey script will do.
[http://phiffer.org Dan Phiffer] wrote created the following Greasemonkey script (which I found courtesy of [http://www.darcynorman.net/2007/05/02/mediawiki-as-a-presentation-application/ D'Arcy Norman]) that [http://userscripts.org/scripts/show/6372 turns any MediaWiki article into a slide presentation]. The [[CSS]] was changed just a bit by Greg Rundlett to ensure compatibility with projectors.
<source lang="javascript">
// ==UserScript==
var wikipedia_presentation = {
setup: function() { this.sections = []; this.pos = 0; var body = document.getElementsByTagName('body')[0]; this.orig_markup = body.innerHTML; var markup = body.innerHTML; var start = 0; var end = markup.indexOf('<span class="editsection"'); while (end != -1) { start = markup.indexOf('</span>', end); end = markup.indexOf('<span class="editsection"', start); if (end == -1) { end = markup.indexOf('<div class="printfooter">', start); this.sections.push(markup.substr(start, end - start)); end = -1; } this.sections.push(markup.substr(start, end - start)); } if (this.sections.length > 0) { var div = document.getElementById('bodyContent'); var link = div.insertBefore(document.createElement('a'), div.firstChild); link.innerHTML = 'Start presentation'; link.setAttribute('href', '#presentation'); link.addEventListener('click', this.start, false); } }, start: function() { var body = document.getElementsByTagName('body')[0]; body.innerHTML = ''; body.style.textAlign = 'center'; var prev = body.appendChild(document.createElement('a')); prev.innerHTML = '&larr; Prev'; prev.setAttribute('href', '#prev'); prev.style.font = '11px verdana, sans-serif'; prev.addEventListener('click', function() { wikipedia_presentation.prev(); }, false); body.appendChild(document.createTextNode(' / ')); var stop = body.appendChild(document.createElement('a')); stop.innerHTML = 'Exit'; stop.setAttribute('href', '#exit'); stop.style.font = '11px verdana, sans-serif'; stop.addEventListener('click', function() { wikipedia_presentation.stop(); }, false); body.appendChild(document.createTextNode(' / ')); var next = body.appendChild(document.createElement('a')); next.innerHTML = 'Next &rarr;'; next.setAttribute('href', '#next'); next.style.font = '11px verdana, sans-serif'; next.addEventListener('click', function() { wikipedia_presentation.next(); }, false); var slide = body.appendChild(document.createElement('div')); slide.setAttribute('id', 'wikipedia_presentation'); slide.style.width = '780px'; // slide.style.background = 'red'; slide.style.margin = '10px 10px 10px 20px'; slide.style.textAlign = 'left'; slide.style.font = '2em verdana, sans-serif'; slide.innerHTML = wikipedia_presentation.sections[0]; var items = slide.getElementsByTagName('li'); for (var i = 1; i < items.length; i++) { items[i].style.display = 'none'; } document.addEventListener('keypress', wikipedia_presentation.keypress, false); }, stop: function() { var body = document.getElementsByTagName('body')[0]; body.innerHTML = wikipedia_presentation.orig_markup; body.style.textAlign = 'left'; wikipedia_presentation.setup(); document.removeEventListener('keypress', wikipedia_presentation.keypress, false); }, keypress: function(event) { if (event.keyCode == 39) { wikipedia_presentation.next(); } else if (event.keyCode == 37) { wikipedia_presentation.prev(); } }, prev: function() { this.pos--; if (this.pos == -1) { this.pos = this.sections.length - 1; } var slide = document.getElementById('wikipedia_presentation'); slide.innerHTML = wikipedia_presentation.sections[this.pos]; }, next: function() { var slide = document.getElementById('wikipedia_presentation'); var items = slide.getElementsByTagName('li'); var hidden = 0; for (var i = 0; i < items.length; i++) { if (items[i].style.display == 'none') { hidden++; } } if (hidden > 0) { items[items.length - hidden].style.display = 'list-item'; return; } this.pos++; if (this.pos == this.sections.length) { this.pos = 0; } slide.innerHTML = wikipedia_presentation.sections[this.pos]; var items = slide.getElementsByTagName('li'); for (var i = 1; i < items.length; i++) { items[i].style.display = 'none'; } }
};
4,558

edits