MediaWiki:Main page thumbnail cycler.js
Jump to navigation
Jump to search
Note: After saving, you have to bypass your browser's cache to see the changes. Internet Explorer: press Ctrl-F5, Mozilla: hold down Shift while clicking Reload (or press Ctrl-Shift-R), Opera/Konqueror: press F5, Safari: hold down Shift + Alt while clicking Reload, Chrome: hold down Shift while clicking Reload.
Documentation for this user script can be added at MediaWiki:Main page thumbnail cycler. |
- Report page listing warnings and errors.
var cyclebox_start = 0;
var cyclebox_row = 10;
var cyclebox_thumbsize = 120;
var cyclebox_data;
var cyclebox_initial_load = true;
var cyclebox_mouse_inside = false;
var cyclebox_category = "Featured_pictures_on_Wikimedia_Commons";
var cyclebox_header = 'Other featured contents';
jQuery(function(){
// if( wgNamespaceNumber != 0 || wgTitle != "Main Page" ) return;
if( jQuery("#main-page-langbar").length == 0 ) return; // Cross-language check
jQuery("#bodyContent > table:first").before( "<div id='cyclebox_container'><div style='background:#faecc8; border-bottom:1px solid #fad67d; padding:0.2em 0.5em; font-size:125%; font-weight:bold'>"+cyclebox_header+"</div><div id='cyclebox' style='position:relative;overflow:hidden;max-height:"+cyclebox_thumbsize+"px;margin-top:2px'><div id='cyclebox1' style='display:inline;width:500px'></div></div></div>" );
var w = -1;
cyclebox_row++;
while( w < 0 ) {
cyclebox_row--;
w = parseInt(( parseInt( jQuery('#cyclebox_container').width() ) -( cyclebox_row * cyclebox_thumbsize ) ) / 2 );
}
jQuery('#cyclebox').height( cyclebox_thumbsize + 4 );
jQuery('#cyclebox').css( 'margin-left' , w );
jQuery('#cyclebox_container').mouseenter( function(){ cyclebox_mouse_inside = true; } );
jQuery('#cyclebox_container').mouseleave( function(){ cyclebox_mouse_inside = false; } );
initialize_cyclebox();
} );
function iterate_cyclebox(){
if( !cyclebox_initial_load && cyclebox_mouse_inside ) {
setTimeout('iterate_cyclebox()', 2000);
return;
}
var h = "<div id='cyclebox2' style='position:relative;display:inline'>";
if( cyclebox_start + cyclebox_row >= cyclebox_data.length ) cyclebox_start = 0;
var titles = '';
for( var i = 0; i < cyclebox_row; i++ ) {
var d = cyclebox_data[i + cyclebox_start];
if( titles != '' ) titles += "|";
// titles += escape( d.title );
titles += d.title;
}
var url = mw.config.get('wgServer') + wgScriptPath + '/api.php';
url += "?action=query&titles=" + titles + "&prop=imageinfo&iiprop=url&iiurlwidth="+cyclebox_thumbsize+"&iiurlheight="+cyclebox_thumbsize+"&format=json&callback=?";
jQuery.getJSON( url , function( data ) {
jQuery.each(data.query.pages, function( idx , elm ) {
var alt = elm.title.substr(5);
alt = alt.split("'").join("\\'");
var n = "<a href='" + wgArticlePath.replace("$1", escape(elm.title)) + "'><img border='0' alt='"+alt+"' title='"+alt+"' src='";
jQuery.each(jQuery(elm.imageinfo),function( i2 , e2 ) {
jQuery.each( jQuery(e2) , function( i3 , e3 ) { n += e3.thumburl; } );
} );
n += "'/></a>";
h += "<div style='display:inline'>" + n + "</div>";
} );
h += "</div>";
jQuery("#cyclebox1").after( h );
cyclebox_start += cyclebox_row;
var w = parseInt( jQuery('#cyclebox1').width() );
jQuery('#cyclebox2').animate( { left : "-="+w+"px" } , { duration:'slow' , queue:false } );
jQuery('#cyclebox1').animate( { left : "-="+w+"px" } , 'slow' , function(){
jQuery('#cyclebox2').css('left','0px');
jQuery('#cyclebox1').remove();
jQuery('#cyclebox2').attr('id','cyclebox1');
cyclebox_initial_load = false;
setTimeout('iterate_cyclebox()', 5000);
} );
} );
}
function initialize_cyclebox(){
var url = mw.config.get('wgServer') + wgScriptPath + '/api.php?format=json&action=query&list=categorymembers&cmnamespace=6&cmsort=timestamp&cmdir=desc&cmlimit=500&cmtitle=Category:'+cyclebox_category+'&callback=?';
jQuery.getJSON( url , function( data ) {
cyclebox_data = data.query.categorymembers;
iterate_cyclebox();
} );
}