MediaWiki:Gadget-QPreview.js
Apparence
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./**
* 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 : 6 juillet 2017
* {{Catégorisation JS|QPreview}}
*/
/* globals mw, OO, $ */
var qPreviewBoutonNom = 'Aperçu';
var qPreviewBoutonAttendre = 'Patience…';
var qPreviewHeaderText = 'Aperçu';
var qPreviwGoToEdit = '→ Aller à la zone de modification';
function qPreview() {
var divPreview, $btnQPreview, qPreviewTextbox;
divPreview = document.getElementById( 'wikiPreview' );
$btnQPreview = $( '#btnQPreview' ).find( '.oo-ui-labelElement-label' );
$btnQPreview.text( qPreviewBoutonAttendre );
qPreviewTextbox = '<div>{{MediaWiki:Previewnote}} [[#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) {
var ulLang, divCat, qPreviewHeader, previewnote, previewnoteTable, diffEnCours;
var i, htmlText, htmlCat, langList, langLine, langLink;
// 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 );
// modification de la couleur du bandeau de prévisualisation (cf. [[MediaWiki:Previewnote]])
previewnote = document.getElementById( 'previewnote-fr' );
if ( previewnote ) {
previewnoteTable = previewnote.querySelector( ':scope > table' );
if ( previewnoteTable ) {
previewnote = previewnoteTable;
}
previewnote.style.backgroundColor = '#E2F2FF';
previewnote.style.borderColor = '#ACCEFF';
}
// ajout des catégories
divCat = document.getElementById( 'catlinks' );
if ( !divCat ) {
divCat = document.createElement( 'div' );
divPreview.after( divCat );
}
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.text( qPreviewBoutonNom );
}
);
}
/* Compatibilité iRef */
window.qPreview = qPreview;
function qPreviewButton() {
var sauv = document.getElementById( 'wpSaveWidget' );
if ( !sauv ) {
return;
}
document.getElementById( 'wikiPreview' ).style.display = 'block';
mw.loader.using( [ 'oojs-ui-core' ] ).done( function () {
var b = new OO.ui.ButtonInputWidget( {
label: qPreviewBoutonNom,
tabIndex: 6,
id: 'btnQPreview'
} );
b.on( 'click', qPreview );
$( sauv ).after( ' ', b.$element );
} );
}
mw.loader.using( 'mediawiki.util', function () {
$( qPreviewButton );
} );