« Utilisateur:Prométhée/TitreGras.js » : différence entre les versions
Apparence
Contenu supprimé Contenu ajouté
Aucun résumé des modifications |
mw.config.get |
||
Ligne 79 : | Ligne 79 : | ||
var TexteFinal=""; |
var TexteFinal=""; |
||
var regexp1 = /(\(.*\))/gi; |
var regexp1 = /(\(.*\))/gi; |
||
var pageName = wgTitle; |
var pageName = mw.config.get('wgTitle'); |
||
var changement = false; |
var changement = false; |
||
Version du 2 mai 2017 à 19:54
/* **********************************************************************************************************************
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. Le gadget est encore sensible à la casse.
{{Projet:JavaScript/Script}}
*********************************************************************************************************************** */
// ====================================================================================================================
// DEBUT DU CODE
// ====================================================================================================================
// <source 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].indexOf("'''" + pageName + "'''") != -1) {
alert("Le nom de l'article est déjà en gras");
document.editform.style.display = "";
return;
} else if (lines[i].indexOf("''" + pageName + "''") != -1 && !changement) {
//Cas où le titre est en italique
lines[i] = lines[i].replace(pageName, "'" + pageName + "'");
changement = true;
} else if (lines[i].indexOf(pageName) != -1 && !changement) {
lines[i] = lines[i].replace(pageName, "'''" + pageName + "'''");
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 #GadgetTest';
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 id="titre-gras-gadget"><a href="javascript:Section_EditTitreGras();">Titre Gras</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
// ====================================================================================================================
//</source>