MediaWiki:Gadget-Formatage.js
Remarque: après avoir sauvegardé, vous devez vider le cache de votre navigateur pour que les changements prennent effet. Mozilla, cliquez sur Actualiser (ou ctrl-r). Internet Explorer / Opera: ctrl-f5. Safari: cmd-r. Konqueror ctrl-r.
// Copie partielle de [[Utilisateur:Automatik/sections.js]]
// Requiert la fonction maj_sections de la page MediaWiki:Gadget-Formatage/sections.js
// Requiert la fonction corrige_typographie de la page MediaWiki:Gadget-Formatage/typographie.js
// [[Catégorie:JavaScript du Wiktionnaire|Formatage]]
// Fonctions d'appoint
function lcfirst(string) {
return string.substr(0,1).toLowerCase() + string.substr(1, string.length);
}
function ucfirst(string) {
return string.substr(0,1).toUpperCase() + string.substr(1, string.length);
}
// Gestion des erreurs
var erreurs = []; // Tableau pour regrouper les erreurs qui sont elles-mêmes des tableaux sous le format [ligne_erronée, numero_ligne, explication_erreur]
var modifs = 0; // Nombre de modifications effectuées en ayant cliqué sur le bouton
function write_erreur(erreurs) {
var nombre_mod, nombre_err;
// Créé une boîte si elle n'existe pas déjà
if ($("#log_formatage").length === 0) {
jQuery('<div/>', {
id: 'log_formatage',
}).appendTo('.editButtons');
$("#log_formatage").hide();
}
// Créé un indicateur du nombre de modifications
if ($("#nombre_modifs").length === 0) {
nombre_mod = jQuery('<span/>', {
id: 'nombre_modifs',
class: 'form_message_info'
});
nombre_mod.insertAfter('#codeFormatterWidget');
$("#nombre_modifs").hide();
}
// Créé un indicateur de nombre d'erreurs
if ($("#nombre_erreurs").length === 0) {
nombre_err = jQuery('<span/>', {
id: 'nombre_erreurs',
class: 'form_message_info'
});
nombre_err.insertAfter('#codeFormatterWidget');
$("#nombre_erreurs").hide();
}
if ( modifs > 0 ) {
if (modifs == 1) {
$("#nombre_modifs").text("1 changement");
} else {
$("#nombre_modifs").text(modifs + " changements");
}
} else {
$("#nombre_modifs").text("Aucun formatage");
}
$("#nombre_modifs").show('fast');
if ( erreurs.length >= 1 ) {
message_erreur = jQuery("<p/>");
// Indicateur de nombre
if (erreurs.length == 1) {
$("#nombre_erreurs").text("(1 erreur)");
} else {
$("#nombre_erreurs").text("(" + erreurs.length + " erreurs)");
}
liste = jQuery("<table/>", {
class: "wikitable"
});
tete = jQuery("<tr/>");
tete.append(jQuery("<th/>", { text: "Ligne" }));
tete.append(jQuery("<th/>", { text: "Élément" }));
tete.append(jQuery("<th/>", { text: "Erreur" }));
liste.append(tete);
for ( var i = 0; i < erreurs.length; i++ ) {
ligne = jQuery("<tr/>");
ligne.append(jQuery("<td/>", { text: erreurs[i][1] }));
ligne.append(jQuery("<td/>", { text: erreurs[i][0] }));
ligne.append(jQuery("<td/>", { text: erreurs[i][2] }));
liste.append(ligne);
}
message_erreur.append(liste);
$("#log_formatage").html(message_erreur);
$("#nombre_erreurs").show('fast');
$("#log_formatage").show('fast');
} else {
$("#nombre_erreurs").hide('fast');
$("#log_formatage").hide('fast');
}
}
// Pour assurer la compatibilité avec WikEd
function wikEd_off() {
if (typeof(wikEdUseWikEd) != 'undefined') {
if (wikEdUseWikEd === true) {
WikEdUpdateTextarea();
}
}
}
// Rendre la main à WikEd
function wikEd_on() {
if (typeof(wikEdUseWikEd) != 'undefined') {
if (wikEdUseWikEd === true) {
WikEdUpdateFrame();
}
}
}
// Ensemble des opérations qui se passent quand on clique le bouton "Formater"
function formatage() {
wikEd_off();
erreurs = []; /* Reinitialisation des erreurs */
//modifs = 0;
/* Fonctions de formatage */
maj_sections();
//corrige_typographie();
write_erreur(erreurs);
wikEd_on();
}
function create_toolbar_button() {
/******************************************************
* Ajout d'un bouton à la barre vector (ou l'ancienne)
* Crédit : [[w:en:User:V111P/js/addToolbarButtons]]
/******************************************************/
// Propriétés du bouton
var addToolbarButtonsUrl = '//en.wikipedia.org/w/index.php?title='
+ 'User:V111P/js/addToolbarButtons.js&action=raw&ctype=text/javascript';
var modif_section_button = {
id: 'sections-modifiables',
tooltip: 'Rendre les sections modifiables',
callback: formatage,
iconUrl: '//upload.wikimedia.org/wikipedia/commons/4/43/Sections_modifiables_icone3.png'
};
// Ajout à la barre d'outils
if (mw.libs.addToolbarButtons)
mw.libs.addToolbarButtons(modif_section_button);
else {
var tbs = window.toolbarButtonsToAdd = window.toolbarButtonsToAdd || [];
tbs.push(modif_section_button);
$.ajax({
url: addToolbarButtonsUrl,
dataType: 'script',
cache: true
});
}
}
function create_submitlike_button() {
// EN PLUS : création et ajout du bouton "Formater" après "Changements en cours"
button = ['<span id="codeFormatterWidget" class="oo-ui-widget oo-ui-widget-enabled oo-ui-buttonElement oo-ui-buttonElement-framed oo-ui-labelElement oo-ui-buttonInputWidget">',
'<input id="codeFormatter" class="oo-ui-inputWidget-input oo-ui-buttonElement-button" aria-disabled="false" value="Formater" title="Formater le wikitexte" type="button">',
'</span>'].join('');
$(button).insertAfter($('#wpDiffWidget'));
$('#codeFormatter').attr(
'tabindex',
parseInt($('#wpDiffWidget input').attr('tabindex')) + 1
);
// Association des évènements de formatage au bouton
$('#codeFormatter').click(function(event) {
event.preventDefault();
/***********/
formatage();
/***********/
return false;
});
}
// Ajout du bouton de formatage sous la zone de modification
function add_format_buttons() {
/*
if ( $( '.wikiEditor-ui' ).length === 0 && $( '#toolbar' ).length === 1) {
create_toolbar_button();
}
*/
create_submitlike_button();
}
$( add_format_buttons() );
//</nowiki>