Utilisateur:Arkanosis/ongletSousPages.js

Note : après avoir enregistré la page, vous devrez forcer le rechargement complet du cache de votre navigateur pour voir les changements.

Mozilla / Firefox / Konqueror / Safari : maintenez la touche Majuscule (Shift) en cliquant sur le bouton Actualiser (Reload) ou pressez Maj-Ctrl-R (Cmd-R sur Apple Mac) ;

Firefox (sur GNU/Linux) / Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5.
mw.loader.using('mediawiki.util', function () {

function ongletSousPages()
{
  if (mw.config.get('wgNamespaceNumber'))
    return;

  var xhr = new XMLHttpRequest();
  xhr.open('GET', mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php?action=query&generator=allpages&gapprefix=' + mw.config.get('wgPageName') + '/&prop=info&gapnamespace=1&format=json', true);
  xhr.onreadystatechange = function()
  {
  	var subPages;
    if (xhr.readyState == 4 && xhr.status == 200)
    {
     try {
    	subPages = JSON.parse(xhr.responseText).query.pages;
     } catch (e) {
     	subPages = [];
     }

      var links = '';
      var nbLinks = 0;
      for (var subPageId in subPages)
      {
        links += '<li><a href="/wiki/' + subPages[subPageId].title + '">' + subPages[subPageId].title + '</a></li>';
        ++nbLinks;
      }
      if (links)
      {
        links = '<ul>' + links + '</ul>';
        var panel = document.createElement('div');
        panel.setAttribute('id', 'subPagesPanel');
        panel.setAttribute('style', 'display: none;');
        panel.innerHTML = links;
        document.getElementById('content').insertBefore(panel, document.getElementById('firstHeading'));

        var editNode = document.getElementById('ca-edit');
        if (!editNode)
          editNode = document.getElementById('ca-viewsource');
        if (!editNode)
          return;
 
        mw.util.addPortletLink('p-cactions', 'javascript:document.getElementById(\'subPagesPanel\').setAttribute(\'style\', \'display: block; border: 1px solid #000000; background: #EEE; padding:1px;\');', 'sous-pages (' + nbLinks + ')', 'ca-souspages', 'Sous-pages de discussion', '!', editNode);
      }
    }
  };
  xhr.send('');
}

$(ongletSousPages);

});