MediaWiki:ScrollGallery.js
Hinweis – Leere nach dem Abspeichern den Zwischenspeicher des Weltnetzerkunders, um die Änderungen sehen zu können: Mozilla/Firefox/Safari: Shift gedrückt halten und auf Aktualisieren klicken oder alternativ entweder Strg-F5 oder Strg-R (Befehlstaste-R bei Macintosh) drücken; Konqueror: Auf Aktualisieren klicken oder F5 drücken; Opera: Cache unter Extras → Einstellungen leeren; Internet Explorer: Strg-F5 drücken oder Strg gedrückt halten und dabei Aktualisieren anklicken.
// Scrolling through an Image Gallery // Author: Roland Unger, 2010-08-29 // license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later // addEvent function is already defined in the TocTree extension function processGalleryClickEvent(event) { var targetLink = null, newPos, aUnit; // Internet Explorer if (event.srcElement) targetLink = event.srcElement; // W3C DOM if (event.currentTarget) targetLink = event.currentTarget; if ((targetLink != null) && (targetLink.id !== '')) { parts = targetLink.id.split("+"); if (parts.length == 4) { parts[2] = parseInt(parts[2]); parts[3] = parseInt(parts[3]); if (parts[1] == "n") { newPos = parts[2] + 1; if (newPos > parts[3] - 1) { newPos = 0; } } if (parts[1] == "p") { newPos = parts[2] - 1; if (newPos < 0) { newPos = parts[3] - 1; } } aUnit = document.getElementById(parts[0] + "+" + parts[2]); if (aUnit) { aUnit.style["display"] = "none"; } aUnit = document.getElementById(parts[0] + "+" + newPos); if (aUnit) { aUnit.style["display"] = "block"; } } } } function searchScrollGalleries() { var i, j, divs, divs2, imgs, prevLink, nextLink, counter, imghead; var firstImg, timeDependent, showUnitHeader, timeNow, ieversion = 7; if (document.getElementsByTagName) { if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) { //test for MSIE x.x; ieversion=new Number(RegExp.$1); } divs = document.getElementsByTagName("div"); for (i = 0; i < divs.length; i++) { if (divs[i].className.indexOf("ImageGroup") < 0) { continue; } divs[i].id = "ImageGroup" + i; timeDependent = divs[i].className.indexOf("timeDependent") >= 0; showUnitHeader = divs[i].className.indexOf("hideUnitHeader") < 0; divs2 = divs[i].getElementsByTagName("div"); if ((divs2 == null) || (divs2.length == 0)) { continue; } if (ieversion < 7) { // IE6 und darunter brauchen Zwangsbreite imgs = divs[i].getElementsByTagName("img"); if (imgs.length > 0) { divs[i].style["width"] = imgs[0].width + 20 + "px"; } } imgs = new Array(); for (j = 0; j < divs2.length; j++) { if (divs2[j].className == "ImageGrUnit") { imgs.push(divs2[j]); } } if (imgs.length > 1) { firstImg = 0; if (timeDependent) { timeNow = new Date(); timeNow = timeNow.getHours() + timeNow.getMinutes()/60; firstImg = Math.floor(timeNow * imgs.length / 24); if (firstImg > imgs.length -1 ) { firstImg = imgs.length -1; } } for (j = 0; j < imgs.length; j++) { imgs[j].id = "scrollUnit" + i + "+" + j; if (showUnitHeader) { prevLink = document.createElement("span"); prevLink.style["cursor"] = "pointer"; prevLink.id = "scrollUnit" + i + "+p+" + j + "+" + imgs.length; if (j == 0) { prevLink.title = imgs.length + "/" + imgs.length; } else { prevLink.title = j + "/" + imgs.length; } prevLink.appendChild(document.createTextNode("◀")); addEvent(prevLink, "click", processGalleryClickEvent, false); nextLink = document.createElement("span"); nextLink.style["cursor"] = "pointer"; nextLink.id = "scrollUnit" + i + "+n+" + j + "+" + imgs.length; if (j == imgs.length - 1) { nextLink.title = 1 + "/" + imgs.length; } else { nextLink.title = (j + 2) + "/" + imgs.length; } nextLink.appendChild(document.createTextNode("▶")); addEvent(nextLink, "click", processGalleryClickEvent, false); counter = (j + 1) + "/" + imgs.length; imghead = document.createElement("div"); imghead.className = "ImageGrUnitHeader"; imghead.appendChild(prevLink); imghead.appendChild(document.createTextNode(" " +counter + " ")); imghead.appendChild(nextLink); imgs[j].insertBefore(imghead, imgs[j].firstChild); } if (j == firstImg) { imgs[j].style["display"] = "block"; } else { imgs[j].style["display"] = "none"; } } } } } } addOnloadHook(searchScrollGalleries);