Revision 10883801 of "Utilisateur:ArséniureDeGallium/Gadget-CreerNouveauMot.js" on frwiktionary// --------------------------------------------------------------------------------------------
// Création d'un mot à partir d'un patron généré automatiquement
// à partir de quelques clics dans une boite de dialogue
//
// --------------------------------------------------------------------------------------------
// Code en partie inspiré de w:MediaWiki:Gadget-RenommageCategorie.js
// et aussi de MediaWiki:Gadget-SpecialChar.js
// Le reste est fait par ArséniureDeGallium, sous CC-BY-SA.
// --------------------------------------------------------------------------------------------
// Libellé de l'onglet
var CrNoMo_Text_Onglet = "Ajouter avec un patron (beta)";
// --------------------------------------------------------------------------------------------
// Valeurs par défaut
// Valeurs par défaut dépendant du nom de la page (qui est non modifiable)
var CrNoMo_MotVedette = wgTitle; // page en cours, non modifiable
var CrNoMo_CleVedette = ""; CrNoMo_CleTri(); // clé de tri
var CrNoMo_Locution = / /g.test(CrNoMo_MotVedette);; // locution par déf si un espace dans le titre
// Valeurs par défaut (à terme personnalisables)
var CrNoMo_LangueMot = "fr"; // code langue selon ISO639
var CrNoMo_TypeMot = "-nom-";
var CrNoMo_LangueSection = true;
var CrNoMo_Flexion = false;
var CrNoMo_Sigle = false;
var CrNoMo_GenreMot = "m";
// --------------------------------------------------------------------------------------------
// Ajout du lien dans les onglets après "renommer" & cie
//if ( mw.config.get( 'wgNamespaceNumber' ) == 0 ) { //limiter (plus tard) aux articles
var tb = document.getElementById("wpTextbox1")
if(tb) addOnloadHook(CrNoMo_AddLink); // ne créer qu'en mode édit
function CrNoMo_AddLink(){
var OngletsCactions = document.getElementById('p-cactions');
if(OngletsCactions){
var CactionsUl = OngletsCactions.getElementsByTagName('ul')[0];
CactionsUl.innerHTML += '<li><a href="javascript:CrNoMo_OpenMenu();">'+CrNoMo_Text_Onglet+'</a></li>';
if(OngletsCactions.className){
OngletsCactions.className = OngletsCactions.className.replace(/[ ]*emptyPortlet[ ]*/, " ");
}
}
}
/***********************************************************************************************/
/* BOITE DE DIALOGUE */
/***********************************************************************************************/
// --------------------------------------------------------------------------------------------
// Création de la boite de dialogue
importScript('Utilisateur:ArséniureDeGallium/Gadget-CreerNouveauMot.js/fr.js');
function CrNoMo_OpenMenu(){
if(document.getElementById('CrNoMo_Menu')) return; // boiboite déjà ouverte
var agt=navigator.userAgent.toLowerCase();
var is_ie = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
if(is_ie){
var LargeurEcran = parseInt(screen.width);
var HauteurEcran = parseInt(screen.height);
}else{
var LargeurEcran = parseInt(window.innerWidth);
var HauteurEcran = parseInt(window.innerHeight);
}
// html selon la langue
var MenuContent = CrNoMo_DialogHtml_fr();
// création boiboite en html
var Menu = document.createElement('div');
Menu.id='CrNoMo_IdMenu';
Menu.className ='CrNoMo_Menu';
Menu.style.position='fixed';
Menu.style.zIndex= 500;
Menu.style.padding='5px';
Menu.style.backgroundColor='white';
Menu.style.border='3px double black';
Menu.style.width= '450px';
Menu.style.height= '600px';
document.body.appendChild(Menu);
PositionGauche = parseInt((LargeurEcran-Menu.clientWidth)/2) ;
PositionHaut = parseInt(0) ;
Menu.style.left=PositionGauche + 'px';
Menu.style.top=PositionHaut + 'px';
Menu.innerHTML = MenuContent;
}
// --------------------------------------------------------------------------------------------
// Traitement du bouton "fermer"
// * ferme la boite de dialogue
function CrNoMo_CloseMenu(){
var Menu = document.getElementById('CrNoMo_IdMenu');
if(Menu) CrNoMo_DeleteElement(Menu);
}
// --------------------------------------------------------------------------------------------
// Traitement du bouton "insérer"
// * teste la validité des saisies de l’utilisateur, et si possible…
// * lance le calcul du patron à insérer
// * insère le texte du patron dans la boite d’édition
function CrNoMo_CheckMenu(){
var tb = document.getElementById("wpTextbox1")
if( !tb ) {
alert("Ouvrez la page en en édition avant.");
return;
}
// récupération des données de la boite de dialogue
var MotVedette = document.getElementById('MotVedette');
var LangueMot = document.getElementById('LangueMot');
var TypeMot = document.getElementById('TypeMot');
var LangueSection = document.getElementById('LangueSection');
var Locution = document.getElementById('Locution');
var Flexion = document.getElementById('Flexion');
var Sigle = document.getElementById('Sigle');
var GenreMot = document.getElementById('GenreMot');
if( (!MotVedette)||(!LangueMot)||(!TypeMot)||(!LangueSection)||(!Locution)||(!Flexion)||(!Sigle)||(!GenreMot) ) return;
CrNoMo_MotVedette = MotVedette.value; // redondant puisque champ verrouillé
CrNoMo_LangueMot = LangueMot.value;
if( (CrNoMo_LangueMot.length<2) ) {
alert("Code langue invalide");
return;
}
CrNoMo_TypeMot = TypeMot.value;
CrNoMo_LangueSection = !LangueSection.checked;
CrNoMo_Locution = Locution.checked;
CrNoMo_Flexion = Flexion.checked;
CrNoMo_Sigle = Sigle.checked;
CrNoMo_GenreMot = GenreMot.value;
// calcul du texte à insérer
CrNoMo_Insert();
// position initiale du curseur
var startPos = tb.selectionStart;
var endPos = tb.selectionEnd;
var textScroll = tb.scrollTop;
// insertion du texte
var DebTxt = tb.value.substring(0, startPos);
var FinTxt = tb.value.substring(startPos);
tb.value = DebTxt + CrNoMo_InsTxt + FinTxt;
// résumé de modif
document.getElementById('wpSummary').value = "Ajout d'un mot en {{"
+ CrNoMo_LangueMot
+ "}} assisté par [[Aide:Gadget-CreerNouveauMot|Gadget-CreerNouveauMot]]";
// repositionnement du curseur
tb.selectionStart = startPos + CrNoMo_Curseur;
tb.selectionEnd = tb.selectionStart;
tb.scrollTop = textScroll;
}
/***********************************************************************************************/
/* CREATION PATRON */
/***********************************************************************************************/
// --------------------------------------------------------------------------------------------
// Création du texte à insérer
function CrNoMo_Insert() {
// ---------- patrons -----------
// les variables à remplacer sont préfixées d'un point d'exclamation "!" et en capitales
// !IB : infobox
// !LG : code langue
// !TM : type de mot
// !CT : clé de tri
// patron pour le début de la section de section de langue
var Ptrn_DebutSectionLangue =""
+ "== {{=!LG=}} ==\n"
+ "{{ébauche|!LG}}\n"
+ "{{-étym-}}\n"
+ ": {{ébauche-étym|!LG}}\n"
+ "\n";
// patron générique pour une section de mot
var Ptrn_SectionMot_Gen =""
+ "{{!TM|!LG}}\n"
+ "!IB"
+ "'''" + CrNoMo_MotVedette + "''' {{pron||!LG}}!DIVR\n"
+ "# {{ébauche-déf|!LG}}\n"
+ "#* {{ébauche-exe|!LG}}\n"
+ "\n";
//-- section langue (début)
CrNoMo_InsTxt = "";
if ( CrNoMo_LangueSection )
CrNoMo_InsTxt = Ptrn_DebutSectionLangue.replace(/!LG/g,CrNoMo_LangueMot);
//-- section mot selon la langue sélectionnée
CrNoMo_InsTxt += CrNoMo_Patron_fr( CrNoMo_MotVedette, CrNoMo_TypeMot, CrNoMo_Flexion, CrNoMo_Locution, CrNoMo_GenreMot )
CrNoMo_Curseur = CrNoMo_InsTxt.length; // mémo pos curseur pour enchainement création
//-- section langue (fin)
if (CrNoMo_CleVedette != CrNoMo_MotVedette) {
CrNoMo_InsTxt += "{{clé de tri|" + CrNoMo_CleVedette + "}}\n";
}
}
// --------------------------------------------------------------------------------------------
// Calcul de la clé de tri
function CrNoMo_CleTri() {
var key = CrNoMo_MotVedette.toLowerCase();
key = key.replace( /[àáâãäå]/g, "a" );
key = key.replace( /[æ]/g, "ae" );
key = key.replace( /[ç]/g, "c" );
key = key.replace( /[èéêë]/g, "e" );
key = key.replace( /[ìíîï]/g, "i" );
key = key.replace( /[ñ]/g, "n" );
key = key.replace( /[òóôõö]/g, "o" );
key = key.replace( /[œ]/g, "oe" );
key = key.replace( /[òóôõö]/g, "o" );
key = key.replace( /[ùúûü]/g, "u" );
key = key.replace( /[ýÿ]/g, "y" );
key = key.replace( /['’]/g, "" );
key = key.replace( /[-/]/g, " " );
CrNoMo_CleVedette = key;
}
// --------------------------------------------------------------------------------------------
// FONCTION : Suppression d'un objet
function CrNoMo_DeleteElement(OldElement){
var agt=navigator.userAgent.toLowerCase();
var is_ie = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
if(is_ie){
OldElement.removeNode(true);
}else{
if(OldElement.parentNode){document=OldElement.parentNode.removeChild(OldElement);}
}
}All content in the above text box is licensed under the Creative Commons Attribution-ShareAlike license Version 4 and was originally sourced from https://fr.wiktionary.org/w/index.php?oldid=10883801.
![]() ![]() This site is not affiliated with or endorsed in any way by the Wikimedia Foundation or any of its affiliates. In fact, we fucking despise them.
|