« Utilisateur:Prométhée/TitreGras.js » : différence entre les versions
Apparence
Contenu supprimé Contenu ajouté
correctif gestion des modèles et infobox |
test nouvelle détection modèle |
||
Ligne 86 : | Ligne 86 : | ||
} |
} |
||
var modelesOuverts = 0; |
|||
var lines = TextArea.value.split("\n"); |
var lines = TextArea.value.split("\n"); |
||
for (var i = 0; i < lines.length; i++) { |
for (var i = 0; i < lines.length; i++) { |
||
// |
//Position du titre dans la ligne |
||
var positionTitre = 0; |
|||
modelesOuverts++; |
|||
} |
|||
if ( |
if (lines[i].indexOf("==")!== 0 && |
||
lines[i].indexOf("[[Fichier:")!== 0 && |
lines[i].indexOf("[[Fichier:")!== 0 && |
||
lines[i].indexOf("[[File:")!== 0) { |
lines[i].indexOf("[[File:")!== 0) { |
||
Ligne 107 : | Ligne 104 : | ||
//Cas où le titre est en italique |
//Cas où le titre est en italique |
||
lines[i] = lines[i].replace(pageName, "'" + pageName + "'"); |
lines[i] = lines[i].replace(pageName, "'" + pageName + "'"); |
||
positionTitre = lines[i].indexOf("''" + pageName + "''"); |
|||
changement = true; |
changement = true; |
||
} else if (lines[i].indexOf(pageName) != -1 && !changement) { |
} else if (lines[i].indexOf(pageName) != -1 && !changement) { |
||
lines[i] = lines[i].replace(pageName, "'''" + pageName + "'''"); |
lines[i] = lines[i].replace(pageName, "'''" + pageName + "'''"); |
||
positionTitre = lines[i].indexOf(pageName); |
|||
changement = true; |
changement = true; |
||
} |
} |
||
} |
} |
||
changement = detecterTitreDansCode(); |
|||
//Détection fermeture modèles |
|||
if (lines[i].indexOf("}}") != -1 && modelesOuverts > 0) { |
|||
modelesOuverts--; |
|||
} |
|||
TexteFinal = TexteFinal + lines[i] + "\n"; |
TexteFinal = TexteFinal + lines[i] + "\n"; |
||
} |
} |
||
Ligne 135 : | Ligne 131 : | ||
document.getElementById('wpSummary').value = SommaireFinal; |
document.getElementById('wpSummary').value = SommaireFinal; |
||
if (Section_AutoEdit) document.editform.submit(); |
if (Section_AutoEdit) document.editform.submit(); |
||
} |
|||
function detecterTitreDansModele() { |
|||
//nbModeleOuvrantAvantTitre |
|||
var nbModeleOuvrantAvantTitre = 0; |
|||
var i = str.indexOf('{{'); |
|||
while(i >= 0 && i < positionTitre) { |
|||
i = str.indexOf('x', i+1); |
|||
nbModeleOuvrantAvantTitre++; |
|||
} |
|||
//nbModeleFermantAvantTitre |
|||
var nbModeleFermantAvantTitre = 0; |
|||
i = str.indexOf('}}'); |
|||
while(i >= 0 && i < positionTitre) { |
|||
i = str.indexOf('x', i+1); |
|||
nbModeleFermantAvantTitre++; |
|||
} |
|||
if(nbModeleOuvrantAvantTitre > nbModeleFermantAvantTitre) { |
|||
return false; |
|||
} else { |
|||
return true; |
|||
} |
|||
} |
} |
||
Version du 6 août 2017 à 19:51
/* **********************************************************************************************************************
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 lines = TextArea.value.split("\n");
for (var i = 0; i < lines.length; i++) {
//Position du titre dans la ligne
var positionTitre = 0;
if (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 + "'");
positionTitre = lines[i].indexOf("''" + pageName + "''");
changement = true;
} else if (lines[i].indexOf(pageName) != -1 && !changement) {
lines[i] = lines[i].replace(pageName, "'''" + pageName + "'''");
positionTitre = lines[i].indexOf(pageName);
changement = true;
}
}
changement = detecterTitreDansCode();
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 detecterTitreDansModele() {
//nbModeleOuvrantAvantTitre
var nbModeleOuvrantAvantTitre = 0;
var i = str.indexOf('{{');
while(i >= 0 && i < positionTitre) {
i = str.indexOf('x', i+1);
nbModeleOuvrantAvantTitre++;
}
//nbModeleFermantAvantTitre
var nbModeleFermantAvantTitre = 0;
i = str.indexOf('}}');
while(i >= 0 && i < positionTitre) {
i = str.indexOf('x', i+1);
nbModeleFermantAvantTitre++;
}
if(nbModeleOuvrantAvantTitre > nbModeleFermantAvantTitre) {
return false;
} else {
return true;
}
}
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>