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

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

  • פיירפוקס / ספארי: להחזיק את המקש Shift בעת לחיצה על טעינה מחדש (Reload) או ללחוץ על צירוף המקשים Ctrl-F5 או Ctrl-R (במחשב מק: ⌘-R).
  • גוגל כרום: ללחוץ על צירוף המקשים Ctrl-Shift-R (במחשב מק: ⌘-Shift-R).
  • אינטרנט אקספלורר / אדג': להחזיק את המקש Ctrl בעת לחיצה על רענן (Refresh) או ללחוץ על צירוף המקשים Ctrl-F5.
  • אופרה: ללחוץ על Ctrl-F5.
// customize the Sidebar. written by [[User:Mikimik]]
function mkCustomizeSidebar()
{
 try {
    if ( arguments.callee != mkCustomizeSidebar ) return;    // if local function was reloaded let the newer function run

//---                                                        // modify tool box on user and talk page
    var contributions = document.getElementById("t-contributions");
    if ( contributions )
    {
        if ( wgTitle == wgUserName && document.getElementById("t-blockip") ) document.getElementById("t-blockip").parentNode.removeChild ( document.getElementById("t-blockip") );

        contributions.insertBefore ( document.createTextNode(wgUserLanguage == "he" ? "מקומי: " : "local: "), contributions.firstChild );

        var item = contributions.getElementsByTagName("a")[0];
        item.replaceChild ( document.createTextNode(wgUserLanguage == "he" ? "תרומות" : "contribs"), item.firstChild );
        contributions.appendChild ( document.createTextNode(", ") );

        var username = item.href.substring(item.href.lastIndexOf("/") + 1);

        item = document.createElement("a");
        item.href = "/w/index.php?title=Special:Log&type=upload&user=" + username;
        item.appendChild ( document.createTextNode(wgUserLanguage == "he" ? "העלאות" : "uploads") );
        item.title = wgUserLanguage == "he" ? "רשימת ההעלאות של משתמש זה" : "View the list of uploads of this user";
        contributions.appendChild ( item );
        contributions.appendChild ( document.createTextNode(", ") );

        item = document.createElement("a");
        item.href = "http://toolserver.org/~soxred93/count/index.php?name=" + username +
                    "&lang=" + wgContentLanguage + "&wiki=" + wgServer.replace(/^.+\.(.+)\.org$/,"$1");
        item.appendChild ( document.createTextNode(wgUserLanguage == "he" ? "סטטיסטיקות" : "stats") );
        item.title = wgUserLanguage == "he" ? "סטטיסטיקות של משתמש זה" : "View statistics of this user";
        contributions.appendChild ( item);

        contributions.appendChild ( document.createElement("br") );
        contributions.appendChild ( document.createTextNode(wgUserLanguage == "he" ? "גלובלי: " : "global: ") );

        item = document.createElement("a");
        item.href = "http://toolserver.org/~vvv/sulutil.php?user=" + username;
        item.appendChild ( document.createTextNode(wgUserLanguage == "he" ? "הרשאות" : "flags") );
        item.title = wgUserLanguage == "he" ? "ההרשאות של משתמש זה בכל מיזמי ויקי": "View the flags of this user in all wikis";
        contributions.appendChild ( item );
        contributions.appendChild ( document.createTextNode(", ") );

        item = document.createElement("a");
        item.href = "http://toolserver.org/~luxo/contributions/contributions.php?user=" + username + "&lang=en";
        item.appendChild ( document.createTextNode(wgUserLanguage == "he" ? "תרומות" : "contribs") );
        item.title = wgUserLanguage == "he" ? "התרומות של משתמש זה בכל מיזמי ויקי" : "View the list of contributions of this user in all wikis";
        contributions.appendChild ( item );

        item = document.getElementById("t-emailuser");
        if ( item )
            if ( wgTitle == wgUserName ) item.parentNode.removeChild ( item );
             else if ( wgUserLanguage == "he" ) item.getElementsByTagName("a")[0].replaceChild ( document.createTextNode("דואר אלקטרוני"), item.getElementsByTagName("a")[0].firstChild );
    }

//---
    var navbox = document.getElementById("p-navigation");
    if ( !navbox ) return;                                    // should never happen
    var navlist = navbox.getElementsByTagName("ul")[0];
    if ( !navlist ) return;                                   // should never happen

    var searchbox = document.getElementById("p-search");
    if ( searchbox && searchbox.nextSibling != navbox )       // move the search box before the navigation box
    {
        searchbox.parentNode.removeChild ( searchbox );
        navbox.parentNode.insertBefore ( searchbox, navbox );
    }

    var combox = document.getElementById("p-community");
    if ( combox )                   // move all links in the community box (if it exists) to the navigation box
    {
        for ( var item = combox.getElementsByTagName("li")[0] ; item ; item = combox.getElementsByTagName("li")[0] )
        {
            item.parentNode.removeChild ( item );
            navlist.appendChild ( item );
        }
        combox.style.display = "none";
    }

    var item = document.getElementById("n-village-pump");  // move village-pump link to the end of the nav box (possibly already there)
    if ( item )
    {
        item.parentNode.removeChild ( item );
        navlist.appendChild ( item );
    }

    item = document.getElementById("t-specialpages");      // move specialpages link to the end of the nav box
    if ( item )
    {
        item.parentNode.removeChild ( item );
        navlist.appendChild ( item );
    }

    item = document.getElementById("pt-watchlist");        // duplicate "my watchlist" link to the navigation box
    if ( item )
    {
        item = item.cloneNode(true);
        item.id = "n-watchlist";
        navlist.insertBefore ( item, navlist.firstChild );
    }

//---                                                      // display page version number instead of permanent link
    if ( !wgCurRevisionId ) return;                        // if there's no revision ID then this is a special page

    item = document.getElementById("t-permalink");         // קישור קבוע
    if ( item )
    {
        var displayedRevision = item.getElementsByTagName("a")[0].href.match(/&oldid=(\d+)/)[1];  // displayed version number
        while ( item.hasChildNodes() ) item.removeChild ( item.firstChild );
    }
     else
    {
        var versionInfo = document.getElementById("mw-diff-ntitle1");   // get displayed version info from diff view
        if ( !versionInfo ) return;

        var displayedRevision = versionInfo.getElementsByTagName("a")[0].href.match(/&oldid=(\d+)/)[1];  // displayed version number

        var toolbox = document.getElementById("p-tb");
        if ( !toolbox ) return;                                   // should never happen
        var toollist = toolbox.getElementsByTagName("ul")[0];
        if ( !toollist ) return;                                  // should never happen

        item = document.createElement("li");
        toollist.appendChild ( item );
    }

    if ( displayedRevision == wgCurRevisionId )
    {
        var span = document.createElement("span");
        span.appendChild ( document.createTextNode(wgCurRevisionId) );
        span.title = wgUserLanguage == "he" ? "גרסה אחרונה" : "last revision";
        item.appendChild ( span );
    }
    else
    {
        var span = document.createElement("span");
        span.appendChild ( document.createTextNode("(" + displayedRevision + ")") );
        span.title = wgUserLanguage == "he" ? "הגרסה המוצגת" : "displayed revision";
        item.appendChild ( span );
        item.appendChild ( document.createTextNode(" ") );

        var CurRevEdit = document.createElement("a");
        CurRevEdit.href = "/w/index.php?title=" + encodeTextToWikiURL(wgPageName) + "&action=edit";
        CurRevEdit.appendChild ( document.createTextNode(wgCurRevisionId) );
        CurRevEdit.title = wgUserLanguage == "he" ? "עריכת הגרסה האחרונה" : "edit the last revision";
        item.appendChild ( CurRevEdit );
    }
  }
 catch (e)
  {
    return;        // lets just ignore what's happened
  }
}

$ ( mkCustomizeSidebar );


// add links to the personal bar. written by [[User:Mikimik]]
function mkCustomizePersonalbar()
{
 try {
    if ( arguments.callee != mkCustomizePersonalbar ) return;          // if local function was reloaded let the newer function run

    gModifyList ("add", "p-personal", (wgUserLanguage == "he" ? "דפי משנה" : "subpages"), "/wiki/" + encodeTextToWikiURL("Special:PrefixIndex/User:" + wgUserName), "pt-subpages", "דפי המשנה שלי");

    if ( wgServer.indexOf("he.wikipedia") != -1 )                      // if local wiki is hebrew wikipedia
    {
        gModifyList ("add", "p-personal", "JS", "/wiki/" + encodeTextToWikiURL("Special:PrefixIndex/User:" + wgUserName + "/js"), "pt-js", "JS");

        var liNode = gModifyList ("add", "p-personal", "בקשות ממפעילים", "/wiki/" + encodeTextToWikiURL("ויקיפדיה:בקשות ממפעילים"), "pt-sysoprequests", "בקשות ממפעילים");
        if ( wgPageName == "ויקיפדיה:בקשות_ממפעילים" ) liNode.className = "active";
    }

    if ( wgContentLanguage != "he" ) return;                           // add scanboxes only on hebrew projects

    var sandbox = wgContentLanguage == "he" ? "ארגז_חול" : "sandbox";
    var liNode = gModifyList ("add", "p-personal", (wgUserLanguage == "he" ? "תזכורות" : "reminders"), "/w/index.php?title=" + encodeTextToWikiURL("User:" + wgUserName + "/" + sandbox) + "&action=edit", "pt-reminders", "התזכורות שלי");
    if ( wgPageName == wgFormattedNamespaces[2] + ":" + wgUserName + "/" + sandbox ) liNode.className = "active";

    for ( var i = 1 ; i <= 3 ; i++ )
    {
        var liNode = gModifyList ("add", "p-personal", "--"+i+"--", "/w/index.php?title=" + encodeTextToWikiURL("User:" + wgUserName + "/" + sandbox + i) + "&action=edit", "pt-sandbox" + i, sandbox.replace(/_/g," ") + " - " + i);
        if ( wgPageName == wgFormattedNamespaces[2] + ":" + wgUserName + "/" + sandbox + i ) liNode.className = "active";
    }
  }
  catch (e)
  {
    return;                 // lets just ignore what's happened
  }
}

$ ( mkCustomizePersonalbar );


/* ---- general function to add (remove) an item to (from) a list */
function gModifyList ( action, section, name, link, id, title, before )
{
 try {
    if ( action == "add" )
    {
        var node = document.getElementById(section)
                           .getElementsByTagName("ul")[0];

        if ( link )
        {
            var aNode = document.createElement("a");
            aNode.href = link;
        }
        else var aNode = document.createElement("span");

        if ( title ) aNode.title = title;

        aNode.appendChild (document.createTextNode(name));

        var liNode = document.createElement("li");
        if ( id ) liNode.id = id;
        liNode.appendChild (aNode);

        if ( before ) node.insertBefore ( liNode, document.getElementById(before) );
         else node.appendChild ( liNode );

        return liNode;
    }

    if ( action == "remove" )
    {
        if ( id )
        {
            var node = document.getElementById (id);
            node.parentNode.removeChild (node);
            return node;
        }
        else
        {
            var items = document.getElementById(section)
                                .getElementsByTagName("li");

            for ( var i = 0 ; i < items.length ; i++ )
                if ( ( items[i].getElementsByTagName("a")[0].innerHTML == name  ) ||
                     ( items[i].getElementsByTagName("a")[0].href      == link  ) ||
                     ( items[i].getElementsByTagName("a")[0].title     == title )    )
                {
                     items[i].parentNode.removeChild(items[i]);
                     return items[i];
                }
         }
    }

    return null;
  }
  catch(e)
  {
    return null;      // lets just ignore what's happened
  }
}