MediaWiki:Common.js

Wikipedia Minangkabau - Lubuak aka tapian ilimu

Catatan: Sasudah manabikkan, Sanak mungkin harus meminteh singgahan paramban Sanak untuak maliek parubahan.

  • Firefox / Safari: Tahan Shift sambia mangklik Reload, atau takan Ctrl-F5 atau Ctrl-R (⌘-R di Mac)
  • Google Chrome: Takan Ctrl-Shift-R (⌘-Shift-R di Mac)
  • Internet Explorer/Edge: Tahan Ctrl sambia mangklik Refresh, atau takan Ctrl-F5
  • Opera: Pai ka Menu → Settings (Opera → Preferences di Mac) lalu ka Privacy & security → Clear browsing data → Cached images and files.
/* JavaScript yang ada di sini akan diterapkan untuk semua kulit. */

/** Lowcase Title *******************************************************
  *
  *  Deskripsi:  Membuat judul halaman dengan huruf pertama kecil
  *              Lihat [[Templat:Judul]].
  *  Pemelihara: Admin
  */

 if (document.URL.indexOf("=edit") > 0 || document.URL.indexOf("=submit") > 0) {var noJS;}
 else { /*
      mw.util.addCSS('#title-override {display: none; speak: none;}');
      function pTitle() {
           if (document.getElementById("title-override")) {
                var pTitle = document.getElementById("pTitle").innerHTML;
                document.getElementsByTagName("h1")[0].innerHTML = pTitle;
           }
      }
      // hookEvent("load", pTitle);
 */ }
 
/** LinkFA & LinkGA *******************************************************
  *
  *  Deskripsi:  Menambahkan ikon bintang untuk interwiki ke artikel yang 
  *              merupakan artikel pilihan di wiki tujuan
  *              Lihat [[Templat:LinkFA]].
  *              Menambahkan ikon artikel bagus untuk interwiki ke artikel yang 
  *              merupakan artikel bagus di wiki tujuan
  *              Lihat [[Templat:LinkGA]].
  *  Pemelihara: Admin
  */
  
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 = 'Iko ko artikel piliahan pado Wikipedia lain.';
            } else if ( document.getElementById( InterwikiLinks[i].className + '-ga' ) && InterwikiLinks[i].className.indexOf( 'badge-goodarticle' ) === -1 ) {
                InterwikiLinks[i].className += ' GA';
                InterwikiLinks[i].title = 'Iko ko artikel rancak pado Wikipedia lain.';
            }
        }
    }
}
$( LinkFA );

/** InterProject *******************************************************
  *
  *  Deskripsi:  Membuat pranala-pranala di menu samping (seperti interwiki)
  *              ke proyek-proyek Wikimedia yang lain
  *              Lihat [[Templat:Interproyek]].
  *  Pemelihara: Admin
  */
 mw.loader.using(['mediawiki.util']).then(function() {
 	mw.util.addCSS('#interProyek {display: none; speak: none;}');
 });
 function iProject() {
     if (document.getElementById("interProyek")) {
          var iProject = '<div id="p-ipj"><h3>Wikipedia bahaso nan lain<\/h3><div class="body">' + $("#interProyek").html() + '</div></div>';
          $("#mw-panel").append(iProject);
          $("#p-ipj").addClass("portal"); 
          $("#p-ipj").addClass("expanded"); 
          $("#p-ipj").attr("role","navigation"); 
     }
 }
 $(iProject);

/**
 * Collapsible tables *********************************************************
 *
 * Description: Allows tables to be collapsed, showing only the header. See
 *              [[Wikipedia:NavFrame]].
 * Maintainers: [[User:R. Koot]]
 */
 
var autoCollapse = 2;
var collapseCaption = 'suruakan';
var expandCaption = 'nampakan';
 
window.collapseTable = function ( tableIndex ) {
    var Button = document.getElementById( 'collapseButton' + tableIndex );
    var Table = document.getElementById( 'collapsibleTable' + tableIndex );
 
    if ( !Table || !Button ) {
        return false;
    }
 
    var Rows = Table.rows;
    var i;
 
    if ( Button.firstChild.data === collapseCaption ) {
        for ( i = 1; i < Rows.length; i++ ) {
            Rows[i].style.display = 'none';
        }
        Button.firstChild.data = expandCaption;
    } else {
        for ( 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' );
    var i;
 
    function handleButtonLink( index, e ) {
        window.collapseTable( index );
        e.preventDefault();
    }
 
    for ( 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.className = 'collapseButton';  /* Styles are declared in Common.css */
 
            ButtonLink.style.color = Header.style.color;
            ButtonLink.setAttribute( 'id', 'collapseButton' + tableIndex );
            ButtonLink.setAttribute( 'href', '#' );
            $( ButtonLink ).on( 'click', $.proxy( handleButtonLink, ButtonLink, tableIndex ) );
            ButtonLink.appendChild( ButtonText );
 
            Button.appendChild( document.createTextNode( '[' ) );
            Button.appendChild( ButtonLink );
            Button.appendChild( document.createTextNode( ']' ) );
 
            Header.insertBefore( Button, Header.firstChild );
            tableIndex++;
        }
    }
 
    for ( i = 0;  i < tableIndex; i++ ) {
        if ( $( NavigationBoxes[i] ).hasClass( 'collapsed' ) || ( tableIndex >= autoCollapse && $( NavigationBoxes[i] ).hasClass( 'autocollapse' ) ) ) {
            window.collapseTable( i );
        } 
        else if ( $( NavigationBoxes[i] ).hasClass ( 'innercollapse' ) ) {
            var element = NavigationBoxes[i];
            while ((element = element.parentNode)) {
                if ( $( element ).hasClass( 'outercollapse' ) ) {
                    window.collapseTable ( i );
                    break;
                }
            }
        }
    }
}
 
$( 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
 **/
window.toggleNavigationBar = function ( indexNavigationBar, event ) {
    var NavToggle = document.getElementById( 'NavToggle' + indexNavigationBar );
    var NavFrame = document.getElementById( 'NavFrame' + indexNavigationBar );
    var NavChild;
 
    if ( !NavFrame || !NavToggle ) {
        return false;
    }
 
    /* if shown now */
    if ( NavToggle.firstChild.data === NavigationBarHide ) {
        for ( NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) {
            if ( $( NavChild ).hasClass( 'NavContent' ) || $( NavChild ).hasClass( 'NavPic' ) ) {
                NavChild.style.display = 'none';
            }
        }
    NavToggle.firstChild.data = NavigationBarShow;
 
    /* if hidden now */
    } else if ( NavToggle.firstChild.data === NavigationBarShow ) {
        for ( NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) {
            if ( $( NavChild ).hasClass( 'NavContent' ) || $( NavChild ).hasClass( 'NavPic' ) ) {
                NavChild.style.display = 'block';
            }
        }
        NavToggle.firstChild.data = NavigationBarHide;
    }
 
    event.preventDefault();
};
 
/* adds show/hide-button to navigation bars */
function createNavigationBarToggleButton() {
    var indexNavigationBar = 0;
    var NavFrame;
    var NavChild;
    /* 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', '#' );
            $( NavToggle ).on( 'click', $.proxy( window.toggleNavigationBar, window, indexNavigationBar ) );
 
            var isCollapsed = $( NavFrame ).hasClass( 'collapsed' );
            /**
             * Check if any children are already hidden.  This loop is here for backwards compatibility:
             * the old way of making NavFrames start out collapsed was to manually add style="display:none"
             * to all the NavPic/NavContent elements.  Since this was bad for accessibility (no way to make
             * the content visible without JavaScript support), the new recommended way is to add the class
             * "collapsed" to the NavFrame itself, just like with collapsible tables.
             */
            for ( NavChild = NavFrame.firstChild; NavChild != null && !isCollapsed; NavChild = NavChild.nextSibling ) {
                if ( $( NavChild ).hasClass( 'NavPic' ) || $( NavChild ).hasClass( 'NavContent' ) ) {
                    if ( NavChild.style.display === 'none' ) {
                        isCollapsed = true;
                    }
                }
            }
            if ( isCollapsed ) {
                for ( NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) {
                    if ( $( NavChild ).hasClass( 'NavPic' ) || $( NavChild ).hasClass( 'NavContent' ) ) {
                        NavChild.style.display = 'none';
                    }
                }
            }
            var NavToggleText = document.createTextNode( isCollapsed ? NavigationBarShow : NavigationBarHide );
            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' ) ) {
                    NavToggle.style.color = NavFrame.childNodes[j].style.color;
                    NavFrame.childNodes[j].appendChild( NavToggle );
                }
            }
            NavFrame.setAttribute( 'id', 'NavFrame' + indexNavigationBar );
        }
    }
}
 
$( createNavigationBarToggleButton );

/** Stripe *******************************************************
  *  
  *  Deskripsi:  Membuat tabel berwarna latar berselang-seling
  *              Lihat [[Bantuan:Tabel]]
  *  Pemelihara: Admin
  */

 function stripe()
 {
 // This function will add stripes to all tables that have the "wikitable-striped" class attribute.
 var tables = document.getElementsByTagName("table");
 for (var a = 0; a != tables.length; a++) {
      var table = tables[a];
      if (!table) { return; } // If there are no tables, abort.
      if (table.getAttribute("class") == "tabelcantik") {
           var tbodies = table.getElementsByTagName("tbody");
           for (var b = 0; b < tbodies.length; b++) {
                var even = true; // We start with an even stripe.
                var trs = tbodies[b].getElementsByTagName("tr");
                for (var c = 0; c < trs.length; c++) {
                     if (even) {
                          trs[c].className += "even";
                     } else {
                          trs[c].className += "odd";
                     }
                     even = !even;
                }
           }
      } else
      if (table.getAttribute("class") == "tabelcantikcyan") {
           var tbodies = table.getElementsByTagName("tbody");
           for (var b = 0; b < tbodies.length; b++) {
                var even = true; // We start with an even stripe.
                var trs = tbodies[b].getElementsByTagName("tr");
                for (var c = 0; c < trs.length; c++) {
                     if (even) {
                          trs[c].className += "evencyan";
                     } else {
                          trs[c].className += "oddcyan";
                     }
                     even = !even;
                }
           }
      } else
      if (table.getAttribute("class") == "tabelcantikmerah") {
           var tbodies = table.getElementsByTagName("tbody");
           for (var b = 0; b < tbodies.length; b++) {
                var even = true; // We start with an even stripe.
                var trs = tbodies[b].getElementsByTagName("tr");
                for (var c = 0; c < trs.length; c++) {
                     if (even) {
                          trs[c].className += "evenmerah";
                     } else {
                          trs[c].className += "oddmerah";
                     }
                     even = !even;
                }
           }
      }
 }
 }
 // Perform the striping.
 $(stripe);
 
 /** Portlet tambahan *******************************************************
  * 
  *  Deskripsi:  Menambah tombol/portlet tambahan di halaman-halaman wiki
  *              
  *  Pemelihara: [[Pengguna:Kenrick95]]
  */
 function addPL( PLplace, PLlink, PLtext, PLid, PLtitle) {
	var PLtempplace=PLplace;
	var PLinside = '<li id="' + PLid + '" title="' + PLtitle + '"><a href="'+ PLlink +'"> ' + PLtext + '</a></li>';
	$(PLtempplace).append(PLinside);
 }

 /** Portlet tambahan/Jumlah suntingan *******************************************************
  * 
  *  Deskripsi:  Menambah tombol/portlet tambahan berupa jumlah suntingan pengguna
  *              Letak: di bawah menu Konribusi di halaman pengguna
  *              
  *  Pemelihara: [[Pengguna:Kenrick95]]
  */
 function addEditcountPortlet() {
  if ( document.getElementById("t-contributions") ) {
   var sServer = 'minwiki';
   switch ( mw.config.get('wgServer') ) {
    case 'http://min.wikipedia.org':
     sServer = 'minwiki';
     break;
   }
   var sText = 'Statistik pangguno';
   var sLink = 'https://toolserver.org/~vvv/yaec.php?wiki=minwiki_p' +
    '&user=' + mw.config.get('wgTitle');
   addPL( '#p-tb .body ul', sLink, sText, 't-editcount',  'Jumlah suntiangan' );
  }
 }
 // $( addEditcountPortlet ); // 404 Not Found - https://toolserver.org/~vvv/yaec.php

 /** Portlet tambahan/Sunting bagian 0 *******************************************************
  * 
  *  Deskripsi:  Menambah tombol/portlet tambahan berupa tombol menyunting bagian 0 halaman
  *              Letak: di dalam drop-down menu di antara kotak pencarian dan 
  *                     tombol pantau halaman
  *              
  *  Pemelihara: [[Pengguna:Kenrick95]]
  */
 function addEdittopPortletLink() {
  if(mw.config.get('wgCanonicalNamespace') == 'Special') return;
  if(document.getElementById("wikiPreview")) return;
  if(document.getElementById("histlegend‎")) return;
  if(document.getElementById("difference‎")) return;
  if(document.getElementById("watchdetails")) return;
  if ( document.getElementById( "ca-edit" ) ) {
   var sElm = document.getElementById( "ca-addsection" ) ? 'ca-addsection' : 'ca-edit';
   var sText = '↑';
   var sLink = mw.config.get('wgScriptPath') + "/index.php?title=" + mw.config.get('wgPageName') +
    "&action=edit&section=0";
   addPL( '#p-cactions .menu ul', sLink, sText, 'ca-edittop', 'Suntiang ateh laman ko' );
  }
 }
 $( addEdittopPortletLink );
 
  /** Notice di [[Wikipedia:Bak pasir]] dan [[Pembicaraan Wikipedia:Bak pasir]]  *******
  * 
  *  Deskripsi:  Menambah notice-box di [[Wikipedia:Bak pasir]] dan 
  *              [[Pembicaraan Wikipedia:Bak pasir]]
  *              
  *  Pemelihara: [[Pengguna:Bennylin]]
  */
 function sandboxNotice() {
     var notice = document.createElement('div');
     document.getElementById('bodyContent').insertBefore(notice, document.getElementById('jump-to-nav').nextSibling);
     $.get(
         '//min.wikipedia.org/w/index.php?title=Templat:Bak_kasiak&action=render',
         function (data) {
             notice.innerHTML = data;
         }
     );
 }
 if (["view", "edit", "submit"].indexOf(mw.config.get('wgAction')) > -1 &&	
     ["Wikipedia:Bak_kasiak", "Rundiang_Wikipedia:Bak_kasiak"].indexOf(mw.config.get('wgPageName')) > -1) {
     sandboxNotice();
 }
  /** Notice di halaman-halaman pembicaraan  *******
  * 
  *  Deskripsi:  Menambah notice-box di ruang nama 1
  *              
  *  Pemelihara: [[Pengguna:Bennylin]]
  */
 function talkpageNotice() {
 notice = document.createElement('div');
 document.getElementById('bodyContent').insertBefore(notice, document.getElementById('jump-to-nav').nextSibling);
 /*noticeLoader = sajax_init_object();
 noticeLoader.open('GET', '//min.wikipedia.org/w/index.php?title=Templat:Talkheader/core&action=render', true);
 noticeLoader.onreadystatechange = function()
    {
        if (noticeLoader.readyState == 4 && noticeLoader.status == 200) {
            notice.innerHTML = noticeLoader.responseText;
        }
    };
 noticeLoader.send('');*/
 }
 if (mw.config.get('wgAction').match(/edit|submit/)) {
    $(function() {
        if (document.getElementsByTagName('body')[0].className.match(/ns-1 /)) {
            return talkpageNotice();
        }
    });
 }
 
/**
 * WikiMiniAtlas
 *
 * Description: WikiMiniAtlas is a popup click and drag world map.
 *              This script causes all of our coordinate links to display the WikiMiniAtlas popup button.
 *              The script itself is located on meta because it is used by many projects.
 *              See [[Meta:WikiMiniAtlas]] for more information. 
 * Maintainers: [[User:Dschwen]]
 */

mw.loader.load("//meta.wikimedia.org/w/index.php?title=MediaWiki:Wikiminiatlas.js&action=raw&ctype=text/javascript")
 
/** Skrip tambahan  *******************************************************
 * Deskripsi: Skrip tambahan untuk kelas .hlist di common.css
 * Pemelihara: [[User:Edokter]]
 */
 
if ( $.client.profile().name == 'msie' ) {
  /* remove interpunct from last list items in IE 8 */
  if ( $.client.profile().versionBase == '8' ) {
    $( '.hlist' ).find( 'dd:last-child, dt:last-child, li:last-child' )
      .addClass( 'nopunct' );
  }
}
 
/**
 * Réécriture des titres
 *
 * Fonction utilisée par [[Modèle:Titre incorrect]]
 *
 * La fonction cherche un bandeau de la forme
 * <div id="RealTitleBanner">
 *   <span id="RealTitle">titre</span>
 * </div>
 *
 * Un élément comportant id="DisableRealTitle" désactive la fonction
 */
function rewritePageH1() {
  var realTitleBanner = document.getElementById('RealTitleBanner');
  if (realTitleBanner) {
    if (!document.getElementById('DisableRealTitle')) {
      var realTitle = document.getElementById('RealTitle');
      var h1 = document.getElementById('firstHeading');
      if(!h1) h1 = document.getElementsByTagName('h1')[0]; // Nostalgia, Standar
      var realH1 = getTextContent(h1);
      if (realTitle && h1) {
        var titleText = realTitle.innerHTML;
        if (titleText == '') h1.style.display = 'none';
        else h1.innerHTML = titleText;
        realTitleBanner.style.display = 'none';
        var avert = document.createElement('p')
        avert.style.fontSize = '80%';
        avert.innerHTML = 'Judul nan ka digunoan untuak mambuek pautan pipa: <b>'+realH1.HTMLize()+'</b>';
        insertAfter(h1.parentNode,avert,h1);
      }
    }
  }
}

// Results from Wikidata
// [[File:Wdsearch_script_screenshot.png]]
if ( mw.config.get( 'wgCanonicalSpecialPageName' ) === 'Search' ||  ( mw.config.get( 'wgArticleId' ) === 0 && mw.config.get( 'wgCanonicalSpecialPageName' ) === false ) ) {
        mw.loader.load("//en.wikipedia.org/w/index.php?title=MediaWiki:Wdsearch.js&action=raw&ctype=text/javascript");
}

/* DO NOT ADD CODE BELOW THIS LINE */