Utilisateur:Dr Brains/AutresDiscussions.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) ;

Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5.
//<source lang="javascript"> 
//<pre><nowiki>


//////// STYLES CSS 

// position absolute
if(skin=="vector"){
     var AutresDiscussions_Position_Left = '50px';
     var AutresDiscussions_Position_Top = '2.5em';
     var AutresDiscussions_Position_OtherStyles = 'background-image:none !important;line-height:1em !important;height:1.2em;font-size:0.8em !important;';
}else if(skin=="monobook"){
     var AutresDiscussions_Position_Left = '90px';
     var AutresDiscussions_Position_Top = '1.8em';
     var AutresDiscussions_Position_OtherStyles = '';
}else{
     var AutresDiscussions_Position_Left = '150px';
     var AutresDiscussions_Position_Top = '3em';
     var AutresDiscussions_Position_OtherStyles = 'color:#0000C2';
}

document.write('<style type="text/css">'
+'#ca-talk ul li{display: block !important;width: 100% !important;min-width: 10em !important;border: 0px;margin: 0px !important;padding: .1em !important;border: 1px solid #aaaaaa !important;border-collapse: collapse;text-align: center;background-color: #F8FCFF !important;white-space: nowrap !important;'+AutresDiscussions_Position_OtherStyles+'}'
+'#ca-talk ul {display: none !important;width: auto;z-index: 50;position: absolute;top:'+AutresDiscussions_Position_Top+';left:'+AutresDiscussions_Position_Left+';margin: 0px;background-color: grey;background-image:none !important;}'
+'#ca-talk * {-moz-border-radius: 0px !important;}'
+'#ca-talk:hover ul {display: block !important;}'
+'#ca-talk ul li:hover {background-color: #e8ecef !important;}'
+'#ca-talk ul a {background-color: transparent !important;margin:0 !important;padding:0 !important;}'
+'#ca-talk a.new {color: red !important;}'
+'#ca-talk a.new span{color: red !important;}'
+'#ca-talk a.mw-redirect {color: green !important;}'
+'</style>');


//////// VARIABLES (url + textes liens + affichage pages inexistantes)

var Autres_discut_Links = new Array();        // Titre complet de la page, titre remplacé par "$1"
var Autres_discut_Text = new Array();         // Texte du lien
var Autres_discut_VisibleIfNew = new Array(); // Afficher la page si elle n'existe pas (true ou false)


Autres_discut_Links.push("$1/À faire");
Autres_discut_Text.push("À faire");
Autres_discut_VisibleIfNew.push(true);

Autres_discut_Links.push("$1/Archives");
Autres_discut_Text.push("Archives");
Autres_discut_VisibleIfNew.push(false);

Autres_discut_Links.push("$1/Article de qualité");
Autres_discut_Text.push("Article de qualité");
Autres_discut_VisibleIfNew.push(false);

Autres_discut_Links.push("$1/Bon article");
Autres_discut_Text.push("Bon article");
Autres_discut_VisibleIfNew.push(false);

Autres_discut_Links.push("$1/Droit d'auteur");
Autres_discut_Text.push("Droit d'auteur");
Autres_discut_VisibleIfNew.push(false);

Autres_discut_Links.push("$1/Évaluation");
Autres_discut_Text.push("Évaluation");
Autres_discut_VisibleIfNew.push(false);

Autres_discut_Links.push("$1/Lumière sur");
Autres_discut_Text.push("Lumière sur");
Autres_discut_VisibleIfNew.push(false);

Autres_discut_Links.push("$1/Neutralité");
Autres_discut_Text.push("Neutralité");
Autres_discut_VisibleIfNew.push(false);

Autres_discut_Links.push("$1/Suppression");
Autres_discut_Text.push("Suppression");
Autres_discut_VisibleIfNew.push(false);

Autres_discut_Links.push("$1/Traduction");
Autres_discut_Text.push("Traduction");
Autres_discut_VisibleIfNew.push(false);


Autres_discut_Links.push("Special:Index/$1/");
Autres_discut_Text.push("Autres discussions");
Autres_discut_VisibleIfNew.push(true);


// Autres variables

if((mw.config.get('wgNamespaceNumber')==0)||(mw.config.get('wgNamespaceNumber')==100)){
    var Autres_discut_ArticleNS = mw.config.get('wgNamespaceNumber');
    var Autres_discut_TalkNS = mw.config.get('wgNamespaceNumber') +1;
}else{
    var Autres_discut_ArticleNS = mw.config.get('wgNamespaceNumber') -1;
    var Autres_discut_TalkNS = mw.config.get('wgNamespaceNumber');
}

var Autres_discut_Menu = '';
var Autres_discut_Length = -1;

//////// FONCTIONS

// Requêtes sous-pages

function Autres_discut_API(){
      var PageTitle = mw.config.get('wgTitle').split('/')[0];
      var PageName = mw.config.get('wgFormattedNamespaces')[Autres_discut_TalkNS] + ':' + PageTitle;
      var PageExist = new Array(); 
      var AdresseRequete = mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php?format=xml&action=query&list=allpages&aplimit=499&apnamespace='+Autres_discut_TalkNS+'&apprefix=' + encodeURIComponent(PageTitle) ;
      var NouvelleRequete = new XMLHttpRequest();
      NouvelleRequete.open("GET", AdresseRequete, true);
      NouvelleRequete.onreadystatechange = function() {
            if(NouvelleRequete.readyState != 4) return;
                  //alert('Reçu');
            var ObjetXML = NouvelleRequete.responseXML; 
            var Pages = ObjetXML.getElementsByTagName('p');
            for(var a=0;a<Pages.length;a++){
                  var Title = Pages[a].getAttribute("title");
                  PageExist.push(Title);
            }
            for(var b=0;b<Autres_discut_Links.length;b++){
                  var Link = Autres_discut_Links[b].split('$1').join(PageName);
                  var LinkClassName = "new";
                  for(var c=0;c<PageExist.length;c++){
                        if(Link==PageExist[c]){
                              LinkClassName = "";
                        }
                  }
                  if((LinkClassName!="new")||(Autres_discut_VisibleIfNew[b])){
                        if(b==(Autres_discut_Links.length-1)) LinkClassName = "";
                        Autres_discut_Length++
                        Autres_discut_Menu += '<li style="display:block !important;">'
                                            +'<a class="'+LinkClassName+'" '
                                            +'href="'+mw.config.get('wgServer')+mw.config.get('wgArticlePath').split('$1').join(Link)+'" '
                                            +'>'
                                            +Autres_discut_Text[b]
                                            +'</a>'
                                            +'</li>';
                  }
            }
            var TalkLinkClassName = "new";
            for(var d=0;d<PageExist.length;d++){
                  if(PageExist[d]==PageName){
                        TalkLinkClassName = "";
                  }
            }
            Autres_discut(TalkLinkClassName);
      }
      NouvelleRequete.send(null);
}

// Création Menu

function Autres_discut(TalkLinkClassName) {
 
     var Talk = document.getElementById("ca-talk");
     if (Talk){
          var TalkLink = Talk.getElementsByTagName('a')[0];
          if($(Talk).hasClass("new")){
                 $(Talk).removeClass("new");
          }
          TalkLink.className = TalkLinkClassName;          
          var TalkURL = mw.config.get('wgServer') + mw.config.get('wgArticlePath').split('$1').join(mw.config.get('wgFormattedNamespaces')[Autres_discut_TalkNS]+':'+mw.config.get('wgTitle').split('/')[0]);
          TalkLink.href = TalkURL;
          TalkLink.title = "";
          var AutresDiscussions = '<ul id="ca-Autres_discut_UL" >'+Autres_discut_Menu+'</ul>';
          Talk.innerHTML += AutresDiscussions;
     }
     var Article = document.getElementById("ca-nstab-main");
     if(!Article) Article = document.getElementById("ca-nstab-portail");
     if (Article){
          if($(Article).hasClass("new")){
                 $(Article).removeClass("new");
          }  
          var ArticleLink = Article.getElementsByTagName('a')[0];
          if(mw.config.get('wgNamespaceNumber')<2){
                 var ArticleURL = mw.config.get('wgServer') + mw.config.get('wgArticlePath').split('$1').join(mw.config.get('wgTitle').split('/')[0]);
          }else{
                 var ArticleURL = mw.config.get('wgServer') + mw.config.get('wgArticlePath').split('$1').join(mw.config.get('wgFormattedNamespaces')[Autres_discut_ArticleNS]+':'+mw.config.get('wgTitle').split('/')[0]);
          }
          ArticleLink.href = ArticleURL;
     }
}

// Lancement

if( (mw.config.get('wgNamespaceNumber') == 0)||(mw.config.get('wgNamespaceNumber') == 1)||(mw.config.get('wgNamespaceNumber') == 100)||(mw.config.get('wgNamespaceNumber') == 101) ){
     addOnloadHook(Autres_discut_API);
}
 
//</nowiki></pre></source>