Aller au contenu

Utilisateur:Kojemiaka/copyvio.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.
//<source lang=javascript>//<pre><nowiki>

function addCopyvioMenuItem () {
	
	mw.loader.load('jquery.ui');
	if (mw.config.get('wgNamespaceNumber')==0) {
		$('#p-cactions ul').append("<li><a id='copyvio1'>Soupçon de copyvio</a></li>"); 
		$('#p-cactions ul').append("<li><a id='copyvio2'>Copyvio avéré</a></li>"); 
	
	}
   
}

function displayForm () {

	var comments;
	var site;

	function displayHeadband1 () {

		var bandeau1 = "{{Copie à vérifier}}\n\n";
		var contenuPage = $("#Tableau_de_bord #wpTextbox1").text();	// "wpTextbox1" = id de la fenêtre d'edit
		var result = bandeau1 + contenuPage;
						
		return result;

	}
	
	function displayHeadband2 () {

		var bandeau2 = "{{Copie de site | 1=" + site + " }}\n\n";
		var contenuPage = $("#Tableau_de_bord #wpTextbox1").text();	// "wpTextbox1" = id de la fenêtre d'edit
		var result = bandeau2 + contenuPage;
						
		return result;

	}
					
	function commentCopyvio () {
							
		var contenuPage = $("#Tableau_de_bord #wpTextbox1").text();
		var signature = "";
		if(!(comments.match(/~~~~/))) { 
			signature = "\n\n~~~~";
		}
		var result = contenuPage + "\n\n== [[:{{BASEPAGENAME}}]] ==\n\n" + comments + signature; // Ajout d'une section dans la sous-page
						
		return result;
						
	}

	function indexCopyvio () {

		var contenuPage = $("#Tableau_de_bord #wpTextbox1").text();
		var article = mw.config.get('wgPageName'); // "wgPageName" = nom de l'article
						
		// Insertion du lien "au milieu" de la page
		var part1 = contenuPage.substring(0,(contenuPage.indexOf('<!---------------------------------------------------------------------->'))-1);
		var part2 = contenuPage.substring(contenuPage.indexOf('<!---------------------------------------------------------------------->'));

		var result = part1 + "\n" + "* [[:" + article + "]] ([[Discussion:" + article + "/Droit d'auteur|'''sous-page''']])" + part2 + "\n";
						
		return result;
						
	}

	var TableauDeBord = document.createElement('div');
	TableauDeBord.id = 'Tableau_de_bord';
	TableauDeBord.style.opacity = '0';
	document.body.appendChild(TableauDeBord);
					
	function  autoEdit(Page, convertContent){
					 
		/* ///////////////////////////// LANCEMENT REQUETE PAGE A EDITER //////////////////// */
					 
		// Adresse de requête
		var AdresseEdition = mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=' + decodeURIComponent(Page) + '&action=edit';
					
		// Lancement de la requête
		var RequeteEdition = new XMLHttpRequest(); // Requête ajax GET de la page à éditer
		RequeteEdition.open("GET", AdresseEdition, false);
		RequeteEdition.onreadystatechange = function() {
		
			if( !(RequeteEdition.readyState == 4 && RequeteEdition.status == 200) )  return;
			TableauDeBord.innerHTML = RequeteEdition.responseText;  // Affichage de la page à éditer
									
		/* ///////////////////////////// FIN REQUETE PAGE A EDITER //////////////////// */
					 
			// Modification de la page à éditer
			var TexteFinal = convertContent();
			var SommaireFinal = 'Test';   // Résumé de modification
								
			// Demande de confirmation
			//var SurEtCertain = confirm('Sauvegarder la modification ?');
			//if(!SurEtCertain) return;
					 
		/* ///////////////////////////// LANCEMENT REQUETE PUBLICATION //////////////////// */
					 
			// Adresse de la requête (attribut "action" de l'élément <form> )
			var AdressePublication = mw.config.get('wgServer') + $("#Tableau_de_bord #editform").attr('action');
									
					 
			// Création des "paramètres" de la requête
			var boundary = '--------123xyz';
			var data = '';
			data += '--' + boundary + '\nContent-Disposition: form-data; name="wpTextbox1"\n\n' + TexteFinal + '\n';
			data += '--' + boundary + '\nContent-Disposition: form-data; name="wpSection"\n\n' + $('#Tableau_de_bord #editform input[name="wpSection"]').attr('value')/*document.editform.wpSection.value*/ + '\n';
			data += '--' + boundary + '\nContent-Disposition: form-data; name="wpSummary"\n\n' + SommaireFinal +'\n';
			data += '--' + boundary + '\nContent-Disposition: form-data; name="wpStarttime"\n\n' + $('#Tableau_de_bord #editform input[name="wpStarttime"]').attr('value') + '\n';
			data += '--' + boundary + '\nContent-Disposition: form-data; name="wpMinoredit"\n\n' + $('#Tableau_de_bord #editform input[name="wpMinoredit"]').attr('value') + '\n';
			data += '--' + boundary + '\nContent-Disposition: form-data; name="wpWatchthis"\n\n' + $('#Tableau_de_bord #editform input[name="wpWatchthis"]').attr('value') + '\n';
			data += '--' + boundary + '\nContent-Disposition: form-data; name="wpEdittime"\n\n' + $('#Tableau_de_bord #editform input[name="wpEdittime"]').attr('value') + '\n';
			data += '--' + boundary + '\nContent-Disposition: form-data; name="wpEditToken"\n\n' + $('#Tableau_de_bord #editform input[name="wpEditToken"]').attr('value') + '\n';
								
			// Lancement de la requête
			var RequetePublication = new XMLHttpRequest(); // Requête ajax POST de la page à éditer
			RequetePublication.open('POST', AdressePublication, false);
			RequetePublication.setRequestHeader('Content-Type', 'multipart/form-data; boundary='+boundary);
			RequetePublication.onreadystatechange = function(){
			
				if (RequetePublication.readyState == 4){
					
					// Affichage de la page publiée
					TableauDeBord.innerHTML = RequetePublication.responseText;
											
		/* ///////////////////////////// FIN REQUETE PUBLICATION //////////////////// */
					 
				}
				
			}
			
			RequetePublication.send(data + '--' + boundary);
									
		}
		
		RequeteEdition.send(null);
		
	} 
	
	$('#copyvio1').bind('click', function () {
	
	    var selection = window.getSelection();
		
		// Texte de la boîte de dialogue		
		$("<div id='dialog1' title='Signaler un copyvio'>"
			+"<br/>Commentaires : <br/><br/><textarea id='details1' rows='10' cols='60' placeholder='Précisez ce que vous soupçonnez être un copyvio et signez \(en langage wiki)'></textarea>"
			+"<div/>").appendTo('body');
		
		// Ouverture de la boîte de dialogue
		$('#dialog1').dialog(
			{ modal: true },
			{height:400},
			{width:700},
			{open: function () {$('#details1').blur();}},//On annule le ciblage de la textarea
			{close: function () {$('#dialog1').remove();}},
			{buttons:[
			
			{
				text: "Signaler le copyvio",
				click: function() {     
					
					comments = document.getElementById ('details1').value;
					var url1 = mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=' + decodeURIComponent(mw.config.get('wgPageName'));
					
					$('#dialog1').html('<p id="p1">Ajout du bandeau "Copie à vérifier"<p/><br/><p id="p2">Création de la sous-page de discussion du copyvio<p/><br/><p id="p3">Indexation du copyvio<p/>');
				
					//Réduire la taille de la fenêtre de dialogue + positionnement au centre
					$('#dialog1').dialog({ height: 250 }, {width:400});
					$('#dialog1').dialog( "option", "position", 'center' );
					$('#dialog1').dialog( "option", "buttons", { "Ok": function() {
					
						$(this).dialog("close");
						document.location.href = url1;	
						
					}});
					
					autoEdit (mw.config.get('wgPageName'), displayHeadband1);
					$('#p1').append('&nbsp;&nbsp;&nbsp;&nbsp;<button type="button" id="voir1">Voir</button>');
					$('#voir1').bind('click', function () {
					
						window.open(url1,'_newtab1');
						
					});
		
					var sousPage = mw.config.get('wgPageName') + "/Droit_d%27auteur";
					var url2 = mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=' + decodeURIComponent(sousPage);
					autoEdit(sousPage,commentCopyvio);
					$('#p2').append('&nbsp;&nbsp;&nbsp;&nbsp;<button type="button" id="voir2">Voir</button>');
					$('#voir2').bind('click', function () {
					
						window.open(url2,'_newtab2');
						
					});

					var url3 = mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=' + decodeURIComponent("Utilisateur:Kojemiaka/Pages_soup%C3%A7onn%C3%A9es_de_violation_de_copyright");					
					autoEdit("Utilisateur:Kojemiaka/Pages_soup%C3%A7onn%C3%A9es_de_violation_de_copyright",indexCopyvio);
					$('#p3').append('&nbsp;&nbsp;&nbsp;&nbsp;<button type="button" id="voir3">Voir</button>');
					$('#voir3').bind('click', function () {
					
						window.open(url3,'_newtab3');
						
					});
				
				}
			},

			{
				text: "Annuler",
				click: function() { $(this).dialog("close"); } 
			}
			
			]}
			
		);				
				
	});
	
	$('#copyvio2').bind('click', function () {
		
		// Texte de la boîte de dialogue		
		$("<div id='dialog2' title='Signaler un copyvio'>"
		+"<br/>Entrez l\'adresse du site qui a été copié : <br/><input id='site' size='60'/><br/>"
		+"<br/>Commentaires : <br/><textarea id='details2' rows='10' cols='60' placeholder='Précisez la nature du copyvio et signez (en langage wiki)'></textarea>"
		+"<div/>").appendTo('body');
		
		// Ouverture de la boîte de dialogue
		$('#dialog2').dialog(
			{ modal: true },
			{height:400},
			{width:700},
			{open: function () {$('#details2').blur();}},//On annule le ciblage de la textarea
			{close: function() { $('#dialog2').remove();}},
			{buttons:[
			
				{
					text: "Signaler le copyvio",
					click: function() {     
						
						site = document.getElementById ('site').value;
						comments = document.getElementById ('details2').value;
						
						var url1 = mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=' + decodeURIComponent(mw.config.get('wgPageName'));
						
						$('#dialog2').html('<p id="p1">Ajout du bandeau "Copie de site"<p/><br/><p id="p2">Création de la sous-page de discussion du copyvio<p/><br/><p id="p3">Indexation du copyvio<p/>');
					
						//Réduire la taille de la fenêtre de dialogue + positionnement au centre
						$('#dialog2').dialog({ height: 250 }, {width:400});
						$('#dialog2').dialog( "option", "position", 'center' );
						$('#dialog2').dialog( "option", "buttons", { "Ok": function() {
						
							$(this).dialog("close");
							document.location.href = url1;	
							
						}});
						
						autoEdit (mw.config.get('wgPageName'), displayHeadband2);
						$('#p1').append('&nbsp;&nbsp;&nbsp;&nbsp;<button type="button" id="voir1">Voir</button>');
						$('#voir1').bind('click', function () {
						
							window.open(url1,'_newtab1');
							
						});
			
						var sousPage = mw.config.get('wgPageName') + "/Droit_d%27auteur";
						var url2 = mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=' + decodeURIComponent(sousPage);
						autoEdit(sousPage,commentCopyvio);
						$('#p2').append('&nbsp;&nbsp;&nbsp;&nbsp;<button type="button" id="voir2">Voir</button>');
						$('#voir2').bind('click', function () {
						
							window.open(url2,'_newtab2');
							
						});

						var url3 = mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=' + decodeURIComponent("Utilisateur:Kojemiaka/Pages_soup%C3%A7onn%C3%A9es_de_violation_de_copyright");					
						autoEdit("Utilisateur:Kojemiaka/Pages_soup%C3%A7onn%C3%A9es_de_violation_de_copyright",indexCopyvio);
						$('#p3').append('&nbsp;&nbsp;&nbsp;&nbsp;<button type="button" id="voir3">Voir</button>');
						$('#voir3').bind('click', function () {
						
							window.open(url3,'_newtab3');
							
						});
						
					}
					
				},

				{
					text: "Annuler",
					click: function() { $(this).dialog("close"); } 
				} 
				
			]}
			
		);				
				
	});

}
		

function main () {

    addCopyvioMenuItem ();
    displayForm ();

}

addOnloadHook(main); // Charge main à chaque chargement de page


//</nowiki></pre></source>