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

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

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

  • פיירפוקס / ספארי: להחזיק את המקש Shift בעת לחיצה על טעינה מחדש (Reload) או ללחוץ על צירוף המקשים Ctrl-F5 או Ctrl-R (במחשב מק: ⌘-R).
  • גוגל כרום: ללחוץ על צירוף המקשים Ctrl-Shift-R (במחשב מק: ⌘-Shift-R).
  • אינטרנט אקספלורר / אדג': להחזיק את המקש Ctrl בעת לחיצה על רענן (Refresh) או ללחוץ על צירוף המקשים Ctrl-F5.
  • אופרה: ללחוץ על Ctrl-F5.
/* חיפוש באמצעות שמות מרחב מקוצרים                              */
/* written by [[User:Yonidebest]], extended by [[User:Mikimik]] */
function searchInputCheck()
{
  try
  {
    var shortNS = new Array();
    shortNS[ 0] = [ false , "ד"   , "l"   , "Special:"               ];  // NS -1
    shortNS[ 1] = [ false , "תמ"  , "uc"  , "Special:Contributions/" ];  // NS -1
    shortNS[ 2] = [ true  , "ש"   , "k"   , "Talk:"                  ];  // NS  1
    shortNS[ 3] = [ true  , "מ"   , "u"   , "User:"                  ];  // NS  2
    shortNS[ 4] = [ true  , "שמ"  , "ut"  , "User_talk:"             ];  // NS  3
    shortNS[ 5] = [ true  , "ו"   , "p"   , "Project:"               ];  // NS  4
    shortNS[ 6] = [ true  , "שו"  , "pt"  , "Project_talk:"          ];  // NS  5
    shortNS[ 7] = [ true  , "קו"  , "f"   , "File:"                  ];  // NS  6
    shortNS[ 8] = [ true  , "שקו" , "ft"  , "File_talk:"             ];  // NS  7
    shortNS[ 9] = [ true  , "מו"  , "mw"  , "MediaWiki:"             ];  // NS  8
    shortNS[10] = [ true  , "שמו" , "mwt" , "MediaWiki_talk:"        ];  // NS  9
    shortNS[11] = [ true  , "ת"   , "t"   , "Template:"              ];  // NS  10
    shortNS[12] = [ true  , "שת"  , "tt"  , "Template_talk:"         ];  // NS  11
    shortNS[13] = [ true  , "ע"   , "h"   , "Help:"                  ];  // NS  12
    shortNS[14] = [ true  , "שע"  , "ht"  , "Help_talk:"             ];  // NS  13
    shortNS[15] = [ true  , "ק"   , "c"   , "Category:"              ];  // NS  14
    shortNS[16] = [ true  , "שק"  , "ct"  , "Category_talk:"         ];  // NS  15
    shortNS[17] = [ true  , "פ"   , "p"   , "פורטל:"                 ];  // NS  100, exists in hebrew wikipedia, quote & news
    shortNS[18] = [ true  , "שפ"  , "pt"  , "שיחת_פורטל:"            ];  // NS  101
    if ( wgContentLanguage != "he" )
    {
        shortNS[17][3] = "Portal:";
        shortNS[18][3] = "Portal_talk:";
    }

    var searchInput = document.getElementById("searchInput");
    var rxhe, rxen;

    for ( var i = 0 ; i < shortNS.length ; i++ )
    {
        rxhe = new RegExp("^" + shortNS[i][1] + "(;|:)");
        rxen = new RegExp("^" + shortNS[i][2] + "(;|:)", "i");
        if ( rxhe.test(searchInput.value) || rxen.test(searchInput.value) )
        {
            searchInput.value = searchInput.value.replace(rxhe,shortNS[i][3]).replace(rxen,shortNS[i][3]);
            return true;
        }

        if ( shortNS[i][0] )
        {
            rxhe = new RegExp("^ע" + shortNS[i][1] + "(;|:)");
            rxen = new RegExp("^e" + shortNS[i][2] + "(;|:)", "i");
            if ( rxhe.test(searchInput.value) || rxen.test(searchInput.value) )
            {
                document.location = mw.config.get('wgServer') + mw.config.get('wgScript') + "?title=" +
                                    searchInput.value.replace(rxhe,shortNS[i][3]).replace(rxen,shortNS[i][3]) + "&action=edit";
                return false;
            }

            rxhe = new RegExp("^ג" + shortNS[i][1] + "(;|:)");
            rxen = new RegExp("^v" + shortNS[i][2] + "(;|:)", "i");
            if ( rxhe.test(searchInput.value) || rxen.test(searchInput.value) )
            {
                document.location = mw.config.get('wgServer') + mw.config.get('wgScript') + "?title=" +
                                    searchInput.value.replace(rxhe,shortNS[i][3]).replace(rxen,shortNS[i][3]) + "&action=history";
                return false;
            }
        }
    }

    return true;
  }
  catch (e)
  {
    return true;
  }
}


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

    var form = document.getElementById("searchform");
    if ( !form ) return;

    form.onsubmit = function() { return searchInputCheck(); }
  }
  catch (e)
  {
    return true;
  }
}

$ ( hookSearchInputCheck );