Utilisateur:Shawn/xdone.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) ;
Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5./*
* xdone — Mark tasks as done
* (C) 2013-2017 Arkanosis <jroquet@arkanosis.net>
* Released under the MIT/X11 license
*/
/*global alert, jQuery, mediaWiki, window */
/*jslint vars: true, plusplus: true */
// <nowiki>
( function ( mw, $ ) {
'use strict';
if ( $.inArray( mw.config.get( 'wgPageName' ), [
'Wikipédia:Demande_de_protection_de_page',
'Wikipédia:Demande_de_purge_d\'historique',
'Wikipédia:Demande_de_renommage',
'Wikipédia:Demande_d\'intervention_sur_un_message_système',
'Wikipédia:Demande_d\'intervention_sur_une_page_protégée',
'Wikipédia:Requête_aux_administrateurs'
] ) === -1 ) {
return;
}
importStylesheet('User:Arkanosis/xdone.css');
var _i18n = ( function() {
var nbsp = '\xA0'; // non-breaking space
var l10n = {
fr: {
summary: '[[Discussion_utilisateur:Arkanosis/xdone.js|xdone]]' + nbsp + ': fait',
done_message: '{{Fait}} ~~~~'
}
};
l10n[ 'nb' ] = l10n.no;
l10n[ 'pt-br' ] = l10n.pt;
var lang = mw.user.options.get( 'language' );
if( !l10n[ lang ] ) {
lang = 'fr';
}
return function( key ) {
if( l10n[ lang ][ key ] ) {
return l10n[ lang ][ key ];
}
return l10n[ 'fr' ][ key ];
};
} () );
var _option = Object.assign( {
'done_message': _i18n( 'done_message' )
}, window.xdone_options );
var _templates = '(DIMS|DIPP|DPP|DR|RA)';
var _apiDone = function( data ) {
if ( data && data.edit && data.edit.result === 'Success' ) {
window.location.reload();
} else if ( data && data.error ) {
alert( 'Error: API returned error code "' + data.error.code + '": ' + data.error.info );
} else {
alert( 'Error: Unknown result from API.' );
}
};
var _apiFail = function( _ ) {
alert( 'Error: Request failed.' );
};
$( '#mw-content-text div ul li b' ).each( function( _, requestStatus ) {
var statusParts = requestStatus.parentNode.childNodes;
if ( statusParts.length > 1 && / +[-—]/.test( requestStatus.parentNode.childNodes[ 1 ].textContent ) ) {
//requestStatus.parentNode.childNodes[ 1 ].textContent = ' ';
$( '<a class="xdone-button">marquer comme traité</a>' ).click( function() {
var title = requestStatus.parentNode.parentNode.parentNode.previousElementSibling;
$( title ).find( '.mw-editsection a:not(.mw-editsection-visualeditor)' ).each( function( _, link ) {
var sectionMatch = /[?&]section=([^&]+)/.exec( link.search );
if ( !sectionMatch ) {
return;
}
var sectionValue = decodeURIComponent( sectionMatch[1].replace( /\+/g, ' ' ) );
$.get(
mw.util.wikiScript( 'api' ),
{
format: 'json',
action: 'query',
titles: mw.config.get( 'wgPageName' ),
prop: 'revisions',
rvprop: 'content',
rvsection: sectionValue
}
).done( function( data ) {
$.each( data.query.pages, function( _, page ) {
var text = page.revisions[ 0 ][ '*' ];
$.each( [
[ '<!-- S\'il vous plaît, n\'utilisez pas de modèles ou de liens internes dans le titre de votre requête -->', '' ],
[ '<!-- Indiquez votre requête ici -->', '' ],
[ '<!-- Indiquez le titre exact de l\'article dans le modèle {{a-court}} ci-dessus-->', '' ],
[ '<!-- Écrivez dans la boîte \'\'Sujet/titre\'\' ci-dessus : [[MediaWiki:nom de la page]], puis remplissez les rubriques ci-dessous -->', '' ],
[ '<!-- Ne pas modifier la ligne ci-avant -->', '' ],
[ '<!-- Ne pas modifier la ligne ci-après -->', '' ],
[ '<!-- Ne pas modifier la ligne qui précède -->', '' ],
[ '<!-- Ne pas modifier la ligne qui suit -->', '' ],
[ '<!-- NE PAS MODIFIER NI ÉCRIRE SOUS LA LIGNE CI-APRÈS -->', '' ],
[ '<!-- toujours écrire au-dessus de cette ligne -->', '' ],
[ ' <!-- ne pas modifier cette ligne -->', '' ],
[ ' <!-- NE PAS modifier CETTE LIGNE -->', '' ],
[ ' <!-- Indiquez votre justification ici -->', '' ],
[ '<!-- Indiquez votre requête après cette ligne -->', '' ],
[ '<!-- L\'intervention d\'un administrateur n\'est pas nécessaire si l\'historique de l\'article qui porte le nom cible ne contient qu\'une ligne et que son contenu est une redirection vers le titre actuel. -->', '' ],
[ /\n\n\n*/g, '\n\n' ],
[ new RegExp('\\{\\{' + _templates + ' début\\|traitée=\\|date=(<!--~~~~~-->)?\\}\\}(<!-- ne pas modifier cette ligne -->)?\n+', 'g'), '{{$1 début|traitée=oui|date=~~~~~}}\n' ],
[ new RegExp('\\{\\{' + _templates + ' début\\|statut=\\|date=(<!--~~~~~-->)?\\}\\}(<!-- ne pas modifier cette ligne -->)?\n+', 'g'), '{{$1 début|statut=oui|date=~~~~~}}\n' ],
[ new RegExp('\n*\\{\\{' + _templates + ' fin\\}\\}', 'g'), '\n:' + _option[ 'done_message' ] + '\n{{$1 fin}}' ],
[ new RegExp('(\n:[^:\n][^\n]*\n)(:[^\n]*\n\\{\\{' + _templates + ' fin\\}\\})', 'g'), '$1\n$2' ]
], function( _, pattern ) {
text = text.replace( pattern[ 0 ], pattern[ 1 ], 'g' );
} );
var summary = text.split( '\n' )[ 0 ];
$.each( [
[ /^== */, '' ],
[ / *==.*/, '' ]
], function( _, pattern ) {
summary = summary.replace( pattern[ 0 ], pattern[ 1 ] );
} );
$.post(
mw.util.wikiScript( 'api' ),
{
format: 'json',
action: 'edit',
title: mw.config.get( 'wgPageName' ),
section: sectionValue,
summary: '/* ' + summary + ' */ ' + _i18n( 'summary' ),
minor: 'true',
text: text,
token: mw.user.tokens.get( 'csrfToken' )
}
).done( _apiDone ).fail( _apiFail );
});
} ).fail( _apiFail );
} );
} ).appendTo( requestStatus.parentNode );
}
} );
} ( mediaWiki, jQuery ) );
// </nowiki>