MediaWiki:Gadget-CommonEdit.js
Aller à la navigation
Aller à la recherche
Note : après avoir publié vos modifications, il se peut que vous deviez forcer le rechargement complet du cache de votre navigateur pour voir les changements.
- Firefox / Safari : maintenez la touche Maj (Shift) en cliquant sur le bouton Actualiser ou appuyez sur Ctrl + F5 ou Ctrl + R (⌘ + R sur un Mac).
- Google Chrome : appuyez sur Ctrl + Maj + R (⌘ + Shift + R sur un Mac).
- Internet Explorer / Edge : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl + F5.
- Opera : appuyez sur Ctrl + F5.
/**
* Applications spécifiques aux pages de modification.
*
* Todo : migrer celles qui ne sont pas vitales dans les gadgets
*
* <nowiki>
*/
// Penser à maintenir à jour les dépendances dans [[MediaWiki:Gadgets-definition]] !
/**
* Désactiver le bouton Sauvegarder à la première édition
* English : Force IP to preview before saving changes.
* Copyright Marc Mongenet, 2006
* Plyd 05/2007: add "after preview" in the button to prevent misunderstanding from beginners
*/
function forcePreview($) {
$('#wpSave')
.prop('disabled', true)
.val('Publier (après prévisualisation)');
$('#wpSaveWidget')
.removeClass('oo-ui-widget-enabled')
.addClass('oo-ui-widget-disabled');
}
if (mw.config.get('wgUserName') === null && mw.config.get('wgAction') === 'edit') {
$(forcePreview);
}
/**
* Textes de remplissage automatique
*/
var init_if_empty = [
["Wikipédia:Comité_d'arbitrage/Arbitrage/",
"<!-- Enregistrer la page pour l'initialiser puis suivre les instructions -->\n" +
"{{subst:Wikipédia:Comité d'arbitrage/Arbitrage/Modèle}}\n" +
"<!-- N'oubliez pas d'ajouter un lien vers cette page sur [[Wikipédia:Comité d'arbitrage/Arbitrage]] -->"
],
["Discussion_Wikipédia:Comité_d'arbitrage/Arbitrage/",
"<!-- Enregistrer la page pour l'initialiser -->\n" +
"{{subst:Discussion Wikipédia:Comité d'arbitrage/Arbitrage/Modèle}}"
],
];
/**
* Remplit la zone d'édition si elle est vide avec le texte
* sélectionné par le nom de la page.
*/
function InitPage( $ ) {
// Tester si 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.
var text_area = document.getElementById('wpTextbox1');
if (!text_area) return;
if (text_area.value.length > 0) return;
var pageName = mw.config.get( 'wgPageName' );
for (var i = 0; i < init_if_empty.length; ++i) {
var page_match = init_if_empty[i][0];
if (pageName.indexOf(page_match) === 0) {
text_area.value = init_if_empty[i][1];
break;
}
}
}
$( InitPage );
/**
* Caractères spéciaux
*
* Ajouter un menu pour choisir des sous-ensembles de caractères spéciaux.
* Ecrit par Zelda, voir sur [[Utilisateur:Zelda/Edittools.js]].
* Remplace l'ancienne fonction par une variante plus rapide.
*/
/**
* Ajoute un menu déroulant permettant de choisir un jeu de caractères spéciaux
* Les caractères spéciaux sont définis dans [[MediaWiki:Edittools]]
*/
window.addCharSubsetMenu = function () {
var $specialchars = $('#specialcharsets');
if (!$specialchars.length) return;
var saveLastSelected = mw.util.debounce(250, function (lastSelected) {
mw.storage.set('CharSubset-lastSelected', lastSelected);
});
// Construction du menu de sélection
var $charSubsetSelect = $('<select>')
.change(function () {
chooseCharSubset(this.selectedIndex);
saveLastSelected(this.value);
});
refreshCharSubsetSelect($specialchars, $charSubsetSelect);
$specialchars.prepend($charSubsetSelect);
};
/**
* Ajout des options au menu et restauration de la dernière position
*/
function refreshCharSubsetSelect($specialchars, $charSubsetSelect) {
$charSubsetSelect.empty();
var titles = [];
$specialchars.find('p').each(function () {
titles.push(this.title);
});
$.each(titles, function () {
$charSubsetSelect.append($('<option>').text(this));
});
var lastSelected = mw.storage.get('CharSubset-lastSelected');
var position = titles.indexOf(lastSelected);
if (position !== -1) {
$charSubsetSelect.val(lastSelected);
chooseCharSubset(position);
} else {
chooseCharSubset(0); /* default subset */
}
}
/**
* Affichage du jeu de caractères sélectionné
*/
function chooseCharSubset(index) {
$('#specialcharsets').find('p').each(function (i, p) {
// Initialisation du jeu de caractères sélectionné
if (i === index) {
initializeCharSubset(p);
}
// Affichage du jeu sélectionné, masquage des autres
p.style.display = (i === index) ? 'inline' : 'none';
});
}
/**
* Initialisation du jeu de caractères sélectionné
* Paramètre : paragraphe contenant le jeu à initialiser. Initialise tous les
* caractères contenus dans les sous-spans du paragraphe
*/
function initializeCharSubset(p) {
// traitement des spans du paragraphe
$(p).find("span").each(function (_, span) {
// span déjà traité
if (span.childNodes.length === 0 || span.childNodes[0].nodeType !== 3) return;
// on parse le contenu du span
var chars = span.childNodes[0].nodeValue
.replace(/\\ /g, "__ESCAPED_SPACE__")
.trim()
.split(" ")
.map(function (value) {
return value.replace(/__ESCAPED_SPACE__/g, " ");
});
// création des liens MonobookToolbar.insertTags(tagBegin, tagEnd, defaultValue)
var newElements = [];
for (var k = 0; k < chars.length; ++k) {
var tags = chars[k].split("+");
var tagBegin = tags[0];
var tagEnd = tags.length > 1 ? tags[1] : "";
var defaultValue = tags.length > 2 ? tags[2] : "";
var callback = (function (tagBegin, tagEnd, defaultValue) {
return function (e) {
e.preventDefault();
MonobookToolbar.insertTags(tagBegin, tagEnd, defaultValue);
};
})(tagBegin, tagEnd, defaultValue);
var $a = $("<a>")
.attr("href", "#")
.text(tagBegin + tagEnd)
.click(callback);
newElements.push($a, " ");
}
// remplacement du contenu
$(span).empty().append(newElements);
});
}
$(function ($) {
addCharSubsetMenu();
});
// Les deux fonctions ci-dessous ne doivent pas être contenues
// dans des "mw.loader.using" ou autres "document ready",
// de sorte à être définies sitôt ce fichier chargé.
/**
* Permet d'ajouter un jeu de caractères spéciaux dans le menu déroulant
* paramètres :
* - nom du jeu de caractères
* - contenu HTML. Les caractères spéciaux doivent être dans des spans
* exemple : "caractères : <span>â ê î ô û</span>"
*/
window.realAddSpecialCharsetHTML = function (title, charsHTML) {
$(function ($) {
var $specialchars = $('#specialcharsets');
if (!$specialchars.length) return;
// Ajout des caractères spéciaux. Les liens seront initialisés par initializeCharSubset()
// lors de la sélection
var $p = $('<p>')
.css('display', 'none')
.attr('title', title)
.html(charsHTML);
$specialchars.append($p);
// Si le menu de sélection existe déjà, il faut reconstruire ses options
var $charSubsetSelect = $specialchars.find('select');
if ($charSubsetSelect.length) {
refreshCharSubsetSelect($specialchars, $charSubsetSelect);
}
});
};
/**
* Permet d'ajouter un jeu de caractères spéciaux dans le menu déroulant
* paramètres :
* - nom du jeu de caractères
* - caractères spéciaux
* exemple d'utilisation : addSpecialCharset("Français", "â ê î ô û");
*/
window.realAddSpecialCharset = function (title, chars) {
realAddSpecialCharsetHTML(title, "<span>" + mw.html.escape(chars) + "</span>");
};
//</nowiki>