Utilisateur:Grind24/OneClickArchiver.js

Aujourd'hui, Utilisateur:Grind24/OneClickArchiver.js est devenu un sujet d'un grand intérêt et d'une grande pertinence dans différents domaines de la société. Son impact et sa portée sont de plus en plus évidents dans notre vie quotidienne, générant des débats, des études et des recherches qui cherchent à mieux comprendre son influence. Depuis son émergence, Utilisateur:Grind24/OneClickArchiver.js a attiré l'attention de personnes de tous âges et de toutes professions, devenant un point de discussion clé lors des réunions de famille, des conversations autour d'un café et même dans les cercles universitaires. Dans cet article, nous explorerons certains des aspects les plus pertinents de Utilisateur:Grind24/OneClickArchiver.js et son importance aujourd'hui, ainsi que ses implications possibles dans le futur.
/**
 * 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);
								});
							});
						});
					}
				});
			}
		}
	});
}