MediaWiki:Common.js/documentation tab.js

z Kitakija

(rozdźěl mjez wersijomaj)
Dźi do: Nawigacija, Pytać
Tlustulimu (diskusija | přinoški)
(Wutwori stronu z '// Z esperantorěčneje wikipedije // Přełožene wot Wužiwarja:Tlustulimu // Adaptita de Uzanto:Tlustulimu, el ca:MediaWiki:Common.js/documentation tab.js // Adaptat de ht…')

Aktualna wersija wot 14:15, 29. jun 2011

// Z esperantorěčneje wikipedije
// Přełožene wot Wužiwarja:Tlustulimu
// Adaptita de Uzanto:Tlustulimu, el [[:ca:MediaWiki:Common.js/documentation tab.js]]
// Adaptat de http://en.wiktionary.org/w/index.php?title=MediaWiki:Common.js&oldid=10888691
//    wikt:en:Mediawiki:common.js  #Make Citations: tabs
// Optimitzat per User:Coet
//
// Afegix una pestanya "Documentació" en l'espai de noms Plantilla, enllaçant a la subpàgina /ús
 
 
function documentation_tab(){
 
  var texts = {
      // tab id : [ label, hover-text, access-key (c if tab comes first, 3 if last) ]
      'ca-nstab-template': ['Kod', 'Pokazuj kod předłohi', 'c'],
      'ca-nstab-documentation': ['Dokumentacija', 'Pokazuj dokumentaciju', '3']
  }
 
  var lookup = new Object(); // {page-title: tab-node} these are looked up and changed to red if missing.
 
  // Returns [id-of-portlet, node-to-insert-before or null] for inserting the tab.
  function get_insert_position(id) {
    var portlet = document.getElementById('p-namespaces') ? 'p-namespaces' : 'p-cactions';
    var insbef = null;
 
    if (texts[id][2] == 'c') { // otherwise '3'
       insbef = document.getElementById(portlet).getElementsByTagName('ul')[0].firstChild;
    } else if (portlet == 'p-cactions' ) { // 'last' in Monobook means "before Edit"
      var insbef = document.getElementById('ca-edit');
      if(! insbef) insbef = document.getElementById('ca-viewsource');
    }
 
    return [portlet, insbef];
  }
 
  // Add a new namespace with addPortletLink using the lookup table above.
  function add_namespace_tab(page, id) {
    var insert = get_insert_position(id);
    addPortletLink(insert[0], wgArticlePath.replace("$1", page), texts[id][0], id, texts[id][1], texts[id][2], insert[1]);
    if (page == wgPageName) { // Can by-pass lookup
        var tab = document.getElementById(id);
        tab.className = 'selected';
        if (wgArticleId == 0) make_tab_red(tab);
    } else { // lookup the redness with the ajax below
        lookup[page]=document.getElementById(id);
    }
  }
 
  // Replace the two current tabs with new ones, used when in the third namespace.
  function change_main_tabs(old_id, new_id, talk_page) {
    // Remove old tab.
    var ct = document.getElementById(old_id);
    ct.parentNode.removeChild(ct);
    // Add new tab.
    add_namespace_tab(wgPageName, new_id);
 
    // Change destination of talk tab.
    var dt = document.getElementById('ca-talk');
    var a = dt.getElementsByTagName('a')[0]
    a.setAttribute('href', wgArticlePath.replace("$1", talk_page));
    lookup[talk_page] = dt;
    if(dt.className) dt.className = dt.className.replace('new','');
  }
 
  // Change a blue-link to a red-link
  function make_tab_red(tab){
    tab.className = tab.className+' new';
    var a = tab.getElementsByTagName('a')[0];
    var href = a.getAttribute('href');
    if( tab.getAttribute('id') == 'ca-nstab-documentation' ) {
      a.setAttribute('href',href+(href.indexOf('?')>0?'&':'?')+'action=edit&preload=Předłoha%3ADokumentacija%2Fpreload-Dokumentacija');
    }else {
      a.setAttribute('href',href+(href.indexOf('?')>0?'&':'?')+'action=edit&redlink=1');
    }
  }
 
  if( wgCanonicalNamespace == 'Template' && /\/Dokumentacija$/.test(wgTitle) ){
    var baseTitle = wgTitle.replace(/\/Dokumentacija$/, "");
    change_main_tabs('ca-nstab-template', 'ca-nstab-documentation', 'Diskusija_k_předłoze:' + baseTitle);
    add_namespace_tab('Předłoha:' + baseTitle, 'ca-nstab-template');
 
  }else if( wgCanonicalNamespace == 'Template' || wgCanonicalNamespace == 'Template_talk' ){
    add_namespace_tab('Předłoha:'+wgTitle+'/Dokumentacija', 'ca-nstab-documentation');
 
  }else{ //Nothing to see here...
    return false;
 
  }
 
  //Now check for red pages
  var ajaxer = sajax_init_object();
  if(! ajaxer) return false;
 
  var url = wgScriptPath+ '/api.php?format=json&action=query&prop=info&titles=';
  var spl = '';
  for(var page in lookup){
    url+=spl+encodeURIComponent(page);
    spl='|';
  }
 
  ajaxer.onreadystatechange = function(){
    if( ajaxer.readyState == 4 ){
      if( ajaxer.status == 200 ){
        var resps = eval('(' + ajaxer.responseText + ')');
        for (var x in resps.query.pages) {
          if (Number(x) < 0) {
            make_tab_red(lookup[resps.query.pages[x].title]);
          }
        }
      }
    }
  }
 
  ajaxer.open("GET", url);
  ajaxer.send('');
 
}
 
addOnloadHook( documentation_tab );
Wosobinske nastroje