મીડિયાવિકિ:Common.js

વિકિસૂક્તિમાંથી

નોંધ: પાનું પ્રકાશિત કર્યા પછી, તમારે તમારા બ્રાઉઝરની કૅશ બાયપાસ કરવાની આવશ્યકતા પડી શકે છે.

  • ફાયરફોક્સ / સફારી: શીફ્ટ દબાવેલી રાખીને રિલોડ પર ક્લિક કરો, અથવા તો Ctrl-F5 કે Ctrl-R દબાવો (મેક પર ⌘-R)
  • ગુગલ ક્રોમ: Ctrl-Shift-R દબાવો (મેક પર ⌘-Shift-R)
  • ઈન્ટરનેટ એક્સપ્લોરર/એજ: Ctrl દબાવેલી રાખીને રિફ્રેશ પર ક્લિક કરો, અથવા Ctrl-F5 દબાવો
  • Opera: Ctrl-F5 દબાવો
/* Any JavaScript here will be loaded for all users on every page load. */
/**
 * Interwiki links to featured articles
 *
 * Description: Highlights interwiki links to featured articles (or
 *              equivalents) by changing the bullet before the interwiki link
 *              into a star.
 * Maintainers: [[User:R. Koot]]
 */
function LinkFA() {
    if ( document.getElementById( "p-lang" ) ) {
        var InterwikiLinks = document.getElementById( "p-lang" ).getElementsByTagName( "li" );

        for ( var i = 0; i < InterwikiLinks.length; i++ ) {
            if ( document.getElementById( InterwikiLinks[i].className + "-fa" ) && InterwikiLinks[i].className.indexOf( "badge-featuredarticle" ) === -1 ) {
                InterwikiLinks[i].className += " FA";
                InterwikiLinks[i].title = "This is a featured article in another language.";
            }
        }
    }
}
$( LinkFA );

/**
 * Collapsible tables
 *
 * Description: Allows tables to be collapsed, showing only the header. See
 *              [[Wikipedia:NavFrame]].
 * Maintainers: [[User:R. Koot]]
 */

var autoCollapse = 2;
var collapseCaption = "છુપાવો";
var expandCaption = "બતાવો";


function collapseTable( tableIndex ) {
    var Button = document.getElementById( "collapseButton" + tableIndex );
    var Table = document.getElementById( "collapsibleTable" + tableIndex );

    if ( !Table || !Button ) {
        return false;
    }

    var Rows = Table.rows;

    if ( Button.firstChild.data == collapseCaption ) {
        for ( var i = 1; i < Rows.length; i++ ) {
            Rows[i].style.display = "none";
        }
        Button.firstChild.data = expandCaption;
    } else {
        for ( var i = 1; i < Rows.length; i++ ) {
            Rows[i].style.display = Rows[0].style.display;
        }
        Button.firstChild.data = collapseCaption;
    }
}

function createCollapseButtons() {
    var tableIndex = 0;
    var NavigationBoxes = {};
    var Tables = document.getElementsByTagName( "table" );

    for ( var i = 0; i < Tables.length; i++ ) {
        if ( $(Tables[i]).hasClass( "collapsible" ) ) {

            /* only add button and increment count if there is a header row to work with */
            var HeaderRow = Tables[i].getElementsByTagName( "tr" )[0];
            if (!HeaderRow) continue;
            var Header = HeaderRow.getElementsByTagName( "th" )[0];
            if (!Header) continue;

            NavigationBoxes[ tableIndex ] = Tables[i];
            Tables[i].setAttribute( "id", "collapsibleTable" + tableIndex );

            var Button     = document.createElement( "span" );
            var ButtonLink = document.createElement( "a" );
            var ButtonText = document.createTextNode( collapseCaption );

            Button.style.styleFloat = "right";
            Button.style.cssFloat = "right";
            Button.style.fontWeight = "normal";
            Button.style.textAlign = "right";
            Button.style.width = "6em";

            ButtonLink.style.color = Header.style.color;
            ButtonLink.setAttribute( "id", "collapseButton" + tableIndex );
            ButtonLink.setAttribute( "href", "javascript:collapseTable(" + tableIndex + ");" );
            ButtonLink.appendChild( ButtonText );

            Button.appendChild( document.createTextNode( "[" ) );
            Button.appendChild( ButtonLink );
            Button.appendChild( document.createTextNode( "]" ) );

            Header.insertBefore( Button, Header.childNodes[0] );
            tableIndex++;
        }
    }

    for ( var i = 0;  i < tableIndex; i++ ) {
        if ( $(NavigationBoxes[i]).hasClass( "collapsed" ) || ( tableIndex >= autoCollapse && $(NavigationBoxes[i]).hasClass( "autocollapse" ) ) ) {
            collapseTable( i );
        }
    }
}

$( createCollapseButtons );

/**
 * Dynamic Navigation Bars (experimental)
 *
 * Description: See [[Wikipedia:NavFrame]].
 * Maintainers: UNMAINTAINED
 */

 // set up the words in your language
 var NavigationBarHide = '[' + collapseCaption + ']';
 var NavigationBarShow = '[' + expandCaption + ']';

 // shows and hides content and picture (if available) of navigation bars
 // Parameters:
 //     indexNavigationBar: the index of navigation bar to be toggled
 function toggleNavigationBar(indexNavigationBar) {
    var NavToggle = document.getElementById("NavToggle" + indexNavigationBar);
    var NavFrame = document.getElementById("NavFrame" + indexNavigationBar);

    if (!NavFrame || !NavToggle) {
        return false;
    }

    // if shown now
    if (NavToggle.firstChild.data == NavigationBarHide) {
        for (
                var NavChild = NavFrame.firstChild;
                NavChild != null;
                NavChild = NavChild.nextSibling
            ) {
            if ( $(NavChild).hasClass( 'NavPic' ) ) {
                NavChild.style.display = 'none';
            }
            if ( $(NavChild).hasClass( 'NavContent') ) {
                NavChild.style.display = 'none';
            }
        }
    NavToggle.firstChild.data = NavigationBarShow;

    // if hidden now
    } else if (NavToggle.firstChild.data == NavigationBarShow) {
        for (
                var NavChild = NavFrame.firstChild;
                NavChild != null;
                NavChild = NavChild.nextSibling
            ) {
            if ($(NavChild).hasClass( 'NavPic')) {
                NavChild.style.display = 'block';
            }
            if ($(NavChild).hasClass( 'NavContent')) {
                NavChild.style.display = 'block';
            }
        }
    NavToggle.firstChild.data = NavigationBarHide;
    }
 }

 // adds show/hide-button to navigation bars
 function createNavigationBarToggleButton() {
    var indexNavigationBar = 0;
    // iterate over all < div >-elements
    var divs = document.getElementsByTagName("div");
    for(
            var i=0;
            NavFrame = divs[i];
            i++
        ) {
        // if found a navigation bar
        if ($(NavFrame).hasClass( "NavFrame")) {

            indexNavigationBar++;
            var NavToggle = document.createElement("a");
            NavToggle.className = 'NavToggle';
            NavToggle.setAttribute('id', 'NavToggle' + indexNavigationBar);
            NavToggle.setAttribute('href', 'javascript:toggleNavigationBar(' + indexNavigationBar + ');');

            var NavToggleText = document.createTextNode(NavigationBarHide);
            for (
                 var NavChild = NavFrame.firstChild;
                 NavChild != null;
                 NavChild = NavChild.nextSibling
                ) {
                if ( $(NavChild).hasClass( 'NavPic' ) || $(NavChild).hasClass( 'NavContent' ) ) {
                    if (NavChild.style.display == 'none') {
                        NavToggleText = document.createTextNode(NavigationBarShow);
                        break;
                    }
                }
            }

            NavToggle.appendChild(NavToggleText);
            // Find the NavHead and attach the toggle link (Must be this complicated because Moz's firstChild handling is borked)
            for(
              var j=0;
              j < NavFrame.childNodes.length;
              j++
            ) {
              if ($(NavFrame.childNodes[j]).hasClass( "NavHead")) {
                NavFrame.childNodes[j].appendChild(NavToggle);
              }
            }
            NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar);
        }
    }
 }

 $( createNavigationBarToggleButton );

/**
 * Extra toolbar options
 *
 * Description: UNDOCUMENTED
 * Maintainers: [[User:MarkS]]?, [[User:Voice of All]], [[User:R. Koot]]
 */
// This is a modified copy of a script by User:MarkS for extra features added by User:Voice of All.
// This is based on the original code on Wikipedia:Tools/Editing tools
if (mw.toolbar) {
  mw.toolbar.addButtons(
  {
    "imageFile": "//upload.wikimedia.org/wikipedia/en/c/c8/Button_redirect.png",
    "speedTip": "Redirect",
    "tagOpen": "#REDIRECT [[",
    "tagClose": "]]",
    "sampleText": "Insert text"
  },
  {
    "imageFile": "//upload.wikimedia.org/wikipedia/en/c/c9/Button_strike.png",
    "speedTip": "Strike",
    "tagOpen": "<s>",
    "tagClose": "</s>",
    "sampleText": "Strike-through text"
  },
  {
    "imageFile": "//upload.wikimedia.org/wikipedia/en/1/13/Button_enter.png",
    "speedTip": "Line break",
    "tagOpen": "<br />",
    "tagClose": "",
    "sampleText": ""
  },
  {
    "imageFile": "//upload.wikimedia.org/wikipedia/en/8/80/Button_upper_letter.png",
    "speedTip": "Superscript",
    "tagOpen": "<sup>",
    "tagClose": "</sup>",
    "sampleText": "Superscript text"
  },
  {
    "imageFile": "//upload.wikimedia.org/wikipedia/en/7/70/Button_lower_letter.png",
    "speedTip": "Subscript",
    "tagOpen": "<sub>",
    "tagClose": "</sub>",
    "sampleText": "Subscript text"
  },
  {
    "imageFile": "//upload.wikimedia.org/wikipedia/en/5/58/Button_small.png",
    "speedTip": "Small",
    "tagOpen": "<small>",
    "tagClose": "</small>",
    "sampleText": "Small Text"
  },
  {
    "imageFile": "//upload.wikimedia.org/wikipedia/en/3/34/Button_hide_comment.png",
    "speedTip": "Insert hidden Comment",
    "tagOpen": "<!-- ",
    "tagClose": " -->",
    "sampleText": "Comment"
  },
  {
    "imageFile": "//upload.wikimedia.org/wikipedia/en/1/12/Button_gallery.png",
    "speedTip": "Insert a picture gallery",
    "tagOpen": "\n<gallery>\n",
    "tagClose": "\n</gallery>",
    "sampleText": "Image:Example.jpg|Caption1\nImage:Example.jpg|Caption2"
  },
  {
    "imageFile": "//upload.wikimedia.org/wikipedia/en/f/fd/Button_blockquote.png",
    "speedTip": "Insert block of quoted text",
    "tagOpen": "<blockquote>\n",
    "tagClose": "\n</blockquote>",
    "sampleText": "Block quote"
  },
  {
    "imageFile": "//upload.wikimedia.org/wikipedia/en/6/60/Button_insert_table.png",
    "speedTip": "Insert a table",
    "tagOpen": '{| class="wikitable"\n|-\n',
    "tagClose": "\n|}",
    "sampleText": "! header 1\n! header 2\n! header 3\n|-\n| row 1, cell 1\n| row 1, cell 2\n| row 1, cell 3\n|-\n| row 2, cell 1\n| row 2, cell 2\n| row 2, cell 3"
  },
  {
    "imageFile": "//upload.wikimedia.org/wikipedia/commons/7/79/Button_reflink.png",
    "speedTip": "Insert a reference",
    "tagOpen": "<ref>",
    "tagClose": "</ref>",
    "sampleText": "Insert footnote text here"
  }
  );
}

/*</nowiki>*/

/** "Technical restrictions" title fix *****************************************
*
* Description:
* Maintainers: User:Interiot, User:Mets501, User:Freakofnurture
*/
//
// For pages that have something like Template:Lowercase, replace the title, but only if it is cut-and-pasteable as a valid wikilink.
// (for instance iPod's title is updated. But [[C#]] is not an equivalent
// wikilink, so [[C Sharp]] doesn't have its main title changed)
// Likewise for users who have selected the U.K. date format ("1 March") the
// titles of day-of-the-year articles will appear in that style. Users with any
// other date setting are not affected.
//
// The function looks for a banner like this:
// &lt;div id="RealTitleBanner"&gt;  ... &lt;span id="RealTitle"&gt;title&lt;/span&gt; ... &lt;/div&gt;
// An element with id=DisableRealTitle disables the function.
//
var disableRealTitle = 0; // users can set disableRealTitle = 1 locally to disable.
if (mw.config.get('wgIsArticle')) { // don't display the RealTitle when editing, since it is apparently inconsistent (doesn't show when editing sections, doesn't show when not previewing)
 $(function() {
   try {
       var realTitleBanner = document.getElementById("RealTitleBanner");
       if (realTitleBanner && !document.getElementById("DisableRealTitle") && !disableRealTitle ) {
           var realTitle = document.getElementById("RealTitle");
           if (realTitle) {
               var realTitleHTML = realTitle.innerHTML;
               realTitleText = $(realTitle).text();

               var isPasteable = 0;
               //var containsHTML = /</.test(realTitleHTML);    // contains ANY HTML
               var containsTooMuchHTML = /</.test( realTitleHTML.replace(/<\/?(sub|sup|small|big)>/gi, "") ); // contains HTML that will be ignored when cut-n-pasted as a wikilink
               // calculate whether the title is pasteable
               var verifyTitle = realTitleText.replace(/^ +/, "");       // trim left spaces
               verifyTitle = verifyTitle.charAt(0).toUpperCase() + verifyTitle.substring(1, verifyTitle.length);    // uppercase first character

               // if the namespace prefix is there, remove it on our verification copy. If it isn't there, add it to the original realValue copy.
               if (mw.config.get('wgNamespaceNumber') !== 0) {
                   if (mw.config.get('wgCanonicalNamespace') == verifyTitle.substr(0, mw.config.get('wgCanonicalNamespace').length).replace(/ /g, "_") && verifyTitle.charAt(mw.config.get('wgCanonicalNamespace').length) == ":") {
                       verifyTitle = verifyTitle.substr(mw.config.get('wgCanonicalNamespace').length + 1);
                   } else {
                       realTitleText = mw.config.get('wgCanonicalNamespace').replace(/_/g, " ") + ":" + realTitleText;
                       realTitleHTML = mw.config.get('wgCanonicalNamespace').replace(/_/g, " ") + ":" + realTitleHTML;
                   }
               }

               // verify whether wgTitle matches
               verifyTitle = verifyTitle.replace(/[\s_]+/g, " ");      // underscores and multiple spaces to single spaces
               verifyTitle = verifyTitle.replace(/^\s+/, "").replace(/\s+$/, "");        // trim left and right spaces
               verifyTitle = verifyTitle.charAt(0).toUpperCase() + verifyTitle.substring(1, verifyTitle.length);    // uppercase first character
               if ( (verifyTitle == mw.config.get('wgTitle')) || (verifyTitle == mw.config.get('wgTitle').replace(/^(.+)?(January|February|March|April|May|June|July|August|September|October|November|December)\s+([12]?[0-9]|3[0123])([^\d].*)?$/g, "$1$3 $2$4") )) isPasteable = 1;
               var h1 = document.getElementsByTagName("h1")[0];
               if (h1 && isPasteable) {
                   h1.innerHTML = containsTooMuchHTML ? realTitleText : realTitleHTML;
                   if (!containsTooMuchHTML)
                       realTitleBanner.style.display = "none";
               }
               document.title = realTitleText + " - Wikipedia, the free encyclopedia";
           }
       }
   } catch (e) {
       /* Something went wrong. */
   }
 });
}

//fix edit summary prompt for undo
//this code fixes the fact that the undo function combined with the "no edit summary prompter" causes problems if leaving the
//edit summary unchanged
//this was added by [[User:Deskana]], code by [[User:Tra]]
$(function () {
  if (document.location.search.indexOf("undo=") != -1 &&
  document.getElementsByName('wpAutoSummary')[0]) {
    document.getElementsByName('wpAutoSummary')[0].value='1';
  }
});

/** Add dismiss button to watchlist-message *************************************
 *
 *  Description: Hide the watchlist message for one week.
 *  Maintainers: [[User:Ruud Koot|Ruud Koot]]
 */

function addDismissButton() {
   var watchlistMessage = document.getElementById("watchlist-message");
   if ( watchlistMessage == null ) return;
   var watchlistCookieID = watchlistMessage.className.replace(/cookie\-ID\_/ig,'');

   if ( document.cookie.indexOf( "hidewatchlistmessage-" + watchlistCookieID + "=yes" ) != -1 ) {
       watchlistMessage.style.display = "none";
   }

   var Button     = document.createElement( "span" );
   var ButtonLink = document.createElement( "a" );
   var ButtonText = document.createTextNode( "dismiss" );

   ButtonLink.setAttribute( "id", "dismissButton" );
   ButtonLink.setAttribute( "href", "javascript:dismissWatchlistMessage();" );
   ButtonLink.setAttribute( "title", "Hide this message for one week" );
   ButtonLink.appendChild( ButtonText );

   Button.appendChild( document.createTextNode( "[" ) );

   watchlistMessage.appendChild( Button );
}

function dismissWatchlistMessage() {
   var e = new Date();
   e.setTime( e.getTime() + (7*24*60*60*1000) );
   var watchlistMessage = document.getElementById("watchlist-message");
   var watchlistCookieID = watchlistMessage.className.replace(/cookie\-ID\_/ig,'');
   document.cookie = "hidewatchlistmessage-" + watchlistCookieID + "=yes; expires=" + e.toGMTString() + "; path=/";
   watchlistMessage.style.display = "none";
}

$( addDismissButton );

/**
* WikiMiniAtlas is a popup click and drag world map.
* See [[meta:WikiMiniAtlas]] for more information.
* Maintainers: [[w:User:Dschwen]]
*/
mw.loader.load('//meta.wikimedia.org/w/index.php?title=MediaWiki:Wikiminiatlas.js&action=raw&ctype=text/javascript&smaxage=21600&maxage=86400');


/**
 * Remove need for CSS hacks regarding MSIE and IPA.
 */

if(navigator.userAgent.indexOf("MSIE") != -1 && document.createStyleSheet) {
  document.createStyleSheet().addRule('.IPA', 'font-family: "Doulos SIL", "Charis SIL", Gentium, "DejaVu Sans", Code2000, "TITUS Cyberbit Basic", "Arial Unicode MS", "Lucida Sans Unicode", "Chrysanthi Unicode";');
}

//for including Wikidata items in search results (વિકિડેટાના શોધ પરિણામો દર્શાવવા માટે...)...
mw.loader.load("//en.wikipedia.org/w/index.php?title=MediaWiki:Wdsearch.js&action=raw&ctype=text/javascript");


//Fix "Upload file" link when using the secure proxy
//This is a workaround that can be removed when bug 10843 is fixed
$(function() {
   if (document.getElementById("t-upload")) {
       document.getElementById("t-upload").getElementsByTagName("a")[0].href = mw.config.get('wgArticlePath').replace("$1", "Special:Upload");
   }
});

/********** TRANSLITERATON **********/
//modified the version of spacebirdy (૧૬:૪૯, ૧૭ માર્ચ ૨૦૦૮ Spacebirdy (ચર્ચા | યોગદાન | block)) on 28/03/2008. If any difficulty faced later, please revert back to the above version, it was perfactly ok for gu.wiki.

// Ignored as it causes issue with ULS See [[વિકિપીડિયા:ચોતરો#Translitration_in_common.js]]
//mw.loader.load('//gu.wikipedia.org/w/index.php?title=MediaWiki:Translit.js&action=raw&ctype=text/javascript');


//importing scrpt from new.wikipedia: (if you don't want it from there delete the text below and use the link above)

//below old (translitguj.js) file is removed from the path and the above (local) one is used instead, below still exists, so if needed in future, the link can be used.


function addTranslit(editForm,textBox){
  checkrt(editForm);

     if (textBox.addEventListener)
         textBox .addEventListener("keypress", processKeys, false);
     else if (textBox .attachEvent)
         textBox.attachEvent("onkeypress", processKeys);
}

function addTextEvent() {
  var editForm =document.editform;
  if(document.editform){
    var textBox=document.editform.wpTextbox1;
    addTranslit(editForm,textBox);
    addCheckbox(editForm,textBox );
  }
  var searchform=document.getElementById('searchform');

  var searchInput=document.getElementById('searchInput');
  if(searchInput)
  addTranslit(searchform,searchInput);

}

function addCheckbox(editform,textBox ){
    var element = document.createElement("input");
    element.setAttribute("type","checkbox");
    element.setAttribute("id","realtime");


    if (element.addEventListener)
               element.addEventListener("click", rtClick, false);
            else if (element.attachEvent)
               element.attachEvent("onclick", rtClick);

    var labelcheckBox = document.createTextNode('ગુજરાતીમાં લખવા માટે આ ખાનામાં ક્લિક કરીને ખરાની નિશાની કરો અને અંગ્રેજીમાં લખવા માટે તેને કાઢી નાંખો (Check box to write in Gujrati and uncheck to write in English)');

    editform.insertBefore(element,textBox);
    document.getElementById("realtime").checked = realTime;
    editform.insertBefore(labelcheckBox,textBox);
}

function processKeys(event) {
    if (rtsupported)
    { if (event.keyCode == 27 && !isExplorer()) {
    //escape to toggle

    realTime = !realTime;
    document.getElementById("realtime").checked = realTime;

    }

    else if (realTime) translitonkey(event);
    }
}

var realTime = true;
function rtClick(event) {
    realTime = !realTime;
}

var rtsupported = false;
var error;
function checkrt(editform){
    try {
      rtsupported = (document.selection !== undefined);

      if (!rtsupported) {
        var element = document.createElement("TEXTAREA");
        editform.appendChild(element);
      if (element.selectionStart !== undefined)
        rtsupported = true;
        editform.removeChild(element);
      }

    } catch (error) {
    }
}
$(window).on('load', addTextEvent);

// [[d:User:Yair rand/WikidataInfo.js]]
mw.loader.load("//www.wikidata.org/w/index.php?title=User:Yair rand/WikidataInfo.js&action=raw&ctype=text/javascript");

// [[File:Krinkle_RTRC.js]]
mw.loader.load('//meta.wikimedia.org/w/index.php?title=User:Krinkle/RTRC.js&action=raw&ctype=text/javascript');