MediaWiki:Gadget-wikidata-description.js

De la Wikipedia, enciclopedia liberă

Notă: După salvare, trebuie să treceți peste cache-ul browser-ului pentru a vedea modificările.

  • Mozilla, Google Chrome, Safari, Konqueror: țineți apăsat Shift în timp ce apăsați butonul Reload (sau apăsați Ctrl-Shift-R).
  • Internet Explorer: apăsați Ctrl-F5.
  • Opera: apăsați F5.
function writewddesc ( ) {
	var desc = document.getElementById('wddesc').value;
	if (desc === undefined) return;
	var item = mw.config.get( 'wgWikibaseItemId' ) ;
	$.getJSON ( 'https://www.wikidata.org/w/api.php?origin=https://ro.wikipedia.org&format=json&action=query&meta=tokens', function ( d ) {
		var token = d.query.tokens.csrftoken;
		if (token === undefined) return;
		var url = 'https://www.wikidata.org/w/api.php?origin=https://ro.wikipedia.org&format=json&action=wbsetdescription';
		$.ajax({
                url: url,
                type: 'POST',
                dataType: 'json',
                data: {
                	id: item, 
                	summary: "ML-assisted description", 
                	language: "ro", 
                	value: desc, 
                	token: token
                },
                xhrFields: { // CORS XHR magic
                    withCredentials: true
                }
            })
			.done(function ( d ) {
			//alert(JSON.stringify(d));
			location.reload(true);
		});
	});
}

function updateWDDesc ( ) {
	var groups = mw.config.get( 'wgUserGroups' ) ;
	// only certain usergroups can update the description
	if (groups === undefined || 
	 (!groups.includes('extendedconfirmed')
	  && !groups.includes('patroller')
	  && !groups.includes('sysop'))) return;
	  
	var title = mw.config.get( 'wgTitle' ) ;
	$.getJSON( '//ml-article-description-api.wmcloud.org/article?lang=ro&num_beams=3&title='+title)
	.done(function( data ) {
		if (data.prediction === undefined) return;
		form = 'Descriere Wikidata: <select name="wddesc" id="wddesc">';
		data.prediction.forEach((element) => form += '<option value="'+element+'">'+element+'</option>');
		form += '</select><button type="button" onclick="writewddesc();">Submit</button>';
		var elem = document.getElementById('siteSub') ;
		if ( elem === undefined ) return ;
		elem.innerHTML = form ;
	});	
}

function labelItems (  ) {
	var curlang = mw.config.get( 'wgUserLanguage' ) || 'ro' ;
	var item = mw.config.get( 'wgWikibaseItemId' ) ;
	if ( item === undefined ) return ;
	
	$.getJSON ( '//www.wikidata.org/w/api.php?action=wbgetentities&format=json&props=descriptions&ids='+item+'&languages='+curlang+'&callback=?' , function ( d ) {
		$.each ( d.entities||[] , function ( q , v ) {
			if ( v.descriptions === undefined || v.descriptions[curlang] === undefined ) {
				if (curlang !== 'ro') return;
				// fallback, get suggestions from ML
				updateWDDesc();
				return;
			}
			
			var description = v.descriptions[curlang].value ;
			var elem = document.getElementById('siteSub') ;
			if ( elem === undefined ) return ;
			elem.innerText = description ;
		} ) ;
	} ) ;
}

$ (labelItems);