MédhiaWiki:Common.js: Béda antarané révisi

Konten dihapus Konten ditambahkan
Meursault2004 (dopokan | kontrib)
anyar
(Ora ana béda)

Revisi per 24 Maret 2011 06.53

/**

JavaScript sing ana ing kéné bakal diterapaké kanggo kabèh kulit.
__TOC__
== Deklarasi variabel ==
 
 Variabel-variabel yang dipakai secara global */

 var ScriptPrefix = '<script type="text/javascript" src="/w/index.php?title=';
 var ScriptSuffix = '&action=raw&ctype=text/javascript&dontcountme=s"></script>';
 var LoadInterProject = true;
 var LoadLinkFA = true;
 var LoadNavFrame = true;
 var load_edittools = true;
 var LoadExtraPortlet = true;
 var LoadStripe = true;
 var LoadEditTop = true;
 var LoadExtraEditButtons = true;
 var load_extratabs = false;
 var LoadPageCounter = false;

/**
== Variabel saklar per pengguna ==
 
 Ubah [[Istimewa:Mypage/switches.js]] untuk mengatur fitur yang ingin Anda
 aktifkan atau matikan */

 document.write( ScriptPrefix + 'Pengguna:' + wgUserName + '/switches.js' + ScriptSuffix );

/**
== Library functions ==
 
 Librari fungsi yang digunakan oleh fungsi-fungsi lain. 
 ** Untuk sementara di-remark karena menyebabkan fungsi-fungsi lainnya tidak berfungsi di Firefox3 - (borgx 26 Juni 2008)
 */

 // Fix tampilan untuk IE
 /* 
 if (window.showModalDialog && document.compatMode && document.compatMode == "CSS1Compat")
 {
     var oldWidth;
     var docEl = document.documentElement;
     function fixIEScroll()
     {
          if (!oldWidth || docEl.clientWidth > oldWidth)
               doFixIEScroll();
          else
               setTimeout(doFixIEScroll, 1);  
          oldWidth = docEl.clientWidth;
     }
     function doFixIEScroll() {
          docEl.style.overflowX = (docEl.scrollWidth - docEl.clientWidth < 4) ? "hidden" : "";
     }
     document.attachEvent("onreadystatechange", fixIEScroll);
     attachEvent("onresize", fixIEScroll);
 }

 // addLoadEvent, menambahkan event
 
 function addLoadEvent(func) 
 {
     if (window.addEventListener) 
          window.addEventListener("load", func, false);
     else if (window.attachEvent) 
          window.attachEvent("onload", func);
 }
*/
/**
== MainPageTransform ==

 Menghilangkan judul [[Halaman Utama]] dan mengganti nama tab. */

 var mpTitle = "Halaman Utama";
 var isMainPage = (document.title.substr(0, mpTitle.length) == mpTitle)
 var isDiff = (document.location.search && (
     document.location.search.indexOf("diff=") != -1 ||
     document.location.search.indexOf("oldid=") != -1 ||
     document.location.search.indexOf("action=history") != -1
 ));
 if ( isMainPage && !isDiff && (wgCanonicalNamespace != 'Special') ) 
 {
     document.write('<style type="text/css"> #siteSub, #contentSub, h1.firstHeading { display: none!important; } #content, #content div.thumb, #p-cactions li a, #p-cactions li a:hover, #p-cactions li.selected a { background: #fff!important; } </style>');
     var mpSmallEnabled;
     var mpMinWidth = 700;
     function mainPageTransform()
     {
          var mpContentEl = document.getElementById("bodyContent");
          var mpBrowseEl = document.getElementById("EnWpMpBrowse");
          var mpContainEl = document.getElementById("EnWpMpBrowseContainer");
          var mpMarginEl = document.getElementById("EnWpMpMargin");
          var mpEl = document.getElementById("EnWpMainPage");
          if (!mpContentEl || !mpBrowseEl || !mpContainEl || !mpMarginEl || !mpEl)
               return;
          if (!mpSmallEnabled && mpContentEl.offsetWidth < mpMinWidth)
          {
               mpContainEl.insertBefore(mpBrowseEl, mpContainEl.firstChild);
               mpBrowseEl.className = "EnWpMpBrowseBottom";
               mpMarginEl.style.marginRight = 0;
               mpSmallEnabled = true;
          }
          else if (mpSmallEnabled && mpContentEl.offsetWidth > mpMinWidth)
          {
               mpEl.insertBefore(mpBrowseEl, mpEl.firstChild);
               mpBrowseEl.className = "EnWpMpBrowseRight";
               mpMarginEl.style.marginRight = "13.8em";
               mpSmallEnabled = false;
          }
     }
     var onloadFuncts = [ mainPageTransform ];
     if (window.addEventListener) 
          window.addEventListener("resize", mainPageTransform, false);
     else if (window.attachEvent) 
          window.attachEvent("onresize", mainPageTransform);
 }
 function mainpg() {
     if ((isMainPage || /[\/=:]Halaman_Utama/.test(document.location)) && document.getElementById('ca-nstab-main')) {
          document.getElementById('ca-nstab-main').firstChild.innerHTML = '<span>Utama<\/span>';
     }   
 }
 addOnloadHook(mainpg);

/**
== LowcaseTitle ==

 Judul dengan [[Template:Judul|huruf pertama kecil]]. */

 if (document.URL.indexOf("=edit") > 0 || document.URL.indexOf("=submit") > 0) {var noJS;}
 else {
      document.write('<style type="text/css">#title-override {display: none; speak: none;}<\/style>');
      function pTitle() {
           if (document.getElementById("title-override")) {
                var pTitle = document.getElementById("pTitle").innerHTML;
                document.getElementsByTagName("h1")[0].innerHTML = pTitle;
           }
      }
      hookEvent("load", pTitle);
 }

/**
== LinkFA & LinkGA ==
 
Menambahkan bintang di InterWiki
 */
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 += " FA"
                InterwikiLinks[i].title = "Ini adalah artikel pilihan pada bahasa lain.";
            } else if ( document.getElementById( InterwikiLinks[i].className + "-ga" ) ) {
                InterwikiLinks[i].className += " GA"
                InterwikiLinks[i].title = "Ini adalah artikel bagus pada bahasa lain.";
            }
        }
    }
}
 
addOnloadHook( LinkFA );
/**
== Pranala luar pilihan ==

Menandai pranala luar pilihan. Gunakan templat {{tl|extlink-fa}} di depan atau belakang pranala luar. Ini akan memberikan suatu objek "span" kosong yang akan dikenali oleh JavaScript yang akan mengubah style bulletnya.
 */
 function linkExtLinkFA() {
   oSpans = document.getElementById( "bodyContent" ).getElementsByTagName( "span" );
   for ( var i = 0; i < oSpans.length; i++ ) {
     if ( oSpans[i].className == 'extlink-fa' ) {
       var oParent = oSpans[i].parentNode;
       if ( oParent.tagName == 'LI' ) {
         oParent.className += ' FA';
         oParent.title = 'Pranala pilihan';
       }
     }
   }
 }
 addOnloadHook( linkExtLinkFA );
/**

== InterProject ==

InterProject, link di menu samping untuk proyek lain.

 <nowiki> */
 if (LoadInterProject == true) {
 document.write('<style type="text/css">#interProyek {display: none; speak: none;} #p-tb .pBody {padding-right: 0;}<\/style>');
 function iProject() {
     if (document.getElementById("interProyek")) {
          var iProject = document.getElementById("interProyek").innerHTML;
          var interProject = document.createElement("div");
          interProject.style.marginTop = "0.7em"; 
          interProject.innerHTML = '<h5>Proyek lain<\/h5><div class="pBody">'+iProject+'<\/div>';
          document.getElementById("p-tb").appendChild(interProject);
     }
 }
 addOnloadHook(iProject);
 }
 /* </nowiki> */

/**
== CollapsibleTable ==*/
 var autoCollapse = 2;
 var collapseCaption = "sembunyikan";
 var expandCaption = "tampilkan";
 
 var hasClass = (function () {
     var reCache = {};
     return function (element, className) {
         return (reCache[className] ? reCache[className] : (reCache[className] = new RegExp("(?:\\s|^)" + className + "(?:\\s|$)"))).test(element.className);
     };
 })();

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 = new Object();
    var Tables = document.getElementsByTagName( "table" );

    for ( var i = 0; i < Tables.length; i++ ) {
        if ( hasClass( Tables[i], "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", "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 ( hasClass( NavigationBoxes[i], "collapsed" ) || ( tableIndex >= autoCollapse && hasClass( NavigationBoxes[i], "autocollapse" ) ) ) {
            collapseTable( i );
        } 
        else if ( hasClass( NavigationBoxes[i], "innercollapse" ) ) {
            var element = NavigationBoxes[i];
            while (element = element.parentNode) {
                if ( hasClass( element, "outercollapse" ) ) {
                    collapseTable ( i );
                    break;
                }
            }
        }
    }
}

addOnloadHook( createCollapseButtons );

 /* End of CollapsibleTable */

/** 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 (hasClass(NavChild, 'NavContent') || hasClass(NavChild, 'NavPic')) {
                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 (hasClass(NavChild, 'NavContent') || hasClass(NavChild, 'NavPic')) {
                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 (hasClass(NavFrame, "NavFrame")) {
 
            indexNavigationBar++;
            var NavToggle = document.createElement("a");
            NavToggle.className = 'NavToggle';
            NavToggle.setAttribute('id', 'NavToggle' + indexNavigationBar);
            NavToggle.setAttribute('href', 'javascript:toggleNavigationBar(' + indexNavigationBar + ');');
 
            var isCollapsed = hasClass( NavFrame, "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 (var NavChild = NavFrame.firstChild; NavChild != null && !isCollapsed; NavChild = NavChild.nextSibling) {
                if ( hasClass( NavChild, 'NavPic' ) || hasClass( NavChild, 'NavContent' ) ) {
                    if ( NavChild.style.display == 'none' ) {
                        isCollapsed = true;
                    }
                }
            }
            if (isCollapsed) {
                for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {
                    if ( hasClass( NavChild, 'NavPic' ) || hasClass( NavChild, '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 (hasClass(NavFrame.childNodes[j], "NavHead")) {
                    NavFrame.childNodes[j].appendChild(NavToggle);
                }
            }
            NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar);
        }
    }
}
 
addOnloadHook( createNavigationBarToggleButton );

/**
== Edittools ==

 Drop down box for the Special character menu in [[MediaWiki:Edittools]]
 Adapted from:
 http://de.wiktionary.org/wiki/MediaWiki:Onlyifediting.js ,
 http://de.wikipedia.org/wiki/MediaWiki:Onlyifediting.js and
 http://en.wiktionary.org/wiki/MediaWiki:Monobook.js
 <pre><nowiki> */

 function addCharSubsetMenu() {
     if ( load_edittools != true ) return;
  var specialchars = document.getElementById('specialchars');
  
  if (specialchars) {
   var menu = "<select style=\"display:inline\" onChange=\"chooseCharSubset(selectedIndex)\">";
   menu += "<option>Standar+Templat</option>";
   menu += "<option>IPA</option>";
   menu += "<option>Latin</option>";
   menu += "<option>Pinyin</option>";
   menu += "<option>Romaji</option>";
   menu += "<option>Arab</option>";
   menu += "<option>Ceko</option>";
   menu += "<option>Devanāgarī</option>";
   menu += "<option>Esperanto</option>";
   menu += "<option>Estonia</option>";
   menu += "<option>Hawaii</option>";
   menu += "<option>Hungaria</option>";
   menu += "<option>Ibrani</option>";
   menu += "<option>Inggris kuno</option>";
   menu += "<option>Islandia</option>";
   menu += "<option>Italia</option>";
   menu += "<option>Jawa Kuna</option>";
   menu += "<option>Jerman</option>";
   menu += "<option>Katalan</option>";
   menu += "<option>Latvia</option>";
   menu += "<option>Malta</option>";
   menu += "<option>Perancis</option>";
   menu += "<option>Polandia</option>";
   menu += "<option>Portugis</option>";
   menu += "<option>Rumania</option>";
   menu += "<option>Serbia</option>";
   menu += "<option>Sirilik</option>";
   menu += "<option>Skandinavia</option>";
   menu += "<option>Spanyol</option>";
   menu += "<option>Turki</option>";
   menu += "<option>Vietnam</option>";
   menu += "<option>Wales</option>";
   menu += "<option>Yiddish</option>";
   menu += "<option>Yunani</option>";
   menu += "</select>";
   specialchars.innerHTML = menu + specialchars.innerHTML;
  
   // Standard-CharSubset
   chooseCharSubset(0);
  }
 }
  
 // CharSubset selection
 function chooseCharSubset(s) {
  var l = document.getElementById('specialchars').getElementsByTagName('p');
  for (var i = 0; i < l.length ; i++) {
   l[i].style.display = i == s ? 'inline' : 'none';
   // l[i].style.visibility = i == s ? 'visible' : 'hidden';
  }
 }
  
 // Menu insertion
 addOnloadHook( addCharSubsetMenu );
 // Move the toolbar to the top
 function fixToolbar() {
     if ( load_edittools != true ) return;
     var wpEditToolbar = document.getElementById( "toolbar" );
     var editTools = document.getElementById( "specialchars" );
     elementMoveto( editTools, wpEditToolbar , 'after' );
     if( editTools ) editTools.style.display = "block";
     var editspecialchars = document.getElementById( "editpage-specialchars" );
     elementMoveto( editTools, wpEditToolbar , 'after' );
 }
 onloadFuncts.push( fixToolbar );
 
  // Helper function to move DOM element
 function elementMoveto( node, refNode, pos ) {
 	if(node && refNode){
 		var parent=refNode.parentNode;
 		if (pos && pos=='after') { refNode=refNode.nextSibling; }
 		try {
 			parent.insertBefore( node, refNode );
 		} catch ( DOMException ) {};
 	}
 }
 /* </nowiki></pre> */

/**

== Stripe ==

 [[Bantuan:Tabel|Tabel cantik]] */

 if (LoadStripe == true) {
 
 var stripe = function()
 {
 // 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.
 hookEvent("load", stripe);
 
 }

/**
== ExtraEditButtons ==
 <pre><nowiki> */
  function addCustomEditButton( imageFile, speedTip, tagOpen, tagClose, sampleText ) {
   var imagePath = 'http://upload.wikimedia.org/wikipedia/commons/';
   mwCustomEditButtons[mwCustomEditButtons.length] = {
    "imageFile"  : imagePath + imageFile,
    "speedTip"   : speedTip,
    "tagOpen"    : tagOpen,
    "tagClose"   : tagClose,
    "sampleText" : sampleText
   };  
  }
 
 if ( mwCustomEditButtons && LoadExtraEditButtons ) {
  addCustomEditButton( "c/c8/Button_redirect.png", "Pengalihan", 
  	"#ALIH [[", "]]", "Artikel" );
  addCustomEditButton( "e/eb/Button_plantilla.png", "Templat", 
  	"{{", "}}", "Templat" );
  addCustomEditButton( "1/1b/Button_hide_wiki_tag.png", "Komentar tersembunyi", 
  	"<!-- ", " -->", "Komentar" );
  addCustomEditButton( "f/fd/Button_underline.png", "Garis bawah", 
  	"<u>", "</u>", "Teks garis bawah" );
  addCustomEditButton( "c/c9/Button_strike.png", "Coret", 
  	"<s>", "</s>", "Teks dicoret" );
  addCustomEditButton( "f/f9/Button_onlyinclude_green.png", " Onlyinclude", 
        "<onlyinclude>", "</onlyinclude>", "Hanya teks ini yang ditransklusikan" );
  addCustomEditButton( "0/01/Button_includeonly_green.png", "Includeonly", 
        "<includeonly>", "</includeonly>", "Teks hanya akan ditransklusikan" );
  addCustomEditButton( "3/32/Button_noinclude_green.png", "Noinclude", 
        "<noinclude>", "</noinclude>", "Teks tidak akan ditransklusi" );
  addCustomEditButton( "7/79/Button_reflink.png", "Rujukan", 
        "<ref>", "</ref>", "Rujukan" );
  addCustomEditButton( "9/99/Button_sup_2.png", "Superscript", 
  	"<sup>", "</sup>", "Teks superscript" );
  addCustomEditButton( "e/e5/Button_sub_2.png", "Subscript", 
  	"<sub>", "</sub>", "Teks subscript" );
  addCustomEditButton( "1/17/Button_small_2.png", "small", 
        "<small>", "</small>", " " );
  addCustomEditButton( "c/cb/Button_big_2.png", "big", 
        "<big>", "</big>", " " );
  addCustomEditButton( "2/23/Button_code.png", "code", 
        "<code>", "</code>", " " );
  addCustomEditButton( "5/5f/Button_center.png", "center", 
        "<center>", "</center>", " " );
  addCustomEditButton( "3/3c/Button_pre.png", "pre", 
        "<pre>", "</pre>", " " );
  addCustomEditButton( "8/8f/Button_poeme.png", "poem",
        "<poem>", "</poem>", " " );
  addCustomEditButton( "d/d4/Button_div.png", "div", 
        "<div>", "</div>", " " );
  addCustomEditButton( "7/72/Button_span_2.png", "span", 
        "<span>", "</span>", " " );
  addCustomEditButton( "2/26/Button_plainlinks.png", "plainlinks", 
        "<span class=plainlinks>", "</span>", " " );
  addCustomEditButton( "9/9e/Btn_toolbar_gallery.png", "Galeri gambar", 
  	"<gallery>\n", "\n</gallery>", "Berkas:Contoh.jpg|Judul1\nBerkas:Contoh.jpg|Judul2" );
  addCustomEditButton( "c/c6/Button_Kat.png", "Kategori", 
  	"[[Kategori:", "]]", "Kategori" );
  addCustomEditButton( "3/3f/Button_en.png", "Interwiki Wikipedia Inggris", 
        "[[en:", "]]", "Interwiki en.wiki" );
  addCustomEditButton( "7/7f/Interwiki-button-bg.png", "Interwiki templat en", 
        "[[en:Template:", "subst:PAGENAME}}]]", "{{" );
  addCustomEditButton( "f/f7/Button_referencesR.png", "Referensi", 
  	"\n== Referensi ==\n\n", "reflist}}" + "\n", "{{" );
  addCustomEditButton( "e/e9/Button_headline2.png", "Subbagian tingkat 2",
  	"\n=== ", " ===\n", "Subbagian2" );
  addCustomEditButton( "3/3a/Button_headline3.png", "Subbagian tingkat 3",
  	"\n==== ", " ====\n", "Subbagian3" );
  addCustomEditButton( "1/11/Btn_toolbar_liste.png", "Daftar biasa", 
  	"\n* ", "\n* Elemen contoh B\n* Elemen contoh C", "Elemen contoh A" );
  addCustomEditButton( "8/88/Btn_toolbar_enum.png", "Daftar bernomor", 
  	"\n# ", "\n# Elemen contoh 2\n# Elemen contoh 3", "Elemen contoh 1" );
  addCustomEditButton( "d/d3/Button_definition_list.png", "Daftar definisi", 
  	"\n; ", "\n: Contoh item 1\n: Contoh item 2", "Contoh definisi" );
  addCustomEditButton( "0/04/Button_array.png", "Tabel", 
  	'{| class="wikitable"\n|-\n', "\n|}", "! kepala1\n! kepala2\n|-\n" +
  	"| baris1, kolom1\n| baris1, kolom2\n|-\n| baris2, kolom1\n| baris2, kolom2" );
  addCustomEditButton( "9/9f/Button_defaultsort.png", "DEFAULTSORT", 
        "", "DEFAULTSORT:}}", "{{" );
  addCustomEditButton( "b/bf/Button_pagename.png", "PAGENAME", 
        "", "PAGENAME}}", "{{" );
  addCustomEditButton( "5/55/Button_nbsp_1.png", "nbsp", 
        "&nbsp;", "", "" );
 }
 /*</nowiki></pre>*/
/**

== Portlet tambahan ==

=== Jumlah suntingan ===
 */
 function addEditcountPortlet() {
  if ( document.getElementById("t-contributions") ) {
   var sServer = 'idwiki';
   switch ( wgServer ) {
    case 'http://id.wikibooks.org':
     sServer = 'idwikibooks';
     break;
    case 'http://id.wiktionary.org':
     sServer = 'idwiktionary';
     break;
    case 'http://id.wikiquote.org':
     sServer = 'idwikiquote';
     break;
    case 'http://id.wikisource.org':
     sServer = 'idwikisource';
     break;
   }
   var sText = 'Statistik pengguna';
   var sLink = 'http://toolserver.org/~soxred93/count/index.php?&lang=id&wiki=wikipedia&uselang=id' +
    '&name=' + wgTitle;
   addPortletLink( 'p-tb', sLink, sText, 't-editcount', 
    'Jumlah suntingan pengguna', null, document.getElementById( 't-contributions' ).nextSibling );
  }
 }
 addOnloadHook( addEditcountPortlet );
/**

=== Sunting bagian 0 ===
 */
 function addEdittopPortletLink() {
  if(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 = wgScriptPath + "/index.php?title=" + wgPageName +
    "&action=edit&section=0";
   addPortletLink( 'p-cactions', sLink, sText, 'ca-edittop',
    'Suntingan bagian atas halaman ini', null, document.getElementById( sElm ).nextSibling );
  }
 }
 addOnloadHook( addEdittopPortletLink );
/**

=== Notice di [[Wikipedia:Bak pasir]] dan [[Pembicaraan Wikipedia:Bak pasir]] ===
 */
 function sandboxNotice() {
 notice = document.createElement('div');
 document.getElementById('bodyContent').insertBefore(notice, document.getElementById('jump-to-nav').nextSibling);
 noticeLoader = sajax_init_object();
 noticeLoader.open('GET', 'http://id.wikipedia.org/w/index.php?title=Templat:Bakpasir&action=render', true);
 noticeLoader.onreadystatechange = function()
    {
        if (noticeLoader.readyState == 4 && noticeLoader.status == 200) {
            notice.innerHTML = noticeLoader.responseText;
        }
    };
 noticeLoader.send('');
 }
 if (wgAction.match(/view|edit|submit/)) {
    addOnloadHook(function() {
        if (document.getElementsByTagName('body')[0].className.match(/page-(Pembicaraan_)?Wikipedia_Bak_pasir/)) {
            return sandboxNotice();
        }
    });
 }

/** Magic editintros ****************************************************
 *
 *  Description: Adds editintros on disambiguation pages and BLP pages.
 *  Maintainers: [[User:RockMFR]]
 */
 
function addEditIntro(name)
{
  var el = document.getElementById('ca-edit');
  if (!el)
    return;
  el = el.getElementsByTagName('a')[0];
  if (el)
    el.href += '&editintro=' + name;
}
 
 
if (wgNamespaceNumber == 0) {
  addOnloadHook(function(){
    if (document.getElementById('disambigbox'))
      addEditIntro('Template:Disambig_editintro');
  });
 
  addOnloadHook(function(){
    var cats = document.getElementById('mw-normal-catlinks');
    if (!cats)
      return;
    cats = cats.getElementsByTagName('a');
    for (var i = 0; i < cats.length; i++) {
      if (cats[i].title == 'Category:Living people' || cats[i].title == 'Category:Possibly living people') {
        addEditIntro('Template:BLP_editintro');
        break;
      }
    }
  });
}

/** 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]]
  */
 
if (wgServer == "https://secure.wikimedia.org") {
  var metaBase = "https://secure.wikimedia.org/wikipedia/meta";
} else {
  var metaBase = "http://meta.wikimedia.org";
}
importScriptURI(metaBase+"/w/index.php?title=MediaWiki:Wikiminiatlas.js&action=raw&ctype=text/javascript&smaxage=21600&maxage=86400")