JavaScript: Difference between revisions
From Freephile Wiki
New page: * MediaWiki/js * User Scripts ala Grease Monkey or Userscripts.org [http://phiffer.org Dan Phiffer] wrote this little greasemonkey script that turns any mediawiki article into a sl... |
modified layout of the slides |
||
Line 10: | Line 10: | ||
var wikipedia_presentation = { | 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 = '← 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 →'; | |||
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.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'; | |||
} | |||
} | |||
}; | }; | ||
Revision as of 13:31, 5 December 2008
- MediaWiki/js
- User Scripts ala Grease Monkey or Userscripts.org
Dan Phiffer wrote this little greasemonkey script that turns any mediawiki article into a slide presentation
// ==UserScript==
// @name Wikipedia Presentation
// @namespace http://phiffer.org/
// @description Turn a Wikipedia article into a presentation
// ==/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 = '← 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 →';
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.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';
}
}
};
wikipedia_presentation.setup();