MediaWiki:Common.js/documentation tab.js
El Kitakujo
(Malsamoj inter versioj)
Kiel registrite je 20:39, 27. Jun 2011
// El la espernto-vikipedio // 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': ['Kodo', 'Rigardu la kodon de la ŝablono', 'c'], 'ca-nstab-documentation': ['Dokumentado', 'Rigardu la dokumentadon', '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=Ŝablono%3ADok%2Fpreload-dokumentado'); }else { a.setAttribute('href',href+(href.indexOf('?')>0?'&':'?')+'action=edit&redlink=1'); } } if( wgCanonicalNamespace == 'Template' && /\/dokumentado$/.test(wgTitle) ){ var baseTitle = wgTitle.replace(/\/dokumentado$/, ""); change_main_tabs('ca-nstab-template', 'ca-nstab-documentation', 'Ŝablono-Diskusto:' + baseTitle); add_namespace_tab('Ŝablono:' + baseTitle, 'ca-nstab-template'); }else if( wgCanonicalNamespace == 'Template' || wgCanonicalNamespace == 'Template_talk' ){ add_namespace_tab('Ŝablono:'+wgTitle+'/dokumentado', '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 );