Aller au contenu

Utilisateur:Programmateur01/xpatrol.js

Une page de Wikipédia, l'encyclopédie libre.
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.
// Fork de Utilisateur:Arkanosis/xpatrol.js

/*
 * xpatrol - Permet d'effectuer rapidement certaines actions
 *   - ajouter un bandeau à une page
 *        - Compétition sportive en cours
 *        - Compétition sportive à venir
*/


/*
 * (C) 2009-2021 Arkanosis <jroquet@arkanosis.net>
 * (C) 2013 Orlodrim <orlodrim@wiki256.net>
 * (C) 2016-2018 Od1n
 * Released under the MIT/X11 license
 */

/* global alert, $, mw, window */
/* jshint laxbreak: true */

// <nowiki>

mw.loader.using( [ 'mediawiki.util', 'user' ], function () {
	'use strict';

	function xpatrolReload( callback ) {
		$.get( mw.util.getUrl( null, { action: 'render' } ) ).done( function ( html ) {
			$( '#mw-content-text' ).html( html );
			if ( callback ) {
				callback();
			}
		} ).error( function () {
			$( '#mw-content-text' ).text( 'Impossible de recharger la page' );
			if ( callback ) {
				callback();
			}
		} );
	}

	function xpatrolEdit( article, mode, text, section, reason, button, callback ) {
		function afterReload() {
			if ( button ) {
				var link = document.getElementById( button );
				link.innerHTML = '<img src="//upload.wikimedia.org/wikipedia/commons/thumb/f/fb/Yes_check.svg/15px-Yes_check.svg.png"> ' + link.innerHTML;
			}
			if ( callback ) {
				callback();
			}
		}
		function afterEdit( data ) {
			if ( article == mw.config.get( 'wgPageName' ) ) {
				if ( !text ) {
					$( '#mw-content-text' ).remove();
				}
				else {
					xpatrolReload( afterReload );
					return;
				}
			}
			afterReload();
		}
		function onFailure() {
			alert( 'Impossible d\'enregistrer la page ' + article );
		}

		var data = {
			format: 'json',
			title: article,
			token: mw.user.tokens.get( 'csrfToken' ),
			summary: section + '[[Utilisateur:Programmateur01/xpatrol.js|xpatrol]] : ' + reason
		};
		data[ mode ] = text;
		if ( !data.token || data.token.length <= 2 ) {
			alert( 'Vous n\'êtes plus connecté' );
		} else {
			$.post( mw.util.wikiScript( 'api' ) + '?action=edit', data, afterEdit ).error( onFailure );
		}
	}


	function xpatrolAddBanner( article, banner, reason, button ) {
		if ( confirm( 'Ajouter le bandeau ' + banner + ' à l\'article ' + article + ' pour ' + reason + ' ?' ) ) {
			xpatrolEdit( article, 'prependtext', '{{' + banner + '}}\n', '', reason, button );
		}
	}

	function xpatrolAddBannerLink( label, hint, banner, message, bannerQuestion ) {
		var xpatrolNav = document.getElementById( 'xpatrol-nav' );

		var link = document.createElement( 'a' );
		link.href = 'javascript:';
		link.onclick = function ( e ) {
			e.preventDefault();
			if ( bannerQuestion ) {
				var input = prompt( bannerQuestion );
				if ( input === null ) {
					return;
				}
				banner = banner.replace( '__PROMPT__', function () { return input; } );
			}
			xpatrolAddBanner( mw.config.get( 'wgPageName' ), banner, message, 'xpatrol-' + label );
		};
		link.id = 'xpatrol-' + label;
		link.title = hint;
		link.appendChild( document.createTextNode( ' ' + label + ' ' ) );

		xpatrolNav.appendChild(link);
	}

	function xpatrolAddBannerLinks() {
		var today = new Date();
		var month = [ 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre' ][ today.getMonth() ];
		var date = '|date=' + month + ' ' + today.getFullYear();

		var bodyContent = document.getElementById( 'bodyContent' );
		var navLink = document.createElement( 'a' );
		navLink.href = 'javascript:';
		navLink.onclick = function ( e ) {
			e.preventDefault();
			var x = document.getElementById("xpatrol-nav");
			// toggle display
			if (x.style.display === "none") {
				document.getElementById("xpatrol-nav-a").text = 'v Bandeaux : '
				x.style.display = "block";
			} else {
				document.getElementById("xpatrol-nav-a").text = '> Bandeaux : '
				x.style.display = "none";
			}
		};
		navLink.id = 'xpatrol-nav-a';
		navLink.appendChild(document.createTextNode('> Bandeaux : '));
		
		var navBar = document.createElement( 'p' );
		navBar.id = 'xpatrol-nav';
		navBar.style.display = "none"
		
		bodyContent.parentNode.insertBefore( navLink, bodyContent );
		bodyContent.parentNode.insertBefore( navBar, bodyContent );

        xpatrolAddBannerLink('[Compétition en cours]', 'Compétition sportive en cours', 'Compétition sportive en cours', 'Compétition en cours');
		xpatrolAddBannerLink('[Compétition en cours+]', 'Compétition sportive en cours (avec sport)', 'Compétition sportive en cours|sport=__PROMPT__', 'Compétition en cours', 'Quel est le sport ?');
        xpatrolAddBannerLink('[Compétition à venir]', 'Compétition sportive à venir', 'Compétition sportive à venir', 'Compétition à venir');
		xpatrolAddBannerLink('[Compétition à venir+]', 'Compétition sportive à venir (avec sport)', 'Compétition sportive à venir|sport=__PROMPT__', 'Compétition à venir', 'Quel est le sport ?');
		//xpatrolAddBannerLink( '?', 'Incompréhensible dans l’état actuel', '?' + date, '[[WP:RI|Incompréhensible dans l\’état actuel]]' );
		xpatrolAddBannerLink( 'Pub', 'Ton trop promotionnel ou publicitaire', 'pub' + date, '[[WP:POV|Ton trop promotionnel ou publicitaire]]' );
		xpatrolAddBannerLink( 'Admi', 'Admissibilité à vérifier', 'admissibilité à vérifier' + date, '[[WP:CAA|Admissibilité à vérifier]]' );
		//xpatrolAddBannerLink( 'Admi+', 'Admissibilité à vérifier (avec motif)', 'admissibilité à vérifier' + date + '|motif=__PROMPT__', '[[WP:CAA|Admissibilité à vérifier]]', 'Pourquoi n\'êtes-vous pas convaincu de l\'admissibilité de cet article ?' );
		//xpatrolAddBannerLink( 'Orth', 'Orthographe et grammaire à vérifier', 'Orthographe' + date, 'Orthographe et grammaire à vérifier' );
		//xpatrolAddBannerLink( 'Redac', 'Style non encyclopédique', 'Rédaction' + date, '[[WP:STYLE|Style non encyclopédique]]' );
		xpatrolAddBannerLink( 'Wikif', 'À wikifier', 'À wikifier' + date, '[[Aide:Wikification|À wikifier]]' );
		//xpatrolAddBannerLink( 'MàJ', 'À mettre à jour', 'À mettre à jour' + date, 'À mettre à jour' );
		//xpatrolAddBannerLink( 'Int', 'À internationaliser', 'À internationaliser' + date, 'À internationaliser' );
		xpatrolAddBannerLink( 'Src', 'À sourcer', 'À sourcer' + date, '[[WP:REF|À sourcer]]' );
		xpatrolAddBannerLink( 'Src2', 'Manque de sources secondaires', 'Sources secondaires' + date, '[[WP:SPS|Manque de sources secondaires]]' );
		xpatrolAddBannerLink( 'Cat', 'À catégoriser', 'À catégoriser' + date, '[[Aide:Catégorie|À catégoriser]]' );
		//xpatrolAddBannerLink( 'Src3', 'Sources à lier', 'Sources à lier' + date, '[[Modèle:Sources_à_lier/Explication|Sources à lier]]' );
		//xpatrolAddBannerLink( 'TI', 'Travail inédit', 'Travail inédit' + date, '[[WP:TI|Travail inédit]]' );
		//xpatrolAddBannerLink( 'CpVer', 'Soupçon de violation de droit d\'auteur', 'Copie à vérifier|1=__PROMPT__' + date, 'Soupçon de violation de [[Wikipédia:Droit d\'auteur|droit d\'auteur]]', 'Quelle est la source copiée illégalement ?' );
		//xpatrolAddBannerLink( 'Sursis', 'Article en sursis', 'Article en sursis|TimeStamp={{subst' + ':CURRENTTIMESTAMP}}', '[[Modèle:Article en sursis/Documentation|Article en sursis]]' );
		//xpatrolAddBannerLink( 'PàS', 'Proposition de suppression', 'Suppression' + date, '[[WP:PàS|Proposition de suppression]]' );
		//xpatrolAddBannerLink( 'R3R', 'Guerre d\'édition', 'R3R' + date, '[[WP:R3R|Règle des trois révocations]]' );
	}

	function xpatrol() {
		if ( document.getElementById( 'ca-edit' ) ) {
			xpatrolAddBannerLinks();
		}
	}

	$( xpatrol );

} );

// </nowiki>