Aller au contenu

Utilisateur:Grind24/OneClickArchiver.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) ;

Firefox (sur GNU/Linux) / Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5.
/**
 * 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[1].indexOf('T') < 0)){
			
			var section = parseInt(sectionRaw[1]);
		
			if ($(this).parent().prop("tagName") == 'H2'){
			 
				$(this).parent('h2').append(' <div style="font-size:.6em;float:right"><a id="' + section + 
					'" href="#archiverLink" class="archiverLink">' + '[OCA]' + '</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 [[' + mw.config.get('wgPageName') + ']]  avec [[User:Startupevo1/OneClickArchiver|OCA]]',
									token: mw.user.tokens.get("csrfToken")
								};
								
								var request2 = {
									action:"edit", 
									section: section, 
									title: mw.config.get('wgPageName'), 
									text: "",
									summary: 'Archivage d\'une section sur [[' + archiveName + ']] avec [[User:Startupevo1/OneClickArchiver|OCA]]',
									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);
								});
							});
						});
					}
				});
			}
		}
	});
}