Utilisateur:Melanthos/common.js
Note : après avoir enregistré la page, vous devrez forcer le rechargement complet du cache de votre navigateur pour voir les changements.
Mozilla / Firefox / Konqueror / Safari : maintenez la touche Majuscule (Shift) en cliquant sur le bouton Actualiser (Reload) ou pressez Maj-Ctrl-R (Cmd-R sur Apple Mac) ;
Firefox (sur GNU/Linux) / Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5.importScript('Utilisateur:Lgd/refErrors/refErrors.js');
obtenir('FlowDeluxe')
obtenir("LiveRC");
obtenir('BlockLogById')
//Script pour insérer PopupVandalism.js sur toutes les pages
// [[:en:User:Lupin/popups.js]]
// Traduction de [[Utilisateur:Leag|Leag]] : [[Utilisateur:Leag/Navigation popups|Navigation popups]]
importScript( 'Utilisateur:LD/PV.js' );
importScript('Utilisateur:0x010C/script/PopupVandalism.js');
//Paramètres de PopupVandalisme.js
var PopVand_Mode = "text";
var PopVand_Color = true;
/* Résumé Deluxe.
*
* Ajoute des commentaires de modification prédéfinis
*
* Auteur : Dake
* Contributions : Pabix, Tieno, Ltrlg
*
* Dépendances :
* — les habituelles implicites 'mediawiki' & 'jquery' ;
* — 'user' (chargement du common.js).
*
* {{Projet:JavaScript/Script|ResumeDeluxe}}
*/
/* globals window, $, document, mw, ve */
mw.loader.using( 'user', function () {
'use strict';
var
/* Vérifier la présence d’un titre de section.
* Cela permet de n’ajouter un séparateur ' ; ' entre deux résumés que si
* nécessaire.
* Note : on ne vérifie que le fait que le motif est en fin de chaîne, pas
* en début.
*/
sansPointVirgule = /\*\/\s*$/,
/* La liste des liens qui seront affichés.
* Les éléments du tableau sont d’une des deux formes suivantes :
* — [ 'lien' , 'resume' ]
* — 'texte'
* où 'lien' représente l’intitulé du lien, 'resume' le résumé d’édition
* inséré par le lien et 'texte' les deux à la fois.
*/
listeLiens = [],
/* Liens affichés par défaut, même format que listeLiens. */
liensParDefaut = [
'orthographe',
'typographie',
'catégorisation',
'wikification',
'image',
'mise en forme',
'mise en page',
'redirection',
'relecture',
'style',
'revert',
'réorganisation',
'réponse',
'maintenance',
[ 'homonymie', 'création homonymie' ],
[ 'bandeau', 'ajout de bandeau' ],
'infobox',
'références',
'retouche de la modification précédente',
'vandalisme',
'Test de débutant',
'Spam',
'autopromotion'
],
/* Objet permettant de désactiver des liens (parmi la liste par défaut
* ci-avant), sous la forme { 'lien1': false, 'lien2': false, … } où
* 'lien1', 'lien2'… est l’intitulé du lien à ne pas afficher.
*/
liensAffiches = window.ResumeDeluxe_affiches || {},
/* Objet jQuery contenant l’<input> ou le <textarea> constituant le résumé. */
$resume,
/* Objet jQuery contenant la liste de liens. */
$cont;
/* Fonction renvoyant l’intitulé d’un lien à partir de sa représentation sous
* forme de tableau ou de chaîne.
*/
function texteDuLien( definition ) {
if ( Array.isArray( definition ) ) {
return definition[0];
} else {
// Soyons sûr d’avoir une chaîne de caractères
return definition.toString();
}
}
/* Fonction renvoyant le texte ajouté par un lien à partir de sa représentation
* sous forme de tableau ou de chaîne.
*/
function resumeAInserer( definition ) {
if ( Array.isArray( definition ) ) {
return definition[1];
} else {
// Soyons sûr d’avoir une chaîne de caractères.
return definition.toString();
}
}
/* Procédure appliquant les préférences de l’utilisateur :
* — si l’utilisateur a défini window.ResumeDeluxe_liens, celui-ci est utilisé
* à la place de la liste par défaut liensParDefaut ;
* — sinon si l’utilisateur a défini window.ResumeDeluxe_affiches, les règles
* de désactivation sont appliquées ;
* — sinon liensAffiches est un objet vide, donc la liste par défaut est
* utilisée.
*/
function appliquerConfiguration() {
var i, cle;
if ( Array.isArray( window.ResumeDeluxe_liens ) ) {
listeLiens = window.ResumeDeluxe_liens;
} else {
for ( i = 0; i < liensParDefaut.length; i++ ) {
cle = texteDuLien( liensParDefaut[i] );
if ( liensAffiches[cle] !== false ) {
listeLiens.push( liensParDefaut[i] );
}
}
}
}
/* Procedure effectuant l’ajout d’une chaîne au résumé d’édition, avec un
* séparateur si besoin
*/
function ajouterAuResume( chaine ) {
var resumeActuel = $resume.val();
if ( resumeActuel === '' ) {
$resume.val( chaine );
} else if ( sansPointVirgule.test( resumeActuel ) ) {
$resume.val( resumeActuel + chaine );
} else {
$resume.val( resumeActuel + ' ; ' + chaine );
}
// L’ÉditeurVisuel ne se base plus sur le contenu mais sur l’évènement
$resume.change();
// Conserver le focus sur le lien est inutile à l’utilisateur
// Plaçons-le sur le champ de résumé, s’il veut compléter à la main
$resume.focus();
}
/* Fonction renvoyant un lien à partir de sa définition. */
function $lien( definition ) {
var resume = resumeAInserer( definition );
return $( '<a>' )
.text( texteDuLien( definition ) )
.attr( {
href: '#',
title: 'Ajouter «\xA0' + resume + '\xA0» au résumé de modification'
} )
.click( function () {
ajouterAuResume( resume );
return false;
} );
}
/* Procédure construisant la liste de liens. */
function contruireListe() {
var i, $ul, $li;
$ul = $( '<ul>' );
for ( i = 0; i < listeLiens.length; i++ ) {
$li = $( '<li>' ).append( $lien( listeLiens[i] ) );
$ul.append( $li, ' ' ); // espace entre les <li> pour se prémunir des problèmes de sécabilité
}
$cont = $( '<div>' )
.attr( 'id', 'ResumeDeluxe' )
.addClass( 'liste-horizontale' )
.text( 'Messages prédéfinis\xA0: ' )
.append( $ul );
}
/* Procédure initialisant $resume et insérant la liste de liens dans le cas de
* l’éditeur de wikicode, quand les nœuds nécessaires sont en place.
*/
function demarrer_wikicode() {
$( function ( $ ) {
$( '#wpSummaryLabel' ).before( $cont );
$resume = $( '#wpSummary' );
} );
}
/* Procédure initialisant $resume et insérant la liste de liens dans le cas de
* l’ÉditeurVisuel, quand les nœuds nécessaires sont en place.
*/
function demarrer_EditeurVisuel() {
mw.hook( 've.saveDialog.stateChanged' ).add( function () {
/*
* Traitement : si le dialogue a été recréé, on y remet ce qu’il faut.
* TODO Vérifier si cette vérification est encore nécessaire.
*/
if ( $( '#ResumeDeluxe' ).length < 1 ) {
ve.init.target.saveDialog.$editSummaryLabel.after( $cont );
$resume = ve.init.target.saveDialog.editSummaryInput.$input;
}
} );
}
/* Procédure qui détermine quel éditeur peut être utilisé et démarre le gadget
* selon le résultat.
*/
function demarrer() {
switch ( mw.config.get( 'wgAction' ) ) {
case 'edit':
case 'submit':
// Désactivé pour la création de sections
if ( ! /[?&]section=new(&|$)/.test( document.location.search ) ) {
demarrer_wikicode();
}
// L’EV peut démarrer de ces modes sans rechargement
/* falls through */
case 'view':
demarrer_EditeurVisuel();
break;
}
}
/***** Démarrage du tout *****/
// Lecture des préférences
appliquerConfiguration();
// Construction de la liste des liens
contruireListe();
// Insère la liste dans l’arbre des nœuds et cherche le nœud contenant le résumé
demarrer();
} );
//Gadget DJ
var DJparam_sidebarlink = true;
importScript('Utilisateur:0x010C/script/DrapeauJaune.js');
importScript('Utilisateur:LD/test.js');
// Provides several useful functions for rollback (custom edit summary, mark as bot edits and mass revert)
// by [[m:user:Hoo man]] <http://meta.wikimedia.org/wiki/User:Hoo_man/Scripts/Smart_rollback>
mw.loader.load('//meta.wikimedia.org/w/index.php?title=User:Hoo_man/smart_rollback.js&action=raw&ctype=text/javascript');
/* **********************************************************************************************************************
AjouterSectionRefs
Dérivé de : MediaWiki:Gadget-HotCats.js et MediaWiki:Gadget-BandeauxPortails.js (cf historique respectifs pour les auteurs)
Permet d'ajouter une section Notes et références rapidement, en un click sur le lien "Ajout section refs" dans la section "plus" à côté des historiques.
Texte ajouté à l'article :
== Notes et références ==
{{Références}}
{{Projet:JavaScript/Script}}
*********************************************************************************************************************** */
// ====================================================================================================================
// DEBUT DU CODE
// ====================================================================================================================
// <syntaxhighlight lang=javascript><pre><nowiki>
/////////////////////////////////////////////////////////////////////////////////// Variables personnalisables
// Publication automatique
if (typeof window.Section_AutoEdit === 'undefined') window.Section_AutoEdit = true;
// Modification mineure
if (typeof window.Section_MinorEdit === 'undefined') window.Section_MinorEdit = true;
// Ajout à la liste de suivi ( -1 = défaut préférences, 0 = jamais, 1 = toujours)
if (typeof window.Section_Watchthis === 'undefined') window.Section_Watchthis = -1;
/////////////////////////////////////////////////////////////////////////////////// Édition
var Section_ajax = {
http: function(bundle) {
var xmlhttp;
try {
xmlhttp = new XMLHttpRequest();
} catch (e) {
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {
xmlhttp = false;
}
}
}
if (xmlhttp) {
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4)
Section_ajax.httpComplete(xmlhttp, bundle);
};
xmlhttp.open(bundle.method ? bundle.method : "GET", bundle.url, bundle.async === false ? false : true);
if (bundle.headers) {
for (var field in bundle.headers)
try {
xmlhttp.setRequestHeader(field, bundle.headers[field]);
} catch (err) {}
}
xmlhttp.send(bundle.data ? bundle.data : null);
}
return xmlhttp;
},
httpComplete: function(xmlhttp, bundle) {
if (xmlhttp.status == 200 || xmlhttp.status == 302) {
if (bundle.onSuccess) bundle.onSuccess(xmlhttp, bundle);
} else if (bundle.onFailure) {
bundle.onFailure(xmlhttp, bundle);
}
}
};
function Section_DoEdit(Req, data) {
while (document.body.firstChild) {
document.body.removeChild(document.body.firstChild);
}
document.body.innerHTML = Req.responseText;
var TextArea = document.getElementById('wpTextbox1');
if (!TextArea) return;
if (Section_AutoEdit) document.editform.style.display = "none";
var OldText = TextArea.value;
if ((OldText.indexOf('{{Références') != -1) || (OldText.indexOf('<references') != -1) || (OldText.indexOf('{{Reflist') != -1)) {
alert('Une balise références existe déjà');
document.editform.style.display = "";
return;
} else if ((OldText.indexOf('== Notes et') != -1) || (OldText.indexOf('==Notes et') != -1) || (OldText.indexOf('== Référence') != -1) || (OldText.indexOf('==Référence') != -1)) {
alert('Une section "Notes et références" semble déjà exister');
document.editform.style.display = "";
return;
} else {
var NouveauModele = '== Notes et références ==\n{{Références}}\n\n';
var Sommaire = 'Ajout de section Notes et références';
var DebutModele = "";
var SuiteModele = "";
if ((OldText.indexOf('{{DEFAULTSORT:') != -1) || (OldText.indexOf('[[Catégorie:') != -1) || (OldText.indexOf('[[catégorie:') != -1) || (OldText.indexOf('[[Categorie:') != -1) || (OldText.indexOf('[[categorie:') != -1) || (OldText.indexOf('{{Portail') != -1) || (OldText.indexOf('{{portail') != -1) || (OldText.indexOf('{{Palette') != -1) || (OldText.indexOf('{{palette') != -1) || (OldText.indexOf('{{page personnelle') != -1)) {
// Il y a des catégories/portails/palettes
var DebutModele1 = OldText.substring(0, OldText.indexOf('{{Palette'));
var DebutModele2 = OldText.substring(0, OldText.indexOf('{{palette'));
var DebutModele3 = OldText.substring(0, OldText.indexOf('{{Portail'));
var DebutModele4 = OldText.substring(0, OldText.indexOf('{{portail'));
var DebutModele5 = OldText.substring(0, OldText.indexOf('{{DEFAULTSORT:'));
var DebutModele6 = OldText.substring(0, OldText.indexOf('[[Catégorie:'));
var DebutModele7 = OldText.substring(0, OldText.indexOf('[[catégorie:'));
var DebutModele8 = OldText.substring(0, OldText.indexOf('[[Categorie:'));
var DebutModele9 = OldText.substring(0, OldText.indexOf('[[categorie:'));
var DebutModele10 = OldText.substring(0, OldText.indexOf('{{page personnelle'));
// TODO a refactorer
SuiteModele = OldText.split(DebutModele1).join('').split(DebutModele2).join('').split(DebutModele3).join('').split(DebutModele4).join('').split(DebutModele5).join('').split(DebutModele6).join('').split(DebutModele7).join('').split(DebutModele8).join('').split(DebutModele9).join('').split(DebutModele10).join('');
DebutModele = OldText.split(SuiteModele).join('');
} else {
// Il n'y a pas de catégories/portails/palettes
var interWiki = new RegExp('^\\s*\\[\\[([a-z][a-z].?(x?-[^\\]]+)?|simple|tokipona):([^\\]]*)\\]\\]\\s*$');
var blank = new RegExp('^\\s*$');
var lines = OldText.split('\n');
var FoundInterwiki = false;
for (var lineId = lines.length - 1; lineId >= 0; --lineId) {
if (!interWiki.exec(lines[lineId]) && !blank.exec(lines[lineId])) {
DebutModele = lines.slice(0, lineId + 1).join('\n');
SuiteModele = lines.slice(lineId + 1).join('\n');
break;
}
}
DebutModele = DebutModele + '\n\n';
while (SuiteModele.indexOf('\n\n') != -1) {
SuiteModele = SuiteModele.split("\n\n").join("\n");
}
SuiteModele = SuiteModele.replace(/^\n/, "");
}
var TexteFinal = DebutModele + NouveauModele + SuiteModele;
var SommaireFinal = Sommaire + ' ; avec [[Utilisateur:Prométhée/AjouterSectionRefs.js|AjouterSectionRefs]] #AjouterSectionRefs';
document.getElementById('wpMinoredit').checked = Section_MinorEdit;
if (Section_Watchthis === 1) document.getElementById('wpWatchthis').checked = "checked";
if (Section_Watchthis === 0) document.getElementById('wpWatchthis').checked = false;
document.getElementById('wpTextbox1').value = TexteFinal;
document.getElementById('wpSummary').value = SommaireFinal;
if (Section_AutoEdit) document.editform.submit();
}
}
function Section_Edit() {
var URL = mw.config.get('wgServer') + mw.config.get('wgScript') + "?title=" + encodeURIComponent(mw.config.get('wgPageName')) + "&action=edit";
Section_ajax.http({
url: URL,
onSuccess: Section_DoEdit,
});
}
window.Section_AddOne = function() {
var catLinks = document.getElementById('catlinks');
if (catLinks) {
var addSectionRef = document.createElement('div');
addSectionRef.id = 'lienSectionRef_add';
addSectionRef.className = 'navbox-container center';
addSectionRef.innerHTML += '<b><a href="javascript:Section_Edit();">Ajouter une section « Notes et références »</a></b>';
catLinks.before(addSectionRef);
}
};
/////////////////////////////////////////////////////////////////////////////////// Fonctions actives au chargement de la page
function AjouterSectionRefs() {
var Pagesliees = document.getElementById("t-whatlinkshere");
if (!Pagesliees) return;
Section_AddOne();
}
if ((mw.config.get('wgAction') === 'view' || mw.config.get('wgAction') === 'purge') &&
(mw.config.get('wgNamespaceNumber') === 0 || mw.config.get('wgNamespaceNumber') === 2 || mw.config.get('wgNamespaceNumber') === 4)) {
$(AjouterSectionRefs);
}
//</nowiki></pre>
// ====================================================================================================================
// FIN DU CODE
// ====================================================================================================================
//</syntaxhighlight>