מדיה ויקי:Portals.js

הערה: לאחר הפרסום, ייתכן שיהיה צורך לנקות את זיכרון המטמון (cache) של הדפדפן כדי להבחין בשינויים.

  • פיירפוקס / ספארי: להחזיק את המקש Shift בעת לחיצה על טעינה מחדש (Reload) או ללחוץ על צירוף המקשים Ctrl-F5 או Ctrl-R (במחשב מק: ⌘-R).
  • גוגל כרום: ללחוץ על צירוף המקשים Ctrl-Shift-R (במחשב מק: ⌘-Shift-R).
  • אינטרנט אקספלורר / אדג': להחזיק את המקש Ctrl בעת לחיצה על רענן (Refresh) או ללחוץ על צירוף המקשים Ctrl-F5.
  • אופרה: ללחוץ על Ctrl-F5.
$( function() {
	

var portals = [];
var changedPortals = [];
var portalsUrl = "תבנית:פורטלים מתחלפים";

function onloadPortals( text ) {
    var lines = text.split( "\n" );
    var rx = new RegExp( "\\*\\s?([^\\|]*)\\|([^$]*)" );
    for( var i = 0; i < lines.length; i++ ) {
        var m = rx.exec( lines[i] );
        if( m ) {
            var portalName = m[1].replace( /\[/g, "" ).replace( /\]/g, "" );
            var imgSrc = m[2].replace( /\[/g, "" ).replace( /\]/g, "" );
            var html = '<a href="/wiki/' + encodeURIComponent(portalName) + '" title="' + portalName + '"><img alt="" src="' + imgSrc + '" width="25" height="23" border="0" /></a>';
            html += ' <a href="/wiki/' + encodeURIComponent(portalName) + '" title="' + portalName + '">' + portalName.substring(6) + '</a>';
            portals.push(html);
            changedPortals.push(html);
        } else {
            break;
        }
    }

    portalToggle();


    var $aPortal = $( '<a>' ).attr( {'id': 'a-Portals', 'href': '#'} ).text( 'הצגת פורטלים אקראיים אחרים' ).click( portalToggle );
    var spanPortal = $("#span-Portals").html('').append( $aPortal );
    $("#hidePortalID").show();
}

function portalToggle( e ) {
    if( changedPortals.length <= 3 ) {
        // Not enough portals; copy all the portals
        for( var i = 0; i < portals.length; i++ ) {
            changedPortals[i] = portals[i];
        }
    }
    for( var i = 5; i <= 8; i++ ) {
        var td = document.getElementById( "portals" + i );
        var randomNumber = Math.floor( Math.random() * changedPortals.length );
        td.innerHTML = changedPortals[randomNumber];
        changedPortals.splice( randomNumber, 1 );
    }

    if ( e ) {
		e.preventDefault();
	}
}

    if( !document.getElementById("portals5") ) {
        return;
    }
    $("#hidePortalID").hide();

    $.ajax( {
    	url: mw.util.getUrl(portalsUrl),
    	data: { action: 'raw' },
    	success: onloadPortals
    });
});