Utilisateur:Prométhée/TitreGras.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./* **********************************************************************************************************************
ATTENTION : GADGET NON STABLE, il peut encore y avoir des bugs
TitreGras
Permet de mettre en gras la première occurence du titre dans le corps de l'article.
Fonctionne également dans le cas où le titre est à l'origine en italique.
Les cas des liens internes ne sont pas encore gérés.
{{Projet:JavaScript/Script}}
*********************************************************************************************************************** */
// ====================================================================================================================
// DEBUT DU CODE
// ====================================================================================================================
// <syntaxhighlight lang=javascript><pre><nowiki>
/////////////////////////////////////////////////////////////////////////////////// Variables personnalisables
// Publication automatique
if (typeof window.Section_AutoEdit === 'undefined') window.Section_AutoEdit = true;
// Modification mineure
if (typeof window.Section_MinorEdit === 'undefined') window.Section_MinorEdit = true;
// Ajout à la liste de suivi ( -1 = défaut préférences, 0 = jamais, 1 = toujours)
if (typeof window.Section_Watchthis === 'undefined') window.Section_Watchthis = -1;
/////////////////////////////////////////////////////////////////////////////////// Édition
var Section_ajax = {
http: function(bundle) {
var xmlhttp;
try {
xmlhttp = new XMLHttpRequest();
} catch (e) {
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {
xmlhttp = false;
}
}
}
if (xmlhttp) {
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4)
Section_ajax.httpComplete(xmlhttp, bundle);
};
xmlhttp.open(bundle.method ? bundle.method : "GET", bundle.url, bundle.async === false ? false : true);
if (bundle.headers) {
for (var field in bundle.headers)
try {
xmlhttp.setRequestHeader(field, bundle.headers[field]);
} catch (err) {}
}
xmlhttp.send(bundle.data ? bundle.data : null);
}
return xmlhttp;
},
httpComplete: function(xmlhttp, bundle) {
if (xmlhttp.status == 200 || xmlhttp.status == 302) {
if (bundle.onSuccess) bundle.onSuccess(xmlhttp, bundle);
} else if (bundle.onFailure) {
bundle.onFailure(xmlhttp, bundle);
}
}
};
function Section_DoEditTitreGras(Req, data) {
while (document.body.firstChild) {
document.body.removeChild(document.body.firstChild);
}
document.body.innerHTML = Req.responseText;
var textArea = document.getElementById('wpTextbox1');
if (!textArea) return;
if (Section_AutoEdit) document.editform.style.display = "none";
var texteFinal="";
var regexp1 = /(\(.*\))/gi;
var pageName = mw.config.get('wgTitle');
var changement = false;
if (pageName.match(regexp1) && pageName.match(regexp1).length) {
pageName = pageName.replace(/\(.[^(]*\)/g, '');
}
var modelesOuverts = 0;
var lines = textArea.value.split("\n");
for (var i = 0; i < lines.length; i++) {
if (lines[i].indexOf("{{") != -1) {
modelesOuverts++;
}
if (lines[i].indexOf("}}") != -1 && modelesOuverts > 0) {
modelesOuverts--;
}
if (!modelesOuverts && lines[i].indexOf("==")!== 0 &&
lines[i].indexOf("[[Fichier:")!== 0 &&
lines[i].indexOf("[[File:")!== 0) {
if (lines[i].search(new RegExp("'''" + pageName + "'''", "i")) != -1) {
alert("Le nom de l'article est déjà en gras");
document.editform.style.display = "";
return;
} else if (lines[i].search(new RegExp("''" + pageName + "''", "i")) != -1 && !changement) {
//Cas où le titre est en italique
lines[i] = lines[i].replace(new RegExp(pageName, "i"), "'$&'");
changement = true;
} else if (lines[i].search(new RegExp(pageName, "i")) != -1 && !changement) {
lines[i] = lines[i].replace(new RegExp(pageName, "i"), "'''$&'''");
changement = true;
}
}
texteFinal = texteFinal + lines[i] + "\n";
}
if (!changement) {
alert("Titre introuvable dans le corps du texte");
document.editform.style.display = "";
return;
}
var sommaireFinal = '[[Utilisateur:Prométhée/TitreGras.js|Mise en gras]] du titre de l\'article, #TitreGras';
document.getElementById('wpMinoredit').checked = Section_MinorEdit;
if (Section_Watchthis === 1) document.getElementById('wpWatchthis').checked = "checked";
if (Section_Watchthis === 0) document.getElementById('wpWatchthis').checked = false;
document.getElementById('wpTextbox1').value = texteFinal;
document.getElementById('wpSummary').value = sommaireFinal;
if (Section_AutoEdit) document.editform.submit();
}
function Section_EditTitreGras() {
var URL = mw.config.get('wgServer') + mw.config.get('wgScript') + "?title=" + encodeURIComponent(mw.config.get('wgPageName')) + "&action=edit";
Section_ajax.http({
url: URL,
onSuccess: Section_DoEditTitreGras,
});
}
window.Section_AddTitreGras = function() {
var OngletsCactions = document.getElementById('p-cactions');
if (OngletsCactions) {
var CactionsUl = OngletsCactions.getElementsByTagName('ul')[0];
CactionsUl.innerHTML += '<li class="mw-list-item" id="titre-gras-gadget"><a href="javascript:Section_EditTitreGras();"><span><b>Titre Gras</b></span></a></li>';
$(OngletsCactions).removeClass("emptyPortlet");
}
};
/////////////////////////////////////////////////////////////////////////////////// Fonctions actives au chargement de la page
function utiliserTitreGras() {
var Homonymie = document.getElementById("homonymie");
var Pagesliees = document.getElementById("t-whatlinkshere");
if (Homonymie || !Pagesliees) return;
Section_AddTitreGras();
}
if ((mw.config.get('wgAction') === 'view' || mw.config.get('wgAction') === 'purge') && (mw.config.get('wgNamespaceNumber') === 0 || mw.config.get('wgNamespaceNumber') === 2)) {
$(utiliserTitreGras);
}
//</nowiki></pre>
// ====================================================================================================================
// FIN DU CODE
// ====================================================================================================================
//</syntaxhighlight>