Difference between revisions of "JavaScript"
Jump to navigation
Jump to search
(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 12: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();