Discussion Projet:JavaScript

Une page de Wikipédia, l'encyclopédie libre.
Aller à : Navigation, rechercher
Projet   Fonctions disponibles   Notices   Discussion projet   Signaler un bug   Demander une nouvelle fonction
Raccourcis [+]
WP:JS
P:JS

Javascript icon.svg

Projet JavaScript
Ce projet essaie de centraliser les fonctions JavaScript pour éviter la dispersion du code.


modifier
Archives
Archives
2006-2007
2008-2009
2010
2011

Cette page de discussion est destinée aux discussions sur le Projet:JavaScript.


Sommaire

[modifier] problème avec un script

J'ai le script suivant dans mon monobook, pour ajouter des parenthèses derrière les numéros de section. Exemple : « 14) » au lieu de « 14 ». Problème : il fait bugger la fonction d'ajout à la liste de suivi déclenchée par un clic sur le bouton suivre en haut de la page. Une idée ?

//-------------------------------------------//
//  parenthèses après les numéros de section //
//-------------------------------------------//
function addLoadEvent(fun)
{
  if (window.addEventListener)
    window.addEventListener('load', fun, false);
  else if (window.attachEvent)
    window.attachEvent('onload', fun);
}
function addParentheses()
{
  tds = document.getElementsByTagName('span');
  for (var i = 0; i < tds.length; ++i)
    if (tds[i].className == 'tocnumber' || tds[i].className == 'mw-headline')
      tds[i].innerHTML = tds[i].innerHTML.replace(/(^[\.0-9]*)/, '$1) ');
}
addLoadEvent(addParentheses);
//-------------------------------------------//

C'est un code qui vient du bistro, je ne me souviens pas de son auteur (désolé s'il se reconnait). Merci d'avance, Freewol (d) 22 janvier 2010 à 15:52 (CET)

Essayer addOnLoadHook() plutôt que addLoadEvent :
//-------------------------------------------//
//  parenthèses après les numéros de section //
//-------------------------------------------//
function addParentheses()
{
  tds = document.getElementsByTagName('span');
  for (var i = 0; i < tds.length; ++i)
    if (tds[i].className == 'tocnumber' || tds[i].className == 'mw-headline')
      tds[i].innerHTML = tds[i].innerHTML.replace(/(^[\.0-9]*)/, '$1) ');
}
addOnLoadHook(addParentheses);
//-------------------------------------------//
Je n'ai pas testé donc je ne sais pas si ça va changer quelque chose. ⇨ Dr Brains ∞ Doléances ∞ 22 janvier 2010 à 16:30 (CET)
Ça ne plante plus ... mais ça n'ajoute plus les parenthèses Clin d'œil. Freewol (d) 22 janvier 2010 à 16:46 (CET)
addOnLoadHook => addOnloadHook. Mais je vais chercher pourquoi le addLoadEvent ne marche pas... même si effectivement il est inutile C'était moi l'auteur Clin d'œilArkanosis 22 janvier 2010 à 17:00 (CET)
Alors, avec la version de DrBrains (addOnLoadHook), ça fait planter le javascript en fait (mais pas WP Clin d'œil). Avec la correction d'Arkanosis (addOnloadHook), tout refonctionne ... sauf l'ajout en liste de suivi. Et désolé pour avoir oublié que tu m'avais aidé Clin d'œil Freewol (d) 22 janvier 2010 à 17:06 (CET)
Retire la définition de addLoadEvent(), elle entre en conflit avec une fonction addLoadEvent dépréciée dans MediaWiki:Common.js, appelant addOnloadHook() dans wikibits.js (vivement que le docteur soit admin pour nous nettoyer tout ça :p). — Arkanosis 22 janvier 2010 à 17:14 (CET)
Ahhhhh ok, je n'avais pas envisagé cette possibilité Sourire. Ca marche, merci beaucoup !!! (par contre a priori je ne suis pas le seul à rencontrer ce pb, il doit y avoir plusieurs possibilités pour faire planter cette fonction ...). Voilà qui va me faire gagner de précieuses minutes en 2010 Mort de rire. Freewol (d)
Oui, désolé pour l'erreur de recopie, c'est bien addOnloadHook() et non addOnLoadHook().
Pour le nettoyage, le problème est que ces fonctions, bien que dépréciées, sont toujours utilisées par certains gadgets (ça c'est facile à modifier), mais aussi par des monobook utilisateurs (et là c'est plus compliqué). ⇨ Dr Brains ∞ Doléances ∞ 22 janvier 2010 à 17:30 (CET)
@Freewol: Globalement c'est le fouilli le plus total dans les javascript de MediaWiki ; il faudrait reprendre tout ça, et créer un namespace MediaWiki pour toutes les fonctions...
Si tu connais d'autres personnes ayant des problèmes, n'hésite pas à les renvoyer par ici Sourire
@Dr Brains: on pourrait mettre en place une couche de rétro-compatibilité sous forme de gadget non activé par défaut, et poser un nouvel ensemble de fonctions plus propre et mieux documenté SourireArkanosis 22 janvier 2010 à 17:35 (CET) Oups, navré pour l'erreur à ton pseudonyme. Je vais m'autoflageller de suite Clin d'œil
Oui, j'ai vu qu'ils avaient un système de ce genre sur en: (dernier chapitre des préférences) : un gadget pour assurer par exemple la compatibilité modern/monobook, requis par certains scripts, un autre pour gérer les fonctions non supportées par certains navigateurs, etc... Ca me semble pas mal mais ça impose une remise à plat de tout le système et une batterie de tests pour s'assurer que tout fonctionne. Un sacré boulot. ⇨ Dr Brains ∞ Doléances ∞ 22 janvier 2010 à 17:43 (CET)

[modifier] Boîtes déroulantes

Wikipédia:Demande d'intervention sur un message système#Mediawiki:Common.js (boîtes déroulantes/palettes de navigation) : un avis sur la question ? ⇨ Dr Brains ∞ Doléances ∞ 10 février 2010 à 12:39 (CET)

[modifier] problème d'ajout à la liste de suivi

Hello,

suite au message posté par Deansfa sur le bistro, sur lequel je suis tombé fortuitement : je pense que tous les gens qui ont la fonction addLoadEvent dans leur monobook.js (donc en monobook) ont des problèmes avec cette fonction, et devraient utiliser la fonction addOnloadHook. En tout cas c'est ce que j'avais fait sur vos bons conseils quand j'avais parlé de mon malheur ici. Question donc : est-il possible de lancer un remplacement de grande envergure ? Car manifestement plusieurs personnes ont toujours ce problème. Cordialement, Freewol (d) 31 mars 2010 à 15:21 (CEST)

Ahhh, bien vu, je n'avais pas du tout fait le rapprochement. Sourire
Je ne suis pas super chaud à l'idée de faire un remplacement automatique sur tous les monobooks (risque de faux positifs...).
Par contre communiquer là-dessus est une bonne idée... on pourrait utiliser le sitenotice, ou utiliser un spambot pour prévenir les personnes concernées... qu'en penses-tu ? — Arkanosis 31 mars 2010 à 16:05 (CEST)
Oui je pensais à un truc du genre le message par un bot, si c'est possible techniquement ça me semble être une bonne idée. Le sitenotice, c'est ce qui nous demande de payer une fois par an ? Clin d'œil Si c'est ça, je n'y prête guère attention et je pense ne pas être le seul. Cordialement, Freewol (d) 31 mars 2010 à 16:25 (CEST)
Requête faite ici. Je ne sais pas si c'est ainsi qu'il fallait procéder, mais en l'absence de réaction, j'agis Clin d'œil. Freewol (d) 5 avril 2010 à 23:01 (CEST)

[modifier] Portage LiveRC

Bonjour, je me lance dans le portage de LiveRC pour différents navigateurs. LiveRC marche depuis longtemps sous Firefox et depuis ce matin sous Opera. Pour Chrome et IE (et probablement Safari ansi je n'ai pas eu le temps de regarder en détails), je me heurte au problème suivant: au début du javascript User:EDUCA33E/LiveRC.js on importe les paramètres depuis User:EDUCA33E/LiveRC/LiveRCparam.js mais Chrome semble complétement ignorer cet import et bloque avec la variable lrcShowIPNEWChecked non définie. De plus dans le débogueur de Chrome je ne vois pas User:EDUCA33E/LiveRC/LiveRCparam.js dans la liste des scripts à déboguer. J'ai essayé de remplacer l'appel à document.write par importScript mais cela n'a pas résolu le problème. Avez-vous des idées sur comment procéder? Merci. Nakor (d) 6 avril 2010 à 00:29 (CEST)

J'ai essayé d'introduire une erreur dans User:EDUCA33E/LiveRC/LiveRCparam.js et là le déboggueur de Chrome se plaint de l'erreur en question. Bizarre. Nakor (d) 7 avril 2010 à 03:24 (CEST)
J'ai changé l'ordre des imports et ça semble résoudre le problème sauf pour les paramètres utilisateurs. Reste le problème de IE qui n'implémente pas getElementById sur ses documents XML, ce qui rend la prévisualisation impossible. Si quelqu'un a une idée de comment contourner cela on pourra avoir LiveRC sous IE, sinon tant pis. Nakor (d) 9 avril 2010 à 00:15 (CEST)
« IE qui n'implémente pas getElementById sur ses documents XML » : c'est vrai ça ? Si tu as un lien vers une page qui parle du problème je peux essayer de trouver une parade...
Sinon tu as toujours la solution « barbare » qui consiste à convertir ton XML en HTML, puis à faire du getElementById sur le HTML obtenu... — Arkanosis 9 avril 2010 à 11:08 (CEST)
Si tu regardes User:EDUCA33E/LiveRC dans le fonction getDiff(), la ligne var bC = doc.getElementById('bodyContent'); ne passe pas pour cette raison (ça se voit bien au débogueur). J'avais voulu faire la conversion mais je n'ai pas trouvé comment. Je suis preneur si tu sais faire. Nakor (d) 10 avril 2010 à 04:07 (CEST)
C'est un problème que j'ai déjà rencontré : .getElementById() ne peut s'appliquer qu'au document, et bien sur ça ne marche plus correctement dans le cas d'une requête puisque certains Id censés êtres uniques ne le sont plus.
Il faut une autre fonction, de ce style :
///////////////////////////////////////////////////////////////////////////////
// * Recherche d'un élement dont on connait l'Id mais non unique, donc sans utiliser document.getElementById() 
 
function getElementWithId( elementId , elementTagName , elementParentNode ){
      if(!elementParentNode) elementParentNode = document; 
      var TheElement = false;
      var Elements = elementParentNode.getElementsByTagName(elementTagName);
      var elementcount = 0;
      while(elementcount<Elements.length){
            var Id = Elements[elementcount].id;
            if(Id){
                  if(Id==elementId){
                        TheElement = Elements[elementcount];
                        break;
                  }
            }
            elementcount++
      }
      return TheElement;
}
///////////////////////////////////////////////////////////////////////////////
Cette fonction retourne false si l'élément n'existe pas ou bien elle retourne le premier élément trouvé dans l'élément parent ayant le TagName et l'id recherchés.
⇨ Dr Brains ∞ Doléances ∞ 10 avril 2010 à 05:05 (CEST)
Merci! Nakor (d) 10 avril 2010 à 14:02 (CEST)

[modifier] I have a dream

Bonjour, désolé de venir vous déranger avec mes idées à la noix, mais je cherche des idées ou des infos pour réaliser un rêve de contributeur : pouvoir compléter le code d'un modèle via un formulaire. Je m'explique : les modèles sont assez difficiles à gérer dans le code d'un article, notamment la mise en page, la lecture du code, son actualisation lorsque le code principal a été modifié,... L'idée serait d'avoir une fonction qui pourrait ouvrir un formulaire utilisant la dernière version du modèle, récupèrerait les données de la page concernant le modèle et les afficherait dans le formulaire. Après modifications dans le formulaire, la fonction convertirait les données du formulaire en code wiki et remplacerait le code du modèle dans celui de l'article. Les outils pour ce faire existent, il faudrait maintenant les assembler pour arriver à cette fin (je prends comme exemple un modèle que je connais bien) :

  • formulaire : exemple (déjà utilisé pour la création du code wiki d'un modèle)
  • récupération des données de la page : exemple
  • récupération du code de référence d'un modèle : exemple (importation du code d'une autre page)

Bref, je voudrais avoir des avis sur les moyens de faire ce genre de fonction et notamment savoir s'il existait déjà des exemples de codes Javascript implémentés dans MediaWiki qui permettraient l'ouverture de formulaire via un bouton. Merci de vos avis Snipre (d) 8 avril 2010 à 19:10 (CEST)

Tu en as rêvé, les gens de l’Usability Initiative l’ont (presque déjà) fait ! Voir ce post de DarkoNeko, et tu peux même tester le prototype. Jean-Fred (d) 8 avril 2010 à 19:45 (CEST)
J'avais lu l'article en son temps. Toutefois cet outil ne peut pas récupérer tous les paramètres d'un modèle si ces derniers n'ont pas été mis lors de la pose du modèle dans le code (impossible également d'actualiser le code si le code de base du modèle a été modifié entre-temps) et le formulaire ne permet pas comme dans mon exemple, de proposer des menus déroulants ou de gérer la mise en page via des sous-modèles (exemple de l'utilisation du modèle date pour des dates de naissance comme dans ce formulaire). Je rêve de la version de luxe alors que l'Usability Initiative offre l'entrée de gamme. Snipre (d) 8 avril 2010 à 20:03 (CEST)
Si, il y a une solution pour récupérer les paramètres : requérir le modèle via une requête HTTP, puis compter les occurrences de triples accolades (et les trier pour éviter les éventuels doublons).
J'ai commencé un script (non encore opérationnel) : Utilisateur:Dr Brains/AutoTemplate.js.
Il a/aura pour fonctions :
  1. D'ajouter un bouton dans la barre d'outils
  2. Lorsque clic sur un bouton, de rechercher tous les modèles utilisés dans la page et d'en faire une liste (si plusieurs modèles identiques, ils sont numérotés pour retrouver ensuite quel modèle il faut mettre à jour)
  3. Lorsque clic sur un modèle listé : requête de la page du modèle et importation des paramètres possibles + création formulaire
  4. Lorsque clic sur OK : mise à jour du modèle suivant formulaire.
Il est encore loin d'être au point, pour l'instant seules les deux premières étapes sont opérationnelles et encore je me trouve confronté à un problème épineux pour l'étape 2 : le fait qu'il puisse y avoir un modèle en paramètre d'un autre modèle fait bugguer la récupération des modèles dans certaines pages.
Bref, c'est compliqué...
⇨ Dr Brains ∞ Doléances ∞ 9 avril 2010 à 16:11 (CEST)
Une fois que tu as fait « Texte.split('{{')[1] », tu devrais spliter sur le plus proche entre « }} » et « | », plutôt que systématiquement sur « }} » (indexOf() le plus petit, différent de -1).
Sauf erreur de ma part ça devrait résoudre le problème des modèles imbriqués (en espérant que mon explication n'est pas trop confuse).
Amicalement — Arkanosis 9 avril 2010 à 16:22 (CEST)
Ça parlait de ça cette semaine sur wikitech-l. Les gars d’usability sont toujours sur le coup. Regardez à ce sujet Extension:TemplateInfo.
@Dr Brains : L’API permet de récupérer la liste des modèles employés. Ça marche en mode submit ?
Parce-que sinon, parser tout l’article (encore ça va), mais pour chaque modèle en parser le code... ça va pas être un peu lourd ?
Jean-Fred (d) 9 avril 2010 à 17:10 (CEST)
Certes, l'API pourra me dire rapidement quels modèles sont utilisés, mais pas combien de fois chacun et donc lequel modifier. Et il me donnera aussi les sous-modèles qui n'apparaissent pas dans le code de la page, qui ne sont donc d'aucune utilité (paramètres d'ébauches et {{Portail Machin}} notamment). Et surtout, ça ne me donnera pas les paramètres déjà présents dans les modèles de la page.
Non, la seule solution c'est de vérifier directement dans la page.
Ca ne sera pas si lourd que ça si chaque étape correspond à un clic :
  • Pas de clic : ajout du bouton
  • Clic sur le bouton : listage des modèles de la page
  • Clic sur un modèle listé : requête HTTP page du modèle et création formulaire
  • Clic sur OK : mise à jour
Pour le moment j'en suis à faire marcher le listage, je verrais après pour la lourdeur éventuelle...
⇨ Dr Brains ∞ Doléances ∞ 9 avril 2010 à 17:22 (CEST)
Merci pour les infos, et il n'y a pas le feu au lac. Je ne vous demande pas de faire tout le code. Si quelqu'un arrive à m'indiquer comment récupérer le code wiki du modèle avec les données dans une variable x et comment appeler un formulaire vide, je suis prêt à me taper le code responsable de parser x pour remplir le formulaire. Et mon modèle fétiche est la modèle:chimiebox qui est une vraie saloperie, car des modèles de mise en forme et de référence sont utilisés dans les paramètres du modèle chimiebox, genre :

{Chimiebox | param1 = | param2 = {Unité/2||} | param3 = {Unité/2||} | param4 = {Ouvrage|||} | param5 = }

Donc cela risque de ne pas être de la rigolade. Snipre (d) 9 avril 2010 à 17:56 (CEST)
Bon, j'ai réussi à faire marcher le listage. L'astuce consiste à ne pas rechercher le début d'un modèle {{ mais la fin }}, puis de remonter au début de ce modèle-là et de remplacer les doubles accolades, et ainsi de suite jusqu'à ce qu'il n'y en ait plus. Ainsi j'arrive à lister les modèles et leurs paramètres même dans le cas où ils sont imbriqués (bon ça récupère aussi les mots magiques et autre formatnum, mais c'est un pb mineur que de les évacuer de la liste).
J'avais également réussi à créer le formulaire qui va bien avec les paramètres déjà présent, mais je bute à présent sur la récupération des paramètres lors de la requête de la page du modèle : non seulement il y a les triples accolades des paramètres, mais également des doubles, dues soit à des sous-modèles, soit à des parser functions. Bref, c'est le merdier...
M'enfin je perds pas espoir d'arriver à résoudre ce problème.
Après viendra le problème épineux également de savoir quel modèle de la page il faut mettre à jour dans le cas où il y en a plusieurs identiques...
Bref, c'est pas gagné.
⇨ Dr Brains ∞ Doléances ∞ 10 avril 2010 à 05:29 (CEST)
Je pense qu'il faut simplifier l'approche: pour un bouton, une infobox. Pourquoi ? En général, un article possède une seule infobox du même type. De plus, vu la complexité de chaque infobox, il faudra développer un code d'extraction spécifique pour chacune. Donc simplification du code avec l'ajout d'un paramètre qui est le nom de l'infobox. Ensuite, je proposerai de récupérer dans une structure/table la liste des paramètres de l'infobox et tout ce qui ce trouve après le signe = . Pour ce faire utiliser la barre verticale | comme moyen de reconnaissance et pour éviter l'interférence des sous-modèles, négliger tous les barres verticales placées entre des accolades.
Ex:
{{Infobox|Nom = X|Prénom = | Date_naissance = {{Date|19|4|1912}}| Métier = blabla |Lieu_naissance = [[XXX]]}}
devient
Nom:X
Prénom:
Date_naissance:{{Date|19|4|1912}}
Métier: blabla
Lieu_naissance:[[XXX]]
A partir de là, on doit appliquer pour chaque ligne de la structure/table, un code d'extraction spécifique.
Dr. Brains, si tu arrives à isoler le code wiki pour une infobox précise du texte d'un article, et à isoler la valeur brute de chaque paramètre dans une structure/table temporaire, alors chacun pourra créer le code d'extraction d'une infobox. Il ne s'agit que d'expressions régulières.
Je te propose de définir un tableau RawData de 2 colonnes (une colonne pour les paramètres de l'infobox, la deuxième pour la valeur brute (comprenant des sous-modèles pour le formatage, les sources,...) associée au paramètre.
Puis dans ton code, de créer un autre tableau ExtractedData, contenant plusieurs colonnes, avec dans la première les paramètres de l'infobox, et dans les suivantes, les chiffres et les strings de la valeur du paramètre, en fonction des possibilités. Ainsi mon exemple revient à :
RawData correspond à
Nom X
Prénom
Date_naissance {{Date|19|4|1912}}
Métier blabla
Lieu_naissance [[XXX]]
et ExtractedData à
Nom 100 X
Prénom 0
Date_naissance 1 {{Date|19|4|1912}}
Métier 100 blabla
Lieu_naissance 100 XXX
L'étape ultime étant de remplir un formulaire vierge (défini dans un autre code) avec les données stockées dans tableau. L'idéal serait de rajouter une colonne après la colonne des paramètres indiquant l'état de l'extraction, genre valeur extraite (c.-à-d. reconnue et séparée dans différentes colonnes), valeur inconnue (modèle pas reconnu, symboles,...) et valeur vide. Remarques ?Snipre (d) 12 avril 2010 à 16:30 (CEST)
Je vois ce que tu veux dire : une sorte de addCustomButton(), avec en paramètre le nom du modèle, qui par rapport à le script actuel (que tu sembles avoir essayé), se focaliserait uniquement su ce modèle-là plutôt que tous les modèles présents dans la page.
Cela dit, la difficulté est toujours la même : récupérer le modèle et ses paramètres dans la page, et récupérer les paramètres possibles du modèle via une requête Ajax, puis imbriquer le tout pour faire un formulaire constitué de <input type="text" />.
Je suis assez nul en RegExp et pour l'instant je piétine à faire les deux premières étapes avec mes méthodes "barbares" à base de .indexOf : sur certaines pages, suivant les modèles, des fois ça marche nickel, des fois ça plante en créant une boucle sans que je comprenne pourquoi (et bien que j'ai ajouté des conditions pour l'éviter).
J'aurai bien besoin d'aide à ce niveau-là : si quelqu'un pouvait me coder la fonction pour récupérer (avec des RegExp) le modèle et mettre ses paramètres dans une Array, la suite ne présenterait plus grande difficulté.
⇨ Dr Brains ∞ Doléances ∞ 12 avril 2010 à 18:42 (CEST)
Ok, essaie de voir si tu ne trouves pas un bout de code ici concernant la détection des infobox. Je vois voir pour les RegExp. Snipre (d) 12 avril 2010 à 19:44 (CEST)
Si tu prends le code qui suit le commentaire "Begin of text" et celui après "End of text", tu trouveras un moyen de repérer les infobox en évitant les sous-modèles. Snipre (d) 12 avril 2010 à 19:54 (CEST)
Sinon avec le code qui suit, tu as les variables utilisées dans « variables » et les modèles dans « models » (un petit nettoyage des résultats est nécessaire, mais ça semble marcher correctement sur la chimiebox).
Amicalement — Arkanosis 12 avril 2010 à 20:25 (CEST)
  var text = text.replace(/<!--[.\r\n]*?-->/g, '');
  var variable = /(\{{3}[^}]+?\}{3})/g;
  var model = /(\{{2}(?!#)[^}]+?[|}])/g;
  var variables = text.match(variable);
  var models = text.replace(variable, '').match(model);
En gros :
  var text = text.replace(/<!--[.\r\n]*?-->/g, '');
 
  var variable = /\{{3}[^}]+?(\}{3}|\|)/g;
  var variables = text.match(variable);
  var cvariables = [];
  for (var variableId = 0; variableId < variables.length; ++variableId)
  {
    var variable2 = variables[variableId].replace('{{{', '').replace('|', '').replace('}}}', '');
    if (cvariables.indexOf(variable2) == -1)
      cvariables.push(variable2);
  }
 
  var model = /\{{2}(?!#)[^}]+?(\}{2}|\|)/g;
  var models = text.replace(variable, '').match(model);
  var cmodels = [];
  for (var modelId = 0; modelId < models.length; ++modelId)
  {
    var model2 = models[modelId].replace('{{', '').replace('|', '').replace('}}', '');
    if (cmodels.indexOf(model2) == -1)
      cmodels.push(model2);
  }
En récupérant « cvariables » et « cmodels ». J'ajouterais que les regexp d'EcmaScript ne méritent pas ce nom. Gnn. D'abord. — Arkanosis 12 avril 2010 à 20:46 (CEST)
Bon, j'ai un code matlab pour effectuer l'extraction. Je ne sais pas si quelqu'un peut le réécrire en JavaScript. L'idée est de chercher tous les paramètres présent dans le code du modèle. Cela inclut les paramètres du modèle désiré et ceux des sous-modèles inclus dans le modèle. Il faut récupérer le string correspond au paramètre, l'indice du début et de la fin. Ensuite il faut étudier les chaînes situées entre les paramètres ainsi identifiés et compter le nombre d'occurrences pour {{ et }}. Si on obtient le même nombre pour ces 2 groupes de caractères, alors on a la valeur correspond à un paramètre du modèle principal. Si le nombre est différent, alors on a un affaire à un sous-modèle. Il suffit alors d'étendre la chaîne de caractère en ajoutant tous les caractères jusqu'au paramètre suivant. Cela permet d'éviter tout nettoyage.
Ex. code wiki du modèle: Chimiebox | nom = XXX | formule = YYY {{ouvrage| titre = yyy}}| masse = ZZZ
Extraction des paramètres et des indices, via un regexp cherchant le pattern "| xxxx ="
| nom = 11 17
| formule = 23 33
| titre = 48 56
| masse = 63 71
Ensuite on extrait la chaîne de caractères entre 2 paramètres, ce qui donne dans le premier cas XXX et la recherche des expression {{ et }} donne 0 respectivement 0 pour cette chaîne. Si on poursuit, la chaîne de caractère pour le deuxième paramètre est YYY {{ouvrage. La recherche de {{ et de }} donne 1 et 0. On élargit la longueur de la chaîne jusqu'au paramètre suivant pour obtenir YYY {{ouvrage| titre = yyy}}. Nombre d'occurrences pour {{ et }}, 1 et 1. Finalement on obtient:
nom XXX
formule = YYY {{ouvrage| titre = yyy}}
masse = ZZZ
Code matlab
str = '|nom = X | prenom = Y | date = {{date|2|4|1981}}| lieu = {{ref|titre = XX | editeur = YY | annee = 2001}} | pays =Z | nationalite = | metier = | continent = A {{ref|titre =  AA| editeur =BB}} {{ouvrage|titre =CC| collection =DD}} | fin = ';
[AllParameter startParam endParam] = regexp(str,'\|[a-zA-z0-9\s]+\=','match');
i=1;
j=2;
k=0;
while i ~= length(AllParameter)
   if endParam(i)+1 <= startParam(j)-1
       val = str(endParam(i)+1:startParam(j)-1);
       ok =0;
       while ok~=1
           nbTemplateStart = strfind(val,'{{');
           nbTemplateEnd = strfind(val,'}}');
           if isempty(nbTemplateStart) || length(nbTemplateStart) == length(nbTemplateEnd)
                ok = 1;
               k=k+1;
               RawData{k,1} = regexp(AllParameter{i}, '(?<=\|)[a-zA-Z0-9\s]+','match');
               RawData{k,2} = val;
               i = i+1;
               j = j+1;
               if j-i>1
                   i =j-1;
               end
           else
               j =j+1;
               val = str(endParam(i)+1:startParam(j)-1);
           end
       end
   else
       ok = 1;
       k=k+1;
       RawData{k,1} = regexp(AllParameter{i}, '(?<=\|)[a-zA-Z0-9\s]+','match');
       RawData{k,2} = val;
       i = i+1;
       j = j+1;
   end
end
k=k+1;
RawData{k,1} = regexp(AllParameter{i}, '(?<=\|)[a-zA-Z0-9\s]+','match');
RawData{k,2} = str(endParam(end)+1:end);

Snipre (d) 14 avril 2010 à 11:42 (CEST)

[modifier] Oldid et connaitre l'existence (ou non) d'une page

En fait, dans le cadre du développement d'un gadget Utilisateur:Romainhk/DemandeDeTraductionFacile.js, j'ai deux problèmes concernant le javascript sur WP :

  • Comment savoir si une page WP existe ? Faut-il obligatoirement passer par une requête ajax ? (Y a t'il une fonction déjà disponible que je n'aurais pas vu ?)
  • J'aimerais récupérer l'"ArticleId" (numéro d'adresse permanente) de la dernière version d'un article sur un WP étranger :

La chose est-elle possible ? Romainhk (QTx10) 20 avril 2010 à 15:19 (CEST)

  • Savoir si une page existe : soit requête Ajax sur l'API (exemple), soit si c'est pour utiliser dans un modèle la parser function {{#ifexist:Page}}
  • Dernier ID : requête API (même adresse que précédement), sauf que on ne peut pas faire de requête Ajax sur un autre domaine, pour ça il faut gruger.
    • En gros :
    • 1. afficher quelque part une <iframe> de l'adresse cible
var IframeDiv = document.createElement('div');
IframeDiv.innerHTML = '<iframe id="Frame_1" src="Adresse_de_la_page_cible" width="100%" height="500px" />';
document.body.insertBefore(IframeDiv, document.body.firstChild);
    • 2. extraire le contenu de l'iframe (l'iframe mettant potentiellement un peu de temps à s'afficher, un délai est bienvenu, voire un bouton ou une pop-up de confirmation)
var Contenu = document.getElementById("Frame_1").contentDocument.body.innerHTML;
    • 3. parser le contenu de la manière habituelle
    • mais pour avoir accès au contenu de l'iframe d'un autre domaine (étape 2.), il faut ajouter dans le monobook.js (ou vector.js ou autre suivant le cas) des deux wiki la ligne
      document.domain = 'wikipedia.org';
      
      (problème de sécurité, là aussi).
J'espère que mes explications ne sont pas trop fumeuses... ⇨ Dr Brains ∞ Doléances ∞ 20 avril 2010 à 15:41 (CEST)
  • C'est pour utiliser directement dans le gadget, en javascript donc. Merci pour le lien sur l'API, c'est exactement ce que je cherchais.
  • Jamais je n'aurais pensé aux iframe : on m'a tellement rabaché que « les iframes, c'est le mal! » que je les avais presque oublié. Même si la solution est élégante, le gadget est supposé être super simple à utiliser (on a des soucis d'ergonomie sur le projet:traduction car les traducteurs ne sont pas forcément des bidouilleurs) donc devoir modifier plusieurs monobook.js ne me parait pas adapté à ma problématique... Donc il veut mieux soit abandonner l'idée, soit la transférer à un bot (du genre, mon script va signaler au bot qu'il faut compléter la page avec le oldid, et on fait tourner le bot tous les jours), qui sera plus apte à la gestion interwiki. Merci pour ta réponse :) Romainhk (QTx10) 20 avril 2010 à 19:16 (CEST)
  • Concernant l'existence ou non de la page :
Avec le format "standard" de l'API (donc sans format spécifié), le résultat est une succession de <span>. Il te faut chercher si parmi eux celui qui contient title= contient également missing= (page inexistante), ou redirect= (redirection).
  • Concernant l'iframe, ce n'est pas très élégant/userfriendly comme méthode mais c'est la seule (à ma connaissance) qui permette d'accéder à une page d'un autre domaine.
J'ai d'ailleurs un script en construction, Utilisateur:Dr Brains/GetOtherWikiPage.js, qui a terme est censé récupérer sur un autre wiki les interwikis manquant d'une page fr. Il marche mais n'est pas encore terminé (il manque l'édition de la page fr)
Arkanosis (d · c · b) en a un aussi Utilisateur:Arkanosis/iKiwi.js (dont j'ignore l'état d'achèvement) qui est censé faire la même chose (importer les interwikis).
Voilà, en espérant que ça peut te donner une idée du fonctionnement du truc.
D'ailleurs il y a des pages d'aide pour tout ça : Projet:JavaScript/Aide API (encore en chantier) et Projet:JavaScript/Aide Ajax (qui je pense est à peu près complète).
⇨ Dr Brains ∞ Doléances ∞ 20 avril 2010 à 19:43 (CEST)
iKiwi fonctionne Clin d'œil. D'ailleurs, tu n'es pas en train de recoder ça ? — Arkanosis 20 avril 2010 à 19:51 (CEST)
Recoder quoi ? ⇨ Dr Brains ∞ Doléances ∞ 20 avril 2010 à 20:04 (CEST)
Ben iKiwi : récupérer les interwikis manquants d'une page fr (ou autre), c'est exactement ce que fait iKiwi.
Tu me diras, ce ne sera pas la première fois que l'on code tous les deux la même chose (litote) Clin d'œilArkanosis 20 avril 2010 à 20:14 (CEST)
Non, Utilisateur:Dr Brains/GetOtherWikiPage.js était un essai perso "à ma manière", pour tester la ruse de l'<iframe> (rien que le titre de la page annonce la couleur). Je n'ai pas vraiment l'intention d'en faire un gadget opérationnel. Ikiwi m'a l'air beaucoup plus complet, bien que je n'en ai pas percé tous les mystères (cette manie dont tu n'es pas le seul adepte d'aller à la ligne avant les accolades ouvrantes et de faire des indentation minuscules ne facilite pas la lecture...Clin d'œil).
⇨ Dr Brains ∞ Doléances ∞ 20 avril 2010 à 20:27 (CEST)
Je plaide coupable pour l'indentation : en vrai je suis un fervent défenseur de l'indentation à base de tabulations, mais comme il m'arrive de coder directement dans firefox et que tab me fait passer au champ suivant... Mort de rireArkanosis 20 avril 2010 à 20:37 (CEST)
  • En fait, je suis passé par un api.php?action=query&prop=info&titles=MAPAGE&format=json puis je recherche le champ "length" (s'il vaut plus que 0, la page existe ^^).
  • Ok, je jetterai un coup d'œil à tout ça, cela pourrait donner des idées. Au passage, on peut inclure un script dans un autre script (importScript(...)) ? Romainhk (QTx10) 20 avril 2010 à 21:46 (CEST)
  • Pas bête. Je ne connais pas trop ce format mais il a l'air plus simple/rapide. Qui se dévoue pour compléter Projet:JavaScript/Aide API ?
  • Oui. On peut le faire.
⇨ Dr Brains ∞ Doléances ∞ 20 avril 2010 à 22:16 (CEST)

[modifier] Hotcats

Commons a évolué, la version d'hotcats là bas aussi. Je me demandais s'il était possible d'adapter les modifications apportées là bas, qui facilite quand même grandement la vie, à savoir

  1. la possibilité d'ajouter et/ou supprimer plusieurs catégories d'un coup (grossièrement, on en modifie une, puis une seconde sans confirmer la première, et le gadget ne lance pas l'édition, mais demande de sauvegarder quand on est prêt à modifier pour de bon, ce qui ouvre la fenêtre d'édition, et ensuite oblige à une publication manuelle)
  2. La possibilité de modifier une catégorie sans avoir à éditer manuellement la page. Il me semble que cette modification était controversée, mais après une discussion sur irc, il me semble à présent pertinent de poser à nouveau la question.
  3. Je ne sais pas si c'est déjà le cas sur fr: (mais j'en doute fort), la possibilité d'inclure la clé de tri sur la modification par hotcats. Sur commons, il suffit d'éditer la catégorie par hotcats, et de rajouter derrière le nom « |clé de tri ». De même quand on édite une catégorie qui a déjà une clé de tri, celle-ci apparait simplement de cette façon ( « catégorie|clé de tri » dans l'espace d'édition hotcats).

Voilà, tout ça pour ouvrir la discussion sur une éventuelle évolution de « notre » hotcats. — Rhadamante 8 juin 2010 à 18:15 (CEST)

  1. Ce serait effectivement pas mal.
  2. Je suppose que tu veux dire "avec publication automatique". Ca existe déjà, c'est un simple paramètre à changer (ou à personnaliser dans son monobook).
  3. Ca marche déjà (à peu près) : en mettant dans la champ Nouvelle catégorie|Clef, ça va remplacer Ancienne catégorie par Nouvelle catégorie|Clef. A peu près car si il avait [[Catégorie:Ancienne catégorie|Ancienne Clef]], le résultat sera [[Catégorie:Nouvelle catégorie|Clef|Ancienne Clef]]. Ca marche, c'est bien Clef qui est pris en compte, mais la syntaxe est quand même fautive.
Je rajouterai également la prise en compte de la présence d'interwikis : si il n'y a pas de catégories, celles-ci s'ajoutent à la fin de la page, donc après d'éventuelles interwikis. Ma version perso prend en compte ce soucis, mais peut-être pas de la manière la plus sûre et élégante possible.
⇨ Dr Brains ∞ Doléances ∞ 8 juin 2010 à 18:29 (CEST)
Précision, pour la clé de tri, quand on édite une catégorie sur commons avec hot cats, s'il y en a une, l'édition donne directement Actuelle catégorie|Actuelle clé, et on peut donc directement modifier les deux. — Rhadamante 8 juin 2010 à 18:35 (CEST)
Ca devrait pouvoir se régler en remplaçant la ligne
                t = t.replace(hcre, "$1[[Catégorie:" + hnc + "$2]]");
par
                if(hnc.indexOf('|')!=-1){
                    t = t.replace(hcre, "$1[[Catégorie:" + hnc + "]]");                    
                }else{
                    t = t.replace(hcre, "$1[[Catégorie:" + hnc + "$2]]");
                }
J'ai modifié ma version ainsi. Après quelques tests, si c'est concluant, je modifierai le gadget en conséquence.
⇨ Dr Brains ∞ Doléances ∞ 8 juin 2010 à 18:45 (CEST)
Ca fonctionne, j'ai donc mis le gadget à jour.
A présent si on met un pipe (et donc une clef de tri) dans le champ, l'ancienne clef est supprimée.
Très bien. Je viens aussi de découvrir une autre fonction de hotcats sur commons. Pas indispensable mais pratique, deux boutons à coté du (+)/(-), « (↓) » et « (↑) » permettant repectivement d'accéder aux catégories inférieure(s) et supérieure(s) de l'actuelle catégorie ciblée. Ça permet entre autres de modifier un catégorie mère par une catégorie fille plus précise de façon assez simple et rapide — Rhadamante 8 juin 2010 à 23:49 (CEST)

[modifier] HotCats "Multi"

Version qui fonctionne correctement (a priori) : Utilisateur:Dr Brains/HotCatsPerso.js.

En apparence, pas de changements, hormis un bouton (±) qui viens se greffer à côté du lien "Catégories". Tant qu'on ne clique pas sur ce bouton, HotCats fonctionne comme d'habitude (j'ai cependant ajouté quelques trucs pour éviter certains bugs, comme l'ajout d'une catégorie déjà présente).

Une fois le nouveau bouton (±) cliqué, le mode "multi" s'active. On peut dès lors retirer ou modifier une ou plusieurs catégories, le clic sur OK ne lance pas la modif mais enregistre la modification souhaitée, Idem pour l'ajout de catégories, on peut donc en ajouter autant qu'on veut.

Les changements sont repérés par les couleurs des liens :

  • rose et barré : catégorie à supprimer;
  • jaune foncé : catégorie à modifier;
  • vert : catégorie à ajouter.

Un clic sur Annuler (celui du bouton "multi", pas ceux de chaque catégorie), fait sortir du mode "multi". Tous les changements effectués sont annulés et la barre revient comme à l'origine.

Un clic sur Valider (touche inactive tant qu'il n'y a pas eu de changements), lance une pop-up de confirmation listant les changements qui vont être effectués, si confirmé, l'édition se lance.

L'édition est automatique, sauf dans le cas où il y a un problème (catégorie introuvable, catégorie présente plusieurs fois, catégorie à ajouter déjà présente, etc...).

Des testeurs fous (ou pas) seraient bienvenus, dans l'optique future de remplacer le gadget.

Pour tester :

  1. Désactiver HotCats dans les gadgets
  2. Ajouter à son monobook.js (ou vector.js ou autre suivant l'habillage choisi dans les préférences) le code :

⇨ Dr Brains ∞ Doléances ∞ 20 juin 2010 à 10:24 (CEST)

Je n'ai pas encore testé, mais vue la description, c'est un truc dont j'avais besoin depuis longtemps. Merci beaucoup, donc Sourire
Je teste ça dès que j'ai 5mn. — Arkanosis 20 juin 2010 à 10:38 (CEST)
Ça ne marche pas chez moi (Firefox sous Ubuntu). Pymouss |Parlons-en| 20 juin 2010 à 12:17 (CEST)
Tu as bien désactivé HotCats dans les gadgets ?
Tu es bien sous monobook ?
Si oui et oui, qu'est-ce qui ne marche pas exactement ?
⇨ Dr Brains ∞ Doléances ∞ 20 juin 2010 à 12:44 (CEST)
Marche très bien sous Opera ; outil très pratique et facile d’utilisation. Bon boulot. Sebleouf (d) 20 juin 2010 à 12:46 (CEST)
Ça marche chez moi (firefox, windows vista, monobook). Par contre, je ne sais pas si c'est volontaire, mais derrière les catégories déjà existantes, il y a deux fois les (-)(±) (Nom de la catégorie (–) (±) (–) (±)), et ça fait un truc bizarre quand je veux utiliser hotcats en mode normal (même si au final ça marche) : si je veux modifier un catégorie existante, au lieu d'ouvir le champ où apparait cette catégorie, ça m'en ouvre un nouveau juste derrière, ou je peux mettre la nouvelle catégorie; quand je valide, j'ai un message d'erreur comme quoi il n'a pas pu trouver la catégorie à remplacer (Impossible de trouver une occurrence unique de "[la catégorie]" - elle est peut-être incluse via un modèle), mais après avoir cliqué sur ok pour fermer la boite de dialogue, la modification est effectuée. Le problème est le même quand je veux supprimer une catégorie.
Autre problème, derrière la dernière catégorie, outre le double (-)(±), il y a en plus (+) (–) (±) | [+] | (+) (le [+] correspond aux catégories cachées). J'ai essayé d'ajouter une catégorie avec le premier (+), ça fout le boxon et ça échoue, et avec le dernier, il me dit impossible d'ajouter, la catégorie existe déjà, mais fini quand même par l'ajouter. — Rhadamante 20 juin 2010 à 14:13 (CEST)
Tu as désactivé HotCats dans les gadgets ?
Parce que si tu as deux fois les (-)(±), ça vient surement de là.
⇨ Dr Brains ∞ Doléances ∞ 20 juin 2010 à 14:37 (CEST)
Oups. Bon tout à l'air de marcher maintenant, à l'exception d'un truc, hotcats en mode classique qui ouvre toujours un un champs à coté de la catégorie qu'on veut modifier, au lieu d'ouvrir un champs à la place de celle-ci (je ne sais pas si c'est volontaire). — Rhadamante 20 juin 2010 à 15:15 (CEST)
Ah oui, ça me le fait aussi. Je vais régler ça.Fait
Sinon, à part ça, ça marche ?
⇨ Dr Brains ∞ Doléances ∞ 20 juin 2010 à 16:22 (CEST)
Oui, comme je l'ai écrit plus haut. — Rhadamante 20 juin 2010 à 17:37 (CEST)
Documentation complète. Ça manquait.
⇨ Dr Brains ∞ Doléances ∞ 21 juin 2010 à 09:25 (CEST)
Je viens d'ajouter les boutons et pour suggérer les catégories parentes et filles. Mais contrairement à la version de commons, ces boutons sont dans les formulaires et non à côté de chaque catégorie (ça aurait fait trop chargé amha).
⇨ Dr Brains ∞ Doléances ∞ 21 juin 2010 à 11:05 (CEST)
Très utile en effet, ça fonctionne bien chez moi (Firefox 3.6). Juste une petite remarque quand les champs sont à cheval sur deux lignes : il peut arriver que le champ texte passe à la ligne, mais la liste de propositions reste toujours à la fin de la ligne du dessus (voir cet exemple : je suis en train d'éditer la catégorie « Utilisateur ja » en bas à gauche mais la liste est en haut à droite). C'est peut-être normal au demeurant ? Merci pour le gadget en tous cas. Binabik (d) 21 juin 2010 à 11:58 (CEST)
Ca le fait aussi avec le gadget. J'ai corrigé, à présent ça devrait être bien aligné avec le champ de texte.
⇨ Dr Brains ∞ Doléances ∞ 21 juin 2010 à 12:07 (CEST)

Cela fonctionne chez moi (Linux 10.04 avec Mozilla Firefox 3.6.3 et Opera 10.10). Juste une petite remarque, pour éviter que je sois perdu, pourrais-tu rapprocher le nouveau fonctionnement de HotCats sur WP du nouveau fonctionnement de HotCats sur COM (il y a de nombreux points en communs d’ailleurs), notamment au niveau de la signalisation (P yes.svg et P no.svg plutôt que Icon yes.png et Icon no.png, etc.). Cdlt, Vigneron * discut. 21 juin 2010 à 13:04 (CEST)

Ce sont les icônes qu'il y avait avant (et qu'il y a toujours sur le gadget actuel). J'avais pensé qu'un peu de couleur ne ferait pas de mal, ayant mis du temps à l'époque à me rendre compte de la présence de ces icônes et de leur signification. J'imagine qu'on doit pouvoir en trouver d'autres un peu moins flashy que Icon yes.png et Icon no.png mais plus visibles que P yes.svg et P no.svg (sachant que ces icônes sont personnalisables de toutes manières).
En fait de ressemblance, c'est parce que je me suis inspiré de la version commons pour le fonctionnement des nouveaux outils/boutons, mais en réalité, le code n'a rien à voir : la version de commons intègre quantité de subtilités dont on n'a pas besoin ici (rapport à l'aspect multi-langues notamment, ainsi que la gestion de Special:Upload, page bien plus complexe qu'ici), le tout faisant du script un truc assez complexe à appréhender et lourd (100ko). En fait, je suis parti du gadget actuel (que je connaissait déjà un peu pour avoir bricolé ma version perso) en ajoutant des fonctions et modifiant celles existantes selon les besoins. Résultat il est deux fois moins lourd (54ko en ce moment et sans doute allégeable), mais a priori il reprend toutes les fonctions essentielles de la version commons.
⇨ Dr Brains ∞ Doléances ∞ 21 juin 2010 à 13:20 (CEST)
  1. P yes.svg / P no.svg
  2. Icon yes.png / Icon no.png
  3. ☑.svg / ☒.svg
  4. Pictogram voting keep-light-green.svg / Pictogram voting delete.svg
  5. Symbol kept vote.svg / Symbol unrelated.svg
  6. Symbol plain green.svg / Symbol plain red 2.svg
  7. Bullet-green.png / Bullet-red.png
  8. ButtonGreen.svg / ButtonRed.svg
  9. Green Light Icon.svg / Red Light Icon.svg
  10. Amber icons 029 checkmark cropped.png / Amber icons 042 exit cropped.png
  11. Greenlight.gif / Roodlicht (reversed timing).gif
Faîtes votre choix, ou proposez-en d'autres.
⇨ Dr Brains ∞ Doléances ∞ 21 juin 2010 à 13:38 (CEST)
La réponse 1. (et veto pour le 10, on voit quasi-rien). Étant très souvent sur Commons, plus les deux gadgets seront similaires, mieux cela sera pour moi (donc au pire, je tripatouillerais mon css avec ton aide). Cdlt, Vigneron * discut. 21 juin 2010 à 14:48 (CEST)
Assez d'accord pour la 10, j'ai essayé et on n'y vois pas de différence entre les deux icônes. Dommage, elles sont jolies (et je me suis embêté à les recadrer)...
Les leds clignotantes, ça rend pas super non plus...
Pour personnaliser l'icône, c'est du côté .js que ça se passe (voir la doc). Il faut créer une fonction nommée hotcat_UserCustom() et y lister les valeurs que tu veux aux variables que tu souhaites modifier.
Pour l'image, il y en a trois : une pour la taille (20 par défaut), et deux pour l'url des images. Pour retrouver l'image par défaut (choix N°1), ce sera donc :
function hotcat_UserCustom(){ 
     hotcat_exists_size = "20" ;
     hotcat_exists_yes = "http://upload.wikimedia.org/wikipedia/commons/thumb/b/be/P_yes.svg/20px-P_yes.svg.png" ;
     hotcat_exists_no = "http://upload.wikimedia.org/wikipedia/commons/thumb/4/42/P_no.svg/20px-P_no.svg.png" ;
}
A ajouter n'importe où dans le monobook (ou le vector le cas échéant). Il y a une quarantaine de variables personnalisables de la sorte (y compris les différents textes).
Pour ce qui est des icônes par défaut, on peut sans doute encore en discuter, mais j'aime assez qu'elles soient différentes de celles de commons. Une sorte de french touch en quelque sorte Clin d'œil...
⇨ Dr Brains ∞ Doléances ∞ 21 juin 2010 à 15:02 (CEST)
Script transformé en gadget (mais avec un autre titre, sans remplacer la version actuelle pour l'instant). Il est désormais sélectionnable dans les préférences. La documentation a été mise à jour en conséquence.
⇨ Dr Brains ∞ Doléances ∞ 22 juin 2010 à 11:22 (CEST)
Salut, je ne sais pas si je suis le seul, mais j'ai grand peine à me faire à la boîte déroulante : elle ne se ferme que quand on valide la catégorie (et cache donc en partie le texte), mais surtout quand on tape le script remplace toutes les 0,05 secondes des caractères. Je suis en train de taper "Naissance en" et paf si j'ai eu le malheur de cacographier (espace oubliée, etc.) un peu il me met "Naissance au Bengladesh" quand ce n'est pas "Najadales", et plus on tape sur back space plus il remplace ce qu'on efface, avant même qu'on ait eu le temps de tout effacer, il propose déjà quelque chose en surbrillance et des cats les plus improbables Sourire. Quand on a fini de jouer la rapidité avec lui, on tape ENTER et ça ne valide pas la cat, ça recharge la page sans rien sauvegarder. Caramba, tout est à recommencer ! Petit détail, le script pourrait-il mettre systématiquement la première lettre de la catégorie en capitale ? (le P:CS est pointilleux sur ce genre de choses) Voili voilou, je devais raconter mes déboires, Totodu74 (devesar…) 22 juin 2010 à 22:43 (CEST)
Pour la catégorie avec première lettre majuscule, ça devrait être le cas. J'ai dû oublier un truc quelque part.
Pour l'ajout du texte en surbrillance, c'est vrai que c'est parfois très chiant (mais c'est pareil avec la version "normale"), et je me dis que le mieux serait peut-être de zapper cet ajout automatique, comme dans BandeauxPortails : seul le clic sur une catégorie de la liste remplace le texte. Je vais essayer d'améliorer ça.
« Quand on a fini de jouer la rapidité avec lui, on tape ENTER et ça ne valide pas la cat, ça recharge la page sans rien sauvegarder. Caramba, tout est à recommencer ! » : Là je ne comprends pas bien le problème. Où ? Quand ? Comment ?
⇨ Dr Brains ∞ Doléances ∞ 22 juin 2010 à 22:51 (CEST)
Très simplement : je clique sur (+) je rentre dans la zone de texte "Naissance en 1991ENTER" et il me recharge la page sans l'éditer (et ajouter la cat). Je suis obligé de cliquer sur le bouton OK pour qu'il la rajoute... Totodu74 (devesar…) 22 juin 2010 à 22:58 (CEST)
Ah OK, je comprends mieux. Je vais voir ce que je peux faire.
⇨ Dr Brains ∞ Doléances ∞ 22 juin 2010 à 23:02 (CEST)
Problème de la casse de première lettre : Fait réglé
Problème du ENTER qui ne marchait plus comme avant : Fait réglé.
Je vais voir ce que je peux faire pour le remplacement inopiné du texte en cours de frappe.
Au passage, ça m'a permis de m'apercevoir que j'avais encore deux fonctions résiduelles de l'ancien code qui ne me servait plus : -5ko de gagnés, soit une page environ 3 fois plus légere que la version commons (100ko contre 38ko).
⇨ Dr Brains ∞ Doléances ∞ 22 juin 2010 à 23:16 (CEST)
Problème du remplacement inopiné a priori réglé : le texte d'origine du champ de texte est vérifié juste avant un éventuel remplacement, et non plus avant d'effectuer la requête de suggestion (durant laquelle le texte peut avoir évolué).
⇨ Dr Brains ∞ Doléances ∞ 22 juin 2010 à 23:44 (CEST)
Par-fait. Mer--ci beaucoup doc' ! Bravo ! Totodu74 (devesar…) 23 juin 2010 à 14:14 (CEST)
Maintenant que je peux essayer ce gadget, je suis moi aussi choqué par les couleurs flashy... je préfère aussi largement la solution 1 (sûrement pas habitude du HotCats normal et de Commons, mais bon...), ou éventuelement le 4 ou le 5 en second choix. Cordialement, --Gagea (d) 25 juin 2010 à 00:13 (CEST)
Bon ben j'ai remis les vieilles icônes. Tant pis pour la couleur...(Smiley: triste)
⇨ Dr Brains ∞ Doléances ∞ 25 juin 2010 à 00:20 (CEST)
Un seul test et je suis déjà convaincu. L'outil est formidable ! SourireArkanosis 25 juin 2010 à 16:28 (CEST)
Oui, c'est quand meme bien plus pratique que HotCats. C'est la première fois que je modifie les clés de tri (d'habitude je n'en ai pas le courage...)! Ce qui serait encore mieux, ce serait de ne pas à avoir à activer le mode multi, mais qu'il soit activé par défaut (c'est à dire ne pas avoir besoin de clique sur le (+) à coté de "catégorie"). Qu'en pensez-vous ? Par ailleurs, j'ai constaté qu'après la modification d'une dizaine de catégories j'arrete de vérifier que mes vérifications sont correctes, lorsque la fenetre de récapitulatif s'affiche (dix c'est quand meme beaucoup, vous noterez la bonne volonté!)... y a-t-il un moyen de désactiver cet avertissement ?
Merci bien pour cet outil en tout cas (et qu'est-ce qu'elles sont jolies les nouvelles icones :P) !
--Gagea (d) 26 juin 2010 à 00:07 (CEST)
Fait J'ai ajouté ces deux options, et mis à jour la doc pour les paramètres de personnalisation (personnalisation qui me permet de mettre les icônes que je veux, que pour moi, na !)
⇨ Dr Brains ∞ Doléances ∞ 26 juin 2010 à 01:01 (CEST)
Super! Quelle rapidité! Et... tu crois que ce serait possible qu'en mode Multi la légende ne soit pas affichée (je dois avoir un problème avec les couleurs vives!)... et que... le mot "catégorie", les boutons Valider/Annuler, et les différentes catégories avec leurs boutons soient sur la même ligne ? (mais ça c'est du détail... t'as le droit de dormir aussi! :D).
--Gagea (d) 26 juin 2010 à 01:40 (CEST)
  • hotcat_ShowLegend : affichage de la légende (booléen)
  • hotcat_ShowInline : affichage en une seule ligne (booléen)
Doc mise à jour.
⇨ Dr Brains ∞ Doléances ∞ 26 juin 2010 à 10:14 (CEST)
Ah, le voila le gadget de mes rêves ! Merci bien. --Gagea (d) 29 juin 2010 à 11:01 (CEST)
Je ne sais pas ce qui se passe depuis cet après-midi, si ça vient de hotcats ou de mes réglages internes ( hotcat_ShowInline = true; hotcat_SkipRecap = true; hotcat_ShowLegend = false; rajoutés cet aprem, hotcat_AutoMulti = true; hotcat_autocommit = true; depuis plus lontemps), mais quand j'ouvre une nouvelle page, je me retrouve automatiquement en bas de page, un peu au dessus des catégories. J'ai essayé en désactivant hocatsmulti, et ça ne le fait plus. — Rhadamante 26 juin 2010 à 21:48 (CEST)
Je confirme, ça vient de l'option hotcat_AutoMulti : cet après-midi j'ai amélioré la gestion du focus clavier. Notamment, lorsque le mode multi s'ouvre (quant on clique sur le lien), le focus passe sur le bouton "Annuler". C'est ce qui, dans le cas d'un lancement automatique, provoque le scroll en bas de page (en fait, au niveau du focus).
Il suffit que je mette une condition et ce sera bon. L'affaire de quelques secondes.
⇨ Dr Brains ∞ Doléances ∞ 26 juin 2010 à 21:58 (CEST)
Et voilà, c'est corrigé. ⇨ Dr Brains ∞ Doléances ∞ 26 juin 2010 à 22:01 (CEST)
Parfait, merci. — Rhadamante 26 juin 2010 à 22:06 (CEST)

(retour à gauche) J'ai un problème depuis quelques minutes avec la suppression de catégories (même réglages que précédemment). Quand je supprime une catégorie, il la transforme en undefined (rose, barré) et forcément, quand je valide, ça me fait un message d'erreur comme quoi il ne peut pas trouver la catégorie. — Rhadamante 28 juin 2010 à 20:23 (CEST)

Ça doit être dû à un petit changement que j'ai fait aujourd'hui. J'ai reverté, ça devrait remarcher comme avant.
⇨ Dr Brains ∞ Doléances ∞ 28 juin 2010 à 21:43 (CEST)
Oui ça remarche maintenant. — Rhadamante 28 juin 2010 à 21:56 (CEST)

Ça y est, les exigences reprennent! Crois-tu qu'il serait possible de modifier aussi les catégories cachées avec HotCatsMulti ? Cordialement --Gagea (d) 4 août 2010 à 12:23 (CEST)

Non. Les catégories cachées sont le plus souvent ajoutées par des modèles (bandeau de portail, d'ébauche ou d'avertissement divers, etc...) et ne sont donc pas présentes dans la page. On ne peut donc pas les modifier.
⇨ Dr Brains ∞ Doléances ∞ 4 août 2010 à 12:51 (CEST)

[modifier] Vector.js : ajout d'une section à la barre de navigation gauche

Bonjour,

Du temps de Monobook, j'avais un code qui ajoutait une section personnelle dans la colonne de gauche, avec quelques liens rapides. J'ai adapté ce code à Vector ; au début cela fonctionnait très bien (voir mon vector.js, fonction nouvelleBoite), mais depuis quelques jours, cela « casse » le fonctionnement du « collapse/expand » des sections. Je ne peux plus rien enrouler ni dérouler... Pourtant, l'arbre DOM résultant a l'air correct lorsque je le regarde dans Firebug.

Quelqu'un a-t-il une idée ? — ChrisJ (d) 11 août 2010 à 22:10 (CEST)

J'ai trouvé en regardant plus haut dans cette page ! Remplacer addLoadEvent par addOnloadHook. En espérant que ça serve à d'autres ! — ChrisJ (d) 11 août 2010 à 22:45 (CEST)
\o/ SourireArkanosis 12 août 2010 à 14:11 (CEST)

[modifier] Str replace et position curseur

Salut. J'essaye d'écrire une fonction pour me simplifier la vie, qui utilise replace (à la volée) sur le textarea d'édition des articles. Le remplacement marche bien, mais le curseur est ensuite placé à la toute fin de la zone d'édition, alors que je voudrais qu'il soit à la fin de la chaîne qui vient d'être remplacée (beaucoup plus pratique, puisque le remplacement est censé se faire à la volée). Voir mon monobook, c'est le troisième bloc. Merci ! Zakke (d) 21 août 2010 à 11:12 (CEST)

Il y a peut-être une piste du côté de la fonction insertTag().
⇨ Dr Brains ∞ Doléances ∞ 21 août 2010 à 15:00 (CEST)

[modifier] Infobox déroulante

Bonjour, je souhaiterai créer une infobox avec une partie déroulante. Il faudrait pour cela pouvoir afficher et cacher une partie du tableau sans en créer de nouveau. Cela serai-t-il possible ? voici le brouillon de l'infobox : Utilisateur:Tpt/Infobox pharaon, je voudrai mettre les modules "titulature" et famille" en déroulant. Merci d'avance pour vos réponses. Tpt (d) 6 septembre 2010 à 18:29 (CEST)

J'ignore s'il y a une « façon propre » de faire ça (c'est-à-dire un modèle), mais voir {{Philo}} pour un exemple de code qui marche... Bibi Saint-Pol (sprechen) 6 septembre 2010 à 19:20 (CEST)
Voir modèle {{Boîte déroulante/début}}
En gros, pour que cela fonctionne avec le javascript des boîte déroulantes, il te faut quelque chose comme ceci :
<div class="NavFrame" style="???">
<div class="NavHead" style="???">
TITRE DE LA BOÎTE
</div>
<div class="NavContent" style="???">
PARTIE CACHÉE
</div>
</div>
Ce qui te fera un truc de ce genre :
Après c'est à toi de déterminer les styles (bordures, fond, etc...) qui vont bien avec l'infobox.
⇨ Dr Brains ∞ Doléances ∞ 6 septembre 2010 à 19:36 (CEST)
Le seul ennuie c'est que cette méthode bug quand on la place au milieu des lignes d'un tableau comme cela :
Test
Pharaon
Naissance Naissance
Dans Dans
{{Infobox/Début}}
{{Infobox/Titre
 | Test | CCCCAA | entete egypte-antique
}}
{{Infobox/Sous-titre
 | ''[[Pharaon]]'' | CCCCAA
}}
{{Infobox/Ligne mixte optionnelle
| Naissance|Naissance
}}
<div class="NavFrame">
<div class="NavHead">
BOITE
</div>
<div class="NavContent">
{{Infobox/Ligne mixte optionnelle
| Dans|Dans
}}
</div>
</div>
{{Infobox/Fin}}
Il y aurait-il un moyen de le faire tout en gardant la continuité dans le tableau ou faut il faire un tableau dans le tableau ? Tpt (d) 6 septembre 2010 à 21:17 (CEST)
Ramsès II
Pharaon
Image illustrative de l'article JavaScript
Statue colossale de Ramsès II au Temple d'Amon de Louxor
Règne
Période Nouvel Empire
Dynastie XIXe dynastie
Passation du pouvoir À sa mort naturelle
link= Séthi Ier Séthi Ier Mérenptah Mérenptah  link=Mérenptah
Biographie
Oui, il faut gruger, et mettre le tableau dans un tableau, comme ci-contre. Là j'ai fait en bricolant, en fait ce sont tes sous-modèles Utilisateur:Tpt/Infobox pharaon/Famille et Utilisateur:Tpt/Infobox pharaon/Titulature qu'il faut modifier.
Tu peux le faire toi-même ou tu veux que je m'en charge ?
⇨ Dr Brains ∞ Doléances ∞ 6 septembre 2010 à 21:45 (CEST)
Merci beaucoup, je reporte les modifications. Tpt (d) 8 septembre 2010 à 19:00 (CEST)

[modifier] Génération automatique modèle Ouvrage et Article

Bonjour, suite à mon propos sur Projet:Sources/Chez_Manon, il m'a été conseillé de faire un gadget. L'idée serait de d'extraire les ref OpenUrl et de les transformer en modèle Ouvrage ou Article. (Voir mes tentatives d'explications sur Manon).
Le code de parsing serait le suivant :

Si rtf.genre article => Article
Si rtf.genre book => Ouvrage

Pour la partie article

rtf.genre article => Article
rft.atitle      titre
rft.jtitle     périodique
 s'il n'y a pas de  rft.jtitle alors rft.stitle => périodique    
rft.date       année
rft.volume     Volume
rft.issue      numéro
rft.pages      pages
rft.issn       issn
rft.eissn      issn2
rft.aulast     nom1
rft.aufirst    prénom1
rft.au         lien auteur1
rft.isbn       isbn
rft_id   si on obtient info:doi/xxxx par exemple  info:doi/10.1063/1.2201061 alors doi=10.1063/1.2201061

Pour la partie ouvrage

rtf.genre book => Ouvrage
rft.btitle        titre
rft.isbn          isbn
rft.aulast        nom1
rft.aufirst       prénom1
rft.au            lien auteur1
rft.atitle        titre chapitre
rft.place         lieu
rft.pub           éditeur
rft.date          année
rft.edition       numéro d'édition
rft.tpages        pages totales
rft.issn          issn
rft_id  si on obtient info:oclcnum/ par exemple info:oclcnum/494415539 alors oclc=494415539

Pour les article PubMed (champ dédié pmid dans le modèle Article), pourriez-vous aller sur ce lien : http://www.ncbi.nlm.nih.gov/pubmed/16698304 et choisir en haut à gauche dans "Display setting" : XML et me dire s'il est possible de parser ce truc pour en faire un modèle Article.

Cordialement - Drongou (d) 15 septembre 2010 à 00:09 (CEST)

Mmmh, pas sûr d'avoir tout bien compris.
Si il s'agit de récupérer des infos sur un autre site que Wikipédia, alors ce n'est pas possible en javascript. Désolé.
Par contre, il est possible de mettre en forme automatiquement un bout de texte ajouté dans la fenêtre de modif (ou dans un autre champ créé pour l'occasion) par un autre moyen, par exemple le plugin firefox ou un copier-coller de la page que tu donnes (en mode MEDLINE ce sera plus simple), alors là c'est faisable. Sous réserve que le texte copié soit standard.
⇨ Dr Brains ∞ Doléances ∞ 15 septembre 2010 à 00:29 (CEST)
J'aurais du donner un exemple :
L'auteur se débrouille pour récupérer à la main la ref dans cette page. Le plus simple est de visualiser le code source et de récupérer la ligne contenant z3988.
il copie la ligne dans le gadget
<span class="Z3988"  title="url_ver=Z39.88-2004&rfr_id=info%3Asid%2Fworldcat.org%3Aworldcat&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&req_dat=%3Csessionid%3E&rfe_dat=%3Caccessionnumber%3E494415539%3C%2Faccessionnumber%3E&rft_id=info%3Aoclcnum%2F494415539&rft_id=urn%3AISBN%3A9782706114953&rft.aulast=Devouard&rft.aufirst=Florence&rft.btitle=Wikipe%CC%81dia+de%CC%81couvrir%2C+utiliser%2C+contribuer&rft.date=2008&rft.isbn=9782706114953&rft.place=Grenoble&rft.pub=Presses+universitaires+de+Grenoble&rft.genre=book"></span>
appuie sur un bouton qui va bien et obtient :
{{Ouvrage|nom1=Devouard|prénom1=Florence|lien auteur1=Florence Devouard|titre=Wikipédia découvrir, utiliser, contribuer|éditeur=Presses universitaires de Grenoble|lieu=Grenoble|année=2008|isbn=2706114959|oclc=494415539}}
Florence Devouard, Wikipédia découvrir, utiliser, contribuer, Grenoble, Presses universitaires de Grenoble, 2008 (ISBN 2706114959) (OCLC 494415539) 
Cordialement - Drongou (d) 15 septembre 2010 à 01:07 (CEST)
Ah OK, je comprends mieux. On est donc dans le deuxième cas. Alors c'est possible.
En gros, cela ferait ceci :
  1. Le gadget ajoute un bouton dans la toolbar
  2. Un clic sur le bouton crée un champ de texte plus deux boutons OK et Annuler
  3. L'utilisateur copie-colle le texte puis clique sur OK
  4. Le script mouline et le contenu du champ de texte est remplacé par le modèle qui va bien, prêt à être copié-collé à l'endroit qui va bien dans la fenêtre de modif.
J'ai bon ?
⇨ Dr Brains ∞ Doléances ∞ 15 septembre 2010 à 01:16 (CEST)
Tout à fait. En passant, j'ai légèrement modifié la partie rft_id et l'exemple ci-dessus (ajout oclc). Drongou (d) 15 septembre 2010 à 01:30 (CEST)
A partir du moment où le format des données est toujours le même, ça ne pose pas de problème.
Dès que j'ai un peu de temps je m'occupe de te coder ça.
⇨ Dr Brains ∞ Doléances ∞ 15 septembre 2010 à 01:40 (CEST)
Première mouture à tester : ajouter au monobook ou au vector le code :
importScript('Utilisateur:Dr Brains/OuvrageArticle.js');
Gère les modèles {{Article}} et {{Ouvrage}}, avec tous les paramètres possibles que tu m'as donnés. Si il y en a d'autres à prendre en compte, on peut facilement les rajouter.
⇨ Dr Brains ∞ Doléances ∞ 15 septembre 2010 à 15:33 (CEST)
Ça fonctionne pour mon premier essai! Merci. Je referai une série de test jeudi soir. Cordialement - Drongou (d) 15 septembre 2010 à 18:02 (CEST)
Pour les ref doi ça ne fonctionne pas. Exemple :
<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft_id=info:doi/10.1063/1.1647147&rft.issn=15297845&rft.title=Journal of Physical and Chemical Reference Data&rft.atitle=Recommended Critical Temperatures. Part II. Aromatic and Cyclic Hydrocarbons&rft.stitle=J. Phys. Chem. Ref. Data&rft.date=30 April 2004&rft.volume=33&rft.issue=2&rft.spage=541&rft.epage=548&rft.coden=JPCRBU"></span>
À noter : côté ouvrage on a : title="url_ver alors que côté article on a title="ctx_ver . Je ne sais pas si cela vient de là.
Je me demande dans quelle mesure on pourrait aussi générer le modèle {{Harvsp}}
Le modèle ci-après (avec un &) ne passe pas à la prévisualisation alors qui fonctionne dans WP
{{Ouvrage|langue=|nom1=Pathouot|prénom1=Evelyne|lien auteur1=|titre chapitre=|éditeur=Michalon|lien éditeur=|lieu=Paris|jour=|mois=|année=2007|titre=Ségolène Royal, ombre & lumière : témoignage|sous-titre=|numéro d'édition=|isbn=9782841863945|issn=|pages totales=|volume=|tome=|passage=|lire en ligne=|consulté le=|présentation en ligne=}}
Les sites à utiliser :
Pour les livres il faut utiliser WorldCat : http://www.worldcat.org/
Pour les ref doi, je pense que le mieux est celui-ci : http://api.labs.crossref.org/search
C'est encore mieux avec les nouveaux boutons !!!. Merci. Je pars en week-end; à lundi Cordialement. Drongou (d) 17 septembre 2010 à 01:55 (CEST)
Qu'est ce que tu appelles "ref doi" ? A priori, tous les paramètres que tu m'as cités sont pris en compte à l'exception de ceux correspondant à "rft_id", car je n'ai pas trouvé le paramètre correspondant des modèles Ouvrage et Article.
Pour le détail, tu peux voir dans le code des deux fonctions OuvrageArticle_CheckOuvrageParams() et OuvrageArticle_CheckArticleParams() (j'ai ajouté des commentaires pour que ce soit un peu plus compréhensible).
Réglé le problème du & qui ne passe pas en prévisualisation (l'API n'aime pas ce caractère qu'il faut systématiquement remplacer par %26).
⇨ Dr Brains ∞ Doléances ∞ 17 septembre 2010 à 03:47 (CEST)
Tout fonctionne nickel aujourd'hui, j'avais du foirer un truc jeudi dernier.
Pour le modèle Article, la ref doi se met dans le champ « doi ». Exemple :
« Recommended Critical Temperatures. Part II. Aromatic and Cyclic Hydrocarbons », dans J. Phys. Chem. Ref. Data, vol. 33, no 2, 30 April 2004 (ISSN 15297845) [lien DOI] 
Ce lien doi est très important car il appelle le résolveur http://dx.doi.org/10.1063/1.1647147 qui redirigera directement vers le journal en ligne.
Pour le champ oclc du modèle Ouvrage, il s'appelle oclc : Exemple :
Florence Devouard, Wikipédia découvrir, utiliser, contribuer, Grenoble, Presses universitaires de Grenoble, 2008 (ISBN 2706114959) (OCLC 494415539) 
mais finalement, je trouve qu'il fait doublon avec isbn et je pense qu'on peut le laisser de coté.
Pour moi cela fonctionne, je pense qu'on peut l'annoncer sur le Bistro.
Un grand Merci pour avoir passé du temps sur cette demande. Cordialement - Drongou (d) 20 septembre 2010 à 22:22 (CEST)
J'ai ajouté la prise en compte de ces deux paramètres. À tester.
Pour ceux qui pensent qu'ils ne sont pas utiles, ils peuvent à loisir les supprimer avant de copier-coller (idem pour les paramètres vides).
Pour l'annonce au bistro, pourquoi pas. Je t'en laisse l'initiative si tu penses que c'est au point, mais avant je voudrais en faire un gadget, c'est à dire le transférer dans une page Mediawiki: car si les gens se lient à une page de mon espace perso, je ne peux plus la modifier sans prendre le risque de gêner plein de monde si je me trompe.
Donc, dis moi si la dernière modif est OK, si oui, je transfère et tu pourras annoncer l'existence du script.
⇨ Dr Brains ∞ Doléances ∞ 20 septembre 2010 à 22:54 (CEST)

[modifier] Move et Resize

Pour info, tout nouveau tout chaud, pour les scripteux qui en auraient l'utilité.

J'ai pû tester sous Firefox et IE, ça marche au poil.

⇨ Dr Brains ∞ Doléances ∞ 26 septembre 2010 à 10:29 (CEST)

[modifier] Boites déroulantes et égyptologie

Bonjour, j’ai deux questions concernant les boîtes déroulantes :

  1. le modèle Utilisateur:Tpt/Modèle:Titulature inséré dans cette page de test Utilisateur:Tpt/Exemple_modèles_pharaon_avec_Ramsès_II n’affiche pas son lien pour se dérouler alors que cela marche très bien dans la documentation du modèle. Comment faire pour corriger le bug ?
  2. Est il possible de laisser par défaut les boites déroulantes ouvertes comme cela est fait avec les palettes de navigation ? Faudrait-il alors modifier le javascript de wikipédia ?

Merci d’avance pour vos réponses, Tpt (d) 26 septembre 2010 à 13:51 (CEST)

  1. Utilisateur:Tpt/Infobox pharaon ne contient pas Utilisateur:Tpt/Modèle:Titulature, et n'ai constitué que de sous-modèles Infobox standards. Il est donc logique que rien ne s'affiche.
  2. Non, il faudrait modifier le common.js. Ça a déjà été demandé (pour les évaluations en pdd), donc ça pourrait se faire, mais je ne le ferai pas de ma propre initiative. Dans l'absolu, je ne vois pas bien l'intérêt d'une boîte déroulante qui resterait ouverte dans ce cas précis.
⇨ Dr Brains ∞ Doléances ∞ 26 septembre 2010 à 14:13 (CEST)
Erratum, je n'avais pas vu qu'en fait le modèle était plus bas dans la page. Je vais voir pourquoi ça ne marche pas.
⇨ Dr Brains ∞ Doléances ∞ 26 septembre 2010 à 14:15 (CEST)
Ouais. Bon, en fait, le [dérouler] il est là, mais il est repoussé plus bas à cause des images. J'ai essayé de bidouiller, mais c'est toute la boîte qui était repoussée. Je ne vois pas bien d'où ça vient.
En tout cas, ce n'est pas dû au javascript.
⇨ Dr Brains ∞ Doléances ∞ 26 septembre 2010 à 15:21 (CEST)
Merci pour ton attention. Donc, si je comprends bien, il n’y a pas de solution simple, il faut donc faire attention avec les images (je les ai décalés dans la page de test et tout va bien). Merci beaucoup. Tpt (d) 26 septembre 2010 à 16:33 (CEST)

[modifier] MediaWiki:Gadget-Evaluation.js

Bonjour,

Je pense que ce gadget pourrait être grandement amélioré, avec quelques fonctionnalités :

--Hercule Discuter 26 octobre 2010 à 10:29 (CEST)

En fait {{Article mis en lumière}} ne peut pas être automatisé. La conversion est supercomplexe, et ne demande à s'adapter au cas par cas.
--Hercule Discuter 26 octobre 2010 à 10:37 (CEST)
Il faudrait voir avec Chphe (d · c · b), c'est lui qui a mis à jour ce gadget et en assure le suivi.
⇨ Dr Brains ∞ Doléances ∞ 30 octobre 2010 à 20:53 (CEST)
  • Pour le modèle WP1.0, est-ce vraiment utile ? A priori ce n'est pas le genre de modèle qu'on ajoute/retire fréquemment (la liste d'articles doit être relativement stable, non ?). Le paramètre supplémentaire n'a d'utilité que pour les participants du projet Projet:Wikipédia 1.0.
  • Je ne comprends pas trop. S'il n'y a pas de modèle TODO on ne fait rien, mais s'il existe on ajoute un paramètre à l'interface graphique du gadget ? Dans le deuxième cas, si l'utilisateur demande le retrait du TODO, la sous-page TODO existera toujours et apparaîtra encore dans l'encadré des liens en haut de la page de discussion. Faut-il faire d'autres choses, comme effacer le contenu de la sous-page TODO ?
  • Le {{Article mis en lumière}} a besoin du paramètre de date. Ça demande donc un alourdissement de l'interface graphique pour que l'utilisateur puisse l'entrer. Je ne vois pas trop le gain par rapport à un ajout "manuel" du modèle en page de discussion.
Bref, ça me semble être un alourdissement de l'interface et une complexification du code du script pour des fonctionnalités à usage plutôt restreint. --CHristoPHE (d) 5 novembre 2010 à 20:22 (CET)
Ok, merci de t'être penché sur la question --Hercule Discuter 11 novembre 2010 à 00:54 (CET)

[modifier] Recuperer la valeur du texte selectionne

Tcho

en javascript (bien sur), j'aimerais savoir comment recuperer dans une variable le texte selectionne par la souris... Poleta33 (d) 20 novembre 2010 à 15:06 (CET)

Sélectionné où ? Dans la fenêtre de modification ou n'importe où sur la page ?
Pour le première solution, quelques pistes ici et là (fonction insertTags() )
Pour la deuxième solution, voir peut-être du côté du gadget dictionaryLookupHover (fonction wiktLookup.rangeToWord)
⇨ Dr Brains ∞ Doléances ∞ 20 novembre 2010 à 16:25 (CET)
merci beaucoup, c'etait le premier cas et ça marche
allez je tombe dans la facilité et j'ose encore une question :
est-ce qu'il y a une fonction pour faire un "copy to clipboard" d'un variable ? Poleta33 (d) 20 novembre 2010 à 22:00 (CET)
? Qu'entends-tu par "copy to clipboard" ?
⇨ Dr Brains ∞ Doléances ∞ 20 novembre 2010 à 23:31 (CET)
j'ai la valeur d'une une variable que je voudrais mettre automatiquement dans le buffer (comme si j'avais fait un CTRL+C)... je me demande si je suis vraiment plus clair... Poleta33 (d) 20 novembre 2010 à 23:38 (CET)
Mouais. En fait non, pas vraiment ;)
Bon, je vais partir du principe que ce que tu appelles "buffer" c'est la fenêtre de modification (<textarea id="wpTextbox1">)
Donc tu as :
var AncienneValeur = document.getElementById("wpTextbox1").value ;
qui te donne l'ancien contenu de la fenêtre de modif.
Après ça dépend où tu veux ajouter le nouveau bout de texte. Au début, à la fin, à un endroit précis, en remplacement d'une chaîne définie, d'une chaîne sélectionnée, etc...
Au final, tu fais juste
document.getElementById("wpTextbox1").value = NouvelleValeur;
et le tour est joué.
Après avoir fait un tour ici, je me rends compte que ce que tu essayes de faire ressemble pas mal à Mediawiki:Gadget-OuvrageArticle.js, appliqué au modèle {{Article scientifique}}. Peut-être une piste supplémentaire à explorer.
⇨ Dr Brains ∞ Doléances ∞ 21 novembre 2010 à 00:21 (CET)
Bon, je me suis plongé un peu dans ton code.
Déjà, il est clair que tu avais trouvé Mediawiki:Gadget-OuvrageArticle.js. <mode style="je m'la pète">Je reconnais ma patte (presque) inimitable</mode>...
Ensuite, deux choses :
  • La fonction Articlescientifique_Pasteselected() : tu n'as pas besoin de lancer Articlescientifique_Preview(); à la fin, car c'est fait via Articlescientifique_CheckMenu(); juste avant.
  • La fonction Articlescientifique_Copysolution(), ou tu sembles avoir ton problème : je ne vois pas trop ce que tu veux faire exactement. Copier le contenu de la textarea dans le presse-papier ?
⇨ Dr Brains ∞ Doléances ∞ 21 novembre 2010 à 00:39 (CET)
Merci beaucoup pour ton aide !
comme je ne fais du javascript que depuis une semaine, j'ai pris du code source existant (sinon meme si je connais les expressions regulières j'y aurais passé plusieurs mois Clin d'œil) et j'ai effectivement repompé Mediawiki:Gadget-OuvrageArticle.js (il faut d'ailleurs que je l'écrive dans les commentaires de l'en-tête)...
  • c'est juste
  • Copier le contenu de la textarea dans le presse-papier : exactement
Poleta33 (d) 21 novembre 2010 à 11:25 (CET)
Tcho
tu as pu trouver quelque chose ? Poleta33 (d) 22 novembre 2010 à 09:25 (CET)
c'est bon j'ai trouvé (sur le net)... je ne pensais pas que ça pouvait être aussi complexe ! un grand merci pour tout ! Sourire Poleta33 (d) 22 novembre 2010 à 10:47 (CET)

[modifier] Impossible d'afficher l'onglet "gadgets" dans la "préférence"

Bonjour, J'ai installé l'extension Gadgets dans mon wiki. Dans "Spécial:Version", il est bien installé, sauf qu'il n'apparait pas dans "préférence". Que faire SVP? MERCI Zara,

Solution ici (en anglais).
⇨ Dr Brains ∞ Doléances ∞ 23 novembre 2010 à 17:59 (CET)

[modifier] Deux lignes dans Common.js

Bonjour,

Afin d'améliorer l'accessibilité web (des pages utilisant par exemple le Modèle:Images), je propose de modifier MediaWiki:Common.js en lui ajoutant :

       leftlink.title="Illustration précédente";

et

       rightlink.title="Illustration suivante";

Ce qui donnerait :

     var leftlink;
     var rightlink;
     if (j != 0) {
       leftlink = document.createElement("a");
       leftlink.href = "javascript:toggleImage("+i+","+j+","+(j-1)+");";
       leftlink.innerHTML="◀";
       leftlink.title="Illustration précédente";
     } else {
       leftlink = document.createElement("span");
       leftlink.innerHTML=" ";
     }
     if (j != units.length - 1) {
       rightlink = document.createElement("a");
       rightlink.href = "javascript:toggleImage("+i+","+j+","+(j+1)+");";
       rightlink.innerHTML="▶";
       rightlink.title="Illustration suivante";
     } else {
       rightlink = document.createElement("span");
       rightlink.innerHTML=" ";
     }

Je compte faire la demande après avoir eu d'éventuels retours ici. --Manu1400 (d) 27 novembre 2010 à 20:35 (CET)

Pas d'objection. La modif me semble souhaitable.
Du coup, je l'ai faite.
⇨ Dr Brains ∞ Doléances ∞ 27 novembre 2010 à 22:07 (CET)
C'est un peu dommage de ne pas avoir modifié au passage les .innerHTML="◀" etc. au profit d'icônes plutôt qu'un caractère unicode toujours un peu périlleux quand à sa restitution pour certains utilisateurs et par ailleurs très moche. Mais sinon, c'est bien vu en effet. Cordialement, --Lgd (d) 28 novembre 2010 à 12:00 (CET)
C'est encore faisable.
J'ai cherché sur commons les icônes de flèche les moins lourds possibles, j'ai trouvé Arr l.png et Arr r.png (473 octets à elles deux)
Si OK, je les y mets :
//Avant
         leftlink.innerHTML="◀";

//Après
         var leftArrow = document.createElement('img');
         leftArrow.src= "http://upload.wikimedia.org/wikipedia/commons/1/13/Arr_l.png";
         leftArrow.width = "12px";
         leftArrow.height = "12px";
         leftArrow.alt = "Précédent";
         leftlink.appendChild(leftArrow);

//Avant
         rightlink.innerHTML="▶";

//Après
         var rightArrow = document.createElement('img');
         rightArrow.src= "http://upload.wikimedia.org/wikipedia/commons/a/ad/Arr_r.png";
         rightArrow.width = "12px";
         rightArrow.height = "12px";
         rightArrow.alt = "Suivant";
         rightlink.appendChild(rightArrow);

⇨ Dr Brains ∞ Doléances ∞ 28 novembre 2010 à 12:22 (CET)
Ça pourrait être peaufiné, je trouve que la pointe de ces flèches pique un peu du nez Mort de rire od†n [dead words] 17 décembre 2010 à 16:53 (CET)
J'ai fait une demande à l'atelier graphique ici, pour obtenir de nouvelles flèches gauche/droite, à partir d'une image qui me semble avoir un meilleur rendu visuel. od†n [dead words] 1 janvier 2011 à 20:39 (CET)
Et voila ! Je vous propose de remplacer Arr l.png Arr r.png par ArrowLeftNavbox.svg ArrowRightNavbox.svg
od†n [dead words] 2 janvier 2011 à 21:17 (CET)

[modifier] Est-il possible d'améliorer le modèle classement alphabétique ?

Bonjour

Suite à une discussion de suppression de la catégorie Titre de film en A j'ai évoqué un problème avec le modèle {{classement alphabétique}}. Hercule m'a conseillé d'en parler ici.

Si on clique sur la case recherche sur les deux premières lettres, on a un énorme pavé difficilement lisible. Est-ce qu'il est possible d'avoir un modèle où l'on clique sur la lettre F, la page présente les bons titres (comme c'est fait actuellement) et une ligne du modèle apparaît avec Fa, Fb, ... Fz si on a besoin de pousser plus loin la sélection ?

Cordialement

--Crazy runner (d) 18 décembre 2010 à 10:41 (CET)

La demande n'est pas très claire, mais je crois avoir compris.
Tu voudrais en fait un modèle {{Sommaire compact catégorie}} amélioré qui , lorsqu'on clique sur une lettre, intègre une forme de {{Sous sommaire compact catégorie}} relatif à la lettre correspondante. C'est bien ça ?
Si c'est ça, ça doit être possible à coder.
⇨ Dr Brains ∞ Doléances ∞ 18 décembre 2010 à 17:41 (CET)
C'est ça. Désolé si je n'étais pas été clair.--Crazy runner (d) 18 décembre 2010 à 17:59 (CET)
Pour tester, copier dans le monobook.js ou le vector.js suivant l'habillage :
Par contre, ça ne présume rien sur le fait de savoir si l'ajout de cette fonctionnalité pour tous sera accepté. Une discussion sur WP:DIMS devra trancher ce point.
⇨ Dr Brains ∞ Doléances ∞ 18 décembre 2010 à 18:27 (CET)
Merci beaucoup, je testerai une fois que j'aurais lu Aide:Monobook et l'autre. Émoticône Malade !+ Outch, y a trop de trucs à apprendre.--Crazy runner (d) 18 décembre 2010 à 18:43 (CET)
Ben ce n'est pas si compliqué. Ça dépend si tu es sous monobook (ancienne interface) ou vector (nouvelle interface) (voir préférences >> habillage ). Suivant le cas, la page à modifier est Utilisateur:Crazy runner/monobook.js ou Utilisateur:Crazy runner/vector.js
Une fois la bonne page repérée, tu n'as plus qu'à
  • y copier-coller le code ci-dessus,
  • recharger le cache du navigateur (ctrl + F5)
  • trouver une catégorie intégrant le modèle {{Sommaire compact catégorie}}, par exemple Catégorie:Film français pour tester l'effet que ça a de cliquer sur les liens (au tout départ, on ne voit pas de différence).
⇨ Dr Brains ∞ Doléances ∞ 18 décembre 2010 à 19:14 (CET)
Parfait, (Smiley: Clin d'œil) Merci beaucoup. C'est super.--Crazy runner (d) 19 décembre 2010 à 08:03 (CET)

Pratique ce script Sourire J'aurais quelques remarques :

  • Tu dois déjà t'en être douté, il serait plus rapide de pouvoir changer de liste de sous-groupe sans avoir à charger auparavant la page de la 1re lettre. La difficulté résiderait surtout au niveau de l'interface, je ne vois pas trop comment on pourrait ajouter ça tout en conservant une interface aussi pratique.
  • Dans le for de SommaireCompactCategorieDeluxe_GetFrom(), a et l sont en globales implicites
  • Tu pourrais encloser les sous-fonctions, pour qu'elles ne soient pas dans l'espace global :

Cordialement, od†n [dead words] 20 décembre 2010 à 21:15 (CET)

  • La difficulté réside dans le choix "par défaut". On pourrait par exemple modifier getFrom() pour qu'il renvoie "A" ou "0" par défaut, mais ça ne serait pas tout à fait correct.
  • Code corrigé
  • On pourrait
Reste à voir si l'ajout de cette fonction dans le Common (déjà bien chargé) sera approuvé. Au pire on peut en faire un gadget.
⇨ Dr Brains ∞ Doléances ∞ 20 décembre 2010 à 22:44 (CET)
Pour la navigation sous-groupe, ce n'est pas exactement ce à quoi je pensais (mais il y aurait effectivement aussi ce point à voir). Suppose que tu te trouves actuellement sur la lettre T. Tu désires trouver un flim dont le titre commence par « Ma ». Tu dois cliquer une fois sur « M », ça chaaaarge la page, et ensuite seulement tu peux cliquer sur le « Ma » qui est apparu en dessous, tu cliques, ça chaaaaarge encore une fois, et tu as enfin le contenu désiré. Ce qui serait sympathique, c'est d'éviter le 1er chargement.
Le problème, niveau interface, étant qu'on doit conserver la fonctionnalité de recherche classique, sur une seule lettre. On ne peut pas non plus faire un systsème où la sous-liste changerait en survolant les lettres de la liste principale, car c'est beaucoup trop petit, et pas forcément intuitif pour tout le monde.
Le top du top, serait un système optionnel (en gadget donc), où la barre prendrait toute la largeur de l'écran[1] (pour augmenter la taille des éléments et les rendre plus aisément cliquables), et où chaque lettre serait un petit onglet. Au survol de l'onglet, la sous-liste correspondante s'affiche en dessous, et on pourrait aussi cliquer directement sur les onglets pour faire une recherche seulement sur la 1re lettre.
Qu'en penses-tu ?
od†n [dead words] 20 décembre 2010 à 23:15 (CET)
  1. avec quand même une limite pour les écrans très très larges
Mouais. M'enfin si tu cherches un truc en "Ma", qu'est ce que tu foutais sur le "T", aussi ? En voilà bien des drôles d'idées !
Plus sérieusement, c'est possible aussi, et pas forcément beaucoup plus complexe. En modifiant les liens déjà présents ("A" à "Z"), pour que lorsqu'on cliques dessus ça fasse apparaître le menu déroulant correspondant ( T - Ta·Tb·....Tz ), le menu correspondant au "from" où l'on se trouve apparaissant automatiquement par défaut.
Je vais voir ça.
⇨ Dr Brains ∞ Doléances ∞ 20 décembre 2010 à 23:28 (CET)

Et voilà !!

⇨ Dr Brains ∞ Doléances ∞ 21 décembre 2010 à 00:09 (CET)

Il y a un bug qui empêche le fonctionnement du script. Dans la fonction SommaireCompactCategorieDeluxe_GetFrom(), si on remplace decodeURIComponent(document.URL) par decodeURIComponent(URL) ça va tout de suite mieux Clin d'œil od†n [dead words] 24 décembre 2010 à 12:02 (CET)
Oups ! Corrigé.
⇨ Dr Brains ∞ Doléances ∞ 24 décembre 2010 à 18:24 (CET)
Ah j'avais oublié de te signaler un autre bug. Le « Letter == FirstLetterFrom » retourne true pour la partie "0-9", ce qui fait qu'au départ (lorsque l'URL actuelle ne contient pas de from=), le lien "0-9" est colorié en noir. En effet, Letter == FirstLetterFrom → « "0" == false » qui est évalué à true. J'ai corrigé de mon côté en passant en comparaison stricte « Letter === FirstLetterFrom » qui évalue bien à false. od†n [dead words] 24 décembre 2010 à 22:57 (CET)
J'ai apporté quelques correction au code. Il ne devrait plus y avoir trop de problème.
⇨ Dr Brains ∞ Doléances ∞ 24 décembre 2010 à 23:22 (CET)
Maintenant que les catégories « titre de film en A » etc. commencent à être supprimées par HerculeBot et que ce script semble au point, que dirais-tu de le passer en production, au moins sous forme d'un gadget dans un premier temps ? Cordialement, od†n [dead words] 31 décembre 2010 à 17:07 (CET)
Fait
obtenir('SommaireCompactCategorieDeluxe');
Pas très chaud pour ajouter directement le code dans le commons. "On" risque de penser que je fais du javascript pour faire du javascript. Une consultation sur le Bistro serait à envisager pour voir si d'autres pensent que ce gadget peut se révéler utile pour tous. Après les fêtes sans doute.
⇨ Dr Brains ∞ Doléances ∞ 31 décembre 2010 à 18:21 (CET)
J'ai posté un message sur le projet Cinéma pour les informer de ce script, je suis sûr que beaucoup de monde va l'apprécier Sourire od†n [dead words] 12 janvier 2011 à 17:33 (CET)

(indent) Le modèle {{Sommaire compact catégorie}} a été déprécié, il est désormais remplacé par un modèle {{Boîte des catégories}} qui est directement inclus dans le message système MediaWiki:Category-article-count. Serait-il possible de mettre à jour le script SommaireCompactCategorieDeluxe ? Par avance merci, od†n ↗blah 14 mars 2011 à 12:32 (CET)

Fait Mise à jour effectuée. Le script cible désormais le ou les modèles {{Boîte des catégories}}
⇨ Dr Brains ∞ Consultation ∞ 15 mars 2011 à 00:39 (CET)
Super, merci beaucoup ! od†n ↗blah 15 mars 2011 à 10:45 (CET)

[modifier] Live RC

Bonsoir,

j'aimerai connaître le code pour masquer l'onglet "Suivre dans LiveRC" ou "ne plus suivre..." qui est apparu bizarrement. Discut' Frakir 2 janvier 2011 à 23:51 (CET)

Salut,
Idéalement il ne faudrait pas que cet onglet soit ajouté automatiquement par LiveRC sans que l'utilisateur l'ai explicitement demandé.
En attendant une correction, tu peux utiliser le code ci-dessous dans ton monobook.js ou vector.js (après LiveRC).
Amicalement — Arkanosis 3 janvier 2011 à 15:47 (CET)
if ((wgNamespaceNumber == 2 || wgNamespaceNumber == 3) && wgPageName.indexOf('/') == -1)
{
  addOnloadHook(function ()
  {
    var node = document.getElementById('p-cactions');
    if (!node)
      return;
 
    var parent = node.getElementsByTagName('ul')[0];
    var child = document.getElementById('ca-livercwatch');
    if (!child)
      return;
 
    parent.removeChild(child);
  });
}
C'est me semble-t-il typiquement le genre de truc qui pourrait faire l'objet d'une extension LiveRC : soit le suivi d'utilisateur (plutôt que l'intégrer directement au code), soit le masquage de l'onglet.
⇨ Dr Brains ∞ Consultation ∞ 3 janvier 2011 à 16:16 (CET)
Plutôt le suivi, amha : les fonctionnalités intrusives c'est mal (même si ça part évidemment d'une bonne intention) et ajouter un onglet pour le retirer ensuite (comme avec la solution que je propose au-dessus) c'est moche et sous-optimal (même si ça marche).
Amicalement — Arkanosis 3 janvier 2011 à 18:58 (CET)
Merci pour le code (bizarrement purger les caches marche jamais tout de suite chez moi, en espérant avoir copier le code où il fallait, pour le moment il n'y a pas d'effet). Discut' Frakir 3 janvier 2011 à 22:58 (CET)
Si tu es sous IE, c'est normal. Il te faut aussi (avant de recharger le cache) :
  • supprimer l'historique de navigation
  • supprimer les fichiers temporaires
dans le menu Outils
<pov type="subliminal"> IE, c'est de la merde </pov>
C'est la bonne page si tu es sous monobook.
⇨ Dr Brains ∞ Consultation ∞ 4 janvier 2011 à 00:59 (CET)
J'ai le même problème avec le monobook de Frakir ; probablement parce que la requête http asynchrone est plus lente que la suppression de l'onglet (donc l'onglet est ajouté après qu'on ait essayé de l'enlever).
Qu'importe, de toutes façons c'est de la bidouille ; je propose qu'on mette directement cette fonctionnalité intrusive en option (désactivée par défaut, comme il se doit) : modification à effectuer. En gros, il faudra faire ceci pour avoir le bouton.
Je me suis demandé si ça valait la peine de lire le LiveRCParam pour cette option et je suis arrivé à la conclusion que non (faire un import quand on lance la lourde machine de LiveRC, pourquoi pas, mais sur chaque PU ça me semble inutilement coûteux…), mais je veux bien d'autres avis…
Amicalement — Arkanosis 4 janvier 2011 à 15:50 (CET)
Tout à fait d'accord pour que les onglets ne se multiplient pas sans bonne raison ni contrôle en tout cas. PS @Dr Brains: Je suis bien sous ff et attention le message subliminal est dangereux! Bonne soirée, Discut' Frakir 4 janvier 2011 à 17:58 (CET)
Je n'avais pas trop pensé à ce problème en le codant. Je suggère de supprimer tout simplement le code "Bouton pour ajout d'un utilisateur en LDS" du script principal. Il est entièrement indépendant de LiveRC non j'ai parlé un peu vite mais ça peut se faire facilement. Et dans l'autre sens, placer ce bout de code dans un autre script permettrait à ceux qui veulent de ne charger LiveRC que sur la page Utilisateur:EDUCA33E/LiveRC, mais d'avoir quand même le bouton sur les pages utilisateur. Je mentionnerai simplement que ça existe dans la documentation. Orlodrim [discuter] 11 janvier 2011 à 22:32 (CET)
Cette approche me semble correcte également… à votre convenance Clin d'œilArkanosis 12 janvier 2011 à 11:16 (CET)
C'est fait : code supprimé de Utilisateur:Orlodrim/LiveRC.js et mis dans Utilisateur:Orlodrim/LRCWatchButton.js. Ma version de LiveRC inclut également les changements déjà expliqués dans Discussion utilisateur:EDUCA33E/LiveRC.js#Annulation et révocation ainsi qu'une n-ième correction d'échappements incorrects (diff complet). Dr Brains, pourrais-tu mettre à jour la version principale ? Orlodrim [discuter] 13 janvier 2011 à 23:08 (CET)
Fait ⇨ Dr Brains ∞ Consultation ∞ 13 janvier 2011 à 23:51 (CET)
Merci, j'ai mis la doc à jour. Orlodrim [discuter] 14 janvier 2011 à 00:59 (CET)
Merci à tous les deux SourireArkanosis 14 janvier 2011 à 10:55 (CET)
C'est moi qui avait demandé (et codé ?) le bouton initialement, et à mes yeux c'était pas intrusif, du moins pas sous vector (il est dans une petite liste déroulante, bien tranquille). Le problème c'est qu'en le supprimant : on peut être certain que personne n'utilisera cette fonctionnalité. Deuxièmement, on commence à avoir des extensions à placer dans le vector.js d'autres dans le LiveRCParams.js, ça commence à devenir le boxon. J'aurais été d'avis de conserver ce bouton dans le code initial quitte à le masquer par défaut et permettre de le faire apparaitre via une option. J'ai un peu peur qu'avec ces extensions la version principale de LiveRC stagne et que toutes les améliorations soient à aller piocher à droite ou a gauche. Argos - oO 19 janvier 2011 à 22:41 (CET)
J'ai été suffisamment ennuyé par des programmes voulant me simplifier la vie contre mon gré pour avoir un avis ferme là-dessus : ça peut effectivement paraître intrusif sous monobook, donc il faut le désactiver par défaut. Si on veut rendre service aux utilisateurs, il vaut mieux documenter tout ça de façon claire. Ensuite, que ce soit une option ou une extension, c'est juste une ligne à ajouter pour l'utilisateur. Pour les autres extensions, on peut voir au cas par cas s'il faut les intégrer au code principal. Orlodrim [discuter] 19 janvier 2011 à 23:29 (CET)
Extension ou option, perso, je n'ai pas de préférence là-dessus ; l'important étant que LiveRC n'aille pas modifier le comportement / l'apparence de Wikipédia ailleurs que là où l'utilisateur l'a explicitement demandé.
Histoire de clarifier un peu la notion d'« intrusion » : de façon générale (c'est-à-dire que ça ne s'applique pas qu'à ce cas particulier) que ce soit dans un menu ou directement visible, voire que ça se contente de modifier le comportement d'un lien déjà existant, et aussi anecdotique que puisse être la fonctionnalité ou la modification, c'est intrusif. Ça peut sembler bénin, mais si deux scripts font la même chose, ça fait deux intrusions. Si dix scripts font la même chose ça fait dix intrusions. Et on finit par se retrouver dans la situation la plus courante sur les ordinateurs personnels fonctionnant sous Windows : Java, OpenOffice / Microsoft Office, Steam, Windows Live Messenger, Adobe Updater, etc. qui se lancent au démarrage de l'ordinateur et qui tournent en tâche de fond pour la seule et unique raison que les développeurs se sont dit que « ça pourrait servir à l'utilisateur » (la plupart du temps en toute bonne foi et avec uniquement de bonnes intentions). Mais le résultat pour le contributeur lambda qui n'a rien demandé (et qui de toutes façons n'y comprends pas grand chose) est que sa machine démarre lentement, fonctionne lentement, plante régulièrement… (dans le meilleurs des cas, lorsque les différentes intrusions n'entrent pas en conflit). Même analogie avec les raccourcis qui s'imposent sur le bureau ou dans le menu démarrer, les favoris qui s'ajoutent dans le navigateur web…
Ne prends surtout pas ça pour une critique négative envers la fonctionnalité en elle-même, hein : elle est incontestablement utile pour certains utilisateurs, mais il ne faut pas l'imposer pour autant à tous.
Amicalement — Arkanosis 20 janvier 2011 à 10:56 (CET)
Bah, quand on voit les hauts cris poussés lorsque j'ai eu l'idée de changer le lien Modifications récente en un double lien Live-RC, on comprend vite qu'un changement même minime de l'interface générale qui peut apparaître bénéfique à certains peut apparaître nuisible à d'autres…
⇨ Dr Brains ∞ Consultation ∞ 20 janvier 2011 à 11:10 (CET)

[modifier] Modèle:Images et Common.js

Bonjour, j'ai un peu regardé le modèle {{Images}} et j'ai repéré une erreur dans la fonction imageGroup qu'il utilise dans le Common.js : il y a un « style.fontweight="bold" ». Noter que la casse est incorrecte, ce qui fait que cette ligne ne fonctionne pas. Il faudrait donc soit supprimer la ligne, soit corriger en fontWeight.

Cordialement, od†n [dead words] 25 janvier 2011 à 10:06 (CET)

Puisqu'on se passe du gras depuis longtemps là-dessus, autant supprimer, ce sera transparent pour les lecteurs. Par contre, j'aurais bien exécuté le tt pour revenir à du sans-serif plus lisible dans ce cas. Non ? Cordialement, --Lgd (d) 25 janvier 2011 à 11:00 (CET)
Je viens de me rappeler qu'on a une autre requête concernant ce modèle, un peu plus haut dans cette page : #Deux lignes dans Common.js ; peut-être pourrait-on s'en occuper par la même occasion.  – od†n [dead words] 25 janvier 2011 à 11:08 (CET)
On dérive franchement vers des modifications de plus en plus visibles, mais oui, tout à fait. Par contre, je me sens paresseux : si je peux avoir le code final à copier coller dans le common.js Mort de rire ? --Lgd (d) 25 janvier 2011 à 11:23 (CET)
Suppression .fontweight et ajout images aux liens.
Pas touché au <tt> par contre. A voir.
⇨ Dr Brains ∞ Consultation ∞ 26 janvier 2011 à 14:37 (CET)
Idée en passant : on pourrait en profiter pour ajouter des boutons pour revenir au début ou à la fin ( Gtk-media-rewind-ltr.svg / Gtk-media-forward-ltr.svg )
Et voir si il n'y a pas d'autres optimisations à faire sur le code actuel.
⇨ Dr Brains ∞ Consultation ∞ 26 janvier 2011 à 14:48 (CET)
(edith) Merci Dr Brains, j'avais commencé à faire ce code en bac à sable mais tu m'as devancé Mort de rire Il y a beaucoup d'autres choses qui seraient à revoir dans ce modèle, le plus prioritaire à mon avis étant la compatibilité avec IE <= 7 ! Il y a aussi le problème du rendu lorsque JS est désactivé, mais je crains que cela soit un problème encore plus difficile à régler ! Une dernière chose que je me demandais, les URL des thumbs PNG de ces images SVG, sont-elles stables dans le temps ? Cordialement, od†n [dead words] 26 janvier 2011 à 14:55 (CET)
Oui, les url sont stables a priori, puisqu'elles correspondent au chemin menant à la miniature créée automatiquement par Mediawiki. Alors à moins qu'un développeur s'amuse à supprimer ces miniatures, il n'y a pas de raison que l'url change.
⇨ Dr Brains ∞ Consultation ∞ 26 janvier 2011 à 15:02 (CET)
J'améliore aussi un peu le modèle de mon côté, quelques remarques dans le plus grand désordre :
  • J'ai fait sauter le with. comme le dit notre gourou Douglas Crrrrford, c'est le Mal, et il a bien raison sur ce coup.
  • OK pour virer le gras, j'ai essayé avec et ça rend vraiment moche. Par contre, préférence personnelle bien entendu, je trouve que ça rend vraiment mieux avec la fonte monospaced.
  • Il est vrai que ce code serait plus élégant s'il était écrit en jQuery ; néanmoins, il faut prendre en considération le problème des performances.
  • J'ai mis en cache les accès .length dans les boucles, comme d'hab'
  • Lors de l'affichage des première et dernière images, j'ai remplacé les &nbsp; par des images en visibility:hidden. Ainsi, les alignements horizontaux et verticaux restent tout propres.
  • Dans le code il y a un « if (document.URL.match(/printable/g)) » pour tester si la page est en version imprimable, par super comme test... (et si l'article contient "printable" dans son titre ?) j'avais pensé à tester sur le document, mais je ne vois pas trop où, d'autant plus que l'utilisateur peut bidouiller la page avec des scripts persos. Donc pour l'instant je suis sur une regex légèrement plus rigoureuse dans ce style : « if (/[?&](?:%20)*printable=[^&]/.test(document.URL)) » (pas encore testée comme il se doit) ; si vous avez meilleure solution je suis preneur.
od†n [dead words] 28 janvier 2011 à 06:38 (CET)
Tester l'absence du bloc HTML de menu, via l'ID ? (BTW: ou est cachée cette excellente page de Dr Brains sur les classes et ID selon les skins ?) Pour le rendu sans JS ou à l'impression, il faudrait que le modèle mette en forme les images dans un tableau similaire à celui de galery (et que le JS modifie le code HTML selon ses propres besoin). Cordialement, --Lgd (d) 30 janvier 2011 à 09:45 (CET)
ici pour les correspondances id/class entre skins.
⇨ Dr Brains ∞ Consultation ∞ 30 janvier 2011 à 14:58 (CET)

[modifier] PaStec

Salut, j'ai créé un nouvel outil pour clore les PaS plus rapidement Utilisateur:Argos42/PaStec, c'est une première version donc il manque pas mal de trucs et j'ai placé les boutons à l'arrache. Néanmoins, l'objectif est de clore les PàS en un clic et ça marche. Si vous voulez tester, améliorer...

[modifier] PaStec Suite

Autre question, peut-on forcer le rechargement du script sans que le client doive ctrl+maj+r ? Argos - oO 30 janvier 2011 à 16:55 (CET)
Non, c'est impossible.
⇨ Dr Brains ∞ Consultation ∞ 30 janvier 2011 à 17:00 (CET)
Même en bidouillant, genre en ajoutant 1ko de "bruit" en commentaires dans le script ? Le cache va vérifier si la page a changé ? je ne me souvient plus comment ça marche... Argos - oO 30 janvier 2011 à 17:08 (CET)
En fait, c'est possible, mais faut bidouiller et forcer l'importation à travers 2 pages.
  • Étape 1 :
L'utilisateur qui importe le script fait comme ceci :
importScript('User:MACHIN/PageIntermediaire.js');
Dans cette page "intermédiaire" se trouve le code suivant :
importScriptURI('http://fr.wikipedia.org/w/index.php?title='
              + 'User:MACHIN/PageGadget.js'
              + '&action=raw&ctype=text/javascript'
              + '&randomparam=' + Math.floor(Math.random()*((1000000)+1))
               );
Le paramètre "randomparam" (qui ne sert à rien en réalité) change à chaque changement de page. En théorie, la page .js ne devrait donc pas être mise en cache et sera rechargée à chaque fois. C'est plus long (puisque pas en cache), mais tout changement est répercuté de suite sans rechargement.
En théorie, on peut se passer de la page intermédiaire, à voir.
A tester. Je ne sais pas si en pratique ça marche.
⇨ Dr Brains ∞ Consultation ∞ 1 février 2011 à 02:47 (CET)
J'avais testé la même chose (avec random param) mais avec importScript, donc forcément ça marchait pas. Merci ! Argos - oO 1 février 2011 à 10:05 (CET)
En fait ça marchera pas, car la page en question (page intermédiaire) est elle même cachée... Argos - oO 1 février 2011 à 14:22 (CET)
Tu es sûr ? La page est cachée, oui, mais pas la valeur de random(). Amicalement — Arkanosis 1 février 2011 à 15:05 (CET)
Ah oui, je suis con...Argos - oO 1 février 2011 à 16:34 (CET)
Orlodrim, Dr Brains, le dépot du bandeau Page conservée ne fonctionne pas si la PDD n'existe pas... J'en ai re-eu la confirmation par Buisson ce matin Argos - oO 1 février 2011 à 14:02 (CET)
J'ai compris pourquoi ça marche pas, le "talkpageheader" est mal formé, ça fait pleurer le Parser, ce dernier ne trouve dont pas wpTextbox1, et donc ça plante. Reste à réparer... Argos - oO 1 février 2011 à 23:10 (CET)
J'ai recodé les fonctions d'édition en utilisant l'API : Utilisateur:Orlodrim/testeditapi.js. C'est plus sûr et ça devrait régler définitivement ce problème. Si l'erreur est dans un message système, tu peux quand même faire une demande de correction sur WP:DIMS. Orlodrim [discuter] 2 février 2011 à 01:00 (CET)
L'erreur ne venait pas du "talkpageheader" mais du "Noarticletext". Il faisait également pleurer LiveRC. A présent ça doit fonctionner mieux.
⇨ Dr Brains ∞ Consultation ∞ 2 février 2011 à 01:50 (CET)
Brains, oui j'ai vu hier le noarticletext ! Merci pour la correction je testerais.
Orlo, pardon mais il me semble que les fonctions d'edit de l'API ne sont qu'accessibles aux admins ou bots. C'est pourquoi LiveRC et PaStec sont codés en "dur"... Argos - oO 2 février 2011 à 10:33 (CET)
Non, et d'ailleurs LiveRC utilise l'API (regarde le code d'annulation). L'intérêt est d'éviter ce genre de problème avec le parsing (d'autant que des problèmes différents peuvent survenir selon le navigateur). Orlodrim [discuter] 2 février 2011 à 10:39 (CET)
Oui je sais bien l'intéret de l'API, mais il me semble que les "write rights" sont seulement donnés aux admins. (puisqu'ils permettent de bloquer). Argos - oO 2 février 2011 à 10:49 (CET)
On peut faire les mêmes actions avec l'API que celles qu'on est autorisé à faire sans. Si le bouton "Annuler" marche dans LiveRC, alors c'est que tu as le droit de modifier une page avec l'API Sourire. Orlodrim [discuter] 2 février 2011 à 10:52 (CET)
Ok, si j'ai le courage je modifierais le code ce soir. Dans ce cas, faudrait réécrire liveRC de cette manière aussi ! Argos - oO 2 février 2011 à 11:10 (CET)
L'écriture via l'API est conditionnée par le droit writeapi, que tout le monde a sur fr:wp (Special:Listgrouprights)
Il me semble que tout ce qui peut se faire via l'API dans LiveRC passe déjà par l'API (blanchiement, révocation, avertissement).
⇨ Dr Brains ∞ Consultation ∞ 2 février 2011 à 11:15 (CET)
Ok, MAJ avec l'api, merci Orlodrim. Argos - oO 2 février 2011 à 23:00 (CET)

[modifier] WYSIWYG

Bonjour, un éditeur WYSIWYG entièrement en JavaScript est en cours de développement sur la Wikipédia anglophone. Cet éditeur WYSIWYG serait un énorme atout pour améliorer la facilité d'édition de Wikipédia.

On peut d'ores et déjà tester la version bêta en ajoutant à son monobook.js ou vector.js la ligne suivante :

document.write('<script type="text/javascript" src="http://toolserver.org/~magnus/wysiwtf/wysiwtf.js"><\/script>');

Ce script est gourmand en ressources, il est en cours d'optimisation. Actuellement, il fonctionne de manière fluide sous Firefox 4 bêta, Chrome 10 (version dev), et quelques autres.

Actuellement, c'est Magnus Manske qui tient à peu près seul ce projet, ce qui risque de ne pas être suffisant pour le mener à terme. Vu que ce projet est particulièrement important pour augmenter la participation aux projets Wikimédia, peut-être que quelqu'un parmi vous se sent de lui donner un coup de main. :-) Bien à vous, Dodoïste [ dring-dring ] 31 janvier 2011 à 22:56 (CET)

ça marche pas, bouuhhh! Snipre (d) 1 mars 2011 à 16:07 (CET)
C'est pas le bon code, il faut ajouter:
importScriptURI("http://toolserver.org/~magnus/wysiwtf/wysiwtf.js");
et cliquer sur le W qui apparaît à côté du bonton "modifier" pour chaque section. Snipre (d) 1 mars 2011 à 16:18 (CET)

[modifier] Pages Liées

C'est un peu la suite logique de PaStec puisque c'est la fonctionnalité manquante de ce dernier.

Voici le message de Gloumouth1 (d · c · b)sur ma PDD :

Bonjour,
je me demandais : existe-t-il un moyen automatique de supprimer toutes les références à cette article supprimé récemment ?
Bien cordialement,
--Gloumouth1 (d) 4 février 2011 à 08:21 (CET)

Que faire ?

  • un outil qui vire automatiquement les liens, indépendant de PaStec
  • un outil integré à PaStec
  • ou le top un outil indépendant que PaStec peut utiliser comme lib

L'autre question est que ça me parait difficielement réalisable : on peut retirer les liens rouges, mais quid des références dans "voir aussi". De plus dans cet exemple, l'article présentait un TI, donc plus que retirer les liens, il faudrait reformuler le texte afin qu'il n'y fasse plus allusion, ... Tout ça me paraît très compliqué. En attendant, je traite pas les pages liées, et c'est mal ! (mais je m'assume). Argos - oO 4 février 2011 à 10:16 (CET)

Ça ne peut être que semi-automatique, pas automatique :
  • Comme tu dis, il faut parfois reprendre le texte avant de le supprimer.
  • Sur une page d'homonymie, il faut supprimer la ligne ou le paragraphe, pas enlever le lien : [3].
  • Parfois, le lien n'est pas directement dans la page liée mais sur une palette [[4]]. Quand la palette est incluse dans des centaines d'articles, on ne peut pas tout vérifier. Il faut alors corriger les modèles et attendre que la liste des pages liées se mette à jour, ce qui n'est pas toujours immédiat.
  • Ce genre de cas n'est pas gérable automatiquement : [5].
J'ai un script pour corriger les ancres brisées User:Orlodrim/ancresbrisees.js, on peut envisager un script auxiliaire fonctionnant sur le même principe.
Orlodrim [discuter] 4 février 2011 à 10:18 (CET)
That's a pain in the ass... Argos - oO 4 février 2011 à 10:23 (CET)
J'ai créé un script auxiliaire qui aide à traiter les cas simples. Il affiche la liste des pages liées à la fin du traitement en suppression (espace principal et modèles). Cette liste contient des liens qui ouvrent des fenêtres d'édition spéciales, où deux boutons permettent de rechercher les occurrences et de les "déwikifier". La version modifiée du script principal est dans User:Orlodrim/PaStec.js, le script pour les pages liées est User:Orlodrim/PaStec-pagesliees.js. A priori, ça marche sous Firefox, mais il y a une telle pénurie de PàS en ce moment que je ne peux pas faire trop de tests Mort de rire. Orlodrim [discuter] 5 février 2011 à 17:55 (CET)

[modifier] Idée, catégorisation via interwiki

Hello, j'ai eu une idée ce matin, pour catégoriser les articles non catégorisés. Je suis pas encore convaincu par la pertinence de l'idée, ni savoir s'il faut un script pour un traitement semi-auto ou un bot qui fait ça en auto...

L'idée de base est de catégoriser les articles via l'interwiki. Ex: je crée un article, et j'ajoute quelques liens interwiki. Le bot/script va faire un tour sur les autres wikis, récupère les catégories puis pour chacune de ces catégories prend l'interwiki pour trouver la catégorie FR correspondante. On ajoute alors dans l'article FR les catégories trouvées sur le plus d'interwikis.

Vos avis... Argos - oO 7 février 2011 à 11:14 (CET)

Pas possible en javascript d’« aller faire un tour sur las autres wikis ».
Il existait un vieux hack qui le permettait via une iframe (utilisé par exemple par iKiwi), mais les développeurs y ont mis fin il y a peu.
Mais sinon un bot "classique" en python ou php doit pouvoir le faire (en semi-automatique).
⇨ Dr Brains ∞ Consultation ∞ 7 février 2011 à 12:47 (CET)
Si, on peut passer par secure... Pas de X-domain comme çà...Argos - oO 7 février 2011 à 13:48 (CET)
A la limite, ouais. C'est donc techniquement possible.
Cela dit, un article non catégorisé n'a en général pas non plus d'interwiki. Dans ces cas-là, il faut trouver un moyen pour chercher l'équivalent allophone avant de lancer le bouzin. Avec un peu de chance, le nom sera le même mais ce n'est pas garanti.
⇨ Dr Brains ∞ Consultation ∞ 7 février 2011 à 14:36 (CET)
Oui, c'est une bonne idée (forcément, je l'avais eue aussi Sourire diabolique).
Par contre, j'étais arrivé à la conclusion qu'on ne pourrait pas laisser un bot faire le travail tout seul sans validation manuelle, à cause des hiérarchies de catégories différentes selon les wikis (on peut avoir une catégorie plus précise sur fr: que sur en:, par exemple, autant en profiter).
Si l'idée est de le faire en JS, outre secure (qui risque d'être sacrément lent), il y a la solution en:JSONP — ça suffit pour ce que faisait iKiwi et je pense que ça suffirait aussi pour ça. Pour aller plus loin, j'ai abordé la question de l'activation du CORS sur les projets de la WMF ; les gens ont l'air plutôt chaud pour ça, donc il y aura un ticket après le déploiement de la 1.17.
Pour le problème des noms des articles, ça pourrait être combiné avec le travail du Projet:Interwikification (DSisyphBot et iKiwi).
Amicalement — Arkanosis 7 février 2011 à 16:25 (CET)

[modifier] MediaWiki 1.17 et ResourceLoader

Pour information : mw:MediaWiki 1.17/Wikimedia deployment. guillom 7 février 2011 à 12:01 (CET)

Beaucoup de boulot en perspective pour mettre à jour tout ça
⇨ Dr Brains ∞ Consultation ∞ 7 février 2011 à 12:51 (CET)
addOnloadHook et importScript sont donc dépréciés… Heureusement que tout le monde utilisait encore addLoadEvent et loadJs Mort de rire.
Plus sérieusement, merci pour le lien SourireArkanosis 7 février 2011 à 16:14 (CET)
Mouais. Encore, pour ça, ça va. J'imagine qu'on pourra toujours faire des "fonctions de redirection" pour assurer la compatibilité, au moins le temps de tout mettre à jour.
Ce qui m'inquiète plus, c'est la dépréciation de sajax_init_object() : la quasi totalité des script faisant des requêtes Ajax (et il y en a un paquet, à commencer par tous les scripts utilisés par mon bot) l'utilisent.
Heureusement que tu es bientôt admin, je me serai trouvé mal de devoir faire tout ça tout seul…
⇨ Dr Brains ∞ Consultation ∞ 7 février 2011 à 16:24 (CET)
Si j'avais su… Sourire diaboliqueArkanosis 7 février 2011 à 16:26 (CET)
Bonjour. Petite question : par quoi conseillez-vous de remplacer addOnloadHook dans son monobook.js ? D'autre part, est-ce que chez vous aussi le chargement du javascript est lent depuis hier ? Ça allait encore hier, et aujourd'hui c'est vraiment lent, de l'ordre de 3 à 4 secondes après le chargement du texte de la page. Cordialement, Freewol (d) 17 février 2011 à 10:53 (CET)
Ne pas remplacer.
Si d'aventure la fonction devait être supprimée par les développeurs, on aurait aussi vite fait de la recréer (ou son équivalent), plutôt que changer toutes ses occurrences par autre chose, tant dans les gadgets que dans les js perso.
Donc, pour l'instant et tant que ça marche, je suis partisan de ne rien faire.
⇨ Dr Brains ∞ Consultation ∞ 17 février 2011 à 10:57 (CET)
Merci pour la réponse rapide Sourire. Freewol (d) 17 février 2011 à 11:42 (CET)

J'ai commencé à travailler sur une jquerisation de Common.js sur Projet:JavaScript/Refonte Common.js avec jQuery. Pour ceux qui ne connaissent pas (encore) jQuery, cette bibliothèque permet essentiellement de remplacer tous les getElementById et de faire des traitements avancés dessus (c'est-à-dire 70 % du code actuel pourrait être remplacé et condensé et optimisé). Il pourrait être l'occasion aussi de rendre plus propre le Common.js (encore une fois), et par exemple j'ai l'impression que toutes les sous-pages de Common.js sont interprétées comme en faisant partie, ce qui permettrait de mieux ranger les fonctions (à vérifier et à discuter).

J'ai hésité à protéger complètement la page vu qu'elle doit à terme remplacer Common.js afin d'éviter que des scripts pirates soient rajoutés, et finalement je l'ai juste semi-protégée ; si ça reste semi-protégé, il faudra absolument vérifier que toutes les modifs sont de source fiable.

Que dites-vous de tout ça ?

~ Seb35 [^_^] 18 février 2011 à 00:35 (CET)

pas d'objection.
Mais je pense que plutôt qu'un changement global, il conviendrait plutôt d'optimiser fonction par fonction. Ça permettrait un meilleur suivi.
De plus, si le but est la performance, il faudrait surtout se concentrer sur :
  • les fonctions très utilisées (manipulation de classes et autres fonctions js du début du code)
  • les fonctions gourmandes en ressources (déplacement des [modifier], boîtes déroulantes et palettes) (Rq : celles-ci ont par ailleurs et pour la plupart déjà été obtimisées, quoique pas en jQuery)
  • Mediawiki:Common.js/edit.js, chargé lors d'une édition et qui s'ajoute à une interface déjà lourde pour ceux qui ont la barre d'outils améliorée
Sinon, tant qu'on est à parler de refonte, je pense qu'il faudrait exiler les codes spécifiques à une page ou une fonction en particulier (Accueil ou pages spéciales, historique ou édition) dans des pages spécifiques, comme cela est déjà fait pour l'édition (Mediawiki:Common.js/edit.js) ou pour Special:Upload (MediaWiki:Onlyifuploading.js).
⇨ Dr Brains ∞ Consultation ∞ 18 février 2011 à 01:05 (CET)
Sur l'idée jQuery, je serais le dernier à protester Mort de rire.
Sur l'idée d'avancer pas à pas plutôt que de tenter une MàJ massive, pareil.
Par contre, une question de principe : multiplier les sous-pages/fichiers de scripts facilite la maintenance, mais ne me semble pas aller dans le sens de la technique d'optimisation en cours ? Je me trompe ?
Quoi qu'il en soit, j'aurais de toute façon tendance, vu le caractère marginal des gains de performances finaux, à privilégier la facilité de maintenance notamment. D'une manière générale, étant assez confronté IRL à la mode de la performance pas toujours très bien comprise (on applique les recettes sans trop réfléchir ni arbitrer), je serai prudent à cet égard. Cordialement, --Lgd (d) 18 février 2011 à 01:14 (CET)
Pour la multiplication des sous-pages : oui et non.
On y gagne dans la plupart des cas, en allégeant le Common.js d'une (ou plusieurs) fonctions généralement inutiles (par exemple le code relatif à Special:Search pour le choix du moteur de recherche est inutile en dehors de cette page).
Mais il est vrai que pour les pages en question, une page .js supplémentaire devra être chargée par le serveur, ce qui constitue un recul en terme de performances.
Mon avis est que, globalement, le résultat en terme de performances sera un gain.
Et bien sur, ce sera plus simple en terme de maintenance.
⇨ Dr Brains ∞ Consultation ∞ 18 février 2011 à 01:26 (CET)
Je suis moyennement sûr pour l'histoire des sous-pages, c'est que j'ai vu sur les sous-pages le message suivant alors qu'il me semble qu'il n'y était pas avant, m'enfin c'est plus ou moins un détail vu qu'on peut aussi charger des sous-pages à notre guise. Sur les sous-pages, il faut surtout réfléchir à bien découper le code et charger avec mw.load.loader ou mw.load.implement correctement (j'ai pas encore regardé dans le détail). Je suis pas sûr que la multiplication de pages impacte vraiment sur les performances, vu qu'il y a des caches à tous les niveaux et que RessourceLoader est pensé pour grouper les requêtes pour le client.
Sinon j'ai créé la sous-page afin de pouvoir jquerifier mais je suis d'accord qu'il ne faut pas tout remplacer d'un coup. Et content de voir ton avis positif, Lgd, sur jQuery (j'ai vu que ça gérait l'ARIA, c'est bon signe). ~ Seb35 [^_^] 19 février 2011 à 01:06 (CET)
Mon avis pour les découpage des sous-pages c'est qu'il faudrait un découpage
  • "Mediawiki:Common.js/" + wgAction + ".js"
  • "Mediawiki:Common.js/" + wgCanonicalSpecialPageName + ".js"
Avec une attention particulière pour la liste de suivi (qui peut être vue en mode "edit").
En d'autres termes, Mediawiki:Common.js/edit.js c'est bon, mais MediaWiki:Onlyifuploading.js devrait être renommée en Mediawiki:Common.js/Upload.js.
⇨ Dr Brains ∞ Consultation ∞ 19 février 2011 à 01:35 (CET)
Ah tiens... Mediawiki:Common.js/Upload.js n'est pas rouge...
⇨ Dr Brains ∞ Consultation ∞ 19 février 2011 à 01:37 (CET)
Je viens de comprendre pour le lien bleu, en fait c'est une feature (presque), et ça montre aussi que je me suis trompé par rapport à l'inclusion automatique des sous-pages de Common.js (c'est mieux ainsi).
Par défaut, avec le système de cache des messages système, toute page de l'espace MediaWiki: dont le message existe est bleu, ainsi MediaWiki:Common.js est bleu. Les sous-pages désignent le message dont la langue est le titre de la première sous-page, donc MediaWiki:Common.js/fi est bleu et est le message système en finnois (pour la petite histoire MediaWiki:Common.js/fi/h est bleu mais la page/message n'existe pas).
Et lorsque la langue n'existe pas, ça switche sur l'anglais, ainsi MediaWiki:Common.js/nrjdln est bleu et mène vers le message en anglais, et MediaWiki:Common.js/nrjdln.js est dans le même cas, mais contrairement à ce qui est écrit en anglais, le contenu de la page ne sera pas inclu par défaut :) En fait, ça tendrait plus à être un bug amha. ~ Seb35 [^_^] 25 février 2011 à 22:31 (CET)

[modifier] Special:Mypage/common.js

J'attire votre attention sur cette excellente nouvelle.

Amicalement — Arkanosis 16 février 2011 à 18:55 (CET)

[modifier] MediaWiki:Gadget-Evaluation.js

Pour ceux qui utilisent ce gadget, avez-vous des problèmes pour l'utiliser ? Snipre (d) 18 février 2011 à 13:28 (CET)

Il est possible que ce soit dû à la nouvelle façon de charger les scripts (cf la discussion deux titres au-dessus). De ce que je vois, 50 % pourrait être mis à jour avec jQuery (essentiellement les getElementById et l'AJAX), mais peut-être n'y a-t-il qu'un endroit qui pose problème. Par exemple, la fonction d'initialisation ressemblerait à quelque chose comme ce qui suit (pas testé, pas complètement sûr que ça marche). ~ Seb35 [^_^] 19 février 2011 à 01:20 (CET)
if( mw.config.get('wgNamespaceNumber') == 0 && mw.config.get('wgAction') == "view" ) $(ev_addEvalTab);
 
function ev_addEvalTab()
{
   var list = $('#p-cactions');
 
   if( list.length == 0 ) return;
 
   list = list.children().eq(3).children().eq(1);
 
   list.append( '<li><a id="caa_evaluation">Évaluer</a></li>' );
   list.find('li').last().find('a').click(ev_launchEval);
   list.removeClass('emptyPortlet');
 
   try {if(alwaysEval){ev_launchEval()}}
   catch(e){ }
}
Merci de ta recherche, mais il faudrait corriger ou alors supprimer ce gadget de la liste: cela ne sert à rien de garder des scripts qui ne marchent pas. Snipre (d) 22 février 2011 à 12:00 (CET)
Fait Corrigé. Le problème était beaucoup plus simple — j'en viens à me demander comment le script a pu fonctionner jusqu'ici Mouais.
Amicalement — Arkanosis 22 février 2011 à 14:40 (CET)
Probablement car la donne a changé sur la portée des variables avec la version 1.17 de MediaWiki. ~ Seb35 [^_^] 25 février 2011 à 22:34 (CET)

[modifier] Zut

PaStec marche plus alors que je n'y ai pas touché, il ne me fait aps de message d'erreur ni rien. Comme si l'API me renvoyait des codes 200 même lorsqu'elle refuse la requête. Faute à la récente MAJ Mediawiki ? Je sais pas ce qu'il se passe... Argos - oO 21 février 2011 à 14:20 (CET)

J'ai essayé, y compris avec mon compte non sysop sous vector, et je n'ai aucun problème. C'était peut-être temporaire. J'ai enlevé le sajax_init_object dans mon script de pages liées, mais a priori ça n'a pas de rapport. Orlodrim [discuter] 21 février 2011 à 20:17 (CET)
PS : tu as bien le message de confirmation qui s'affiche ou ça reste en attente ? Orlodrim [discuter] 21 février 2011 à 20:19 (CET)
Le problème m'a été signalé par KOS, et justement ce qui est chiant c'est que j'ai confirmation et que je n'ai aucun message d'erreur. Je me demande s'il ont pas changé les paramètres de l'API genre mis un antiflood, non ? Argos - oO 21 février 2011 à 20:56 (CET)
Ça peut être lié à une perte temporaire de session (problème courant en ce moment). Dans ce cas, l'appel à l'API doit bien renvoyer une réponse, mais cette réponse indique que l'opération a échoué. J'imagine que le code de retour est 200 et qu'il faut décoder le xml pour le détecter. Orlodrim [discuter] 21 février 2011 à 21:34 (CET)
J'ai maj en tentant de controler les retours api, qui sont bien des retours en 200 dont il faut parser le XML...Argos - oO 21 février 2011 à 22:24 (CET)
Les changements d'API en 1.17 sont listés ici.
Il y a quatre changements qui cassent la rétrocompatibilité : deux concernent l'action patrol, un l'upload et le dernier sur la validation des valeurs que peuvent prendre les paramètres entiers… rien qui ne me choque à première vue… — Arkanosis 22 février 2011 à 11:44 (CET)
Les erreurs que j'ai en retour de l'API de temps a autres sont des "invalid token" Argos - oO 25 février 2011 à 22:43 (CET)
Ah, j'ai eu un problème avec xpatrol après le passage à la 1.17 : les tokens pour patrol se terminent par un caractère d'échappement « \ » urlencodé, ce qui peut poser des soucis avec quelques manipulations a priori sans risque (du genre « innerHTML »). cf. cette discussion. — Arkanosis 26 février 2011 à 16:08 (CET)


Salut, j'ai toujours des "invalid token", ça m'arrive à chaque fois pour la première PaS que je traite de la journée... Après, tout est okArgos - oO 9 avril 2011 à 00:02 (CEST)

Si j'effectue une première contribution avant d'exécuter le script, alors je n'ai pas de bug. Une idée Argos - oO 11 avril 2011 à 23:47 (CEST) ?

[modifier] Déplacement des liens [modifier]

Bonjour, en attendant que la fonction qui déplace les liens [modifier] disparaisse (ce qui arrivera inéluctablement un jour), je propose de remplacer addOnloadHook(setModifySectionStyle); (qui se déclenche au window.load) par $(setModifySectionStyle); (qui se déclenche au fameux document.ready), ce qui devrait supprimer (ou du moins réduire) l'effet de "saut" des liens au chargement des pages. Cordialement, od†n ↗blah 7 avril 2011 à 15:56 (CEST)

J'ai rien contre. Mais c'est sur WP:DIMS qu'il faut aller.
⇨ Dr Brains ∞ Consultation ∞ 7 avril 2011 à 21:36 (CEST)
C'était pour recueillir des avis auparavant, être sûr que la modification convient Clin d'œil od†n ↗blah 7 avril 2011 à 22:17 (CEST)

[modifier] Double barre d'outil

Bonjour,
Un membre de ce projet serait probablement très apprécié dans cette discussion sur les barres d'outils et les gadgets. Merci! — Riba (discuter) 11 avril 2011 à 23:46 (CEST)

[modifier] Boutons de résumé pour P:CS

Bonjour, j’avais une page javascript personnalisée pour les résumés du projet de correction syntaxique, mais ce script n’est plus chargé sans un rafraichissement forcé de chaque page (sous IE9 avec un Ctrl+F5, je n’ai rien du tout qui s’affiche sous Chrome/Firefox). MediaWiki:Gadget-ResumeDeluxe.js fonctionne à chaque fois sans forcer le chargement. Je ne suis pas compétent en javascript pour comprendre pourquoi cela ne fonctionne plus, j’avais adapté l’original en bidouillant. Quelqu'un saurait me dire pourquoi mon semblant de script n’est plus chargé « automatiquement » ? — A2 (d) 16 mai 2011 à 21:14 (CEST)

Je me réponds à moi-même, ça vient d’un conflit avec un autre gadget, plus qu’à trouver lequel… A2 (d) 16 mai 2011 à 21:27 (CEST)
(conflit d'Edith) Bug assez tordu, cela semble en fait venir du script nbspfixer.js que tu charges avant.
Après une purge du cache, ce script sort une erreur "var eucChars undefined", mais pas aux chargements suivants. C'est un problème de synchro, selon que ça soit le document ou le script (en cache ou pas) qui est chargé en premier. À première vue, une correction rapide pourrait être de déplacer la déclaration de eucChars à l'intérieur de la fonction unconvertEvilUnicodeChars(), tout en haut.
Mais là où cela devient amusant, c'est qu'en fait, d'après la description de ton problème, c'est justement lorsque le nbspfixer.js buggue que le summaryCS.js fonctionne Mort de rire
od†n ↗blah 16 mai 2011 à 21:37 (CEST)
Étrange car j’ai désactivé tous les gadgets « officiels » et les deux fonctionnent comme avant. Et si je modifie l’ordre de chargement des deux scripts tout simplement ? Pour le moment j’essaye de réactiver les gadgets un par un… Suspens. — A2 (d) 16 mai 2011 à 21:47 (CEST)

[modifier] Extension pour 'Google Chrome' pour contributeur Wikipedia

Bonjour,
Je ne sais pas trop à qui poser cette question, alors j'éssaie ici à tout hasard:
Connaissez vous une extension pour 'Google Chrome' pour contributeur Wikipedia?
Il y a plein de fonctionnalités qui pourraient être ajoutées:

  • mettre des raccourcis clavier pour les actions wikipedia (modifier, historique, suivre...)
  • ouvrir un onglet pour chaque lien wikipédia sélectionné (J'ai trouvé cette fonctionnalité dans l'extension "Open All Selected Links")
  • ouvrir un onglet en édition pour chaque lien wikipédia sélectionné
  • ...

Amitiés Liné1 (d) 23 mai 2011 à 13:59 (CEST)

A ma connaissance non. J’avais fait une recherche il y a quelques mois. Tpt (d) 15 août 2011 à 20:48 (CEST)

[modifier] Ajout de bandeau Portails

Bonjour.

J'ignore pourquoi, mais je constate que ce projet s'occupe de la pose des bandeaux des portails. Je dis donc cic que le bandeau Portail:Entreprise ne se pose que sur des articles portant sur une personne morale de type entreprise. En conséquence, un article portant sur une personne physique ne peut avoir ce bandeau. Merci de votre compréhension. --Compte Bruno des acacias 18 juin 2011 à 12:26 (CEST)

Ce projet ne s'occupe pas de la pose des bandeaux. --Lgd (d) 18 juin 2011 à 12:47 (CEST)
Je suppose qu'il existe un gadget développé en JavaScript et permettant la pose rapide de bandeau de portail. Mais la demande formulée par Bruno des acacias devrait plutôt être formulée auprès de ceux qui placent un bandeau au mauvais endroit plutôt qu'ici. Ambigraphe, le 18 juin 2011 à 13:37 (CEST)

[modifier] Besoin d'aide pour un script

Je me permets de reprendre la discussion que j'ai lancé sur le Bistro hier, car le script ne fonctionne toujours pas --• Cdt Kesiah [] 10 août 2011 à 08:33 (CEST)

Bonjour,

Je suis en train d'essayer d'installer ce script qui a l'air bien pratique, sur cette page et celle là (oui, l'une des deux ne sert probablement à rien), mais ça n'a pas l'air de fonctionner (je dois mal m'y prendre...). J'ai bien décoché "évaluation" dans mes préférences. Si quelqu'un veut bien m'aider Sourire Cdt --Kesiah (d) 9 août 2011 à 15:36 (CEST)

Salut,
Il faut au contraire cocher la case dans tes préférences.
Au passage :
  • l'importScript était invalide car le script n'est plus à l'emplacement spécifié (corrigé);
  • il vaut mieux utiliser common.js à la place de monobook.js ou vector.js qui dépendent de l'apparence utilisée pour MediaWiki (corrigé aussi).
Donc normalement, tu coches « évaluation » dans Spécial:Préférences#preftab-8 et c'est bon Sourire.
Amicalement — Arkanosis 9 août 2011 à 17:20 (CEST)
Merci beaucoup Arkanosis pour ton aide! Donc j'ai activé "évaluations" dans mes préférences, enregistré, mais le bandeau d'éval' n'apparaît toujours pas en début d'articles... --Kesiah (d) 9 août 2011 à 18:52 (CEST)
Il faut cliquer sur l'onglet (ou le lien dans le menu déroulant) "Évaluer" pour faire apparaître le tableau.
⇨ Dr Brains ∞ Consultation ∞ 9 août 2011 à 19:30 (CEST)
… et si tu n'as ni onglet, ni lien dans le menu déroulant, essaie de faire ctrl+f5 pour vider le cache de ton navigateur. Amicalement — Arkanosis 9 août 2011 à 20:09 (CEST)
Ah oui le bouton... je viens de le voir! ^^ Par contre, quand je clique, je n'ai pas de tableau (je suis chiante, je sais!) j'ai essayé sur plusieurs articles. J'ai l'extension NoScript (si ça peut aider), mais Wikipedia et Wikimedia sont autorisés. Bien cdt --Kesiah (d) 9 août 2011 à 20:26 (CEST)
NoScript ne pose pas de problème chez moi… J'en déduis donc que tu utilises Firefox. Pourrais-tu, après avoir cliqué sur « évaluation » sans que cela ait l'effet escompté, appuyer sur ctrl+maj+j pour faire apparaitre la console d'erreurs de Firefox, et nous indiquer quelles erreurs ont été rencontrées, le cas échéant ? — Arkanosis 10 août 2011 à 11:50 (CEST)
Salut Arkanosis :

>> Quand j'efface la console puis tente (sans recharger le cache) de cliquer sur "éval"

>> Quand je recharge le cache (plein d'avertissements à part ça) --• Cdt Kesiah [] 10 août 2011 à 19:44 (CEST)

Ah… l'id bodyContent ne semble pas exister chez toi… utiliserais-tu une apparence autre que monobook ou vector (voir ici) ? Et si oui, laquelle ? — Arkanosis 11 août 2011 à 10:35 (CEST)
En effet, j'utilisais "Moderne" ; je viens de changer pour "Vector" et ça fonctionne!! Je ne savais pas du tout que l'apparence pouvait jouer là-dedans! Merci beaucoup pour ton aide!! --• Cdt Kesiah [] 12 août 2011 à 12:39 (CEST)
En effet, la structure de l'interface n'est pas la même suivant l'habillage.
J'ai adapté le script pour qu'il fonctionne aussi avec Moderne.
⇨ Dr Brains ∞ Consultation ∞ 12 août 2011 à 20:07 (CEST)

J'ai adapté

Merci à vous deux pour votre aide!! --• Cdt Kesiah [] 12 août 2011 à 22:09 (CEST)

[modifier] MultiHotCats : Ouverture de l'éditeur?

Par défaut, HotCats ouvrait l'éditeur. MultiHotCats modifie la page directement. Je trouve ça dommage, car on pouvait vérifier le tri fait sur la catégorie (primant sur DefaultSort). FHd (d) 14 août 2011 à 12:41 (CEST)

Bonjour.
HotCatsMulti est entièrement configurable. Voir Projet:JavaScript/Notices/HotCatsMulti#Personnalisation, et ma propre personnalisation sur User:Dr Brains/monobook.js.
⇨ Dr Brains ∞ Consultation ∞ 14 août 2011 à 13:02 (CEST)
Certes, mais justement, ça ne m'amuse pas ces fichiers de configuration. D'où ma suggestion que MultiHotCats fonctionne comme HotCats avec par défaut une ouverture de l'éditeur. Merci de votre attention. FHd (d) 14 août 2011 à 17:23 (CEST)
En fait la configuration par défaut de HotCatsMulti est de publier automatiquement car les clefs de tri (principale et dans chaque catégories) sont désormais gérées (cf la doc). Il n'est donc plus nécessaire de vérifier le tri avant la publication.
J'ai peur que si je change, d'autres vont râler parce que ça ne publie plus tout seul.
Pour te faire ta propre configuration, c'est très simple, il te suffit de recopier ceci :
// Personnalisation de HotcatMulti
function hotcat_UserCustom(){ 
     hotcat_autocommit = false;
 
}
dans ta page common.js puis de recharger le cache de ton navigateur.
⇨ Dr Brains ∞ Consultation ∞ 14 août 2011 à 19:05 (CEST)
Merci, j'ai finalement opté pour cette configuration personnalisée. L'éditeur s'ouvre bien mais cela ne prend pas en compte les Préférences de l'éditeur, comme l'éditeur amélioré avec la barre d'outil (Fonctionnalités bêta) ou le Gadgets Searchbox. C'est dommage. FHd (d) 15 août 2011 à 14:02 (CEST)

[modifier] bloc note

Bonjour. Je viens de découvrir le gadget qui permet d'afficher des blocnotes en haut, en bas , à gauche ou à droite de l'écran. L'idée est très intéressante, mais elle n'est pas exploitée jusqu'au bout, et c'est fort dommage… En fait, le principal problème concerne la disparition du contenu lors que :

  • On redémarre le navigateur
  • On change d'onglet
  • On recharge la page
  • On change de page

Je me demandais s'il n'y avait pas moyen de faire passer le contenu des bloc-notes dans des cookies (blocnotes_top, blocnotes_bottom, blocnotes_left et blocnotes_right, par exemple), et de charger ces cookies à chaque rechargement de page ou passage à un autre onglet pour éviter que l'information ne disparaisse…

Au passage, je signale un petit défaut concernant la fermeture du bloc, elle se fait de manière assez aléatoire, et je ne vois pas comment forcer la fermeture. Est-ce un bug, ou moi qui suit nul ?

Cordialement --Pic-Sou (d) 19 août 2011 à 19:04 (CEST)

Dans les cookies, non. Ce serait trop volumineux.
Mais avec des navigateurs récents (HTML5, toussa...), il est possible de sauvegarder des trucs dans une variable persistante globalStorage. C'est d'ailleurs ce que fait le script, faudrait voir pourquoi ça ne fonctionne pas. Peut-être cela vient-il de ton navigateur ?
⇨ Dr Brains ∞ Consultation ∞ 19 août 2011 à 19:45 (CEST)
Bah si je tape quelque chose dans le blocnotes, et que je vais sur une autre page (sans tricher, Clin d'œil je reste dans le même onglet), ça me remet le message du blocnotes vide… --Pic-Sou (d) 19 août 2011 à 20:05 (CEST)
Nota:je suis sous FF6.0. Et je ne parviens toujours pas à fermer le blocnotes… --Pic-Sou (d) 19 août 2011 à 20:09 (CEST)

[modifier] Code review

Bonjour, j'aimerais beaucoup avoir des relectures de 2 scripts que j'ai réécrits :

  • Le 1er script se trouve ici. Il s'agit d'une réécriture du gadget TagFilterDeluxe, qui m'a un peu servi de terrain d'entraînement pour des améliorations que j'aimerais intégrer à HistoryDeluxe (la version de Dr Brains, qui est elle-même un fork de la version en production, très dépassée). Donc, les changements majeurs sont les suivants :
    • Ajax réalisé avec jQuery
    • système de cache en storage HTML5, pour économiser une requête à chaque consultation des pages impactées par le script
    • remaniement du code, notamment pour ne pas polluer l'espace global
  • Le 2e script se trouve ici. C'est une réécriture du JavaScript associé au modèle {{Images}}, se trouvant dans le Common.js. Il ne règle pas les soucis majeurs, notamment la compatibilité <= IE7, mais il permet de préparer le terrain pour l'avenir, j'espère. Donc, quelques changements introduits :
    • Jolies images pour les liens de navigation, et un alignement maintenu tout propre sur les première et dernière images. Résolution des points discutés plus haut sur cette page, ici et ici
    • Bon nettoyage de code, encore une fois jQuery n'y est pas pour rien

Je souhaiterais donc obtenir des avis extérieurs, sur les points qui seraient à améliorer, des passages délicats qui auraient besoin d'être commentés, ou bien entendu des erreurs que j'aurais laissé passer. L'objectif est de passer ces codes en production, et si cela s'avère concluant, je pourrais m'attaquer au script HistoryDeluxe qui me tient à coeur, notamment en ce qui concerne l'affreux système de cache via cookie Mort de rire

Merci d'avance pour vos retours, od†n ↗blah 20 août 2011 à 02:42 (CEST)

Sans avoir testé, le premier me semble pas mal. Cet objet localStorage a l'air intéressant. C'est peut-être lui qu'il faudrait tester pour le script "bloc-note" (cf section ci-dessus). Ça fonctionne quel que soit le navigateur ?
Pour le deuxième. Je n'ai pas vu de gros changements, hormis l'ajout des images et des trois trucs en jQuery. A priori ça devrait être bon. J'imagine que tu n'as pas vraiment pu le tester.
⇨ Dr Brains ∞ Consultation ∞ 20 août 2011 à 13:26 (CEST)
Le localStorage est malheureusement assez peu supporté, cf. table sur QuirksMode (cette table n'est pas à jour, aujourd'hui Chrome et Opera ont ajouté le support). Voir aussi cette question sur Stack Overflow. En gros il ne reste que IE6 et 7 qui nous embêtent… Pour ceux-ci, si le courage en dit à quelqu'un, il y aurait éventuellement la possibilité d'utiliser userData. J'ai essayé rapidement, cela semble fonctionner même si l'élément "conteneur" est généré dynamiquement :
$('#magasin').remove(); // pour éviter d'éventuels doublons au cours des tests
$('#bodyContent').append('<div id="magasin" style="display:none; behavior:url(#default#userData)" />');
 
var nodeMagasin = $('#magasin')[0];
nodeMagasin.setAttribute("coucou", "albert");
nodeMagasin.save("nomObjetStorage");
 
//// Recharger la page ici ////
 
$('#magasin').remove(); // pour éviter d'éventuels doublons au cours des tests
$('#bodyContent').append('<div id="magasin" style="display:none; behavior:url(#default#userData)" />');
 
var nodeMagasin = $('#magasin')[0];
nodeMagasin.load("nomObjetStorage");
alert( nodeMagasin.getAttribute("coucou") ); // tada !
Pour en revenir à mes scripts au dessus, ce qui me préoccupe surtout est la clarté du code, je voudrais savoir s'il y a trucs qui auraient besoin d'être réorganisés ou documentés. Aussi, quelqu'un saurait-il me confirmer qu'il n'y a pas de memory leak dans ma réécriture de TagFilterDeluxe ? Au niveau du handler du document.ready() dans le callback ajax, lequel handler se trouve un scope au dessus, et le tout étant enclosé dans un pattern module Mort de rire À noter que je me sers du document.ready() pour gérer le traitement asynchrone, au lieu du système de flags actuels, c'est-à-dire qu'au moment où il est appelé il peut se déclencher immédiatement ou pas, selon que le DOM soit déjà chargé ou pas.
Quant à la réécriture du script pour les images, j'ai tout à fait pu le tester Clin d'œil J'ai juste eu à forker le modèle pour ne pas entrer en conflit avec l'existant.
od†n ↗blah 21 août 2011 à 10:39 (CEST)

[modifier] X!'s Edit Counter est HS pour les gros comptes

Bonjour,

Cela fait un moment qu'une idée me trotte dans la tête. Si vous connaissez X!'s Edit Counter de Soxred, vous avez peut-être déjà tenté d'obtenir un résumé graphique des contributions d'un wikipédien. Pour Cantons-de-l'Est sur EN.WP, le logiciel fait du bon boulot. Pour Cantons-de-l'Est sur FR.WP, il s'arrête après quelques minutes. Selon certains tests, j'estime sa limite à 20 000 contributions, ce qui exclut au moins 660 contributeurs de la Wikipédia en français. Sur EN.WP, c'est plus de 2 200 contributeurs qui sont exclus, alors que sur DE.WP, c'est environ 585. Plus les années passeront, plus il risque d'y avoir des « exclus ». Désolé, je m'égare.

J'envisage de créer une extension MediaWiki. Elle parcourra l'historique de contributions d'un utilisateur (de Cantons-de-l'Est par exemple) tout en comptant les modifications par espace de noms. Par la suite, elle créera des graphiques similaires à X!'s Edit Counter.

J'ai créé et maintiens une extension Firefox pour faciliter le travail dans Wikipédia, Weekedit. J'ai donc de bonnes connaissances en HTML/JavaScript. Avant de me lancer dans la création d'une extension MediaWiki, j'ai besoin de quelques réponses :

  1. Pour parcourir l'historique, l'extension doit savoir quand une page est complètement chargée. En HTML/JavaScript, c'est OnLoad qui donne cette information. Existe-t-il un équivalent pour MediaWiki ?
  2. Je prévois utiliser la bibliothèque JavaScript Raphaël (Licence MIT). Peut-elle être hébergée sur le site de Wikipédia (ou Commons) ? Je peux l'héberger sur mon site web, mais je préfère qu'elle le soit sur un site plus stable. À moins qu'une bibliothèque SVG ne soit déjà offerte ici ?
  3. Pour le rendu des graphiques, je prévois recourir à window.open() qui ouvrira un nouvelle fenêtre dans laquelle l'extension écrira le code nécessaire. Est-ce que MediaWiki autorise la création d'une telle fenêtre ?
  4. Une fois complétée, j'envisage de rendre l'extension disponible pour n'importe quel projet Wikimedia. Existe-t-il des recommandations pour faciliter la traduction de l'interface ?

Merci pour vos réponses.

Cantons-de-l'Est 25 août 2011 à 16:24 (CEST)

Je ne peux qu'encourager cette création, car moi aussi j'ai ce genre de problème lors que je souhaite voir les éditcounts des piliers de WP. Fais juste gaffe à ne pas avoir le même bug que soxred, qui coupe certains textes sur les images générées !
Et, si possible, je te suggère de regarder aussi ce qui se fait sur Wikichecker qui a à peu près le même problème : un graphique qui réunit le nombre de contributions chaque jour et l'évolution du total du nombre de contributions.
Cordialement --Pic-Sou 25 août 2011 à 16:38 (CEST)
  1. C'est pareil, me semble-t-il. Événement "onload". PS : passer par l'API est plus rapide que requérir l'historique ou les contributions.
  2. Elle peut être hébergée ici, dans l'espace MediaWiki (à moins que sa licence ne le permette pas ?).
  3. Et ?
  4. Non. Tu peux faire comme le truc de géolocalisation du toolserveur, càd avoir le squelette de la page ici dans l'espace Mediawiki ou Modèle (cf. {{GeoTemplate}})
⇨ Dr Brains ∞ Consultation ∞ 25 août 2011 à 16:40 (CEST)
3. Oui, il l'autorise.
⇨ Dr Brains ∞ Consultation ∞ 25 août 2011 à 17:08 (CEST)
Bonjour,

Le script a besoin de connaître le pseudonyme du contributeur pour récupérer les données pertinentes. Il contient prompt() qui s'affiche correctement dans FF, GC et Opera, mais pas dans IE 8.0. Y a-t-il un correctif que je dois appliquer ?

Je me demande également s'il est possible de créer une boîte de dialogue avec des checkbox ? J'ai pensé à une extension de jQuery (par exemple, jquery.simpledialog.js), mais il y a peut-être quelque chose d'autre qui est déjà installé.

Cantons-de-l'Est 31 août 2011 à 15:17 (CEST)
Salut
J'ai regardé vite fait ton code.
Quelques remarques :
  1. La fonction BuildUrlPrefix() est inutile (ou inutilement compliquée). Tu peux créer le début de l'URL avec les variables globales wgServer (http://fr.wikipedia.org), wgScript (/w/index.php), wgScripPath (/w) ou wgArticlePath (/wiki/$1)
  2. La fonction GetNamespacesInfos() ne sert à rien non plus, tu peux retrouver les espaces de noms dans la variable globale wgFormattedNamespaces
  3. Le format JSON n'est pas supporté par tous les navigateurs. Mieux vaudrait utiliser le format XML.
  4. Une boîte de dialogue "sur-mesure" serait le mieux en effet. Le plus simple serait de partir d'une fausse page spéciale (Special:UserEditCount d'où lancer le script et de la construire en javascript (exemple avec Utilisateur:Dr Brains/GlobalWatchlist.js). Cela permettrait de créer des liens du type Special:UserEditCount/User (dans la boîte à outils si on se trouve dans l'espace User ou User Talk) pour un lancement automatique de la recherche des contributions (en récupérant le nom d'user dans l'URL).
  5. L'id "bodyContent" n'existe pas forcément. Il faut aussi tester "mw-contentholder" (Moderne) et "article" (Bleu de Cologne, Standard et Nostalgia). (cf Projet:JavaScript/Développeurs#Équivalences id)
  6. je ne connaissais pas cette action=userdailycontribs de l'API. On en apprend tous les jours...
⇨ Dr Brains ∞ Consultation ∞ 31 août 2011 à 15:44 (CEST)
Bonjour,

Merci pour les informations. J'utilise maintenant wgServer. Je ne parviens pas à extraire facilement les informations de wgFormattedNamespaces : je vais conserver GetNamespacesInfos(), qui m'a déjà coûté trop de temps. Je vais passer au format XML. Je vais probablement y aller d'une URL à la PHP (user=Cantons-de-l'Est&pie_chart=yes&bar_chart=yes) sous Special:UserEditCount, les wikimédiens ne seront pas trop perdus Clin d'œil. Par la suite, je vais intégrer la bibliothèque Raphaël qui produit des images que les quatre navigateur web (FF, GC, IE et Opera) rendent correctement.

Cantons-de-l'Est 31 août 2011 à 20:21 (CEST)

  1. Il faut aussi utiliser wgScript, wgScriptpath ou wgArticlePath sinon ton script fonctionnera mal sur https://secure.wikimedia.org
  2. C'est facile. wgFormattedNamespaces est une Array dont les items sont "nommés" avec les N° des espaces de noms.
    • wgFormattedNamespaces[-1] = "Spécial"
    • wgFormattedNamespaces[0] = ""
    • wgFormattedNamespaces[1] = "Discussion"
    • wgFormattedNamespaces[2] = "Utilisateur"
    • wgFormattedNamespaces[3] = "Discussion utilisateur"
    • ...etc...
    • wgFormattedNamespaces[100] = "Portail"
    • wgFormattedNamespaces[101] = "Discussion Portail"
    • ...etc...
  3. Si tu veux tous les passer en revue, tu peux utiliser une boucle for(... in ...) :
for(var NSnb in wgFormattedNamespaces){
    var NamespaceNumber = NSnb;
    var NamespaceName = wgFormattedNamespaces[NSnb];
    ...
 }
⇨ Dr Brains ∞ Consultation ∞ 31 août 2011 à 20:36 (CEST)
Bonjour,

La bibliothèque Raphaël est vraiment un don des dieux (par exemple, je ne parvenais pas à intégrer correctement la balise <svg> dans une page, alors qu'elle le fait sans sourciller Mort de rire) et ce qu'il est possible de faire avec le standard SVG est proprement hallucinant). Changement d'à-propos, je me demande si je dois compresser cette bibliothèque au format GZIP ou si MediaWiki la compresse automatiquement.

Cantons-de-l'Est 5 septembre 2011 à 18:39 (CEST)

Bonjour,
Je ne vois pas trop comment un script pourrait être compressé manuellement, en tout cas les serveurs HTTP de Wikimedia compressent le contenu à la volée avant de l'envoyer (pourvu qu'ils reçoivent un « Accept-Endoding: gzip » dans l'en-tête HTTP). Le navigateur décompresse de manière transparente. Donc pas besoin de se préoccuper de ça, je pense.
Orlodrim [discuter] 6 septembre 2011 à 23:39 (CEST)

[modifier] Supprimer les liens [révoquer]

Bonjour, concernant les [révoquer] qui s'affichent pour les admins, j'ai beau avoir le gadget pour la fenêtre de confirmation OK/Annuler quand je consulte ma liste de suivi, le temps que tous les scripts se chargent (?) la page s'affiche un peu plus bas, puis remonte d'un coup. Si je fais un clic molette à ce moment, le pop-up de confirmation est shunté, quand je la consulte sur mon téléphone aussi parfois. C'est assez embêtant... Y'aurait-il un moyen de faire disparaître toutes ces mines qui ne me servent pas à grand chose ? Merci d'avance, Totodu74 (devesar…) 10 septembre 2011 à 12:12 (CEST)

Bonjour,
Tu peux masquer les liens [révoquer] de la liste de suivi en ajoutant à Spécial:Ma page/common.css :
.page-Spécial_Liste_de_suivi .mw-rollback-link {display: none;}
En enlevant le .page-Spécial_Liste_de_suivi, ils seront masqués partout. Ça devrait agir plus rapidement que le gadget.
Orlodrim [discuter] 10 septembre 2011 à 12:44 (CEST)
Impeccable, merci beaucoup ! Bisou Totodu74 (devesar…) 10 septembre 2011 à 12:48 (CEST)
Il n'y a pas d'équivalent pour le bouton « bloquer »… je suis très malheureux PleureArkanosis 10 septembre 2011 à 21:05 (CEST)

[modifier] Nettoyage de code

comte Ɲemoi – Bonjour à tous. Dans le cadre d’un petit nettoyage d’automne du Common.css, je vais faire évoluer le modèle : Cadre à onglets de la manière que vous voyez sur mon test8 (avec des appels à test8/0), avec une démonstration sur mon test9. J’ai dû pour cela faire évoluer le bout de code javascript existant — tel que suit —, mais il faut savoir que je suis nul en javascript. Le code actuel fonctionne correctement sur IE8, Chromium et Firefox (c’est déjà un petit exploit), mais je ne doute pas qu’il soit facile de faire bien plus efficace.

Avez-vous des suggestions ? merci d’avance ! ce 2 octobre 2011 à 01:25 (CEST).

Franchement, un script qui ne s'active que dans l'espace Utilisateur:, dédié à un seul modèle qui n'est utilisé que sur 89 PU, j'ai effectivement une suggestion, bien plus radicale :
supprimer (js et css)
Ma PU (et celle de beaucoup d'autres) fonctionne par onglets sans ce gadget et ça marche très bien.
⇨ Dr Brains ∞ Consultation ∞ 2 octobre 2011 à 18:32 (CEST)
Remarque du comte Ɲemoi – Ç’a été utilisé — parce que c’était possible, d’où mon avis qu’il faudrait limiter ce genre d’ajouts — dans des cas où il n’y a pas de solution « simple », voir par exemple l’usage qu’en fait Gdgourou. De plus, sur le cas présent, le besoin se refera probablement sentir, et dans d’autres conditions, d’avoir de tels onglets préchargés ; retirer complètement la solution actuelle me paraît donc une mauvaise idée. Il vaut mieux limiter son impact (ne pas passer par des classes CSS exposées à tous, c’est trop tentant d’utiliser la chose à la légère, voir les tests effectués par plusieurs utilisateurs cités ensuite). Par la modification que je propose, les classes pourront être supprimées (j’ai la validation de Wikialine, me reste celle de Poleta33 à obtenir), et il me semble que ce serait un premier pas qu’il serait bon de ne pas retarder, tant il est facile à faire. Ce 2 octobre 2011 à 20:06 (CEST).

[modifier] Boutons pour édition

Je cherche l'erreur dans le code suivant afin de pouvoir utiliser à nouveau un bouton personnalisé. Qui peut m'aider ? J'utilise le monobook Snipre (d) 8 novembre 2011 à 11:03 (CET)

function importTemplateButton(){
   if (document.createTextNode){
 
        var toolbar = document.getElementById("toolbar"); 
        if (!toolbar) return;
 
        var img = document.createElement("img");
        img.setAttribute("src","http://upload.wikimedia.org/wikipedia/fr/7/77/Button_Chimiebox.png");
        var ref = document.createElement("ref");
        ref.setAttribute("onclick","javascript:importTemplate();"); 
        ref.appendChild(img); 
 
        toolbar.appendChild(ref);
 
        }
}
 
function importTemplate(){
        var request = sajax_init_object();
        request.open('GET', 'http://fr.wikipedia.org/w/index.php?title=Modèle:Chimiebox/Référence&action=raw', true);
        request.send(null);
        request.onreadystatechange = function() {
        if (request.readyState == 4 && request.status == 200) {
        var text = document.getElementById('wpTextbox1');
        text.value = request.responseText + text.value;
        }
        }
        };
 
addOnloadHook(importTemplateButton);
Bonjour,
L'image http://upload.wikimedia.org/wikipedia/fr/7/77/Button_Chimiebox.png n'existe plus. Est-ce que ça marche en mettant http://upload.wikimedia.org/wikipedia/commons/7/77/Button_Chimiebox.png à la place ?
Orlodrim [discuter] 8 novembre 2011 à 15:55 (CET)
Je te l'ai ré-implémenté… ça marche ?
Amicalement — Arkanosis 8 novembre 2011 à 16:24 (CET)
merci. Cela marche. Snipre (d) 8 novembre 2011 à 16:27 (CET)

[modifier] MediaWiki:Gadget-HotCatsMulti.js

Bonjour, en attendant de travailler plus en profondeur sur ce script (je trouve qu'il rame un peu à l'utilisation), j'ai déjà corrigé un bug qui m'avait été signalé il y a quelques mois sur ma pdd. Le code se trouve en sous-page utilisateur. Un confrère pourrait-il vérifier le correctif et le passer en prod ? Merci, od†n ↗blah 13 décembre 2011 à 10:56 (CET)

Fait HotcatsMulti mis à jour.
⇨ Dr Brains ∞ Consultation ∞ 26 décembre 2011 à 14:39 (CET)

[modifier] toolTipPlusMinus, un gouffre à ressources

Message du comte Ɲemoi – J’ai trouvé dans le Common.js le code :

/**
 * Afficher une explication au nombre d'octets dans la liste de suivi
 */
function toolTipPlusMinus() {
  if( mw.config.get('wgCanonicalSpecialPageName') != "Watchlist") return
  var tt = "Nombre d'octets d'écart entre les deux dernières versions de la page";
  var elmts = document.getElementsByTagName("span");
  for(var cpt = 0; cpt < elmts.length; cpt++) {
    if (/mw-plusminus-(pos|neg|null)/.test(elmts[cpt].className) || /mw-plusminus-(pos|neg|null)/.test(elmts[cpt].getAttribute("class")))
      elmts[cpt].title = tt;
  }
}
addOnloadHook(toolTipPlusMinus);

qui me semble dispensable, buggé (il n’agit pas sur les <strong> qui marquent les codes de plus de 500 o…), qui est un gouffre à ressources (notamment pour les appareils mobiles), et n’est même pas désactivable. Qui est pour sa suppression ? si non, est-ce que vous pourriez confirmer que le code :

/**
 * Afficher une explication au nombre d'octets dans la liste de suivi
 */
function toolTipPlusMinus() {
  if( mw.config.get('wgCanonicalSpecialPageName') != "Watchlist") return;
  if (typeof noPlusminusTitles !== 'undefined' && noPlusminusTitles) return;
  var tt = "Nombre d'octets d'écart entre les deux dernières versions de la page";
  $('.mw-plusminus-pos, .mw-plusminus-null, .mw-plusminus-neg').attr('title', tt);
}
addOnloadHook(toolTipPlusMinus);

le remplacerait agréablement ? Ce 22 décembre 2011 à 00:29 (CET).

Comme je n’en ai jamais vu les effets, je n’ai rien contre la suppression. Après, pour le second, je ne sais pas…
Cordialement --Pic-Sou 22 décembre 2011 à 11:20 (CET)
J'avais jamais vu ce tooltip avant que tu en parles ici. Et l'indication qu'il fournit est à proprement parler inutile. Donc je suis favorable à la suppression tout court. Dodoïste [ dring-dring ] 22 décembre 2011 à 11:39 (CET)
Fait Effectué par Dr Brains, merci à lui. od†n ↗blah 25 décembre 2011 à 22:28 (CET)

[modifier] Affichage des boutons indiqués sur Aide:Barre d'outils d'édition

Bonjour,

Je n'arrive pas à afficher la barre d'outils documentée dans Aide:Barre d'outils d'édition. J'ai essayé de passer sur monobook, pour ne pas avoir d'autres scripts, et de remettre toutes mes préférences à zéro, mais elle ne s'affiche jamaie. Même en retirant la barre d'outils avancée. Ce soir je suis sous Aurora, 10.0a2 (2011-12-20), mais il m'arrive aussi d'éditer sous Chrome et Firefox sans jamais voir ces boutons.

Pouvez-vous m'aider à les retrouver ?

J'en aurais besoin parce que je veux me créer un bouton permettant d'ajouter le code d'une infobox dans les articles. Y-a-t-il une autre solution ?

Merci d'avance.

--Hercule (d) 6 janvier 2012 à 03:02 (CET)

Il faut décocher dans les préférences l'option "Activer la barre d’outils améliorée".
⇨ Dr Brains ∞ Consultation ∞ 6 janvier 2012 à 14:33 (CET)
J'ai essayé, mais dans ce cas je n'ai plus aucune barre d'outils --Hercule (d) 6 janvier 2012 à 14:36 (CET)
Est-ce que ça dépend de la page ? Car la barre d'outil ne s'affiche pas tout le temps. Si elle ne s'affiche pas dans le Main, alors y a un pb.
⇨ Dr Brains ∞ Consultation ∞ 6 janvier 2012 à 14:38 (CET)
Je ne la vois nulle part :-( --Hercule (d) 6 janvier 2012 à 15:03 (CET)
Je viens de refaire une RAZ de mes préférences, et je la vois maintenant. Je vais devoir trouver ce qui est incompatible.
--Hercule (d) 6 janvier 2012 à 15:07 (CET)

[modifier] Alternance des couleurs de ligne dans les tableaux (triables ou pas)

Bonjour,
Suite à cette requête sur WP:DIMS qui était en panne, je me suis un peu débattu ce matin avec les soucis liés à l'application automatique de l'alternance de couleurs dans les lignes des tableaux. Voir modifs du common.css, modifs du common.js et la page de test Utilisateur:Lgd/Alternance.

L'essentiel me semble ok, mais il reste quelques bricoles :

  • l'ordre pair/impair est inversé dans IE8 pour les tableaux triables
  • l'alternance n'est pas rétablie dans IE8 après utilisation des boutons de tri (enfin si, mais dans mes tests locaux : pas au premier tri, seulement à partir du second. Je n'ai donc pas déployé cette partie du script pour l'instant).
  • je n'ai pas encore regardé ce qu'il en était de la couleur des .wikitable th[scope=row].

Les modifications sont expliquées sur WP:DIMS. La partie javascript est très limitée (correctif d'accessibilité clavier pour le tri dans tous les navigateurs et fallback de l'alternance pour IE8) contrairement à la partie CSS, mais comme il n'y pas de Projet:CSS, si ça vous dit de jeter un oeil sur le tout... C'est sûrement améliorable. Cordialement, --Lgd (d) 7 janvier 2012 à 16:16 (CET)

[modifier] Inclusion de fichier js par un évènement

Bonjour, je commence tout juste à apprendre le JavaScript et j'ai bien vu qu'on pouvait faire exécuter du code dans une page HTML entre des balises script, par inclusion d'un fichier .js ou sur un évènement, mais je n'arrive pas à combiner les deux dernières méthodes. Autrement dit, j'aimerais qu'un évènement déclenche la lecture d'un fichier .js mais je ne sais pas si c'est possible. S'il y a une bonne âme qui peut me répondre, je la remercie d'avance. Ambigraphe, le 11 janvier 2012 à 22:14 (CET)

http://www.w3schools.com/js/js_events.asp
Il faut d'abord définir ta fonction javascript, puis la faire appeler durant un événement (généralement un clic).
⇨ Dr Brains ∞ Consultation ∞ 11 janvier 2012 à 22:32 (CET)
Je n'ai pas de problème pour assigner une fonction à un évènement, mais je ne sais pas comment faire pour qu'une fonction lance l'exécution d'un script situé sur un fichier .js externe. Ambigraphe, le 12 janvier 2012 à 18:23 (CET)
Et bien il faut déjà importer ce fichier externe, via la fonction importScriptURI()
exemple : importScriptURI('//fr.wikipedia.org/w/index.php?title=Utilisateur:Dr_Brains/LiveRC.js&action=raw&ctype=text/javascript');
Après tu peux faire exécuter les function qui s'y trouvent.
⇨ Dr Brains ∞ Consultation ∞ 12 janvier 2012 à 18:43 (CET)
Oui, cela permet d'importer des fonctions, mais pas d'exécuter les instructions directement (si j'ai bien compris). Ambigraphe, le 12 janvier 2012 à 20:16 (CET)
Mmmh. Si tu explicitais ce que tu veux faire (quel fichier externe, quelle fonction, quel événement, etc...), ce serait plus facile de te guider.
⇨ Dr Brains ∞ Consultation ∞ 12 janvier 2012 à 20:31 (CET)
Le code qui est dans le fichier est exécuté dès que le fichier est chargé. S'il s'agit d'appels de fonction, les fonctions sont appelées.
PS : je me suis permis de supprimer le « http: » dans le importScript : pour que le script puisse fonctionner avec le protocole HTTPS, il ne faut pas forcer le protocole HTTP.
Amicalement — Arkanosis 12 janvier 2012 à 20:44 (CET)

[modifier] Création automatique d'une sous-page à l'aide de Javascript

Comment peut-on créer une sous-page d'un article avec le Javascript? Où pourrais-je en lire ou demander des questions plus exactes?

Je suis pas sûr de bien comprendre.
Sur Wikipédia, les articles n'ont pas de sous-pages.
Un peu plus de précision sur ce que tu souhaites faire serait nécessaire pour pouvoir te répondre.
⇨ Dr Brains ∞ Consultation ∞ 2 février 2012 à 20:51 (CET)
Sur Wikipédia certaines pages dans certaines circonstances ont des sous-pages. C'est le car pour les articles violant les droit d'auteur (d'ailleurs c'est le cas sur lequel je travaille). Si un article est soupçonné de violer le droit d'auteur on crée une sous-page nommée "le_nom_d'article/Droit_d'auteur". Voici une [[6]] exemple.--Kojemiaka (d) 2 février 2012 à 21:29 (CET)
Ah oui, mais ce n'est pas une sous-page de l'article, c'est une sous-page de la page de discussion.
Mais je ne comprends toujours pas ce que tu veux faire exactement avec javascript. Ces sous-pages sont créées après apposition d'un modèle, avec un "template" préchargé. Que veux-tu faire de plus ?
⇨ Dr Brains ∞ Consultation ∞ 2 février 2012 à 21:52 (CET)
Merci pour vos réponses. Vous avez raison, je me suis trompé. Effectivement, je veux pouvoir créer à l'aide de Javascript une sous-page de la page de discussion d'un article soupçonné de violer les droit d'auteur. En bref, je veux en quelque sorte créer un bouton qui pourra être intégré à l'interface de Wikipédia pour automatiser les procédures monotones de traitement d'articles plagiés. Pour ce faire j'utilise Javascript et Ajax, mais je n'arrive toujours pas à créer une sous-page.--Kojemiaka (d) 2 février 2012 à 23:08 (CET)

[modifier] Utilité de la fonction addOnloadHook()

Bonjour, pourquoi est-il recommandé d'utiliser la fonction addOnloadHook() dans son common.js alors que le code s’exécutera correctement même si on l'omet?

addOnloadHook() sert à exécuter une fonction après le chargement de la page. On peut faire autrement mais c'est une méthodes qui a l'avantage d'être simple.
⇨ Dr Brains ∞ Consultation ∞ 2 février 2012 à 20:51 (CET)
Merci pour votre réponse. Et si on ne l'écrit pas, donc le code s’exécutera même sans que la page soit complétement chargée? Je le demande parce que d'après moi ces deux bouts de code travaillent de la même manière. Est-ce que je me trompe?

l'un

   alert ('hello World');

et l'autre

function main () {
   alert ('hello World');
}
 
addOnloadHook(main);
Oui, tu te trompes.
Essayes ceci :
alert ('hello World "normal"');
 
function main () {
   alert ('hello World "addOnloadHook()"');
}
 
addOnloadHook(main);
Tu auras la première pop-up alors que la page n'est pas chargée et est encore blanche.
Et la deuxième pop-up n'apparaîtra qu'une fois la page finie de charger.
Donc, si tu utilises la première méthode pour modifier l'interface, par exemple rajouter un lien utile dans la boîte à outils, ça ne fonctionnera pas.
⇨ Dr Brains ∞ Consultation ∞ 2 février 2012 à 21:47 (CET)
Merci!--Kojemiaka (d) 2 février 2012 à 23:03 (CET)

[modifier] Est-il possible d'afficher un popup jQuery (.dialog( ))?

Bonjour, Je cherche à afficher un popup à l'aide de jQuery sur une page de lecture d'un article (wgAction = "view"), mais je n'arrive pas. Par contre le même code marche bien si j'essaie d'afficher ce popup sur la page de modification d'un article (wgAction = "edit").--Kojemiaka (d) 8 février 2012 à 16:58 (CET)

C'est "==" qu'il faut utiliser pour les tests.
Si ce n'est pas ça, c'est assez compliqué de répondre sans voir le script.
⇨ Dr Brains ∞ Consultation ∞ 9 février 2012 à 21:34 (CET)
Bonjour! Oui, effectivement j'utilise bien sûr "==" pour comparer les valeurs. Le script est ci-dessous. Si je mets "edit" à la place de "view" le code marche bien, mais le popup n'apparaît que dans l'onglet de modification de l'article en question.--Kojemiaka (d) 10 février 2012 à 17:38 (CET)
function addCopyvioTab () {
 
    if(wgAction=="view") {
                $('#p-namespaces ul').append("<li><span><a id='copyvio'>Signaler un copyvio</a></span></li>"); 
   }
 
}
 
$('#copyvio').bind('click', function () {
 
                var newDiv = "<div id='dialog' title='Signaler un copyvio'>Entrez l\'adresse du site qui a 굩 copi頺 <br/><input id='site'/><br/><br/>Commentaires : <br/><textarea id='details'/><div/>"
 
 
                $(newDiv).dialog({ modal: true }, {height:300},
                        {width:500},
                        {buttons:[{text: "signaler le copyvio", click: fuction(){}}, {text: "close", click: fuction(){}}]}
);
 
function main () {
 addCopyvioTab ();
 displayForm ();
}
 
addOnloadHook(main);
Ah, je crois que j'ai compris. Il faut tester (wgAction=="edit" || wgAction=="submit")
Le mode "edit" n'est valable que pour la première édition. Dès la première prévisualisation, le wgAction devient "submit".
⇨ Dr Brains ∞ Consultation ∞ 10 février 2012 à 17:43 (CET)

[modifier] MathJax pour les formules

Bonjour à tous, j'ai écrit un script qui permet d'avoir les formules mathématiques traitées avec MathJax plutôt qu'avec texvc, voir Utilisateur:Ambigraphe/vector.js. Si ça peut être testé par d'autres, ça serait bien, car on m'a demandé d'en faire un gadget (ce que je ne sais faire) et j'espère corriger les défauts éventuels avant de proposer plus largement à la communauté. Bonne journée, Ambigraphe, le 12 février 2012 à 16:14 (CET)

[modifier] ZoomOnThumb sur en.wp

Je veux installer ZoomOnThumb sur en.wp en suivant "Installation sur un autre wiki" sur en.wp, ca ne marche pas. Je suppose que c'est en fait logique... j'ai juste remplacé le fr dans src="http://en.wikipedia.org/w/index.php? , mais je suppose que 'MediaWiki:Gadget-ZoomOnThumb.js' ne peut pas fonctionner là-bas ? (Nb je n'y connais rien en js) --Ofol (moi . ) 1 mars 2012 à 03:12 (CET)

Remplace tout le code par « mw.loader.load('//fr.wikipedia.org/w/index.php?title=MediaWiki:Gadget-ZoomOnThumb.js&action=raw&ctype=text/javascript'); ». Amicalement — Arkanosis 1 mars 2012 à 11:04 (CET)

[modifier] Incitation au résumé

Copiée depuis WP:QT. C'est plus une question des CSS que de JS mais je suis sûr que vous saurez m'aider.

J'utilise ResumeDeluxe et j'ai coché « M’avertir lorsque je n’ai pas spécifié de résumé de modification ». Le message d'incitation à renseigner la boite de résumé (« Afin que les participants […] ») ne m'est pas utile. Comment puis je le masquer ? J'ai bien tenté via les CSS mais je dois faire une erreur. — Mirgolth 1 mars 2012 à 11:34 (CET)

Fait Corrigé. Amicalement — Arkanosis 1 mars 2012 à 12:00 (CET)
Merci ! — Mirgolth 1 mars 2012 à 12:05 (CET)
Outils personnels
Espaces de noms

Variantes
Actions
Navigation
Contribuer
Imprimer / exporter
Boîte à outils