« MediaWiki:Common.js » : différence entre les versions
Apparence
Contenu supprimé Contenu ajouté
. |
. |
||
Ligne 1 275 : | Ligne 1 275 : | ||
function DiscussionCafe() { |
function DiscussionCafe() { |
||
if( (mw.config.get('wgPageName').search('Wikiversité:La_salle_café') != -1) |
if( (mw.config.get('wgPageName').search('Wikiversité:La_salle_café') != -1) |
||
|| (mw.config.get('wgPageName').search('Wikiversité:Réserve') != -1 |
|| (mw.config.get('wgPageName').search('Wikiversité:Réserve') != -1) |
||
|| (mw.config.get('wgPageName').search('Wikiversité:Administrateur/Candidature') != -1 |
|| (mw.config.get('wgPageName').search('Wikiversité:Administrateur/Candidature') != -1) |
||
|| (mw.config.get('wgPageName').search('Wikiversité:Bot/Statut') != -1 |
|| (mw.config.get('wgPageName').search('Wikiversité:Bot/Statut') != -1) |
||
|| (mw.config.get('wgPageName').search('Wikiversité:Bureaucrate/Candidature') != -1 |
|| (mw.config.get('wgPageName').search('Wikiversité:Bureaucrate/Candidature') != -1) |
||
|| (mw.config.get('wgPageName').search('Projet:Atelier graphique/Demandes à traiter') != -1 |
|| (mw.config.get('wgPageName').search('Projet:Atelier graphique/Demandes à traiter') != -1) |
||
|| (mw.config.get('wgPageName').search('Wikiversité:Journal des nouveaux arrivants') != -1 |
|| (mw.config.get('wgPageName').search('Wikiversité:Journal des nouveaux arrivants') != -1) |
||
|| (mw.config.get('wgPageName').search('Projet:Laboratoire') != -1 |
|| (mw.config.get('wgPageName').search('Projet:Laboratoire') != -1) |
||
|| (mw.config.get('wgPageName').search('Wikiversité:Pages à fusionner') != -1 |
|| (mw.config.get('wgPageName').search('Wikiversité:Pages à fusionner') != -1) |
||
|| (mw.config.get('wgPageName').search('Wikiversité:Pages à supprimer') != -1 |
|| (mw.config.get('wgPageName').search('Wikiversité:Pages à supprimer') != -1) |
||
|| (mw.config.get('wgPageName').search('Wikiversité:Pages soupçonnées de violation de copyright') != -1 |
|| (mw.config.get('wgPageName').search('Wikiversité:Pages soupçonnées de violation de copyright') != -1) |
||
|| (mw.config.get('wgPageName').search('Wikiversité:Rencontres') != -1 |
|| (mw.config.get('wgPageName').search('Wikiversité:Rencontres') != -1) |
||
|| (mw.config.get('wgPageName').search('Wikiversité:Requêtes aux administrateurs') != -1 |
|| (mw.config.get('wgPageName').search('Wikiversité:Requêtes aux administrateurs') != -1) |
||
|| (mw.config.get('wgPageName').search('Wikiversité:Requêtes aux bots') != -1 |
|| (mw.config.get('wgPageName').search('Wikiversité:Requêtes aux bots') != -1) |
||
|| (mw.config.get('wgPageName').search('Wikiversité:Requêtes aux contributeurs') != -1 |
|| (mw.config.get('wgPageName').search('Wikiversité:Requêtes aux contributeurs') != -1) |
||
|| (mw.config.get('wgPageName').search('Wikiversité:Requêtes de facultés') != -1 |
|| (mw.config.get('wgPageName').search('Wikiversité:Requêtes de facultés') != -1) |
||
|| (mw.config.get('wgPageName').search('Wikiversité:Requêtes import') != -1 |
|| (mw.config.get('wgPageName').search('Wikiversité:Requêtes import') != -1) |
||
|| (mw.config.get('wgPageName').search('Projet:Wikiversité') != -1)) |
|| (mw.config.get('wgPageName').search('Projet:Wikiversité') != -1)) |
||
document.body.className = 'cafe'; |
document.body.className = 'cafe'; |
Version du 9 septembre 2017 à 08:52
/**
* Ce script est chargé avec chaque page de la Wikiversité.
* Avant de le modifier cette page, vous êtes prié de tester vos changements sur votre propre [[Spécial:Ma page/Common.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 !
*
* Voir aussi [[MediaWiki:Monobook.js]] · [[MediaWiki:Common.css]] · [[MediaWiki:Monobook.css]]
*/
/**
* Ajouter une nouvelle fonction à exécuter au chargement de la page.
*/
function addLoadEvent(func) {
jQuery(document).ready(func);
}
/**
* Permet de centraliser les codes JavaScript au moyen de la fonction « obtenir » (créée sur fr.wikipedia)
*/
function obtenir(name) {
importScript('MediaWiki:JSScripts/' + name);
}
/**
* 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]] !
*/
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';
}
}
jQuery(document).ready(addCharSubsetMenu);
/**
* Boîtes déroulantes
*/
// 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);
// S'il n'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);
}
}
}
jQuery(document).ready(createNavigationBarToggleButton);
/**
* Réécritrure des titres
* La fonction cherche une bannière comme celle-là :
*
* <div id="RealTitleBanner">Div cachée
* <span id="RealTitle">titre</span>
* </div>
*
* Un élément avec id=DisableRealTitle désactive la fonction.
*/
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.
}
}
jQuery(document).ready(rewritePageH1);
/*
* VraiTitre : Ajout du titre réel d’un article pour lequel MediaWiki n'affiche pas correctement
*/
function realTitle() {
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 +")"));
}
jQuery(document).ready(realTitle);
/**
* 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.
*/
function titleIcons() {
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) {
// annule display:none par défaut
icones2[j-1].style.display = "block";
icones2[j-1].style.borderWidth = "1px";
icones2[j-1].style.borderStyle = "solid";
icones2[j-1].style.borderColor = "white";
// déplacement de l'élément
h1.insertBefore(icones2[j-1], h1.firstChild);
}
}
jQuery(document).ready(titleIcons);
/**
* Lien d'import
* Changer le lien d'import en lien vers la page [[Aide:Importer un fichier]] (depuis fr.wikipedia)
*/
function LienUpload() {
uploadLink = document.getElementById("t-upload");
if (!uploadLink) return;
a = uploadLink.firstChild;
a.setAttribute('href', '/wiki/Aide:Importer_un_fichier');
}
jQuery(document).ready(LienUpload);
/**
* 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
*/
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(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();
}
/**
* @deprecated Use mw.toolbar
*/
function addCustomButton() { }
//Ressemble à la fonction de /skins-1.5/commons/wikibits.js pour insérer un autre lien qu'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 = '//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);
}
$(marque_tab);
/**
* Suppression du titre sur la page d'accueil
*
* Script de suppression du titre sur la page d'accueil (depuis fr.wikipedia)
*/
var mpTitle = "Accueil";
var isMainPage = (/[Aa]ccueil/.test(mw.config.get('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)
mw.util.addCSS('#lastmod, #siteSub, #contentSub, h1.firstHeading { display: none !important; }');
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;
}
}
$(document).ready(mainPageTransform);
$(window).resize(mainPageTransform);
}
/**
* Page de recherche
*
* Amélioration de la page de recherche v3
* Auteur : Marc Mongenet
* Sous licence GFDL & GPL
*/
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 (mw.config.get('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);
}
jQuery(document).ready(SpecialSearchEnhanced3);
/**
* 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";
}
}
}
jQuery(document).ready(imageGroup);
function getElementsByClassName(node,tag,searchClass)
{ return $.makeArray( $(node).find(tag+'.'+searchClass) ); }
/**
* rechercher les éléments de la page dont le paramètre "class" est celui recherché
* http://developer.mozilla.org/en/docs/DOM:document.getElementsByClassName
*/
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 Nœud 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);
}
if (!String.prototype.trim) {
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
*/
jQuery(document).ready(function(){
var cont;
if(!(mw.config.get('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";
}
}
}
jQuery(document).ready(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;
}
jQuery(document).ready(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 //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 nœud et de ses nœuds 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
*/
jQuery(document).ready(function () {
if (mw.config.get('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(mw.config.get('wgServer'))==-1 && chemin.indexOf("wikimedia.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=" + mw.config.get('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("]"));
}
}
}
}
);
$(".cachelinks").addClass("noprint");
/* 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(mw.config.get('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) {}
}
jQuery(document).ready(Rebours);
/******* DOM création *******/
/**
* 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
* importé de Wikilivres
*/
jQuery( function RedirectCommonsFile()
{
if (mw.config.get('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 && url!=undefined) window.location = url;
} );
/**
* Quelques modifications dans la barre latérale
* Auteur : Frigory
*/
function setSidebarTools() {
// Pages spéciales et import : déjà disponibles dans la section « Outils »
$('#t-specialpages, #t-upload').hide();
// Ajout d’un S à « Information »
$('#t-info a').text('Informations sur la page');
// Ajout de liens de données de la page : statistiques de visite et sous-pages
$('#p-tb ul').prepend('<li id="t-pagestatistics"><a rel="nofollow" ' +
'title="Statisques de visite de la page" href="https://tools.wmflabs.org/pageviews/?project=fr.wikiversity.org&platform=all-access&agent=user&range=latest-30&pages=' + mw.config.get('wgPageName') + '">Statistiques</a></li>')
.append('<li id="t-subpages">' +
'<a title="Liste des sous-pages de cette page" href="/wiki/Sp%C3%A9cial:Index/' + mw.config.get('wgPageName') + '/">Sous-pages</a></li>');
// Déplacement des liens pour un utilisateur dans une autre section « Utilisateur »
if ($('#t-contributions').length) {
$('#p-user ul').append($('#t-contributions, #t-log, #t-blockip, #t-emailuser, #t-userrights'));
} else {
$('#p-user').hide();
}
// Déplacement de la section « Imprimer / exporter » en bas
if ($('#p-coll-print_export').length) {
$('#p-coll-print_export').insertAfter('#p-tb');
}
}
$(document).ready(setSidebarTools);
/* {{Projet:JavaScript/Script|specialchars}} */
/*
Remplacement de certains caractères spéciaux lors de l’édition
Uniquement sous Firefox.
Auteur : ThomasV
Importé depuis la Wikisource
*/
function keycheck() {
tb = document.getElementById("wpTextbox1");
if( tb && mw.config.get('wgNamespaceNumber')!=8 ) {
tb.onkeyup=function(e) {
var key = (window.event) ? event.keyCode : e.keyCode;
startPos = tb.selectionStart;
endPos = tb.selectionEnd;
if( endPos==startPos && ( (key>=65 && key<=90) || key==222 || key==190) ) {
m = tb.value.substring(startPos-2, startPos);
m3 = tb.value.substring(startPos-3, startPos);
f = tb.value.substring(startPos);
todo=true; i=2;
if(m[1]=="'"){
m = m[0]+"’";
if(m=="’’") m="''";
if(m=="'’") m="''";
} else switch(m) {
case "^s" : m = "ſ"; break;
case "`A" : m = "À"; break;
case "`E" : m = "È"; break;
case "`U" : m = "Ù"; break;
case "´E" : m = "É"; break;
case "*E" : m = "É"; break;
default : todo = false;
}
if(!todo) {
m=m3; todo=true; i=3;
switch(m) {
case "^oe" : m="œ"; break;
case "^ae" : m = "æ"; break;
case "^OE" : m = "Œ"; break;
case "^AE" : m = "Æ"; break;
case "..." : m = "…"; break;
default : todo = false;
}}
if(todo) {
var textScroll = tb.scrollTop;
h = tb.value.substring(0, startPos-i);
tb.value = h+m+f;
tb.selectionStart = startPos-i + m.length;
tb.selectionEnd = tb.selectionStart;
tb.scrollTop = textScroll;
}
}
}
}
}
if(!(mw.config.get('wgNamespaceNumber')%2==0 && mw.config.get('wgTitle').match(/\.js$/)!=null)) $(keycheck);
// MOOC selon https://fr.wikiversity.org/wiki/Projet:Wikiversit%C3%A9/Autoriser_la_cr%C3%A9ation_de_pages_gadget-MOOC#Toucher_.C3.A0_MediaWiki:Common.js
mw.loader.load("//fr.wikiversity.org/w/index.php?title=MediaWiki:Gadget-MOOC.css\u0026action=raw\u0026ctype=text/css", "text/css");
mw.loader.load("//fr.wikiversity.org/w/index.php?title=MediaWiki:Gadget-MOOC.js\u0026action=raw\u0026ctype=text/javascript");
/**
* Salle Café
*
* Ce Javascript permet de gérer la salle café comme une page de discussion.
*/
function DiscussionCafe() {
if( (mw.config.get('wgPageName').search('Wikiversité:La_salle_café') != -1)
|| (mw.config.get('wgPageName').search('Wikiversité:Réserve') != -1)
|| (mw.config.get('wgPageName').search('Wikiversité:Administrateur/Candidature') != -1)
|| (mw.config.get('wgPageName').search('Wikiversité:Bot/Statut') != -1)
|| (mw.config.get('wgPageName').search('Wikiversité:Bureaucrate/Candidature') != -1)
|| (mw.config.get('wgPageName').search('Projet:Atelier graphique/Demandes à traiter') != -1)
|| (mw.config.get('wgPageName').search('Wikiversité:Journal des nouveaux arrivants') != -1)
|| (mw.config.get('wgPageName').search('Projet:Laboratoire') != -1)
|| (mw.config.get('wgPageName').search('Wikiversité:Pages à fusionner') != -1)
|| (mw.config.get('wgPageName').search('Wikiversité:Pages à supprimer') != -1)
|| (mw.config.get('wgPageName').search('Wikiversité:Pages soupçonnées de violation de copyright') != -1)
|| (mw.config.get('wgPageName').search('Wikiversité:Rencontres') != -1)
|| (mw.config.get('wgPageName').search('Wikiversité:Requêtes aux administrateurs') != -1)
|| (mw.config.get('wgPageName').search('Wikiversité:Requêtes aux bots') != -1)
|| (mw.config.get('wgPageName').search('Wikiversité:Requêtes aux contributeurs') != -1)
|| (mw.config.get('wgPageName').search('Wikiversité:Requêtes de facultés') != -1)
|| (mw.config.get('wgPageName').search('Wikiversité:Requêtes import') != -1)
|| (mw.config.get('wgPageName').search('Projet:Wikiversité') != -1))
document.body.className = 'cafe';
}
jQuery(document).ready(DiscussionCafe);