MediaWiki:Gadget-C helper dph.js

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) ;

Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5.
C.dph = {
  dialog: null,
  config: {
  	'request-page': 'Wikipédia:Demande de purge d\'historique',
    'modal-title': 'C helper – Demander une purge de l\'historique',
    'submit': 'Valider la requête',
    'c-tag-checkbox-class': 'c-tag-checkbox',
    'c-dph-radio-class': 'c-dph-radio',
    'notify-pending': 'Dépôt de la requête sur [[Wikipédia:Demande de purge d\'historique]] en cours.',
    'notify-success': 'La demande de purge d\'historique a été correctement envoyée',
    'notify-not-selected': 'Vous n\'avez pas sélectionné la version d\'ajout et/ou la version du retrait du copyvio.',
    'notify-not-a-page': 'Impossible de demander la purge de l\'historique d\'une page inexistante.',
    'single-add-summary': 'Ajout de $1',
    'multi-add-summary': 'Ajout de $1 et $2',
    'template-link-summary': '{{[[Modèle:$1|$1]]}}',
    'load-more': '(charger la suite)',
    'copyvio-label': 'Contenu copié',
    'history-label': 'Historique',
    'history-help': 'Cocher dans la première colonne la version insérant le copyvio, et dans la seconde la version où le copyvio a été retiré',
  },
  history_container: null,
  params_continue: null,

  init: function() {
  },
  launch: function() {
  	if(mw.config.get('wgArticleId') === 0) {
    	mw.notify(C.dph.config['notify-not-a-page'], {title:'C-helper', type:'error'});
    	return;
  	}
	if(this.dialog === null) {
		this.build_dialog();
	}
	this.dialog.dialog("open");
  },
  "build_dialog": function() {
    this.dialog = $('<div>', {title:C.dph.config['modal-title']});
    var form = $('<form>');
    form.append($("<h3>").html(C.dph.config['copyvio-label']));
    form.append($("<input>", {type:"text", id:"C-dph-copyvio", placeholder:"https://www.exemple.com"}));
    form.append($("<hr>"));
    form.append($("<h3>").html(C.dph.config['history-label']).append(C.util.construct_help_icon(C.dph.config['history-help'])));
    this.dialog.append(form);

    //Create sections
    C.dph.history_container = $("<div>", {id:"C-dph-history-container"});
    form.append(C.dph.history_container);
    
    this.dialog.dialog({
      autoOpen: false,
      height: 400,
      width: 600,
      modal: true,
      buttons: [
        {
          text: C.dph.config['submit'],
          click: function() {
            C.dph.dialog.dialog("close");
            C.dph.validate();
          },
        },
      ],
    dialogClass: 'c-helper-dialog',
    });
    this.load_more();
  },
  "load_more": function() {
	$("#C-dph-load-more").remove();
  	C.dph.history_container.append($("<div>", {id:"C-dph-wait", style:"text-align: center;"}).append($("<img>", {src:"//upload.wikimedia.org/wikipedia/commons/b/b4/Loading_Animation.gif"})));
  	var params = {
		action: 'query',
		formatversion: 2,
		prop: 'revisions',
		titles: mw.config.get('wgPageName'),
		rvprop: 'ids|timestamp|user|size|comment',
		rvlimit: 500,
	};
	if(C.dph.params_continue)
		Object.assign(params, C.dph.params_continue);
	new mw.Api().get(params).then(function(data) {
		var revisions = data.query.pages[0].revisions;
		var ul = $("<ul>");
		for(var i=0;i<revisions.length;i++) {
			var li = $("<li>");
			var r = revisions[i];
			var content = '([[Special:Diff/'+r.revid+'/cur|actu]] | [[Special:Diff/'+r.revid+'|diff]]) '+r.timestamp+' [[User:'+r.user+'|'+r.user+']] ([[User talk:'+r.user+'|discuter]] | [[Special:Contributions/'+r.user+'|contributions]]) <small>('+r.size+' octets)</small> ('+C.util.escape_edit_summary(r.comment)+')';
			li.append($('<input>', {type:'radio', class:C.dph.config['c-dph-radio-class'], name:'C-dph-first-revision', content:content, value:i}));
			li.append($('<input>', {type:'radio', class:C.dph.config['c-dph-radio-class'], name:'C-dph-last-revision', content:content, value:i}));
			li.append(C.util.parse_wikicode(content));
			ul.append(li);
		}
		$("#C-dph-wait").remove();
		C.dph.history_container.append(ul);
		if(data.hasOwnProperty("continue")) {
    		C.dph.history_container.append($("<a>", {id:"C-dph-load-more", href:"#"}).text(C.dph.config['load-more']).click(function(){C.dph.load_more();}));
			C.dph.params_continue = data['continue'];
		}
		else {
			C.dph.params_continue = null;
		}
		$('.'+C.dph.config['c-dph-radio-class']).change(function() {
			if($(this).is(":checked")) {
				var value = parseInt($(this).attr("value"));
				if($(this).attr("name") == 'C-dph-first-revision') {
					$('input[name="C-dph-last-revision"]').each(function(){
						if(parseInt(this.value) < value)
							$(this).prop('disabled', false);
						else
							$(this).prop('disabled', true);
					});
				}
				else {
					$('input[name="C-dph-first-revision"]').each(function(){
						if(parseInt(this.value) > value)
							$(this).prop('disabled', false);
						else
							$(this).prop('disabled', true);
					});
				}
			}
		});
	});
  },
  validate: function() {
  	mw.notify(C.dph.config['notify-pending'], {title:'C-helper', type:'warning', autoHide:false, tag:'C-dph'});
  	var first = $('input[name=C-dph-first-revision]:checked');
  	var last = $('input[name=C-dph-last-revision]:checked');
  	if(first.length === 0 || last.length === 0) {
  		mw.notify(C.dph.config['notify-not-selected'], {title:'C-helper', type:'error', autoHide:false, tag:'C-dph'});
  		return;
  	}
	//<nowiki>
  	var content = "{{DPH début|traitée=|date=<!--~~~~~-->}}\n"
  		+ "'''Contenu copié''' : "+$("#C-dph-copyvio").val()+"\n\n"
  		+ "'''Historique''' :\n"
  		+ "* ''Retrait'' : "+last.attr('content')+"\n"
  		+ "* ''Premier ajout'' : "+first.attr('content')+"\n"
  		+ "Merci, ~~~~\n"
  		+ "{{DPH fin}}";
  	//</nowiki>
  	C.util.new_section(C.dph.config['request-page'], "{{a-court|"+mw.config.get('wgPageName')+"}}", content, "Demande de purge de [["+mw.config.get('wgPageName')+"]]", function() {
  		mw.notify(C.dph.config['notify-success'], {title:'C-helper', type:'info', autoHide:false, tag:'C-dph'});
  	});
  },
};

C.modules.dph.callback = C.dph;