מדיה ויקי:Gadget-ImgToggle.js
הערה: לאחר הפרסום, ייתכן שיהיה צורך לנקות את זיכרון המטמון (cache) של הדפדפן כדי להבחין בשינויים.
- פיירפוקס / ספארי: להחזיק את המקש Shift בעת לחיצה על טעינה מחדש (Reload) או ללחוץ על צירוף המקשים Ctrl-F5 או Ctrl-R (במחשב מק: ⌘-R).
- גוגל כרום: ללחוץ על צירוף המקשים Ctrl-Shift-R (במחשב מק: ⌘-Shift-R).
- אינטרנט אקספלורר / אדג': להחזיק את המקש Ctrl בעת לחיצה על רענן (Refresh) או ללחוץ על צירוף המקשים Ctrl-F5.
- אופרה: ללחוץ על Ctrl-F5.
/**
* based on [[fr:MediaWiki:Common.js]]
* expanded by [[he:user:Mikimik]]
*/
(function () {
var ImgToggleResizeSmallScreensFlag = true;
mw.hook( 'wikipage.content' ).add( function ( $content ) {
function toggleTitles(div, title1, title2) {
div=div.firstChild;
title1=title1.find('.imgtoggleboxTitle').text();
title2=title2.find('.imgtoggleboxTitle').text();
div.innerHTML = title1;
div.nextSibling.innerHTML = title2;
if ( title1 && title2 ) div.appendChild( document.createElement("br") );
}
try {
var divWrapper = $content.find('div.img_toggle');
if ( !divWrapper.length ) return;
if (ImgToggleResizeSmallScreensFlag)
mw.loader.using( 'mediawiki.util' ).done( function() {
mw.util.addCSS('div.img_toggle{overflow:auto;overflow-y:hidden;max-width:'
+ ($('#bodyContent').width() - 38) +'px;}');
}); // an ability to scroll horisontally in mobile for infoboxes
ImgToggleResizeSmallScreensFlag = false;
var n;
var toggleRightOnClick = function() {
try {
if ( this.parentNode.status === 0 ) {
return false;
}
var boxes = $ ( this.parentNode.parentNode).find("div.imgtogglebox" );
boxes[this.parentNode.status].style.display = "none";
this.parentNode.status--;
boxes[this.parentNode.status].style.display = "";
toggleTitles(this.parentNode, this.parentNode.status === 0 ? $() : $(boxes[this.parentNode.status-1]), $(boxes[this.parentNode.status+1]));
return false;
}
catch (e) {
return;
}
};
var toggleLeftOnClick = function() {
try {
if ( this.parentNode.status == this.parentNode.maxtoggle ) {
return false;
}
var boxes = $ ( this.parentNode.parentNode).find("div.imgtogglebox" );
boxes[this.parentNode.status].style.display = "none";
this.parentNode.status++;
boxes[this.parentNode.status].style.display = "";
toggleTitles(this.parentNode, $(boxes[this.parentNode.status-1]), this.parentNode.status == this.parentNode.maxtoggle ? $() : $(boxes[this.parentNode.status+1]));
return false;
}
catch (e) {
return;
}
};
for ( var i = 0 ; i < divWrapper.length ; i++ )
{
var boxes = $(divWrapper[i]).find('div.imgtogglebox');
if ( boxes.length < 2 ) continue; // there must be at least 2 toggle boxes in the wrapper
var startToggle=0;
for ( n = 0 ; n < boxes.length ; n++ )
if ( /\btogglestart\b/.test(boxes[n].className) )
{
startToggle = n;
break;
}
for ( n = 0 ; n < boxes.length ; n++ ) if ( n != startToggle ) boxes[n].style.display = "none";
var toggleRight = document.createElement("a");
toggleRight.href = "#";
toggleRight.className = "a_toggle";
toggleRight.onclick = toggleRightOnClick;
var toggleLeft = document.createElement("a");
toggleLeft.href = "#";
toggleLeft.className = "a_toggle";
toggleLeft.onclick = toggleLeftOnClick;
var div = document.createElement("div");
div.maxtoggle = boxes.length - 1;
div.status = startToggle;
div.className="aTogglesContainer";
div.appendChild ( toggleRight );
div.appendChild ( toggleLeft );
toggleTitles ( div, div.status === 0 ? $() : $(boxes[div.status-1]), div.status == div.maxtoggle ? $() : $(boxes[div.status+1]) );
divWrapper[i].insertBefore ( div, boxes[boxes.length-1].nextSibling );
}
}
catch (e)
{
return; // lets just ignore what's happened
}
});
})();