Utilisateur:Zebulon84/Js2.js

Dans cet article, nous allons approfondir Utilisateur:Zebulon84/Js2.js et comprendre son importance dans la société actuelle. Utilisateur:Zebulon84/Js2.js a été un sujet de grand intérêt et de débat ces derniers temps, et il est essentiel de comprendre son impact sur divers aspects de la vie quotidienne. De son influence sur la santé et le bien-être à son rôle économique et politique, Utilisateur:Zebulon84/Js2.js joue un rôle crucial dans la façon dont nous vivons et interagissons avec le monde qui nous entoure. Grâce à une analyse détaillée, nous explorerons les différentes facettes de Utilisateur:Zebulon84/Js2.js et examinerons son évolution au fil du temps, ainsi que ses implications possibles pour l'avenir. Cet article cherche à faire la lumière sur Utilisateur:Zebulon84/Js2.js et à fournir une vision plus large de sa pertinence dans la société moderne.
/**
 * OngletPurgeCatégorie
 *
 * Onglet permettant de réaliser une purge du cache
 *
 * @source https://www.mediawiki.orghttps://wikifreehand.com/fr/Snippets/Purge_action
 * @revision 2016-05-22
 * {{Projet:JavaScript/Script|OngletPurge}}
 */

if ( mw.config.get( 'wgNamespaceNumber' ) === 14 ) {
	mw.loader.using( [
		'mediawiki.util',
		'oojs-ui-core',
		'oojs-ui-windows'
	] ).then( function () {
		var api = new mw.Api();
		var clef, cont, purgeTasks, progressBar, fieldset, messageDialog, windowManager;
		
		function init() {
			if ( $( '#ca-purgecat' ).length ) {
				// Il y a déjà un onglet 'purger la catégorie'
				return;
			}
			var node = mw.util.addPortletLink(
				'p-cactions',
				'#',
				'Purger la catégorie',
				'ca-purgecat',
				'Purger le cache des pages de la catégorie (Ns 0)'
			);
			$(node).click( function ( event ) {
				OO.ui.prompt( 
					'Purger la catégorie à partir de :',
					{ textInput: { placeholder: 'clé de tri' } }
				).done( listAndPurgeCategoryPages );
			});
		}
		
		function listAndPurgeCategoryPages( from ) {
			if ( typeof from === 'string' ) {
				clef = from;
				cont = null;
				
				progressBar = new OO.ui.FieldLayout(
					new OO.ui.ProgressBarWidget( { progress: 0 } ),
					{ label: 'Avancement : récupération de la liste de pages', align: 'top' }
				);
				fieldset = new OO.ui.FieldsetLayout( { items:  } );
				messageDialog = new OO.ui.MessageDialog();
				windowManager = new OO.ui.WindowManager();
				windowManager.addWindows(  );
				$( 'body' ).append( windowManager.$element );
				
				windowManager.openWindow( messageDialog, {
					title: 'Purge de la catégorie',
					message: fieldset.$element,
					size: 'large',
					actions: 
				} ).closed.then( function ( data ) {
					if ( data && data.action === 'reject' ) {
						api.abort();
						for ( var i = purgeTasks.length; i > 0; i-- ) {
							clearTimeout( purgeTasks );
						}
						document.location.reload(true);
					}
				} );
			} else if ( from && from.continue ) {
				progressBar.getField().setProgress( 0 );
				progressBar.setLabel( 'Récupération de la liste de pages' );
				cont = from;
				messageDialog.toggle( true );
			} else {
				return;
			}
			
			purgeTasks = ;
			
			api.get( {
				action : "query",
				format : "json",
				list : "categorymembers",
				cmtitle : mw.config.get( 'wgPageName' ),
				cmnamespace : "0",
				cmprop : "title",
				cmlimit : 500,
				cmsort : "sortkey",
				cmstartsortkeyprefix : clef,
				cmcontinue : cont,
				utf8 : 1,
				formatversion : "2"
				
			} ).done( function ( data ) {
				var i, page, progress;
				var catList = data.query.categorymembers;
				var length = catList.length;
				progress = 100 / length;
				for ( i = 0; i < length; i++ ) {
					page = catList.title;
					if ( page != "Tour de l'Avenir 2017" ) {
						purgeTasks = setTimeout( purgePage, 1000 * i, page, progress );
					}
				}
				
				purgeTasks = setTimeout( function() {
					messageDialog.toggle( false );
					if ( data.continue ) {
						OO.ui.confirm( length + ' pages ont été purgées, faut-il continuer ?' )
						.done( function( OK ) {
							if ( OK ) {
								listAndPurgeCategoryPages( data.continue );
							} else {
								windowManager.closeWindow( messageDialog );
								document.location.reload(true);
							}
						} );
					} else {
						windowManager.closeWindow( messageDialog );
						OO.ui.alert( 'Catégorie purgée (' + length + ' pages)' ).done( function () {
							document.location.reload(true);
						} );
					}
				}, 1000 * ( catList.length + 5 ) );
				/*
				var title = 'Purge des ' + length + 'éléments de la catégorie.';
				if ( data.continue ) {
					title =  'Purge de ' + length + ' éléments de la catégorie.';
				}
				messageDialog.title = title;
				*/
			} ).fail( function () {
				windowManager.closeWindow( messageDialog );
				OO.ui.alert( 'impossible d\'otenir la liste de la catégorie' );
			} );
		}
		
		function purgePage( page, progress ) {
			api.post( {
				action: "purge",
				format: "none",
				forcelinkupdate: 1,
				titles: page
			} ).always( function() {
				if ( progressBar && progress ) {
					var bar = progressBar.getField();
					bar.setProgress( bar.getProgress() + progress );
					progressBar.setLabel( 'Page en cours : ' + page );
				}
			} );
		}
		
		init();
	});
}