« MediaWiki:Common.js » : différence entre les versions
Contenu supprimé Contenu ajouté
mAucun résumé des modifications |
pour réparer hotcats, voire plus |
||
(Une version intermédiaire par le même utilisateur non affichée) | |||
Ligne 104 : | Ligne 104 : | ||
} |
} |
||
/** |
|||
* Fonctions de traitement de chaînes |
|||
*/ |
|||
String.prototype.ucFirst = function () |
|||
{ |
|||
return this.substr(0,1).toUpperCase() + this.substr(1,this.length); |
|||
} |
|||
function hasClass(node, classe) { |
|||
var s=" "+node.className+" "; |
|||
return s.indexOf(" "+classe+" ") >= 0; |
|||
} |
|||
function equalsAa(str1, str2) { |
|||
return str1.toUpperCase() == str2.toUpperCase(); |
|||
} |
|||
function startsWithAa(string, prefix) { |
|||
return equalsAa(string.substring(0, prefix.length), prefix); |
|||
} |
|||
function substractPrefixAa(string, prefix) { |
|||
return startsWithAa(string, prefix) ? string.substring(prefix.length) : string; |
|||
} |
|||
function endsWithAa(string, prefix) { |
|||
return (string.length>=prefix.length) && |
|||
equalsAa(string.substring(string.length-prefix.length), prefix); |
|||
} |
|||
function substractSuffixAa(string, prefix) { |
|||
return endsWithAa(string, prefix) ? string.substring(0,string.length-prefix.length) : string; |
|||
} |
|||
function startsWith(string, prefix) { |
|||
return string.substring(0, prefix.length) == prefix; |
|||
} |
|||
function substractPrefix(string, prefix) { |
|||
return startsWith(string, prefix) ? string.substring(prefix.length) : string; |
|||
} |
|||
function endsWith(string, prefix) { |
|||
return (string.length>=prefix.length) && |
|||
(string.substring(string.length-prefix.length) == prefix); |
|||
} |
|||
function substractSuffix(string, prefix) { |
|||
return endsWith(string, prefix) ? string.substring(0,string.length-prefix.length) : string; |
|||
} |
|||
// Extension de la classe String : |
|||
String.prototype.trimLeft = function() { return this.replace(/^\s\s*/, ''); } |
|||
String.prototype.trimRight = function() { |
|||
var str = this, |
|||
ws = /\s/, |
|||
i = str.length; |
|||
while (ws.test(str.charAt(--i))); |
|||
return str.slice(0, i + 1); |
|||
} |
|||
String.prototype.trim = function() { return this.trimLeft().trimRight(); } |
|||
String.prototype.equalAa = function(other) { return equalsAa(this,other); }; |
|||
String.prototype.startsAa = function(prefix) { return startsWithAa(this,prefix); }; |
|||
String.prototype.endsAa = function(prefix) { return endsWithAa(this,prefix); }; |
|||
String.prototype.popAa = function(prefix,suffix) { |
|||
var s = this; |
|||
if (prefix) s=substractPrefixAa(s,prefix); |
|||
if (suffix) s=substractSuffixAa(s,suffix); |
|||
return s; |
|||
}; |
|||
String.prototype.starts = function(prefix) { return startsWith(this,prefix); }; |
|||
String.prototype.ends = function(prefix) { return endsWith(this,prefix); }; |
|||
String.prototype.pop = function(prefix,suffix) { |
|||
var s = this; |
|||
if (prefix) s=substractPrefix(s,prefix); |
|||
if (suffix) s=substractSuffix(s,suffix); |
|||
return s; |
|||
}; |
|||
/*</source> |
/*</source> |
||
Ligne 1 296 : | Ligne 1 375 : | ||
} |
} |
||
addOnloadHook(RedirectCommonsFile); |
addOnloadHook(RedirectCommonsFile); |
||
/*</source> |
/*</source> |
Version du 8 octobre 2011 à 18:25
/*
</source>
N'importe quel JavaScript ici sera chargé pour n'importe quel utilisateur et pour chaque page accédée.
<div style="background:#FFE4E1;">[[Fichier:Nuvola apps important.svg|30px]] Avant de modifier cette page, veuillez '''tester vos changements avec votre propre [[Spécial:Mypage/monobook.js|monobook.js]]'''. Une erreur sur cette page peut faire bugger le site entier (et gêner l'ensemble des visiteurs), même plusieurs heures après la modification !</div>
Voir aussi [[Mediawiki:Monobook.js]] · [[Mediawiki:Common.css]] · [[Mediawiki:Monobook.css]]
__FORCETOC__
== Infobulles et touches d’accès ==
Ce Javascript permet l'affichage des infobulles et des touches de raccourci
<source lang="javascript">*/
var ta = new Object();
ta['pt-userpage'] = new Array('.','Ma page utilisateur');
ta['pt-anonuserpage'] = new Array('.','La page utilisateur de l’IP avec laquelle vous contribuez');
ta['pt-mytalk'] = new Array('n','Ma page de discussion');
ta['pt-anontalk'] = new Array('n','Discussion à propos des modifications depuis cette adresse IP');
ta['pt-preferences'] = new Array('','Mes préférences');
ta['pt-watchlist'] = new Array('l','liste des pages dont vous suivez les modifications.');
ta['pt-mycontris'] = new Array('y','Liste de mes contributions');
ta['pt-login'] = new Array('o','Vous êtes invité à vous identifier, mais ce n’est pas obligatoire.');
ta['pt-anonlogin'] = new Array('o','Vous êtes invité à vous identifier, mais ce n’est pas obligatoire.');
ta['pt-logout'] = new Array('o','Se déconnecter');
ta['ca-talk'] = new Array('t','Discussion à propos de l’article');
ta['ca-edit'] = new Array('e','Vous pouvez modifier cette page. Merci d’utiliser le bouton de prévisualisation avant de sauvegarder.');
ta['ca-addsection'] = new Array('+','Ajouter un commentaire à cette discussion.');
ta['ca-viewsource'] = new Array('e','Cette page est protégée. Vous pouvez voir sa source.');
ta['ca-history'] = new Array('h','Anciennes versions de cette page.');
ta['ca-protect'] = new Array('=','Protéger cette page');
ta['ca-delete'] = new Array('d','Supprimer cette page');
ta['ca-undelete'] = new Array('d','Restaurer les modifications effectuées sur cette page avant sa suppression');
ta['ca-move'] = new Array('m','Renommer cette page');
ta['ca-watch'] = new Array('w','Ajouter cette page à votre liste de suivi');
ta['ca-unwatch'] = new Array('w','Retirer cette page de votre liste de suivi');
ta['search'] = new Array('f','Chercher dans ce wiki');
ta['p-logo'] = new Array('','Page principale');
ta['n-mainpage'] = new Array('z','Visitez la page principale');
ta['n-portal'] = new Array('','À propos de ce projet, ce que vous pouvez faire, où trouver les choses');
ta['n-currentevents'] = new Array('','Trouver des informations sur les évènements actuels');
ta['n-recentchanges'] = new Array('r','Liste des changements récents sur le wiki');
ta['n-randompage'] = new Array('x','Charger une page aléatoire');
ta['n-help'] = new Array('','Aide');
ta['n-sitesupport'] = new Array('','Aidez-nous');
ta['t-whatlinkshere'] = new Array('j','Liste de tous les wikis qui lient vers cette page');
ta['t-recentchangeslinked'] = new Array('k','Changements récents dans les pages qui lient vers cette page');
ta['feed-rss'] = new Array('','Flux RSS pour cette page');
ta['feed-atom'] = new Array('','Flux Atom pour cette page');
ta['t-contributions'] = new Array('','Voir la liste de contributions de cet utilisateur');
ta['t-emailuser'] = new Array('','Envoyer un courriel à cet utilisateur');
ta['t-upload'] = new Array('u','Télécharger une image ou des fichiers');
ta['t-specialpages'] = new Array('q','Liste de toutes les pages spéciales');
ta['ca-nstab-main'] = new Array('c','Voir l’article');
ta['ca-nstab-user'] = new Array('c','Voir la page utilisateur');
ta['ca-nstab-media'] = new Array('c','Voir la page du média');
ta['ca-nstab-special'] = new Array('','Ceci est une page spéciale, vous ne pouvez la modifier.');
ta['ca-nstab-project'] = new Array('a','Voir la page du projet');
ta['ca-nstab-image'] = new Array('c','Voir la page de l’image');
ta['ca-nstab-mediawiki'] = new Array('c','Voir le message système');
ta['ca-nstab-template'] = new Array('c','Voir le modèle');
ta['ca-nstab-help'] = new Array('c','Voir la page d’aide');
ta['ca-nstab-category'] = new Array('c','Voir la page de la catégorie');
/*</source>
== Fonctions de base pour monobook ==
Cette partie contient les fonctions Javascript de base de Wikiversité.
Pour installer une nouvelle fonction :
<code>aOnloadFunctions[aOnloadFunctions.length] = nom_de_la_fonction; // (sans parenthèses)</code>
<source lang="javascript">*/
if (!window.aOnloadFunctions) {
var aOnloadFunctions = new Array();
}
window.onload = function()
{
if (window.aOnloadFunctions) {
for (var _i=0; _i<aOnloadFunctions.length; _i++) {
aOnloadFunctions[_i]();
}
}
}
/**
* Ajouter une nouvelle fonction à exécuter au chargement de la page.
*/
function addLoadEvent(func)
{
if (window.addEventListener)
window.addEventListener("load", func, false);
else if (window.attachEvent)
window.attachEvent("onload", func);
}
/**
* Permet de centraliser les codes javascript au moyen de la fonction "obtenir" (crée sur fr.wikipedia)
*/
function obtenir(name)
{
document.write('<script type="text/javascript" src="' +
'http://fr.wikiversity.org/w/index.php?title=MediaWiki:JSScripts/' + name +
'&action=raw&ctype=text/javascript&dontcountme=s"></script>');
}
/**
* Fonctions de traitement de chaînes
*/
String.prototype.ucFirst = function ()
{
return this.substr(0,1).toUpperCase() + this.substr(1,this.length);
}
function hasClass(node, classe) {
var s=" "+node.className+" ";
return s.indexOf(" "+classe+" ") >= 0;
}
function equalsAa(str1, str2) {
return str1.toUpperCase() == str2.toUpperCase();
}
function startsWithAa(string, prefix) {
return equalsAa(string.substring(0, prefix.length), prefix);
}
function substractPrefixAa(string, prefix) {
return startsWithAa(string, prefix) ? string.substring(prefix.length) : string;
}
function endsWithAa(string, prefix) {
return (string.length>=prefix.length) &&
equalsAa(string.substring(string.length-prefix.length), prefix);
}
function substractSuffixAa(string, prefix) {
return endsWithAa(string, prefix) ? string.substring(0,string.length-prefix.length) : string;
}
function startsWith(string, prefix) {
return string.substring(0, prefix.length) == prefix;
}
function substractPrefix(string, prefix) {
return startsWith(string, prefix) ? string.substring(prefix.length) : string;
}
function endsWith(string, prefix) {
return (string.length>=prefix.length) &&
(string.substring(string.length-prefix.length) == prefix);
}
function substractSuffix(string, prefix) {
return endsWith(string, prefix) ? string.substring(0,string.length-prefix.length) : string;
}
// Extension de la classe String :
String.prototype.trimLeft = function() { return this.replace(/^\s\s*/, ''); }
String.prototype.trimRight = function() {
var str = this,
ws = /\s/,
i = str.length;
while (ws.test(str.charAt(--i)));
return str.slice(0, i + 1);
}
String.prototype.trim = function() { return this.trimLeft().trimRight(); }
String.prototype.equalAa = function(other) { return equalsAa(this,other); };
String.prototype.startsAa = function(prefix) { return startsWithAa(this,prefix); };
String.prototype.endsAa = function(prefix) { return endsWithAa(this,prefix); };
String.prototype.popAa = function(prefix,suffix) {
var s = this;
if (prefix) s=substractPrefixAa(s,prefix);
if (suffix) s=substractSuffixAa(s,suffix);
return s;
};
String.prototype.starts = function(prefix) { return startsWith(this,prefix); };
String.prototype.ends = function(prefix) { return endsWith(this,prefix); };
String.prototype.pop = function(prefix,suffix) {
var s = this;
if (prefix) s=substractPrefix(s,prefix);
if (suffix) s=substractSuffix(s,suffix);
return s;
};
/*</source>
== Liste des caractères spéciaux ==
Ajoutez le menu pour choisir des sous-ensembles de caractères spéciaux
Note : L'ordre de cette liste doit correspondre a celui de [[MediaWiki:Edittools]] !
<source lang="javascript">*/
function addCharSubsetMenu() {
var specialchars = document.getElementById('specialchars');
if (specialchars) {
var menu = "<select style=\"display:inline\" onChange=\"chooseCharSubset(selectedIndex)\">";
menu += "<option>Wiki</option>";
menu += "<option>Mathématiques</option>";
menu += "<option>API</option>";
menu += "<option>Latin/Romain</option>";
menu += "<option>Grec</option>";
menu += "<option>Cyrillique</option>";
menu += "<option>Devanāgarī</option>";
menu += "<option>AHD</option>";
menu += "<option>Allemand</option>";
menu += "<option>Arabe</option>";
menu += "<option>Catalan</option>";
menu += "<option>Croate</option>";
menu += "<option>Espagnol</option>";
menu += "<option>Espéranto</option>";
menu += "<option>Estonien</option>";
menu += "<option>Gallois</option>";
menu += "<option>Hawaien</option>";
menu += "<option>Hébreu</option>";
menu += "<option>Hiéroglyphe</option>";
menu += "<option>Hollandais</option>";
menu += "<option>Hongrois</option>";
menu += "<option>Indo-européen</option>";
menu += "<option>Irlandais</option>";
menu += "<option>Islandais</option>";
menu += "<option>Italien</option>";
menu += "<option>Letton</option>";
menu += "<option>Lituanien</option>";
menu += "<option>Maltais</option>";
menu += "<option>Navajo & Apache</option>";
menu += "<option>Pinyin</option>";
menu += "<option>Polonais</option>";
menu += "<option>Portugais</option>";
menu += "<option>Rōmaji</option>";
menu += "<option>Roumain</option>";
menu += "<option>Scandinave</option>";
menu += "<option>Serbe</option>";
menu += "<option>Tchèque</option>";
menu += "<option>Turc</option>";
menu += "<option>Vieil anglais</option>";
menu += "<option>Vietnamien</option>";
menu += "<option>Yiddish</option>";
menu += "</select>";
specialchars.innerHTML = menu + specialchars.innerHTML;
/* default subset - try to use a cookie some day */
chooseCharSubset(0);
}
}
/* select subsection of special characters */
function chooseCharSubset(s) {
var l = document.getElementById('specialchars').getElementsByTagName('p');
for (var i = 0; i < l.length ; i++) {
l[i].style.display = i == s ? 'inline' : 'none';
l[i].style.visibility = i == s ? 'visible' : 'hidden';
}
}
addOnloadHook(addCharSubsetMenu);
/*</source>
== Boîtes déroulantes ==
<source lang="javascript">*/
// BEGIN Dynamic Navigation Bars (experimental)
var NavigationBarHide = '[ Enrouler ]';
var NavigationBarShow = '[ Dérouler ]';
var NavigationBarShowDefault = 0;
// shows and hides content and picture (if available) of navigation bars
// affiche ou masque une NavBar donnée
// Parameters:
// indexNavigationBar: the index of navigation bar to be toggled
// indexNavigationBar : numéro de la barre concernée
function toggleNavigationBar(indexNavigationBar)
{
var NavToggle = document.getElementById("NavToggle" + indexNavigationBar);
var NavFrame = document.getElementById("NavFrame" + indexNavigationBar);
// si y'a pas de NavFrame/NavToggle, on oublie
if (!NavFrame || !NavToggle) { return false; }
// ajout par Dake
// permet de créer un titre en lieu et place du "Dérouler" grâce
// à l'attribut "title" du tag.
// Bidouillage :
// 1. Permet de modifier « Enrouler » et « Dérouler »
// Utilisation : title = "dérouler/enrouler"
// Si non supporté, laisse le texte par défaut
// 2. Permet de décider si la boîte est affichée au départ ou pas
// Par défaut, le contenu est caché
// Pour l'afficher, il suffit d'ajouter style="display:block" au NavContent
var ShowText;
var HideText;
var Texts;
ShowText = NavigationBarShow;
HideText = NavigationBarHide;
if (NavFrame.title == undefined || NavFrame.title.length == 0 )
{
} else {
// Cette astuce permet de passer deux arguments dans « titre »
Texts=NavFrame.title.split("/");
if (Texts[0].length==0) {} else { ShowText=Texts[0] }
if (Texts[1].length==0 || Texts[1] == undefined) {} else { HideText=Texts[1] }
}
if (NavToggle.firstChild.data == ShowText || NavToggle.firstChild.data == NavigationBarShow) {
for (
var NavChild = NavFrame.firstChild;
NavChild != null;
NavChild = NavChild.nextSibling
) {
if (NavChild.className == 'NavPic') {
NavChild.style.display = 'block';
}
if (NavChild.className == 'NavContent') {
NavChild.style.display = 'block';
}
if (NavChild.className == 'NavToggle') {
NavChild.firstChild.data = HideText;
}
}
} else {
for (
var NavChild = NavFrame.firstChild;
NavChild != null;
NavChild = NavChild.nextSibling
) {
if (NavChild.className == 'NavPic') {
NavChild.style.display = 'none';
}
if (NavChild.className == 'NavContent') {
NavChild.style.display = 'none';
}
if (NavChild.className == 'NavToggle') {
NavChild.firstChild.data = ShowText;
}
}
}
}
// adds show/hide-button to navigation bars
function createNavigationBarToggleButton()
{
var indexNavigationBar = 0;
// iterate over all < div >-elements
for(
var i=0;
NavFrame = document.getElementsByTagName("div")[i];
i++
) {
// if found a navigation bar
if (NavFrame.className == "NavFrame") {
indexNavigationBar++;
var NavToggle = document.createElement("a");
NavToggle.className = 'NavToggle';
NavToggle.setAttribute('id', 'NavToggle' + indexNavigationBar);
NavToggle.setAttribute('href', 'javascript:toggleNavigationBar(' + indexNavigationBar + ');');
// Par défaut, la boîte est fermée
var NavToggleText = document.createTextNode(NavigationBarHide);
// Vérifie si l'un des enfants est affiché, alors la boîte s'ouvre
for (var NavChild = NavFrame.firstChild;NavChild != null;NavChild = NavChild.nextSibling)
{
if (NavChild.style!=undefined) {
if (NavChild.style.display!=undefined) {
if (NavChild.style.display=="block") { NavToggleText = document.createTextNode(NavigationBarShow);}
}
}
}
NavToggle.appendChild(NavToggleText);
// add NavToggle-Button as first div-element
// in < div class="NavFrame" >
NavFrame.insertBefore(
NavToggle,
NavFrame.firstChild
);
NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar);
}
}
// if more Navigation Bars found than Default: hide all
if (NavigationBarShowDefault < indexNavigationBar) {
for(
var i=1;
i<=indexNavigationBar;
i++
) {
toggleNavigationBar(i);
}
}
}
addOnloadHook(createNavigationBarToggleButton);
/*</source>
== Réécritrure des titres ==
La fonction cherche une bannière comme celle-là :
<nowiki><div id="RealTitleBanner">Div cachée
<span id="RealTitle">titre</span>
</div></nowiki>
Un élément avec id=DisableRealTitle désactive la fonction.
<source lang="javascript">
*/
rewritePageH1 = function() {
try {
var realTitleBanner = document.getElementById("RealTitleBanner");
if (realTitleBanner) {
if (!document.getElementById("DisableRealTitle")) {
var realTitle = document.getElementById("RealTitle");
var h1 = document.getElementsByTagName("h1")[0];
if (realTitle && h1) {
h1.innerHTML = realTitle.innerHTML;
realTitleBanner.style.display = "none";
}
}
}
} catch (e) {
/* Something went wrong. */
}
}
addOnloadHook(rewritePageH1);
/*
* VraiTitre : Ajout du titre réel d'un article pour lequel MediaWiki n'affiche pas correctement
*/
function VraiTitre()
{
var balise = document.getElementById("vrai_titre");
if (!balise) return;
vrai_titre = balise.childNodes[0].nodeValue;
var titre = document.getElementsByTagName("H1")[0];
rectificatif = titre.appendChild(document.createElement("span"));
rectificatif.setAttribute ("style","color:#AAAAAA; font-size:0.7em; font-style:italic; display:inline;");
rectificatif.appendChild(document.createTextNode(" ("+ vrai_titre +")"));
}
addOnloadHook(VraiTitre);
/*</source>
== Icônes de titre ==
* Cherche les icônes de titre (class="icone de titre") et les déplace à droite du titre de la page.
* Doit être exécuté après une éventuelle correction de titre.
<source lang="javascript">*/
function IconesDeTitre() {
var h1 = document.getElementsByTagName("h1")[0];
var icones = document.getElementsByTagName("div");
var icones2 = new Array();
var j = 0;
for (var i = 0; i < icones.length; ++i) {
if (icones[i].className == "icone de titre") {
icones2[j++] = icones[i];
}
}
for (; j > 0; --j) {
icones2[j-1].style.display = "block"; /* annule display:none par défaut */
icones2[j-1].style.borderWidth = "1px";
icones2[j-1].style.borderStyle = "solid";
icones2[j-1].style.borderColor = "white";
h1.insertBefore(icones2[j-1], h1.firstChild); /* déplacement de l'élément */
}
}
addOnloadHook(IconesDeTitre);
/*</source>
== Lien d'import ==
Changer le lien d'import en lien vers la page [[Aide:Importer un fichier]] (depuis fr.wikipedia)
<source lang="javascript">*/
function LienUpload()
{
uploadLink = document.getElementById("t-upload");
if (!uploadLink) return;
a = uploadLink.firstChild;
a.setAttribute('href', '/wiki/Aide:Importer_un_fichier');
}
addOnloadHook(LienUpload);
/*</source>
== Barre d'outil ==
=== Générateur de tableaux ===
Génère un tableau en utilisant la syntaxe MediaWiki
@author: fr:user:dake
@version: 0.1
<source lang="javascript">*/
function generateTableau(nbCol, nbRow, border, styleHeader, styleLine)
{
var code = "\n";
if (styleHeader==1) {
code += '{{entête tableau charte}}\n';
} else {
code += '{| border="' + border + '"\n';
code += '|+ Titre du tableau\n';
}
for (var i=0; i<nbCol; i++) code += '! en-tête ' + i + '\n';
for (var j=0; j<nbRow; j++) {
if ((j+1)%2==0 && styleLine==1) {
code += '|-{'+'{ligne grise}'+'}\n';
} else {
code += '|-----\n';
}
for (var i=0; i<nbCol; i++) code += '| élément\n';
}
code += '|}';
insertTags('','', code);
}
/**
* Ouvre une popup avec paramètres pour générer un tableau
* Le nombre de lignes et de colonnes peut être modifié. Des
* paramètres supplémentaires sont liés aux modèles disponibles sur :fr
*
* @author: fr:user:dake
* @version: 0.1
*/
function popupTableau()
{
var popup = window.open('','name','height=400,width=500');
javaCode = '<script type="text\/javascript">function insertCode(){';
javaCode += 'var row = parseInt(document.paramForm.inputRow.value); ';
javaCode += 'var col = parseInt(document.paramForm.inputCol.value); ';
javaCode += 'var bord = parseInt(document.paramForm.inputBorder.value); ';
javaCode += 'var styleHeader = document.paramForm.inputHeader.checked; ';
javaCode += 'var styleLine = document.paramForm.inputLine.checked; ';
javaCode += 'window.opener.generateTableau(col,row,bord,styleHeader,styleLine); ';
javaCode += '}<\/script>';
popup.document.write('<html><head><title>Paramètres du tableau</title>');
popup.document.write('<script type="text\/javascript" src="\/skins-1.5\/common\/wikibits.js"><!-- wikibits js --><\/script>');
popup.document.write('<style type="text\/css" media="screen,projection">/*<![CDATA[*/ @import "\/skins-1.5\/monobook\/main.css?5"; /*]]>*/<\/style>');
popup.document.write(javaCode);
popup.document.write('</head><body>');
popup.document.write('<p>Veuillez entrer les paramètres du tableau : </p>');
popup.document.write('<form name="paramForm">');
popup.document.write('Nombre de lignes : <input type="text" name="inputRow" value="3" ><p>');
popup.document.write('Nombre de colonnes : <input type="text" name="inputCol" value="3" ><p>');
popup.document.write('Largeur de la bordure : <input type="text" name="inputBorder" value="1" ><p>');
popup.document.write('En-tête en gris (style « charte graphique ») : <input type="checkbox" name="inputHeader" checked="1" ><p>');
popup.document.write('Lignes grises alternées (style « charte graphique ») : <input type="checkbox" name="inputLine" checked="1" ><p>');
popup.document.write('</form">');
popup.document.write('<p><a href="javascript:insertCode()"> Insérer le code dans la fenêtre d\'édition</a></p>');
popup.document.write('<p><a href="javascript:self.close()"> Fermer</a></p>');
popup.document.write('</body></html>');
popup.document.close();
}
/*</source>
=== Insertion de nouveaux boutons dans la barre d'outil ===
Remplit la variable mwCustomEditButtons (voir /skins-1.5/commons/wikibits.js) pour ajouter des boutons à la barre d'outils
<source lang="javascript">*/
function addCustomButton(imageFile, speedTip, tagOpen, tagClose, sampleText)
{
mwCustomEditButtons[mwCustomEditButtons.length] =
{"imageFile": imageFile,
"speedTip": speedTip,
"tagOpen": tagOpen,
"tagClose": tagClose,
"sampleText": sampleText};
}
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/3/30/Btn_toolbar_rayer.png','Rayer',"<s>","</s>",'');
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/8/88/Btn_toolbar_enum.png','Énumération',"\n# élément 1\n# élément 2\n# élément 3","",'');
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/1/11/Btn_toolbar_liste.png','Liste',"\n* élément A\n* élément B\n* élément C","",'');
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/9/9e/Btn_toolbar_gallery.png','Galerie d\'images',"\n<gallery>\nFichier:Image1.jpg|[[Titre1]]\nFichier:Image2.jpg|[[Image2]]\nFichier:Image3.jpg|Le [[titre3]]\n</gallery>","",'');
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/3/37/Btn_toolbar_commentaire.png','Commentaire',"<!--","-->",'');
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/c/c8/Button_redirect.png','Redirection',"#REDIRECT [[","]]",'nom de la destination');
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/e/ea/Button_easy_cite.png','Références','\n==Références==\n<references/>\n','','');
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/b/b4/Button_category03.png','Catégorie',"[[Catégorie:","]]",'nom de la catégorie');
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/b/b8/Bouton_Faut_sourcer.png','Leçon','\{\{Leçon\n \| idfaculté = \n \| département = \n \| 1 = ','\n \| exo1 = \n \| fiche1 = \n \| annexe1 = \n \| niveau = \n \| titre = \n \| cours =\n \| autres projets = oui\n | w =\n | wikt =\n\}\}','entrez le nom de la première leçon');
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/7/77/Button_Nuvola_apps_edu_phi.png','Chapitre','\{\{Chapitre\n\|titre=\n\|titre_leçon=\n\|idfaculté=','\n\|leçon=\n\|numéro=\n\|précédent=\n\|suivant=\n\|niveau=\n\}\}','entrez le nom de la faculté');
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/b/bd/Btn_plus.png','Bas de page','\{\{Bas de page\n\|idfaculté=mathématiques\n\|leçon=[[../]]\n\|précédent=[[../|sommaire]]','\n\|suivant=[[..//]]\n\}\}');
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/0/0c/Blue-question-mark.jpg','Quiz','<quiz>\n\{ Entrer ici la question :<br />\n\| type="\{\}" \}\n\{ réponse 1 \| réponse 2 ignorant les majuscules (i) _10 \}\n</quiz>');
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/e/e9/Button_copy_edit.png','Ouvrage','\{\{Ouvrage\n\|éditeur=','\n\|collection=\n\|série=\n\|titre=\n\|titre vo=\n\|ref=\n\|volume=\n\|titre volume=\n\|auteur=\n\|prénom=\n\|nom=\n\|auteurs=\n\|trad=\n\|langue=\n\|lien langue=\n\|lieu=\n\|année=\n\|mois=\n\|jour=\n\|publi=\n\|pages=\n\|format=\n\|isbn=\n\|issn=\n\|présentation en ligne=\n\|lire en ligne=\n\|partie=\n\|numéro=\n\|chap=\n\|passage=\n\|commentaire=\n\}\}');
//Ressemble à la fonction de /skins-1.5/commons/wikibits.js pour insérer un autre lien que insertTags
function marque_tab()
{
var toolbar = document.getElementById('toolbar');
if (!toolbar) return false;
var textbox = document.getElementById('wpTextbox1');
if (!textbox) return false;
if (!document.selection && textbox.selectionStart == null)
return false;
var image = document.createElement("img");
image.width = 23;
image.height = 22;
image.src = 'http://upload.wikimedia.org/wikipedia/commons/0/04/Button_array.png';
image.border = 0;
image.alt = 'Tableau';
image.title = 'Tableau';
image.style.cursor = "pointer";
image.onclick = function() {
popupTableau();
return false;
}
toolbar.appendChild(image);
}
addOnloadHook(marque_tab);
/*</source>
== Suppression du titre sur la page d'accueil ==
Script de suppression du titre sur la page d'accueil (depuis fr.wikipedia)
<source lang="javascript">*/
var mpTitle = "Accueil";
var isMainPage = (/[Aa]ccueil/.test(wgTitle));
var isMainPageFront = (document.title.substr(0, document.title.lastIndexOf(" - ")) == mpTitle);
var isDiff = (document.location.search && (document.location.search.indexOf("diff=") != -1 || document.location.search.indexOf("oldid=") != -1));
if (isMainPage)
{
if (isMainPageFront && !isDiff)
document.write('<style type="text/css">/*<![CDATA[*/ #lastmod, #siteSub, #contentSub, h1.firstHeading { display: none !important; } /*]]>*/</style>');
var mpSmallEnabled;
var mpMinWidth = 700;
function mainPageTransform()
{
$('#ca-nstab-main a').text('Accueil');
if (((isMainPageFront && !isDiff) || /[\/=:]Main_Page/.test(document.location)) && document.getElementById('ca-nstab-main'))
var mpContentEl = document.getElementById("bodyContent");
var mpBrowseEl = document.getElementById("EnWpMpBrowse");
var mpContainEl = document.getElementById("EnWpMpBrowseContainer");
var mpMarginEl = document.getElementById("EnWpMpMargin");
var mpEl = document.getElementById("EnWpMainPage");
if (!mpContentEl || !mpBrowseEl || !mpContainEl || !mpMarginEl || !mpEl)
return;
if (!mpSmallEnabled && mpContentEl.offsetWidth < mpMinWidth)
{
mpContainEl.insertBefore(mpBrowseEl, mpContainEl.firstChild);
mpBrowseEl.className = "EnWpMpBrowseBottom";
mpMarginEl.style.marginRight = 0;
mpSmallEnabled = true;
}
else if (mpSmallEnabled && mpContentEl.offsetWidth > mpMinWidth)
{
mpEl.insertBefore(mpBrowseEl, mpEl.firstChild);
mpBrowseEl.className = "EnWpMpBrowseRight";
mpMarginEl.style.marginRight = "13.8em";
mpSmallEnabled = false;
}
}
var onloadFuncts = [ mainPageTransform ];
addFuncEvent("resize", mainPageTransform);
}
/*</source>
== Page de recherche ==
* Amélioration de la page de recherche v3
* Auteur : Marc Mongenet
* Sous licence GFDL & GPL
<source lang="javascript">*/
function SpecialSearchEnhanced3()
{
function SearchForm(search_action_url, engine_url, engine_name, logo_url,
search_field_name, search_field_value, site_field_name, site_field_value)
{
var span = document.createElement("div");
span.style.marginRight = "1em";
span.style.width="100%";
span.style.whiteSpace = "nowrap";
var form = document.createElement("form");
form.method = "get";
form.action = search_action_url;
form.style.display = "inline";
span.appendChild(form);
var input = document.createElement("input");
input.type = "hidden";
input.name = search_field_name;
form.appendChild(input);
var site = document.createElement("input");
site.type = "hidden";
site.name = site_field_name;
site.value = site_field_value;
form.appendChild(site);
var submit = document.createElement("input");
submit.type = "submit";
submit.value = "Recherche";
form.appendChild(submit);
form.onsubmit = function() {
input.value = document.getElementById("lsearchbox").value;
}
var a = document.createElement("a");
a.href = engine_url;
span.appendChild(a);
var img = document.createElement("img");
img.src = logo_url;
img.alt = engine_name;
img.style.borderWidth = "0";
img.style.padding = "5px";
a.appendChild(img);
return span;
}
if (typeof SpecialSearchEnhanced3Disabled != 'undefined') return;
if (wgPageName != "Special:Search") return;
var mainNode = document.getElementsByTagName("form");
if (!mainNode) return;
mainNode = mainNode[0];
mainNode.appendChild(document.createElement("center"));
mainNode = mainNode.lastChild;
var searchValue = document.getElementById("lsearchbox").value;
var engine;
engine = SearchForm("http://partner.exalead.fr/search", "http://www.exalead.fr/", "Exalead",
"http://www.wikipedia.fr/exalead.gif", "q", searchValue,
"site", "fr.wikiversity.org");
mainNode.appendChild(engine);
engine = SearchForm("http://www.google.fr/search", "http://www.google.fr/", "Google",
"http://www.google.com/logos/Logo_25wht.gif", "q", searchValue,
"as_sitesearch", "fr.wikiversity.org");
mainNode.appendChild(engine);
engine = SearchForm("http://search.live.com/results.aspx", "http://search.live.com/", "Live",
"http://search.live.com/s/affillogoLive.gif", "q", searchValue,
"q1", "site:http://fr.wikiversity.org");
mainNode.appendChild(engine);
engine = SearchForm("http://fr.search.yahoo.com/search", "http://fr.search.yahoo.com/", "Yahoo!",
"http://us.yimg.com/i/yahootogo/y88red2.gif", "p", searchValue,
"vs", "fr.wikiversity.org");
mainNode.appendChild(engine);
}
addOnloadHook(SpecialSearchEnhanced3);
/*</source>
== Salle Café ==
Ce Javascript permet de gérer la salle café comme une page de discussion.
<source lang="javascript">*/
function DiscussionCafe()
{
if( (wgPageName.search('Wikiversité:La_salle_café') != -1)
|| (wgPageName.search('Wikiversité:Réserve') != -1))
document.body.className = 'cafe';
}
addOnloadHook(DiscussionCafe);
/*</source>
== LookupHover ==
Ce Javascript permet d'afficher la définition du Wiktionnaire d'un mot lorsqu'on double-clique dessus.
<source lang="javascript">*/
importScriptURI('http://en.wikinews.org/w/index.php?title=MediaWiki:Gadget-dictionaryLookupHover.js&action=raw&ctype=text/javascript');
/*</source>*/
/**
* Utilisation du modèle Modèle:Images
*/
function toggleImage(group, remindex, shwindex) {
document.getElementById("ImageGroupsGr"+group+"Im"+remindex).style.display="none";
document.getElementById("ImageGroupsGr"+group+"Im"+shwindex).style.display="inline";
}
function imageGroup(){
if (document.URL.match(/printable/g)) return;
var bc=document.getElementById("bodyContent");
if( !bc ) bc = document.getElementById("mw_contentholder");
if( !bc ) return;
var divs=bc.getElementsByTagName("div");
var i = 0, j = 0;
var units, search;
var currentimage;
var UnitNode;
for (i = 0; i < divs.length ; i++) {
if (divs[i].className != "ImageGroup") continue;
UnitNode=undefined;
search=divs[i].getElementsByTagName("div");
for (j = 0; j < search.length ; j++) {
if (search[j].className != "ImageGroupUnits") continue;
UnitNode=search[j];
break;
}
if (UnitNode==undefined) continue;
units=Array();
for (j = 0 ; j < UnitNode.childNodes.length ; j++ ) {
var temp = UnitNode.childNodes[j];
if (temp.className=="center") units.push(temp);
}
for (j = 0 ; j < units.length ; j++) {
currentimage=units[j];
currentimage.id="ImageGroupsGr"+i+"Im"+j;
var imghead = document.createElement("div");
var leftlink;
var rightlink;
if (j != 0) {
leftlink = document.createElement("a");
leftlink.href = "javascript:toggleImage("+i+","+j+","+(j-1)+");";
leftlink.innerHTML="◀";
} else {
leftlink = document.createElement("span");
leftlink.innerHTML=" ";
}
if (j != units.length - 1) {
rightlink = document.createElement("a");
rightlink.href = "javascript:toggleImage("+i+","+j+","+(j+1)+");";
rightlink.innerHTML="▶";
} else {
rightlink = document.createElement("span");
rightlink.innerHTML=" ";
}
var comment = document.createElement("tt");
comment.innerHTML = "("+ (j+1) + "/" + units.length + ")";
with(imghead) {
style.fontSize="110%";
style.fontweight="bold";
appendChild(leftlink);
appendChild(comment);
appendChild(rightlink);
}
currentimage.insertBefore(imghead,currentimage.childNodes[0]);
if (j != 0) currentimage.style.display="none";
}
}
}
addOnloadHook(imageGroup);
/**
* getElementsByClass : rechercher les éléments de la page dont le paramètre "class" est celui recherché
*/
function getElementsByClass(searchClass, node, tag) {
if (node == null) node = document;
if (tag == null) tag = '*';
return getElementsByClassName(node, tag, searchClass);
}
/**
* Recherche d'un élément contenu dans base
* dont le nom est name
* @param base Nœud contenant l'élément recherché
* @param name Nom de l'élément recherché
*/
function getFirstElement(base,name)
{
if (!base) return null;
return getNextElement(base.firstChild, name, true);
}
/**
* Recherche du prochain élément après base
* dont le nom est name
* @param base Noeud précédemment trouvé
* @param name Nom de l'élément recherché
* @param testbase (optionnel) true pour tester le nœud donné.
*/
function getNextElement(base,name,testbase)
{
while (base!=null)
{
if (testbase && (base.nodeType==1) && equalsAa(base.nodeName,name)) return base;
testbase=true;
base=base.nextSibling;
}
return null;
}
/**
* Fonctions de traitement de chaînes
*/
function equalsAa(str1, str2) {
return str1.toUpperCase() == str2.toUpperCase();
}
function startsWithAa(string, prefix) {
return equalsAa(string.substring(0, prefix.length), prefix);
}
function substractPrefixAa(string, prefix) {
return startsWithAa(string, prefix) ? string.substring(prefix.length) : string;
}
function endsWithAa(string, prefix) {
return (string.length>=prefix.length) &&
equalsAa(string.substring(string.length-prefix.length), prefix);
}
function substractSuffixAa(string, prefix) {
return endsWithAa(string, prefix) ? string.substring(0,string.length-prefix.length) : string;
}
function startsWith(string, prefix) {
return string.substring(0, prefix.length) == prefix;
}
function substractPrefix(string, prefix) {
return startsWith(string, prefix) ? string.substring(prefix.length) : string;
}
function endsWith(string, prefix) {
return (string.length>=prefix.length) &&
(string.substring(string.length-prefix.length) == prefix);
}
function substractSuffix(string, prefix) {
return endsWith(string, prefix) ? string.substring(0,string.length-prefix.length) : string;
}
// Extension de la classe String :
String.prototype.trimLeft = function() { return this.replace(/^\s\s*/, ''); }
String.prototype.trimRight = function() {
var str = this,
ws = /\s/,
i = str.length;
while (ws.test(str.charAt(--i)));
return str.slice(0, i + 1);
}
String.prototype.trim = function() { return this.trimLeft().trimRight(); }
String.prototype.equalAa = function(other) { return equalsAa(this,other); };
String.prototype.startsAa = function(prefix) { return startsWithAa(this,prefix); };
String.prototype.endsAa = function(prefix) { return endsWithAa(this,prefix); };
String.prototype.popAa = function(prefix,suffix) {
var s = this;
if (prefix) s=substractPrefixAa(s,prefix);
if (suffix) s=substractSuffixAa(s,suffix);
return s;
};
String.prototype.starts = function(prefix) { return startsWith(this,prefix); };
String.prototype.ends = function(prefix) { return endsWith(this,prefix); };
String.prototype.pop = function(prefix,suffix) {
var s = this;
if (prefix) s=substractPrefix(s,prefix);
if (suffix) s=substractSuffix(s,suffix);
return s;
};
/**
* Script pour alterner entre deux cartes de géolocalisation
*/
addOnloadHook(function(){
var cont;
if(!(wgAction=="view")) return
cont=getElementsByClass('img_toogle', document.getElementById('bodyContent'), 'div');
if(cont.length==0) return
for (var i = 0; i < cont.length ; i++) {
cont.box = getElementsByClass('geobox',cont[i]);
cont.box[0].style.display='none';
cont.box[1].style.borderTop='0';
var toogle = document.createElement('a');
toogle.appendChild(document.createTextNode(cont.box[0].getElementsByTagName('img')[0].alt));
toogle.href='#';
toogle.className='a_toogle';
toogle.status = 1;
toogle.onclick = function() {
this.removeChild(this.firstChild);
div0 = getElementsByClass('geobox',this.parentNode)[0];
div1 = getElementsByClass('geobox',this.parentNode)[1];
alt0 = div0.getElementsByTagName('img')[0].alt;
alt1 = div1.getElementsByTagName('img')[0].alt;
if(this.status==0) {
div0.style.display='none';
div1.style.display='';
this.status=1;
this.appendChild(document.createTextNode(alt0));
} else {
div0.style.display='';
div1.style.display='none';
this.status=0;
this.appendChild(document.createTextNode(alt1));
}
return false;
}
cont[i].insertBefore(toogle, cont.box[1].nextSibling);
}
});
/**
* Utilisation du modèle Modèle:VideoSRT
*/
function toggleVideo(group, remindex, shwindex) {
document.getElementById("VideoSRTGroupsGr"+group+"Im"+remindex).style.display="none";
document.getElementById("VideoSRTGroupsGr"+group+"Im"+shwindex).style.display="inline";
}
function videoGroup(){
if (document.URL.match(/printable/g)) return;
var bc=document.getElementById("bodyContent");
if( !bc ) bc = document.getElementById("mw_contentholder");
if( !bc ) return;
var divs=bc.getElementsByTagName("div");
var i = 0, j = 0, k = 0;
var units, search;
var currentvideo;
var UnitNode;
for (i = 0; i < divs.length ; i++) {
if (divs[i].className != "VideoSRTGroup") continue;
UnitNode=undefined;
search=divs[i].getElementsByTagName("div");
for (j = 0; j < search.length ; j++) {
if (search[j].className != "VideoSRTGroupUnits") continue;
UnitNode=search[j];
break;
}
if (UnitNode==undefined) continue;
units=Array();
for (j = 0 ; j < UnitNode.childNodes.length ; j++ ) {
var temp = UnitNode.childNodes[j];
if (temp.className=="center") units.push(temp);
}
for (j = 0 ; j < 2 ; j++) {
currentvideo=units[j];
currentvideo.id="VideoSRTGroupsGr"+i+"Im"+j;
var imghead = document.createElement("div");
var link;
if (j != 0) {
link = document.createElement("a");
link.href = "javascript:toggleVideo("+i+","+j+","+(j-1)+");";
link.innerHTML="Version sans sous-titres";
} else {
link = document.createElement("a");
link.href = "javascript:toggleVideo("+i+","+j+","+(j+1)+");";
link.innerHTML="Version avec sous-titres";
}
var comment = document.createElement("tt");
comment.innerHTML = "("+ (j+1) + "/" + 2 + ")";
with(imghead) {
style.fontSize="110%";
style.fontweight="bold";
appendChild(link);
}
currentvideo.insertBefore(imghead,currentvideo.childNodes[0]);
if (j != 0) currentvideo.style.display="none";
}
}
}
addOnloadHook(videoGroup);
/* DÉBUT DU CODE JAVASCRIPT DE "CADRE À ONGLETS"
Fonctionnement du [[Modèle:Cadre à onglets]]
Modèle implanté par User:Peleguer de http://ca.wikipedia.org
Actualisé par User:Joanjoc de http://ca.wikipedia.org
Traduction et adaptation User:Antaya de http://fr.wikipedia.org
Importation sur le Wiktionnaire puis la Wikiversité par JackPotte
*/
function CadreOngletInit(){
var i=0
for (i=0;i<=9;i++){
var vMb = document.getElementById("mb"+i);
if (!vMb) break;
var j=1
var vOgIni = 0
for (j=1;j<=9;j++){
var vBt = document.getElementById("mb"+i+"bt"+j);
if (!vBt) break;
vBt.onclick = CadreOngletVoirOnglet;
if (vBt.className=="mbBoutonSel") vOgIni=j;
}
if (vOgIni == 0) {
vOgIni = 1+Math.floor((j-1)*Math.random()) ;
document.getElementById("mb"+i+"og"+vOgIni).style.display = "block";
document.getElementById("mb"+i+"og"+vOgIni).style.visibility = "visible";
document.getElementById("mb"+i+"bt"+vOgIni).className="mbBoutonSel";
}
}
}
function CadreOngletVoirOnglet(){
var vMbNom = this.id.substr(0,3);
var vIndex = this.id.substr(5,1);
var i=1
for (i=1;i<=9;i++){
var vOgElem = document.getElementById(vMbNom+"og"+i);
if (!vOgElem) break;
if (vIndex==i){
vOgElem.style.display = "block";
vOgElem.style.visibility = "visible";
document.getElementById(vMbNom+"bt"+i).className="mbBoutonSel";
} else {
vOgElem.style.display = "none";
vOgElem.style.visibility = "hidden";
document.getElementById(vMbNom+"bt"+i).className="mbBouton";
}
}
return false;
}
addOnloadHook(CadreOngletInit);
/*FIN DU CODE JAVASCRIPT DE "CADRE À ONGLETS"*/
/**
* Diverses fonctions manipulant les classes
* Utilise des expressions régulières et un cache pour de meilleures perfs
* isClass et whichClass depuis http://fr.wikibooks.org/w/index.php?title=MediaWiki:Common.js&oldid=140211
* hasClass, addClass, removeClass et eregReplace depuis http://drupal.org.in/doc/misc/drupal.js.source.html
* surveiller l'implémentation de .classList http://www.w3.org/TR/2008/WD-html5-diff-20080122/#htmlelement-extensions
*/
function isClass(element, classe) {
return hasClass(element, classe);
}
function whichClass(element, classes) {
var s=" "+element.className+" ";
for(var i=0;i<classes.length;i++)
if (s.indexOf(" "+classes[i]+" ")>=0) return i;
return -1;
}
function hasClass(node, className) {
if (node.className == className) {
return true;
}
var reg = new RegExp('(^| )'+ className +'($| )')
if (reg.test(node.className)) {
return true;
}
return false;
}
function addClass(node, className) {
if (hasClass(node, className)) {
return false;
}
node.className += ' '+ className;
return true;
}
function removeClass(node, className) {
if (!hasClass(node, className)) {
return false;
}
node.className = eregReplace('(^|\\s+)'+ className +'($|\\s+)', ' ', node.className);
return true;
}
function eregReplace(search, replace, subject) {
return subject.replace(new RegExp(search,'g'), replace);
}
// Récupère proprement le contenu textuel d'un noeud et de ses noeuds descendants
// Copyright Harmen Christophe, http://openweb.eu.org/articles/validation_avancee, CC
function getTextContent(oNode) {
if (typeof(oNode.textContent)!="undefined") {return oNode.textContent;}
switch (oNode.nodeType) {
case 3: // TEXT_NODE
case 4: // CDATA_SECTION_NODE
return oNode.nodeValue;
break;
case 7: // PROCESSING_INSTRUCTION_NODE
case 8: // COMMENT_NODE
if (getTextContent.caller!=getTextContent) {
return oNode.nodeValue;
}
break;
case 9: // DOCUMENT_NODE
case 10: // DOCUMENT_TYPE_NODE
case 12: // NOTATION_NODE
return null;
break;
}
var _textContent = "";
oNode = oNode.firstChild;
while (oNode) {
_textContent += getTextContent(oNode);
oNode = oNode.nextSibling;
}
return _textContent;
}
// FIN Fonctions JavaScript
/**
* insertAfter : insérer un élément dans une page
*/
function insertAfter(parent, node, referenceNode) {
parent.insertBefore(node, referenceNode.nextSibling);
}
/**
* application de [[w:Wikipédia:Prise de décision/Système de cache]], puis [[Wikiversité:La_salle_café/33_2010]]
* un <span class="noarchive"> autour du lien l'empêche d'être pris en compte
* pour celui-ci uniquement
* un no_external_cache=true dans un monobook personnel désactive le script
*/
addOnloadHook(function () {
if (wgNamespaceNumber == 0) {
if ((typeof no_external_cache != "undefined") && (no_external_cache)) return;
addcache();
}
function addcache() {
var external_links;
if (document.getElementsByClassName) {
external_links = document.getElementsByClassName('external');
} else {
external_links = getElementsByClass('external',document.getElementById("bodyContent"),'a');
}
for( i = 0;i < external_links.length;i++)
{
var chemin = external_links[i].href;
if(chemin.indexOf("http://wikiwix.com/cache/")==-1 && chemin.indexOf("http://web.archive.org/web/*/")==-1 && chemin.indexOf(wgServer)==-1 && chemin.indexOf("wikimedia.org")==-1 && chemin.indexOf("stable.toolserver.org")==-1)
{
var li = external_links[i].parentNode;
if (li.className == "noarchive") continue;
var depth = 0;
while ((depth < 3) && (li.tagName != "OL") && (li.parentNode != null)) {
li = li.parentNode;
depth++;
}
if (li.tagName != "OL" || !(hasClass(li, 'references')) ) continue;
var titre = getTextContent(external_links[i]);
var last = document.createElement("small");
last.setAttribute("class", "cachelinks");
last.style.color = "#3366BB";
last.appendChild(document.createTextNode("\u00a0["));
insertAfter(external_links[i].parentNode, last, external_links[i]);
var link = document.createElement("a");
link.setAttribute("href", "http://wikiwix.com/cache/?org=" + wgServer + "&url=" + chemin.replace(/%/g, "%25").replace(/&/g, "%26") + "&title=" + encodeURIComponent(titre));
link.setAttribute("title", "archive de "+ titre);
link.appendChild(document.createTextNode("archive"));
link.style.color = "#3366BB";
last.appendChild(link);
last.appendChild(document.createTextNode("]"));
}
}
}
}
);
/* Permet d'afficher un compte à rebours sur une page avec le modèle [[Modèle:Compte à rebours]] */
/* Plyd - 3 février 2009 */
function Rebours() {
if(wgNamespaceNumber==0) return;
try {
if (document.getElementById("rebours")) {
destime = document.getElementById("rebours").title.split(";;");
Maintenant = (new Date).getTime();
Future = new Date(Date.UTC(destime[0], (destime[1]-1), destime[2], destime[3], destime[4], destime[5])).getTime();
Diff = (Future-Maintenant);
if (Diff < 0) {Diff = 0}
TempsRestantJ = Math.floor(Diff/(24*3600*1000));
TempsRestantH = Math.floor(Diff/(3600*1000)) % 24;
TempsRestantM = Math.floor(Diff/(60*1000)) % 60;
TempsRestantS = Math.floor(Diff/1000) % 60;
TempsRestant = "" + destime[6] + " ";
if (TempsRestantJ == 1) {
TempsRestant = TempsRestant + TempsRestantJ + " jour ";
} else if (TempsRestantJ > 1) {
TempsRestant = TempsRestant + TempsRestantJ + " jours ";
}
TempsRestant = TempsRestant + TempsRestantH + " h " + TempsRestantM + " min " + TempsRestantS + " s";
document.getElementById("rebours").innerHTML = TempsRestant;
setTimeout("Rebours()", 1000)
}
} catch (e) {}
}
addOnloadHook(Rebours);
/*
=== DOM création ===
<source lang="javascript">*/
/**
* Create a new DOM node for the current document.
* Basic usage: var mySpan = newNode('span', "Hello World!")
* Supports attributes and event handlers*: var mySpan = newNode('span', {style:"color: red", focus: function(){alert(this)}, id:"hello"}, "World, Hello!")
* Also allows nesting to create trees: var myPar = newNode('p', newNode('b',{style:"color: blue"},"Hello"), mySpan)
*
* *event handlers, there are some issues with IE6 not registering event handlers on some nodes that are not yet attached to the DOM,
* it may be safer to add event handlers later manually.
**/
function newNode(tagname){
var node = document.createElement(tagname);
for( var i=1;i<arguments.length;i++ ){
if(typeof arguments[i] == 'string'){ //Text
node.appendChild( document.createTextNode(arguments[i]) );
}else if(typeof arguments[i] == 'object'){
if(arguments[i].nodeName){ //If it is a DOM Node
node.appendChild(arguments[i]);
}else{ //Attributes (hopefully)
for(var j in arguments[i]){
if(j == 'class'){ //Classname different because...
node.className = arguments[i][j];
}else if(j == 'style'){ //Style is special
node.style.cssText = arguments[i][j];
}else if(typeof arguments[i][j] == 'function'){ //Basic event handlers
try{ node.addEventListener(j,arguments[i][j],false); //W3C
}catch(e){try{ node.attachEvent('on'+j,arguments[i][j],"Language"); //MSIE
}catch(e){ node['on'+j]=arguments[i][j]; }}; //Legacy
}else{
node.setAttribute(j,arguments[i][j]); //Normal attributes
}
}
}
}
}
return node;
}
/**
* retourne la valeur d'un attribut html, sinon une valeur par défaut
*/
function getAttr(node, name, defvalue) {
if (!node.attributes) return defvalue;
var v=node.attributes.getNamedItem(name);
return (v&&v.nodeValue.length)?v.nodeValue:defvalue;
}
/**
* Redirection automatique des page décrivant un fichier Commons
* vers la page de description sur Commons pour éviter des erreurs.
*/
function RedirectCommonsFile()
{
if (wgNamespaceNumber!=6) return;
// Search for link to commons
// - search div with sharedUploadNotice class
var shared_link = getElementsByClass("sharedUploadNotice");
if ((!shared_link)||(shared_link.length<1)) return; // No sharedUploadNotice div
shared_link = shared_link[0];
// - external link within the div
var links = getElementsByClass("external", shared_link, "a");
if ((!links)||(links.length<1)) links = getElementsByClass("external", shared_link, "A");
if ((!links)||(links.length<1)) return; // No external link
// Get URL and redirect
var url = getAttr(links[0], "href", null);
if (url!=null) window.location = url;
}
addOnloadHook(RedirectCommonsFile);
/*</source>