משתמש:Mikimik/js/whatLinksHereCounter.js

מתוך ויקיפדיה, האנציקלופדיה החופשית

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

  • פיירפוקס / ספארי: להחזיק את המקש Shift בעת לחיצה על טעינה מחדש (Reload) או ללחוץ על צירוף המקשים Ctrl-F5 או Ctrl-R (במחשב מק: ⌘-R).
  • גוגל כרום: ללחוץ על צירוף המקשים Ctrl-Shift-R (במחשב מק: ⌘-Shift-R).
  • אינטרנט אקספלורר / אדג': להחזיק את המקש Ctrl בעת לחיצה על רענן (Refresh) או ללחוץ על צירוף המקשים Ctrl-F5.
  • אופרה: ללחוץ על Ctrl-F5.
/* taken from [[User:Magister/monobook.js]]  */
/* fixed and changed by [[User:Mikimik]]     */

function parse ( markerid )
{
 try {
    var num;
    var frame = document.getElementById("i" + markerid);

    var whatlinkshere = frame.contentDocument.getElementById("mw-whatlinkshere-list");
    if ( whatlinkshere ) num = whatlinkshere.getElementsByTagName("li").length;
     else num = 0;

    frame.parentNode.removeChild (frame);

    document.getElementById(markerid).innerHTML = "(" + num + ")";
  }
  catch(e)
  {
    return;      // lets just ignore what's happened
  }
}


function checkWantedCounter ( article, markerid )
{
 try {
    var frame = document.createElement("iframe");
    frame.id = "i" + markerid;
    frame.src = mw.config.get('wgServer') + mw.config.get('wgScript') + "?title=special:whatlinkshere&target=" + article + "&limit=1000";
    frame.setAttribute ( "onLoad" , "parse('" + markerid + "')");
    frame.width = "0";
    frame.height = "0";

    document.body.appendChild (frame);

    var aNode = document.getElementById(markerid);
    aNode.innerHTML = "(...)";
    aNode.href = frame.src;
  }
  catch(e)
  {
    return;      // lets just ignore what's happened
  }
}


function addWantedCounterLinks()
{
 try {
    if ( arguments.callee != addWantedCounterLinks ) return; /* if local function was reloaded let the newer function run */

    var aList = document.getElementById("bodyContent")
//                        .getElementsByTagName("a");        <-- not good because list is changing as you add "a" nodes
                        .getElementsByClassName("new");

    for ( var i = 0 ; i < aList.length ; i++ )
    {
        var sMarker = document.createElement("span");
        sMarker.style.color = "green";

        var aNode = document.createElement("a");
        aNode.id = "sWLHmarker" + i;
        aNode.href = "javascript:checkWantedCounter('" +
                      encodeWikiURL ( aList[i].href.replace( /^.*?\?title=(.+)&action=edit.*$/, "$1" ) ) +
                      "', '" + aNode.id + "');";
        aNode.innerHTML = "^";
        aNode.style.color = "inherit";

        sMarker.appendChild (aNode);
        insertAfter ( aList[i].parentNode, sMarker, aList[i] );
    }
  }
  catch(e)
  {
    return;      // lets just ignore what's happened
  }
}


function encodeWikiURL ( url )
{
    return encodeURIComponent ( url.replace(/ /g, "_") )
           .replace(/%2F/ig, "/")                           // these chars are not encoded by wiki
           .replace(/%24/ig, "$")
           .replace(/%2C/ig, ",")
           .replace(/%3A/ig, ":")
           .replace(/%40/ig, "@");
}


function insertAfter ( parent, node, refNode )
{
    if ( refNode.nextSibling ) parent.insertBefore (node, refNode.nextSibling);
     else parent.appendChild(node);
}


addOnloadHook ( addWantedCounterLinks );       //if ( wgNamespaceNumber == 0 )