MediaWiki:Script/Redactor.js

Révision datée du 21 juin 2022 à 20:10 par Dexter (discussion | contributions) (Page créée avec « var globalBol = false; function filterLinks(ar1, ar2) { ar1.childNodes.forEach(function(el1){ ar2.childNodes.forEach(function(el2){ if (el1.children[0].textCo... »)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)

Note : après avoir enregistré vos modifications, il se peut que vous deviez forcer le rechargement complet du cache de votre navigateur pour voir les changements.

  • Firefox / Safari : maintenez la touche Maj (Shift) en cliquant sur le bouton Actualiser ou pressez Ctrl-F5 ou Ctrl-R (⌘-R sur un Mac)
  • Google Chrome : appuyez sur Ctrl-Maj-R (⌘-Shift-R sur un Mac)
  • Internet Explorer : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5
  • Opera : allez dans Menu → Settings (Opera → Préférences sur un Mac) et ensuite à Confidentialité & sécurité → Effacer les données d’exploration → Images et fichiers en cache.
var globalBol = false;

function filterLinks(ar1, ar2) {
  ar1.childNodes.forEach(function(el1){
    ar2.childNodes.forEach(function(el2){
      if (el1.children[0].textContent === el2.children[0].textContent) {
        el1.classList.add("tabber-noactive");
      }
    })
  })
};

function addCompareLinks() {
  
  var linksHere = document.querySelector("li#t-whatlinkshere");

  if (linksHere !== null) {

    var pageName = encodeURIComponent(mw.config.get("wgPageName"));
    var hrefCompare = "/index.php?title=Spécial:Pages_liées/"+pageName+"&compare=1";
    var compareLinks = document.createElement("li");
    var linkCompareLinks = document.createElement("a");
    var spanCompareLinks = document.createElement("span");
    spanCompareLinks.textContent = "Comparer les liens";
    linkCompareLinks.href = hrefCompare;
    linkCompareLinks.appendChild(spanCompareLinks);
    compareLinks.appendChild(linkCompareLinks);
    linksHere.parentElement.appendChild(compareLinks);
  }
}

function compareLinks(page) {
  if (globalBol) {
    var listBl = document.querySelector("ul#backlinks");
    var listL = document.querySelector("ul#links");
    filterLinks(listBl, listL);
    filterLinks(listL, listBl);
  } else {
    globalBol = !globalBol;
  }
}

function addLinksToPage(linkName, list) {
  
  var listEl = document.createElement("li");
  var link = document.createElement("a");
      
  link.href = "/index.php/" + encodeURIComponent(linkName);
  link.textContent = linkName;
  listEl.appendChild(link);
  list.appendChild(listEl);
}
      
function writeBacklinks(api, name, list, page) {
  
  var params = {
		action: 'query',
		format: 'json',
		list: 'backlinks',
    bllimit: "max",
		bltitle: name
	}

  api.get(params).then(function(data){

    var bl = data.query.backlinks;

    for (var b in bl) {
      var linkName = bl[b].title;
      addLinksToPage(linkName, list);
    }
    compareLinks(page);
  });
}

function writeLinks(api, name, list, page) {
 
  var params = {
		action: 'query',
		format: 'json',
		titles: name,
    pllimit: "max",
		prop: 'links'
	}
 
  api.get(params).then(function(data){
    var linksList = [];
    var pages = data.query.pages
    for (var p in pages) {
      pages[p].links.forEach(function(l) {
        var linkName = l.title;
        addLinksToPage(linkName, list);
      });
    }
    compareLinks(page)
  });
}

function resetPage(page) {
  
  if (page !== null) {
    
    page.childNodes.forEach(function(el){
      el.remove();
    });
        
    page.textContent = "";
  }
}

(function(){
  
  addCompareLinks();
  
  if (window.location.href.indexOf("compare=1") !== -1) {
    var name = mw.config.get("wgPageName").split("/");
    
    if (name[0] === 'Spécial:Pages_liées') {      
      var pageContent = document.querySelector("div#mw-content-text");
      var api = new mw.Api();
      var listBl = document.createElement("ul");
      var listL = document.createElement("ul");
      var para1 = document.createElement("p");
      var para2 = document.createElement("p");
      var realName = name[1];
      
      listBl.id = "backlinks";
      listL.id = "links";
      
      resetPage(pageContent);
      writeBacklinks(api, realName, listBl, pageContent);
      writeLinks(api, realName, listL, pageContent);
      
      para1.textContent = "Les pages suivantes présent un lien vers "+realName+" mais "+realName+" ne présente pas de liens vers elles."
      pageContent.appendChild(para1);
      pageContent.appendChild(listBl);
      
      para2.textContent = "Un lien vers les pages suivantes est présent sur "+realName+" mais aucun lien vers "+realName+" n'est présent sur ces pages."
      pageContent.appendChild(para2);
      pageContent.appendChild(listL);
    }
  }
})();