MediaWiki:Common.js
Jump to navigation
Jump to search
Note: After saving, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
- Opera: Press Ctrl-F5.
/* N'importe quel JavaScript ici sera chargé pour n'importe quel utilisateur et pour chaque page accédée.
== Fonctions générales ==
<pre><nowiki>
* Fonctions générales de lancement de fonctions ou de script
*/
/**
* Installation d'une nouvelle fonction de cette façon :
* addOnloadHook(nom_de_la_fonction); (sans parenthèses)
* La procédure suivante ne doit plus être utilisée
*/
if (!window.aOnloadFunctions) {
var aOnloadFunctions = new Array();
}
window.onload = function()
{
if (window.aOnloadFunctions) {
for (var _i=0; _i<aOnloadFunctions.length; _i++) {
aOnloadFunctions[_i]();
}
}
}
function addLoadEvent(func) {
hookEvent('load', func);
}
/**
* insertAfter : insérer un élément dans une page
*/
function insertAfter(parent, node, referenceNode) {
parent.insertBefore(node, referenceNode.nextSibling);
}
/**
* Insérer un javascript d'une page particulière, idée de Mickachu
*/
function loadJs(page)
{
document.write('<script type="text/javascript" src="' +
'http://fr.wikipedia.org/w/index.php?title=' + page +
'&action=raw&ctype=text/javascript&dontcountme=s"></script>');
}
/**
* Projet JavaScript
*/
function obtenir(name)
{
loadJs('MediaWiki:JSScripts/' + name);
}
/* Fin des fonctions générales</nowiki></pre>
== Fonctions de remplissage automatique ==
<pre><nowiki>
* Fonctions de remplissage automatique
*/
function InitPaS(page_name)
{
var c1 = "<!-- Sauvegarder la page pour l'initialiser puis suivre les instructions -->";
var c2 = "<!-- N'oubliez pas d'ajouter le lien vers cette page dans la page principale des Pages à supprimer -->";
var tpl = '{{subst:' + 'Initialiser PàS|' + page_name
+ '|~~~~|jour={{subst:CURRENTDAY}}|mois={{subst:CURRENTMONTH}}}}';
return c1 + '
' + tpl + '
' + c2;
}
function InitLANN(page_name)
{
var c1 = "<!-- Sauvegarder la page pour l'initialiser puis suivre les instructions -->";
var c2 = "<!-- N'oubliez pas d'ajouter le lien vers cette page dans la page principale des articles non neutres -->";
var tpl = '{{subst:' + 'Initialiser LANN|' + page_name + '|~~~~}}';
return c1 + '
' + tpl + '
' + c2;
}
function InitIaS(page_name)
{
var c1 = "<!-- Sauvegarder la page pour l'initialiser puis suivre les instructions -->";
var c2 = "<!-- N'oubliez pas d'ajouter le lien vers cette page dans la page principale des Images à supprimer -->";
var tpl = '{{subst:' + 'Préchargement Image à Supprimer|' + page_name + '|~~~~|jour={{subst:CURRENTDAY}}|mois={{subst:CURRENTMONTH}}}}';
return c1 + '
' + tpl + '
' + c2;
}
function InitPAdQ(page_name)
{
var c1 = "<!--
À la création de la page, suivez les consignes ci-dessous pour proposer l'article.
ATTENTION : Veuillez ne rien effacer !
-->";
var tpl = '{{subst:' + 'Initialiser PAdQ|' + page_name
+ '|~~~~|jour={{subst:CURRENTDAY}}|mois={{subst:CURRENTMONTH}}';
var c2 = "| 1. Indiquez sur la ligne ci-dessous la raison pour laquelle vous proposez cet article. Vous n'avez pas besoin de signer/dater, ni de voter par la suite : votre proposition tient lieu de vote 'Pour'. |";
var tpl2 = "Je propose cet article car... (votre motivation)";
var c3 = "| 2. Sauvegardez cette page et créez un lien vers elle dans Wikipédia:Proposition articles de qualité.";
var c4 = "Pour cela, choisissez une thématique dans la page, modifiez-la et ajoutez un lien sous la forme :";
var c5 = "** [[/" + page_name + "]] proposé le ~~~~~ ";
var c6 = "Vous devez créer cette référence dans la section 'Phase I' de la thématique choisie (suivez les autres exemples).";
return c1 + '
' + tpl + '
' + c2 + '
' + tpl2 + '
' + c3 + '
' + c4 + '
' + c5 + '
' + c6 + '}}
';
}
function InitIaA(page_name)
{
var c1 = "<!-- Sauvegarder la page pour l'initialiser puis suivre les instructions -->";
return c1 + '
{{subst:Amélioration image}}';
}
function InitPCP(page_name)
{
var c1 = "<!-- Sauvegarder la page pour l'initialiser puis suivre les instructions -->";
var c2 = "<!-- N'oubliez pas d'ajouter le lien vers cette page dans la page principale des articles soupçonnées de violation de copyright -->";
var tpl = '{{subst:' + 'Initialiser PCP|' + page_name + '|~~~~}}';
return c1 + '
' + tpl + '
' + c2;
}
function InitArbReq(page_name)
{
var c1 = "<!-- Sauvegarder la page pour l'initialiser puis suivre les instructions -->";
var c2 = "<!-- N'oubliez pas d'ajouter un lien vers cette page sur [[Wikipédia:Comité d'arbitrage/Arbitrage]] -->";
var tpl = '{{subst:' + 'Wikipédia:Comité d\'arbitrage/Arbitrage/Modèle}}'
return c1 + '
' + tpl + '
' + c2;
}
function InitCdl(page_name)
{
var c1 = "<!-- Sauvegarder la page pour l'initialiser puis suivre les instructions -->";
var c2 = "<!-- N'oubliez pas d'ajouter le lien vers cette page dans la page principale du comité de lecture -->";
var tpl = '{{subst:' + 'Initialiser Comité de lecture|' + page_name + '|~~~~}}';
var tpl2 = '<noinclude' + '>{{subst:' + 'Initialiser Comité de lecture2' + '}}<' + '/noinclude>';
return c1 + '
' + c2 + '
' + '
' + tpl2 + '
' + tpl;
}
function InitProjetTraduction(page_name)
{
var mustSkip=wgPageName.indexOf('Projet:Traduction/*/');
if (mustSkip == -1) {
var c1 = "{{subst:Initialiser la page de traduction|" + "{{subst:SUBPAGENAME}}" + "|~~~~|
";
c1 += "<!-- À la création de la page, suivez les consignes ci-dessous pour proposer l'article.
";
c1 += " ATTENTION : Veuillez ne rien effacer ! -->
";
c1 += "1. Indiquez ci-dessous la langue de l'article à traduire (ex: en de es it pt...)
";
c1 += "|en|
";
c1 += "2. Indiquez ci-dessous le nom de l'article original (ex: Frankreich)
";
c1 += "|Nom original ici|
";
c1 += "3. Indiquez ci-dessous en une phrase l'intérêt de la traduction
";
c1 += "|article très bien|
";
c1 += "4. Ajoutez éventuellement un court commentaire
";
c1 += "|commentaire très intéressant ici|
";
c1 += "| 5. C'est fini, vous pouvez désormais sauvegarder cette page.
";
c1 += "}}";
return c1;
}
else {
return '';
}
}
function InitPBA(page_name)
{
var c1 = "<!--
À la création de la page, suivez les consignes ci-dessous pour proposer l'article.
ATTENTION : Veuillez ne rien effacer !
-->";
var tpl = '{{subst:' + 'Initialiser PBA|' + page_name
+ '|~~~~|jour={{subst:CURRENTDAY}}|mois={{subst:CURRENTMONTH}}';
var c2 = "| 1. Indiquez sur la ligne ci-dessous la raison pour laquelle vous proposez cet article. Vous n'avez pas besoin de signer/dater, ni de voter par la suite : votre proposition tient lieu de vote 'Pour'. |";
var tpl2 = "Je propose cet article car... (votre motivation)";
var c3 = "| 2. Sauvegardez cette page et créez un lien vers elle dans Wikipédia:Proposition bons articles.";
var c4 = "Pour cela, choisissez une thématique dans la page, modifiez-la et ajoutez un lien sous la forme :";
var c5 = "** [[/" + page_name + "]] proposé le ~~~~~ ";
var c6 = "Vous devez créer cette référence dans la section 'Phase I' de la thématique choisie (suivez les autres exemples).";
return c1 + '
' + tpl + '
' + c2 + '
' + tpl2 + '
' + c3 + '
' + c4 + '
' + c5 + '
' + c6 + '}}
';
}
var init_if_empty = new Array(
new Array('Wikipédia:Pages_à_supprimer/', InitPaS),
new Array('Wikipédia:Liste_des_articles_non_neutres/', InitLANN),
new Array('Wikipédia:Images_à_supprimer/', InitIaS),
new Array('Wikipédia:Proposition_articles_de_qualité/', InitPAdQ),
new Array('Wikipédia:Pages_soupçonnées_de_violation_de_copyright/', InitPCP),
new Array('Wikipédia:Comité_d\'arbitrage/Arbitrage/', InitArbReq),
new Array('Wikipédia:Comité_de_lecture/', InitCdl),
new Array('Projet:Traduction/', InitProjetTraduction),
new Array('Wikipédia:Proposition_bons_articles/', InitPBA)
);
/**
* Remplit la zone d'édition si elle est vide avec le texte retourné par
* un pointeur de fonction sélectionné par le nom de la page.
*/
function InitPage()
{
// Tester si editform et wpTextbox1 existe sinon il y a une erreur lorsqu'on
// ouvre l'historique d'une page qui match un des noms de init_if_empty[],
// tester seulement le nom de la page n'est pas suffisant.
if (document.editform == undefined ||
document.editform.wpTextbox1 == undefined)
return;
var text_area = document.editform.wpTextbox1;
if (text_area.value.length != 0)
return;
for (var i = 0; i < init_if_empty.length; ++i) {
var page_match = init_if_empty[i][0];
var index = wgPageName.indexOf(page_match);
if (index != -1) {
page_name = wgPageName.slice(page_match.length);
page_name = page_name.replace(/_/g, ' ');
text_area.value = init_if_empty[i][1](page_name);
break;
}
}
}
addOnloadHook(InitPage);
/* Fin des fonctions de remplissage automatique</nowiki></pre>
== Caractères spéciaux ==
<pre><nowiki>
* Ajouter un 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) return;
var charSubsetSelect = document.createElement("select");
charSubsetSelect.setAttribute("style", "display:inline");
// hard to find something that works both on IE and Fx...
charSubsetSelect.onchange = function () { chooseCharSubset(this.selectedIndex); };
var options = [
"Wiki",
"Mathématiques",
"API",
"Latin/Romain",
"Grec",
"Cyrillique",
"AHD",
"Diacritiques",
"Allemand",
"Arabe",
"Berbère",
"Catalan",
"Croate",
"Espagnol",
"Espéranto",
"Estonien",
"Gallois",
"Hawaïen",
"Hébreu",
"Hiéroglyphe",
"Hongrois",
"Indo-européen",
"Irlandais",
"Islandais",
"Italien",
"Letton",
"Lituanien",
"Maltais",
"Navajo & Apache",
"Néerlandais",
"Pinyin",
"Polonais",
"Portugais",
"Rōmaji",
"Roumain",
"Scandinave",
"Serbe",
"Tchèque",
"Turc",
"Vieil anglais",
"Vietnamien",
"Yiddish" ];
for (var i in options) {
var opt = document.createElement("option");
var txt = document.createTextNode(options[i]);
opt.appendChild(txt);
charSubsetSelect.appendChild(opt);
}
specialchars.insertBefore(charSubsetSelect, specialchars.childNodes[0]);
/* default subset - try to use a cookie some day */
chooseCharSubset(0);
}
/* choisir la section de caractères spéciaux */
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);
/* Fin des caractères spéciaux</nowiki></pre>
== Espace Référence ==
<pre><nowiki>
* Choix du mode d'affichage des références
* @note L'ordre de cette liste doit correspondre a celui de Modèle:Édition !
*/
function addBibSubsetMenu()
{
var specialBib = document.getElementById('specialBib');
if (!specialBib) return;
specialBib.style.display = 'block';
menu = '<select style="display:inline;" onChange="chooseBibSubset(selectedIndex)">'
+ '<option>Liste</option>'
+ '<option>WikiNorme</option>'
+ '<option>BibTeX</option>'
+ '<option>ISBD</option>'
+ '<option>ISO690</option>'
+ '</select>';
specialBib.innerHTML = specialBib.innerHTML + menu;
/* default subset - try to use a cookie some day */
chooseBibSubset(0);
}
// select subsection of special characters
function chooseBibSubset(s)
{
var l = document.getElementsByTagName('div');
for (var i = 0; i < l.length ; i++)
{
if(l[i].className == 'BibList') l[i].style.display = s == 0 ? 'block' : 'none';
else if(l[i].className == 'WikiNorme') l[i].style.display = s == 1 ? 'block' : 'none';
else if(l[i].className == 'BibTeX') l[i].style.display = s == 2 ? 'block' : 'none';
else if(l[i].className == 'ISBD') l[i].style.display = s == 3 ? 'block' : 'none';
else if(l[i].className == 'ISO690') l[i].style.display = s == 4 ? 'block' : 'none';
}
}
addOnloadHook(addBibSubsetMenu);
/* Fin de l'espace Référence</nowiki></pre>
== Barre d'outil ==
<pre><nowiki>
* Ajout de boutons à la barre d'outils
*/
/**
* Générateur de tableaux
* English: Generate an array using Mediawiki syntax
*
* @author: fr:user:dake
* @version: 0.1<nowiki>
*/
function generateTableau(nbCol, nbRow, border, styleHeader, styleLine)
{
var code = "
";
if (styleHeader==1) {
code += '{{entête';
code += ' tableau charte}}
';
} else {
code += '{| border="' + border + '"
';
code += '|+ Titre du tableau
';
}
for (var i=0; i<nbCol; i++) code += '! en-tête ' + i + '
';
for (var j=0; j<nbRow; j++) {
if ((j+1)%2==0 && styleLine==1) {
code += '|-{'+'{ligne grise}'+'}
';
} else {
code += '|-----
';
}
for (var i=0; i<nbCol; i++) code += '| élément
';
}
code += '|}';
insertTags('','', code);
}
/**
*
* English: Open a popup with parameters to generate an array.
* The number of rows/columns can be modified. Some additional
* parameters are related to templates available on :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();
}
/**
* Insertion de nouveaux boutons dans la barre d'outil
*/
function addCustomButton(imageFile, speedTip, tagOpen, tagClose, sampleText, imageId) {
mwCustomEditButtons[mwCustomEditButtons.length] =
{"imageId": imageId,
"imageFile": imageFile,
"speedTip": speedTip,
"tagOpen": tagOpen,
"tagClose": tagClose,
"sampleText": sampleText};
}
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/0/04/Button_array.png','Tableau','{|
|-
|
|
|}','','','mw-editbutton-array');
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','
# élément 1
# élément 2
# élément 3','','');
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/1/11/Btn_toolbar_liste.png','Liste','
* élément A
* élément B
* élément C','','');
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/9/9e/Btn_toolbar_gallery.png','Galerie d\'images','
<gallery>
Image:Exemple.jpg|[[Tournesol]]
Image:Exemple1.jpg|[[La Joconde]]
Image:Exemple2.jpg|Un [[hamster]]
</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/b/b4/Button_category03.png','Catégorie','[[Catégorie:',']]','nom de la catégorie');
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/7/79/Button_reflink.png','Référence','<ref>','</ref>','référence, citation ou lien');
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/3/3b/Button_template_alt.png','Index des références','== Notes et références ==
<references /> <!-- aide : http://fr.wikipedia.org/wiki/Aide:Notes et références -->','','');
var voirAussi = '<!-- Suggestion de présentation des annexes. Aide : http://fr.wikipedia.org/wiki/Aide:Notes et références -->
'
+ '== Notes et références de l\'article ==
'
+ '<references/>
'
+ '== Voir aussi ==
'
+ '=== Articles connexes ===
'
+ '* [[À remplacer]]
'
+ '*
'
+ '=== Liens et documents externes ===
'
+ '*
';
addCustomButton('http://upload.wikimedia.org/wikipedia/commons/b/bb/Seealso.png','Section Voir aussi',voirAussi,'','');
// Changer le lien du bouton de création de tableau
function button_tab()
{
toolbarArray = document.getElementById('mw-editbutton-array');
if (!toolbarArray) return false;
toolbarArray.onclick = function() {
popupTableau();
return false;
}
}
hookEvent('load', button_tab);
/* Fin de la barre d'outils</nowiki></pre>
== Page de recherche ==
<pre><nowiki>
* Amélioration de la page de recherche v3
* Auteur : Marc Mongenet
* Sous licence GFDL & GPL<nowiki>
*/
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.wikipedia.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.wikipedia.org");
mainNode.appendChild(engine);
engine = SearchForm("http://www.wikipediasearch.net/index.php", "http://www.wikipediasearch.net", "Wikipedia Search",
"http://www.wikipediasearch.net/logo_mini.png", "action", searchValue,
"lang", "fr");
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.wikipedia.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.wikipedia.org");
mainNode.appendChild(engine);
}
addOnloadHook(SpecialSearchEnhanced3);
/* Fin de la page de recherche</nowiki></pre>
== Désactiver le bouton Sauvegarder à la première édition ==
<pre><nowiki>
* Force IP to preview before saving changes.
* Copyright Marc Mongenet, 2006
*/
function forcePreview()
{
if (wgUserName != null) return;
saveButton = document.getElementById("wpSave");
if (!saveButton) return;
if (location.search.search(/&action=edit/) == -1) return;
saveButton.disabled = true;
saveButton.style.fontWeight = "normal";
document.getElementById("wpPreview").style.fontWeight = "bold";
}
addLoadEvent(forcePreview);
/* Fin du forcePreview</nowiki></pre>
== Fonctions de mise en page ==
<pre><nowiki>
* Transformer les pages du Bistro en page de discussion
*/
function DiscussionBistro()
{
if( (wgPageName.search('Wikipédia:Le_Bistro') != -1)
|| (wgPageName.search('Wikipédia:Bulletin_des_administrateurs') != -1))
document.body.className = 'ns-1';
}
addOnloadHook(DiscussionBistro);
/**
* Transformer certaines pages en page de discussion avec le modèle {{page de discussion}}
*/
function TransformeEnDiscussion()
{
transformeEnPDD = document.getElementById("transformeEnPageDeDiscussion");
if(transformeEnPDD)
document.body.className = "ns-1";
}
addOnloadHook(TransformeEnDiscussion);
/**
* Afficher une explication au nombre de caractères dans la liste de suivi
*/
function toolTipPlusMinus() {
var tt = "Nombre de caractères d'écart entre les deux dernières versions de la page";
var elmts = document.getElementsByTagName("span");
for(var cpt = 0; cpt < elmts.length; cpt++) {
if (/mw-plusminus-pos|mw-plusminus-neg|mw-plusminus-null/.test(elmts[cpt].className) || /mw-plusminus-pos|mw-plusminus-neg|mw-plusminus-null/.test(elmts[cpt].getAttribute("class")))
elmts[cpt].title = tt;
}
}
addLoadEvent(toolTipPlusMinus);
/* Fin des fonctions de mise en page</nowiki></pre>
/**
* Réécriture des titres
*
* Fonction utilisée par [[Modèle:Titre incorrect]]
*
* La fonction cherche un bandeau de la forme
* <span id="RealTitle">titre</span>
*
* Un élément comportant id="DisableRealTitle" désactive la fonction
*/
function rewritePageH1() {
var realTitle = document.getElementById('RealTitle');
var h1 = document.getElementById('firstHeading');
if(!h1) { h1 = document.getElementsByTagName('h1')[0]; }
if (realTitle && h1) {
var titleText = realTitle.innerHTML;
if (titleText == '') { h1.style.display = 'none'; }
else { h1.innerHTML = titleText; }
}
}
addOnloadHook(rewritePageH1);
/* Fin de l'aide sur page spéciales</nowiki></pre>
== Redirect vers wikibooks etc. ==
<pre><nowiki>
*/
var redirected_from_article_datas = new Array(
new Array('Wikipédia:Redirect_vers_Wikibooks', 'wikibooks'),
new Array('Wikipédia:Redirect_vers_Wikisource', 'wikisource'),
new Array('Wikipédia:Redirect_vers_Wikiversité', 'wikiversity'),
new Array('Wikipédia:Redirect_vers_Wikiquote', 'wikiquote'),
new Array('Wikipédia:Redirect_vers_Wikinews', 'wikinews')
);
function redirected_from_article()
{
if (wgIsArticle == false)
return;
for (var i = 0; i < redirected_from_article_datas.length; ++i) {
var page_match = redirected_from_article_datas[i];
var index = wgPageName.indexOf(page_match[0]);
if (index == 0) {
var div = document.getElementById('contentSub');
var span = document.getElementById('redirected_from');
// real target is always encoded in the anchor.
target = window.location.hash;
if (!div || !span || target == '')
break;
target = target.slice(1);
target = target.split('.23');
target[0] = target[0].replace(/.([0-9A-Z][0-9A-Z])/g, '%$1');
if (target.length > 1)
target = target[0] + '#' + target[1]
else
target = target[0];
target = target.replace(/%2F/g, '/');
quoted_target = target;
target = target.replace(/.([0-9A-Z][0-9A-Z])/g, '%$1');
target = decodeURI(target);
// special case for self-referrer
if (target == page_match[0])
break;
target = target.replace(/_/g, ' ');
var e = document.createElement('A');
e.href = 'http://fr.' + page_match[1] + '.org/wiki/' + quoted_target;
e.innerHTML = target;
span.replaceChild(e, span.firstChild);
break;
}
}
}
addLoadEvent(redirected_from_article);
// Fin Redirect vers wikibooks etc.</nowiki></pre>
/* Smartbanner */
/*!
* jQuery Smart Banner
* Copyright (c) 2012 Arnold Daniels <arnold@jasny.net>
* Based on 'jQuery Smart Web App Banner' by Kurt Zenisek @ kzeni.com
*/
!function ($) {
var SmartBanner = function (options) {
this.origHtmlMargin = parseFloat($('html').css('margin-top')) // Get the original margin-top of the HTML element so we can take that into account
this.options = $.extend({}, $.smartbanner.defaults, options)
var standalone = navigator.standalone // Check if it's already a standalone web app or running within a webui view of an app (not mobile safari)
, UA = navigator.userAgent
// Detect banner type (iOS or Android)
if (this.options.force) {
this.type = this.options.force
} else if (UA.match(/Windows Phone 8/i) != null && UA.match(/Touch/i) !== null) {
this.type = 'windows'
} else if (UA.match(/iPhone|iPod/i) != null || (UA.match(/iPad/) && this.options.iOSUniversalApp)) {
if (UA.match(/Safari/i) != null &&
(UA.match(/CriOS/i) != null ||
window.Number(UA.substr(UA.indexOf('OS ') + 3, 3).replace('_', '.')) < 6)) this.type = 'ios' // Check webview and native smart banner support (iOS 6+)
} else if (UA.match(/Silk/(.*Mobile Safari)?/) || UA.match(/KFw/) || UA.match('Kindle Fire')) {
this.type = 'kindle'
} else if (UA.match(/Android/i) != null) {
this.type = 'android'
}
// Don't show banner if device isn't iOS or Android, website is loaded in app or user dismissed banner
if (!this.type || standalone || this.getCookie('sb-closed') || this.getCookie('sb-installed')) {
return
}
// Calculate scale
this.scale = this.options.scale == 'auto' ? $(window).width() / window.screen.width : this.options.scale
if (this.scale < 1) this.scale = 1
// Get info from meta data
var meta = $(this.type == 'android' ? 'meta[name="google-play-app"]' :
this.type == 'ios' ? 'meta[name="apple-itunes-app"]' :
this.type == 'kindle' ? 'meta[name="kindle-fire-app"]' : 'meta[name="msApplication-ID"]');
if (meta.length == 0) return
// For Windows Store apps, get the PackageFamilyName for protocol launch
if (this.type == 'windows') {
this.appId = $('meta[name="msApplication-PackageFamilyName"]').attr('content');
} else {
// Try to pull the appId out of the meta tag and store the result
var parsedMetaContent = /app-id=([^s,]+)/.exec(meta.attr('content'));
if(parsedMetaContent) {
this.appId = parsedMetaContent[1];
} else {
return;
}
}
this.title = this.options.title ? this.options.title : meta.data('title') || $('title').text().replace(/s*[|-·].*$/, '')
this.author = this.options.author ? this.options.author : meta.data('author') || ($('meta[name="author"]').length ? $('meta[name="author"]').attr('content') : window.location.hostname)
this.iconUrl = meta.data('icon-url');
this.price = meta.data('price');
// Create banner
this.create()
this.show()
this.listen()
}
SmartBanner.prototype = {
constructor: SmartBanner
, create: function() {
var iconURL
, link=(this.options.url ? this.options.url : (this.type == 'windows' ? 'ms-windows-store:navigate?appid=' : (this.type == 'android' ? 'market://details?id=' : (this.type == 'kindle' ? 'amzn://apps/android?asin=' : 'https://itunes.apple.com/' + this.options.appStoreLanguage + '/app/id'))) + this.appId)
, price = this.price || this.options.price
, inStore=price ? price + ' - ' + (this.type == 'android' ? this.options.inGooglePlay : this.type == 'kindle' ? this.options.inAmazonAppStore : this.type == 'ios' ? this.options.inAppStore : this.options.inWindowsStore) : ''
, gloss=this.options.iconGloss === null ? (this.type=='ios') : this.options.iconGloss
if (this.type == 'android' && this.options.GooglePlayParams) {
link = link + '&referrer=' + this.options.GooglePlayParams;
}
var banner = '<div id="smartbanner" class="'+this.type+'"><div class="sb-container"><a href="#" class="sb-close">×</a><span class="sb-icon"></span><div class="sb-info"><strong>'+this.title+'</strong><span>'+this.author+'</span><span>'+inStore+'</span></div><a href="'+link+'" class="sb-button"><span>'+this.options.button+'</span></a></div></div>';
(this.options.layer) ? $(this.options.appendToSelector).append(banner) : $(this.options.appendToSelector).prepend(banner);
if (this.options.icon) {
iconURL = this.options.icon
} else if(this.iconUrl) {
iconURL = this.iconUrl;
} else if ($('link[rel="apple-touch-icon-precomposed"]').length > 0) {
iconURL = $('link[rel="apple-touch-icon-precomposed"]').attr('href')
if (this.options.iconGloss === null) gloss = false
} else if ($('link[rel="apple-touch-icon"]').length > 0) {
iconURL = $('link[rel="apple-touch-icon"]').attr('href')
} else if ($('meta[name="msApplication-TileImage"]').length > 0) {
iconURL = $('meta[name="msApplication-TileImage"]').attr('content')
} else if ($('meta[name="msapplication-TileImage"]').length > 0) { /* redundant because ms docs show two case usages */
iconURL = $('meta[name="msapplication-TileImage"]').attr('content')
}
if (iconURL) {
$('#smartbanner .sb-icon').css('background-image','url('+iconURL+')')
if (gloss) $('#smartbanner .sb-icon').addClass('gloss')
} else{
$('#smartbanner').addClass('no-icon')
}
this.bannerHeight = $('#smartbanner').outerHeight() + 2
if (this.scale > 1) {
$('#smartbanner')
.css('top', parseFloat($('#smartbanner').css('top')) * this.scale)
.css('height', parseFloat($('#smartbanner').css('height')) * this.scale)
.hide()
$('#smartbanner .sb-container')
.css('-webkit-transform', 'scale('+this.scale+')')
.css('-msie-transform', 'scale('+this.scale+')')
.css('-moz-transform', 'scale('+this.scale+')')
.css('width', $(window).width() / this.scale)
}
$('#smartbanner').css('position', (this.options.layer) ? 'absolute' : 'static')
}
, listen: function () {
$('#smartbanner .sb-close').on('click',$.proxy(this.close, this))
$('#smartbanner .sb-button').on('click',$.proxy(this.install, this))
}
, show: function(callback) {
var banner = $('#smartbanner');
banner.stop();
if (this.options.layer) {
banner.animate({top: 0, display: 'block'}, this.options.speedIn).addClass('shown').show();
$(this.pushSelector).animate({paddingTop: this.origHtmlMargin + (this.bannerHeight * this.scale)}, this.options.speedIn, 'swing', callback);
} else {
if ($.support.transition) {
banner.animate({top:0},this.options.speedIn).addClass('shown');
var transitionCallback = function() {
$('html').removeClass('sb-animation');
if (callback) {
callback();
}
};
$(this.pushSelector).addClass('sb-animation').one($.support.transition.end, transitionCallback).emulateTransitionEnd(this.options.speedIn).css('margin-top', this.origHtmlMargin+(this.bannerHeight*this.scale));
} else {
banner.slideDown(this.options.speedIn).addClass('shown');
}
}
}
, hide: function(callback) {
var banner = $('#smartbanner');
banner.stop();
if (this.options.layer) {
banner.animate({top: -1 * this.bannerHeight * this.scale, display: 'block'}, this.options.speedIn).removeClass('shown');
$(this.pushSelector).animate({paddingTop: this.origHtmlMargin}, this.options.speedIn, 'swing', callback);
} else {
if ($.support.transition) {
if ( this.type !== 'android' )
banner.css('top', -1*this.bannerHeight*this.scale).removeClass('shown');
else
banner.css({display:'none'}).removeClass('shown');
var transitionCallback = function() {
$('html').removeClass('sb-animation');
if (callback) {
callback();
}
};
$(this.pushSelector).addClass('sb-animation').one($.support.transition.end, transitionCallback).emulateTransitionEnd(this.options.speedOut).css('margin-top', this.origHtmlMargin);
} else {
banner.slideUp(this.options.speedOut).removeClass('shown');
}
}
}
, close: function(e) {
e.preventDefault()
this.hide()
this.setCookie('sb-closed','true',this.options.daysHidden);
}
, install: function(e) {
if (this.options.hideOnInstall) {
this.hide()
}
this.setCookie('sb-installed','true',this.options.daysReminder)
}
, setCookie: function(name, value, exdays) {
var exdate = new Date()
exdate.setDate(exdate.getDate()+exdays)
value=encodeURI(value)+((exdays==null)?'':'; expires='+exdate.toUTCString())
document.cookie=name+'='+value+'; path=/;'
}
, getCookie: function(name) {
var i,x,y,ARRcookies = document.cookie.split(";")
for(i=0;i<ARRcookies.length;i++) {
x = ARRcookies[i].substr(0,ARRcookies[i].indexOf("="))
y = ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1)
x = x.replace(/^s+|s+$/g,"")
if (x==name) {
return decodeURI(y)
}
}
return null
}
// Demo only
, switchType: function() {
var that = this
this.hide(function () {
that.type = that.type == 'android' ? 'ios' : 'android'
var meta = $(that.type == 'android' ? 'meta[name="google-play-app"]' : 'meta[name="apple-itunes-app"]').attr('content')
that.appId = /app-id=([^s,]+)/.exec(meta)[1]
$('#smartbanner').detach()
that.create()
that.show()
})
}
}
$.smartbanner = function (option) {
var $window = $(window)
, data = $window.data('smartbanner')
, options = typeof option == 'object' && option
if (!data) $window.data('smartbanner', (data = new SmartBanner(options)))
if (typeof option == 'string') data[option]()
}
// override these globally if you like (they are all optional)
$.smartbanner.defaults = {
title: null, // What the title of the app should be in the banner (defaults to <title>)
author: null, // What the author of the app should be in the banner (defaults to <meta name="author"> or hostname)
price: 'FREE', // Price of the app
appStoreLanguage: 'us', // Language code for App Store
inAppStore: 'On the App Store', // Text of price for iOS
inGooglePlay: 'In Google Play', // Text of price for Android
inAmazonAppStore: 'In the Amazon Appstore',
inWindowsStore: 'In the Windows Store', //Text of price for Windows
GooglePlayParams: null, // Aditional parameters for the market
icon: null, // The URL of the icon (defaults to <meta name="apple-touch-icon">)
iconGloss: null, // Force gloss effect for iOS even for precomposed
button: 'VIEW', // Text for the install button
url: null, // The URL for the button. Keep null if you want the button to link to the app store.
scale: 'auto', // Scale based on viewport size (set to 1 to disable)
speedIn: 300, // Show animation speed of the banner
speedOut: 400, // Close animation speed of the banner
daysHidden: 15, // Duration to hide the banner after being closed (0 = always show banner)
daysReminder: 90, // Duration to hide the banner after "VIEW" is clicked *separate from when the close button is clicked* (0 = always show banner)
force: null, // Choose 'ios', 'android' or 'windows'. Don't do a browser check, just always show this banner
hideOnInstall: true, // Hide the banner after "VIEW" is clicked.
layer: false, // Display as overlay layer or slide down the page
iOSUniversalApp: true, // If the iOS App is a universal app for both iPad and iPhone, display Smart Banner to iPad users, too.
appendToSelector: 'body', //Append the banner to a specific selector
pushSelector: 'html' // What element is going to push the site content down; this is where the banner append animation will start.
}
$.smartbanner.Constructor = SmartBanner;
// ============================================================
// Bootstrap transition
// Copyright 2011-2014 Twitter, Inc.
// Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
function transitionEnd() {
var el = document.createElement('smartbanner')
var transEndEventNames = {
WebkitTransition: 'webkitTransitionEnd',
MozTransition: 'transitionend',
OTransition: 'oTransitionEnd otransitionend',
transition: 'transitionend'
}
for (var name in transEndEventNames) {
if (el.style[name] !== undefined) {
return {end: transEndEventNames[name]}
}
}
return false // explicit for ie8 ( ._.)
}
if ($.support.transition !== undefined)
return // Prevent conflict with Twitter Bootstrap
// http://blog.alexmaccaw.com/css-transitions
$.fn.emulateTransitionEnd = function(duration) {
var called = false, $el = this
$(this).one($.support.transition.end, function() {
called = true
})
var callback = function() {
if (!called) $($el).trigger($.support.transition.end)
}
setTimeout(callback, duration)
return this
}
$(function() {
$.support.transition = transitionEnd()
})
// ============================================================
}(window.jQuery);
$(function() { $.smartbanner() } )