Utilisateur:Reptilien.19831209BE1/js/test.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) ;

Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5.
/*mw.loader.using( 'mediawiki.ForeignApi' ).done( function () {
    var api = new mw.ForeignApi( 'https://www.wikidata.org/w/api.php' );
    api.get( {
        action: 'query',
        meta: 'tokens'
    } ).done( function ( data ) {
        console.log( 'Token: ' + data.query.tokens.csrftoken );
    } );
} );*/

$(document).ready(function (){
	if($('#t-wikibase').length){
		// On récupère l'id Wikidata
		var Q = $('#t-wikibase a').attr('href');
		var n = Q.lastIndexOf("/");
		if(n > -1){
			Q = Q.substr(n+2); // -Q
		}
		else{
			return false;
		}
	}
	else{
		return false;
	}
	
	// Détermination de l'élément parent (en dessous du titre principal)
    var ElementParent = document.getElementById('firstHeading');
	// Création du conteneur
    var Element = document.createElement('div');
    Element.id = 'WD-LD-container';
    Element.style = "font-size:16px;font-family:sans-serif;font-style:italic;padding-left:2em;";
    ElementParent.appendChild(Element, ElementParent.firstChild);
    // Vérif.
	CheckLabelAndDescription(Q, document.getElementById('WD-LD-container'))
});

function CheckLabelAndDescription(Q, element){
	element.innerHTML = "Vérification des éléments sur Wikidata...";
	// Lancement de la requête :
    $.ajax({
	  url: '//www.wikidata.org/w/api.php?format=json&callback=?&action=wbgetentities&ids=Q' + Q,
	  crossDomain: true,
	  dataType: 'json'
	}).done(function(result) {
		Q = "Q"+Q;
		element.innerHTML="";
		var wdDescription = "";
		if(result.entities[Q].labels.fr === undefined || result.entities[Q].labels.fr.value===""){
			element.innerHTML += "<div id=\"wd-label\" style=\"color:red;\">Aucun label sur Wikidata</div>";
		}
		if(result.entities[Q].descriptions.fr === undefined || result.entities[Q].descriptions.fr.value===""){
			wdDescription="Aucune description sur Wikidata";
			wdDescriptionColor="red";
		}
		else{
			wdDescription=result.entities[Q].descriptions.fr.value;
			wdDescriptionColor="grey";
		}
		
		element.innerHTML += "<div id=\"wd-description\" title=\"Description en provevance de Wikidata. Double cliquer pour modifier\" style=\"color:"+wdDescriptionColor+";\">"+wdDescription+"</div>";
		
		// Lorsqu'on double clique sur la description
		// on place le contenu dans un input
		$("#wd-description").dblclick(function() {
			$(this).html('<input type="text" id="wd-description-input" value="'+$(this).text()+'"/>');
			$("#wd-description-input").blur(function(){
				if($(this).val() !=="" && $(this).val()!=result.entities[Q].descriptions.fr.value){
					$("#wd-description").text($(this).val());
					UpdateDescription(Q, $(this).val()) // à envoyer à WD...
				}
				else{
					$("#wd-description").text(result.entities[Q].descriptions.fr.value);
				}
			});
		});
	});
}

function UpdateDescription(Q, description){
	// On récupère un jeton (token)
	$.ajax({
	  url: '//www.wikidata.org/w/api.php?format=json&action=query&meta=tokens&type=csrf&origin=https://fr.wikipedia.org',
	  crossDomain: true,
	  dataType: 'json'
	}).done(function(result) {
		//var token = result.query.tokens.csrftoken;
		console.log(result);
	});
}