MediaWiki:Gadget-QPreview.js

Un article de Wikipèdia, l'enciclopèdia liura.

Nòta : Aprèp aver publicat la pagina, vos cal forçar son recargament complet tot ignorant lo contengut actual de l'amagatal de vòstre navigador per veire los cambiaments : Mozilla / Firefox / Konqueror / Safari : mantenètz la tòca Majuscula (Shift) en clicant lo boton Actualizar (Reload,) o quichatz Maj-Ctrl-R (Maj-Cmd-R sus Apple Mac) ; Internet Explorer / Opera : mantenètz la tòca Ctrl en clicant lo boton Actualizar o quichatz Ctrl-F5.

/**
	* QPreview
	* 
	* Permet une prévisualisation rapide sans recharger la page
	* Affiche : 
		* le texte, catégories et interwikis fournit par le serveur
	* N'affiche pas : 
		* la prévisualisation du résumé
		* les modèles utilisés
		* autres trucs rares comme les couleurs GeSHi (code de programmation coloré)
	* 
	* Auteur initial : [[:en:User:Alex Smotrov|en:Alex Smotrov]] sur [[:en:User:Alex Smotrov/qpreview.js]],
	*  complété par [[:fr:Utilisateur:Seb35|fr:Seb35]] puis [[:fr:Utilisateur:Zebulon84|Zebulon84]]
	* Date de la dernière révision : 12 avril 2015
	* {{Projet:JavaScript/Script|QPreview}}
	*/
	
var qPreviewBoutonNom = 'Apercebut';
var qPreviewBoutonAttendre = 'Paciéncia…';
var qPreviewTitreIw = 'Autras lengas';
var qPreviewHeaderText = 'Apercebut';
var qPreviwGoToEdit = '→ Anar a la zòna de modificacion';

function qPreview() {
	var divPreview, ulLang, divCat, btnQPreview, qPreviewTextbox, qPreviewHeader, tablePreview, diffEnCours;
	var i, htmlText, htmlCat, langList, langLine, langLink;
 
	divPreview = document.getElementById( 'wikiPreview' );
	btnQPreview = document.getElementById( 'btnQPreview' );
	btnQPreview.value = qPreviewBoutonAttendre;
	qPreviewTextbox = '<div>{{MediaWiki:Previewnote}}&emsp;[[#editform|' + qPreviwGoToEdit + ']]</div><hr>\n';
	if ( document.editform.wpSection.value === 'new' ) {
		qPreviewTextbox += '== ' + document.editform.wpSummary.value + ' ==\n';
	}
	qPreviewTextbox	+= document.getElementById( 'wpTextbox1' ).value;
	
	$.post(
		mw.util.wikiScript( 'api' ),
		{
	        format: 'json',
	        action: 'parse',
			preview: true,
			disableeditsection: true,
			pst: true,
			title: mw.config.get('wgPageName'),
			text: qPreviewTextbox,
	        prop: 'text|categorieshtml|langlinks'
	    },
		function (data) {
			// ajout du texte
			htmlText = data.parse.text['*'];
			divPreview.innerHTML = htmlText;
			
			// ajout entête prévisualisation
			qPreviewHeader = document.createElement( 'h2' );
			qPreviewHeader.id = 'mw-previewheader';
			qPreviewHeader.innerHTML = qPreviewHeaderText;
			divPreview.insertBefore( qPreviewHeader, divPreview.firstChild );
			tablePreview = document.getElementById( 'previewnote-fr' ).getElementsByTagName( 'table' )[0];
			if ( tablePreview ) {
				tablePreview.style.backgroundColor = '#E2F2FF';
				tablePreview.style.borderColor = '#ACCEFF';
			}
			
			// ajout des catégories
			divCat = document.getElementById( 'catlinks' );
			if ( !divCat ) {
				divCat = document.createElement( 'div' );
				divPreview.parentNode.insertBefore( divCat, divPreview.nextSibling );
			}
			htmlCat = data.parse.categorieshtml['*'];
			divCat.outerHTML = htmlCat;
			
			//ajout des interWiki
			if ( document.getElementById( 'p-lang' ) ) {
				ulLang = document.getElementById( 'p-lang' ).getElementsByTagName( 'ul' )[0];
				ulLang.innerHTML = '';
				langList = data.parse.langlinks;
				for ( i = 0; i < langList.length; i++ ) {
					langLink = document.createElement( 'a' );
					langLink.lang = langList[i].lang;
					langLink.setAttribute( 'hreflang', langList[i].lang );
					langLink.title = langList[i]['*'] + ' — ' + langList[i].langname;
					langLink.href = langList[i].url;
					langLink.innerHTML = langList[i].autonym;
					langLine = document.createElement( 'li' );
					langLine.className = 'interlanguage-link interwiki-' + langList[i].lang;
					langLine.appendChild( langLink );
					ulLang.appendChild( langLine );
				}
			}
			
			// suppression de la zone "Changements en cours" si elle est présente.
			diffEnCours = document.getElementById( 'wikiDiff' );
			if ( diffEnCours ) {
				diffEnCours.style.display = 'none';
			}
			btnQPreview.value = qPreviewBoutonNom;
		}
	);
}

/* Compatibilité iRef */
window.qPreview = qPreview;
	
function qPreviewButton() {
	var i, sauv, newDiv, toolbox, div, newBtn;
	sauv = document.getElementById( 'wpSave' );
	if ( !sauv ) {
		return;
	}
	document.getElementById( 'wikiPreview' ).style.display = 'block';
	newBtn = document.createElement( 'input' );
	newBtn.type = 'button';
	newBtn.value = qPreviewBoutonNom;
	newBtn.onclick = qPreview;
	newBtn.id = 'btnQPreview';
	newBtn.setAttribute( 'tabindex', '6' );
	sauv.parentNode.insertBefore( newBtn, sauv.nextSibling );
}

mw.loader.using( 'mediawiki.util', function () {
	$( qPreviewButton );
} );