Mediawiki et JavaScript

De Banane Atomic
Révision datée du 29 avril 2017 à 14:18 par Nicolas (discussion | contributions) (Nicolas a déplacé la page MediaWiki et JavaScript vers Mediawiki et JavaScript)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à la navigationAller à la recherche

Ajouter du JavaScript dans toutes les pages

Ajouter le code JavaScript à la page MediaWiki:Common.js

Documentation

The main JavaScript library
jQuery & plugins
List of JavaScript pages
Configuration variables

Variables prédéfinies

Nom Valeur
wgServer http://site.serveur.fr
wgScript /index.php
Javascript.svg
// http://site.serveur.fr/fichier.ext
url = wgServer + "/fichier.ext"

mw.config
JavaScript predefined variables
Avec PHP, préfixer les noms des variables avec $ : $wgServer

Chargement d'un fichier Javascript

Common.js
// Mediawiki.loader
mw.loader.load( 'http://url/fichier.js&action=raw&ctype=text/javascript&smaxage=21600&maxage=86400' );

// balise script
document.write(unescape("%3Cscript src='" + wgServer + "/fichier.js' type='text/javascript'%3E%3C/script%3E"));

// getScript
$.getScript("/fichier.js", function() {
    ...
});

addOnloadHook

Execute du code une fois la page chargée.

Javascript.svg
addOnloadHook(someFunction);

addOnloadHook(function(){
    ...
});

Test du groupe auquel l'utilisateur appartient

Javascript.svg
// Si l'utilisateur n'appartient pas au groupe user
if ($.inArray("user", wgUserGroups) == -1) {

}

Donner le focus au champs de recherche

Javascript.svg
jQuery(document).ready(function($) {
    $("#searchInput").focus();
}

Modifier Navigation et Boîte à outils

Javascript.svg
// Adds Contact dans navigation
ModifySidebar("add", "navigation", "Contact", "http://bananeatomic.kegtux.org/index.php/Spécial:Contact");

function ModifySidebar(action, section, name, link) {
    try {
        switch (section) {
          case "languages":
            var target = "p-lang";
            break;
          case "toolbox":
            var target = "p-tb";
            break;
          case "navigation":
            var target = "p-navigation";
            break;
          default:
            var target = "p-" + section;
            break;
        }
 
        if (action == "add") {
            var node = document.getElementById(target)
                               .getElementsByTagName('div')[0]
                               .getElementsByTagName('ul')[0];
 
            var aNode = document.createElement('a');
            var liNode = document.createElement('li');
 
            aNode.appendChild(document.createTextNode(name));
            aNode.setAttribute('href', link);
            liNode.appendChild(aNode);
            liNode.className='plainlinks';
            node.appendChild(liNode);
        }
 
        if (action == "remove") {
            var list = document.getElementById(target)
                               .getElementsByTagName('div')[0]
                               .getElementsByTagName('ul')[0];
 
            var listelements = list.getElementsByTagName('li');
 
            for (var i = 0; i < listelements.length; i++) {
                if (listelements[i].getElementsByTagName('a')[0].innerHTML == name ||
                    listelements[i].getElementsByTagName('a')[0].href == link) {
 
                    list.removeChild(listelements[i]);
                }
            }
        }
 
    } catch(e) {
      // lets just ignore what's happened
      return;
    }
}