_ _    _ _____  ___   __                       
 __      _(_) | _(_)___ / ( _ ) / /_   ___ ___  _ __ ___  
 \ \ /\ / / | |/ / | |_ \ / _ \| '_ \ / __/ _ \| '_ ` _ \ 
  \ V  V /| |   <| |___) | (_) | (_) | (_| (_) | | | | | |
   \_/\_/ |_|_|\_\_|____/ \___/ \___(_)___\___/|_| |_| |_|

Utilisateur:Grind24/OneClickArchiver.js

Aujourd'hui, Utilisateur:Grind24/OneClickArchiver.js est un sujet d'une grande pertinence et d'un grand intérêt pour un large éventail de personnes. Que ce soit en raison de son impact sur la société, de ses implications dans la vie quotidienne ou de son importance historique, Utilisateur:Grind24/OneClickArchiver.js est devenu un point de discussion clé dans différents domaines. De son émergence à son évolution au fil du temps, Utilisateur:Grind24/OneClickArchiver.js a retenu l'attention des universitaires, des professionnels et des curieux. Dans cet article, nous explorerons différents aspects liés à Utilisateur:Grind24/OneClickArchiver.js, de son origine à ses effets actuels, avec l'intention d'offrir une perspective complète et enrichissante sur ce sujet très pertinent.
/**
 * OneClickArchiver.js par fr:User:Startupevo1
 * 
 * Version 1.1 beta - 29 avril 2014
 * 
 * Script initial de en:User:Equazcion/OneClickArchiver
 */
/* Variables */
if(typeof(defautArchiv)=="undefined") var defautArchiv = 'Archive '+new Date().getFullYear(); // String
if(typeof(smartArchiv)=="undefined") var smartArchiv = false; // true/false (not implemented)
if(typeof(autoHeader)=="undefined") var autoHeader = true; // true/false
if(typeof(reloadTime)=="undefined") var reloadTime = 1000; // integer en ms

/* Corps */
if (($('#ca-addsection').length > 0) && (mw.config.get('wgAction') == 'view') && mw.config.get('wgPageName').indexOf("/Suppression") === -1){
	$('span.mw-headline').each(function(index, value){
		var editSectionUrl = $(this).parent().find('.mw-editsection a:first').attr('href');
		var sectionReg = /&section=(.*)/;
		var sectionRaw = sectionReg.exec(editSectionUrl);
		if ((sectionRaw !== null) && (sectionRaw.indexOf('T') < 0)){
			
			var section = parseInt(sectionRaw);
		
			if ($(this).parent().prop("tagName") == 'H2'){
			 
				$(this).parent('h2').append(' <div style="font-size:.6em;float:right"><a id="' + section + 
					'" href="#archiverLink" class="archiverLink">' + '' + '</a></div>');
					
				$(this).parent('h2').find('a.archiverLink').click(function(){
					
					var mHeaders = '<span style="color:#454545;">Reprise des headers...</span>';
					var mSection = 'reprise du contenu de la section...';
					var mPosting = '<span style="color:#004000">Contenu repris,</span> édition en cours...';
					var mBanner = '<span style="color:#008000">Bandeau {{Archive de discussion}} ajouté...</span>';
					var mPosted = '<span style="color:#008000">Archive ajoutée...</span>';
					var mCleared = '<span style="color:#008000">Section vidée...</span>';
					var mReloading = '<span style="color:#00008C">Terminé ! </span>Rechargement de la page...';
					
					$('body').append('<div class="overlay" style="background-color:#000;opacity:.4;position:fixed;' + 
						'top:0;left:0;width:100%;height:100%;z-index:500;" onclick="this.parentNode.style.display = \'none\';"></div>');					
						
					$('body').prepend('<div class="arcProg" style="font-weight:bold;box-shadow: 7px 7px 5px #000;font-size:0.9em;line-height:1.5em;' + 
						'z-index:501;opacity:1;position:fixed;width:50%;left:25%;top:30%;background:#F7F7F7;border:#222 ridge 1px;padding:20px;"></div>');
						
					$('.arcProg').append('<div>' + mHeaders + '</div>');
				
					var archiveName=prompt('Nom de la page d\'archive à utiliser :',mw.config.get('wgPageName')+'/'+defautArchiv);
					
					if(archiveName === null)
					{
						alert("Pas de nom d'archive inséré, archivage annulé.");
					}
					else
					{
						//https://fr.wikipedia.org/w/api.php?action=query&prop=revisions&titles=Albert_Einstein&rvprop=size&format=xml

						$('.arcProg').append('<div>' + 'Archive <span style="font-weight:normal;color:#003366;">' + archiveName + 
							'</span> <span style="darkgreen">trouvée</span>, ' + mSection + '</div>');

						var request5 = {
							action:"query", 
							titles: mw.config.get('wgPageName'), 
							rvsection: section,
							prop: "revisions|info", 
							intoken: "edit", 
							rvprop: "content",
							indexpageids: 1,
							dataType: "xml",
							format: "xml"
						};
				 
						$.get(mw.config.get("wgScriptPath")+"/api.php", request5, function(response5){
							
							$('.arcProg').append('<div>' + mPosting + '</div>');
							
							// Ajout de bandeau
							var request4 = {
								action:"query", 
								titles: archiveName, 
								rvsection: 0,
								prop: "revisions|info", 
								intoken: "edit", 
								rvprop: "content",
								indexpageids: 1,
								dataType: "xml",
								format: "xml"
							};
							$.get(mw.config.get("wgScriptPath")+"/api.php", request4, function(response4){
								var emptyTest = $(response4).find('rev').text();
								if((!emptyTest || /^\s*$/.test(emptyTest)) && autoHeader === true)
								{
									var contentSection = '{{Archive de discussion}}\r' + $(response5).find('rev').text();
									$('.arcProg').append('<div>' + mBanner+ '</div>');
								}
								else
								{
									var contentSection = '\r' + $(response5).find('rev').text();
								}
								
								var request1 = {
									action:"edit", 
									title: archiveName,
									appendtext: contentSection, 
									summary: 'Ajout d\'une section depuis ]  avec ]',
									token: mw.user.tokens.get("csrfToken")
								};
								
								var request2 = {
									action:"edit", 
									section: section, 
									title: mw.config.get('wgPageName'), 
									text: "",
									summary: 'Archivage d\'une section sur ] avec ]',
									token: mw.user.tokens.get("csrfToken")
								};
								
								$.when(
									$.post(mw.config.get("wgScriptPath")+"/api.php", request1, function(response1){	
										$('.arcProg').append('<div class="archiverPosted">' + mPosted + '</div>'); }),
									$.post(mw.config.get("wgScriptPath")+"/api.php", request2, function(response2){	
										$('.arcProg').append('<div class="archiverCleared">' + mCleared + '</div>'); })
								).done(function() {
									$('.arcProg').append('<div>' + mReloading + '</div>');
									setTimeout(function(){
										window.location.reload();
									}, reloadTime);
								});
							});
						});
					}
				});
			}
		}
	});
}