Discussion Projet:JavaScript
| Projet | Fonctions disponibles | Notices | Discussion projet | Signaler un bug | Demander une nouvelle fonction |
| Archives | |
| 2006-2007 | |
| 2008-2009 | |
| 2010 | |
| 2011 | |
Cette page de discussion est destinée aux discussions sur le Projet:JavaScript.
- Si vous souhaitez signaler un bug, utiliser la page de rapport de bug.
- Si vous souhaitez demander une fonction qui ne se trouve pas dans la liste des fonctions disponibles, utilisez la page de demande de fonction.
- Pour tout autre demande, vous êtes au bon endroit.
monobook.css personnel
monobook.css commun
common.css
main.css logiciel- (en) Catalogue of classes
- Index des propriétés CSS2
monobook.js personnel
common.js commun
Projet:JavaScript
Fonctions javascript
[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
. 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
— Arkanosis ✉ 22 janvier 2010 à 17:00 (CET)
- Alors, avec la version de DrBrains (addOnLoadHook), ça fait planter le javascript en fait (mais pas WP
). 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é
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é
. 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
. 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

- @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é
— Arkanosis ✉ 22 janvier 2010 à 17:35 (CET) Oups, navré pour l'erreur à ton pseudonyme. Je vais m'autoflageller de suite
- 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)
- Ahhhhh ok, je n'avais pas envisagé cette possibilité
- 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)
- Alors, avec la version de DrBrains (addOnLoadHook), ça fait planter le javascript en fait (mais pas WP
- addOnLoadHook => addOnloadHook. Mais je vais chercher pourquoi le addLoadEvent ne marche pas... même si effectivement il est inutile C'était moi l'auteur
- Ça ne plante plus ... mais ça n'ajoute plus les parenthèses
[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.

- 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 ?
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)
- 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 ?
[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 :
- 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)
- 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)
/////////////////////////////////////////////////////////////////////////////// // * 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; } ///////////////////////////////////////////////////////////////////////////////
[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 :
- D'ajouter un bouton dans la barre d'outils
- 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)
- Lorsque clic sur un modèle listé : requête de la page du modèle et importation des paramètres possibles + création formulaire
- 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)
- 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)
- 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)
- 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)
-
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); }
- 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);
[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 :
- J'ai vu qu'elle était disponible dans la variable "wgArticleId", mais comment faire pour que la page de ce wiki me renvoi sa valeur (je ne peux évidement pas mettre un script perso sur tous les wiki ^^) ?
- J'ai aussi pensé récupérer l'adresse du dernier diff de la page (ex:
http://fr.wikipedia.org/w/index.php?title=xxxx&action=historysubmit&diff=524845625&oldid=45805615) : le paramètre "diff" en GET donnerait ainsi la solution ; mais comment avoir cette adresse ?
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
(problème de sécurité, là aussi).
document.domain = 'wikipedia.org';
-
- 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
. 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)
— Arkanosis ✉ 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...
). - ⇨ Dr Brains ∞ Doléances ∞ 20 avril 2010 à 20:27 (CEST)
- Non, Utilisateur:Dr Brains/GetOtherWikiPage.js était un essai perso "à ma manière", pour tester la ruse de l'
- En fait, je suis passé par un
api.php?action=query&prop=info&titles=MAPAGE&format=jsonpuis 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)
- Recoder quoi ? ⇨ Dr Brains ∞ Doléances ∞ 20 avril 2010 à 20:04 (CEST)
- iKiwi fonctionne
-
[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
- 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)
- 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.
- 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)
-
- Ce serait effectivement pas mal.
- 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).
- 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
- 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)
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 :
- Désactiver HotCats dans les gadgets
- Ajouter à son monobook.js (ou vector.js ou autre suivant l'habillage choisi dans les préférences) le code :
- importScript('Utilisateur:Dr Brains/HotCatsPerso.js');
⇨ 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

- 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)
- 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 ne marche pas chez moi (Firefox sous Ubuntu). Pymouss |Parlons-en| 20 juin 2010 à 12:17 (CEST)
- Documentation complète. Ça manquait.
- ⇨ Dr Brains ∞ Doléances ∞ 21 juin 2010 à 09:25 (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)
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 (
et
plutôt que
et
, 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
et
mais plus visibles que
et
(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)
- 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 :
- 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)
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
... - ⇨ 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
. 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 1991
ENTER" 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 :
réglé - Problème du ENTER qui ne marchait plus comme avant :
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 de la casse de première lettre :
- Très simplement : je clique sur (+) je rentre dans la zone de texte "Naissance en 1991
- 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)
- 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
- Un seul test et je suis déjà convaincu. L'outil est formidable !
— Arkanosis ✉ 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)
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)
- 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)
- Ah, le voila le gadget de mes rêves ! Merci bien. --Gagea (d) 29 juin 2010 à 11:01 (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)
Ç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]
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)
[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 :
TITRE DE LA BOÎTE
PARTIE CACHÉE
BOITE
| 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}}
| Ramsès II | ||||||||
|---|---|---|---|---|---|---|---|---|
| Pharaon | ||||||||
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 | |||||||
|
||||||||
| Biographie | ||||||||
| modifier |
||||||||
|
Généalogie
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Titulature
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| modifier |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
-
-
-
- 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)
-
-
[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 :
- Le gadget ajoute un bouton dans la toolbar
- Un clic sur le bouton crée un champ de texte plus deux boutons OK et Annuler
- L'utilisateur copie-colle le texte puis clique sur OK
- 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)
- 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)
- 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 :
- 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 ?
- 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)
-
- 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.
- 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)
[modifier] MediaWiki:Gadget-Evaluation.js
Bonjour,
Je pense que ce gadget pourrait être grandement amélioré, avec quelques fonctionnalités :
- permettre l'ajout/le retrait du paramètre WP1.0. Il faudrait que le script détecte la présence du modèle {{WP1.0}}, et transforme automatiquement ce modèle en paramètres.
- idem pour {{Todo}} (alias {{TODO}} ou {{à faire}}), mais uniquement dans le cas où le contenu du TODO est en sous-page
- éventuellement ajouter l'intégration automatique d'autres paramètres, comme
{{Article mis en lumière}} (alias {{Accueil Lumière sur}} ou {{accueilLumièreSur}}) ou{{Article Wikiconcours/septembre 2010}}
--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)
-
[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
) 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)
- 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)
[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,
[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 un peu dommage de ne pas avoir modifié au passage les
//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
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
par

- – od†n [dead words] 2 janvier 2011 à 21:17 (CET)
- Et voila ! Je vous propose de remplacer
- 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)
- Ça pourrait être peaufiné, je trouve que la pointe de ces flèches pique un peu du nez
- ⇨ Dr Brains ∞ Doléances ∞ 28 novembre 2010 à 12:22 (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 :
- C'est ça. Désolé si je n'étais pas été clair.--Crazy runner (d) 18 décembre 2010 à 17:59 (CET)
if(wgNamespaceNumber==14 && (wgAction=="view"||wgAction=="purge") ) addOnloadHook(SommaireCompactCategorieDeluxe); function SommaireCompactCategorieDeluxe(){ var Sommaire = document.getElementById("SommaireCompactCategorie"); if(!Sommaire) return; var From = SommaireCompactCategorieDeluxe_GetFrom(); if(!From) return; var FirstLetterFrom = From[0]; var TR = Sommaire.getElementsByTagName('tr'); var LastTR = TR[(TR.length-1)]; if(From == FirstLetterFrom){ var LastTRLinks = LastTR.getElementsByTagName('a'); for(var a=0,l=LastTRLinks.length;a<l;a++){ if(!LastTRLinks[a]) continue; if(LastTRLinks[a].innerHTML != FirstLetterFrom) continue; var Strong = document.createElement('strong'); Strong.className = "selflink"; Strong.innerHTML = LastTRLinks[a].innerHTML; LastTRLinks[a].parentNode.insertBefore(Strong, LastTRLinks[a]); LastTRLinks[a].parentNode.removeChild(LastTRLinks[a]); } } var NewTR = document.createElement('tr'); var NewTD = document.createElement('td'); var TDContent = SommaireCompactCategorieDeluxe_CreateLinks(FirstLetterFrom, From); NewTD.innerHTML = TDContent; NewTR.appendChild(NewTD); insertAfter(LastTR.parentNode, NewTR, LastTR); } function SommaireCompactCategorieDeluxe_GetFrom(){ try{ var From = false; var Params = decodeURIComponent(document.URL).split('&'); for(var a=0,l=Params.length;a<l;a++){ if(Params[a].indexOf("from=")==-1) continue; From = Params[a].split("=")[1].substring(0,2); } return From; }catch(e){ return false; } } function SommaireCompactCategorieDeluxe_CreateLinks(FirstLetterFrom, From){ var TDContent = new Array(); TDContent.push(SommaireCompactCategorieDeluxe_CreateLink(FirstLetterFrom+"a", From)); TDContent.push(SommaireCompactCategorieDeluxe_CreateLink(FirstLetterFrom+"b", From)); TDContent.push(SommaireCompactCategorieDeluxe_CreateLink(FirstLetterFrom+"c", From)); TDContent.push(SommaireCompactCategorieDeluxe_CreateLink(FirstLetterFrom+"d", From)); TDContent.push(SommaireCompactCategorieDeluxe_CreateLink(FirstLetterFrom+"e", From)); TDContent.push(SommaireCompactCategorieDeluxe_CreateLink(FirstLetterFrom+"f", From)); TDContent.push(SommaireCompactCategorieDeluxe_CreateLink(FirstLetterFrom+"g", From)); TDContent.push(SommaireCompactCategorieDeluxe_CreateLink(FirstLetterFrom+"h", From)); TDContent.push(SommaireCompactCategorieDeluxe_CreateLink(FirstLetterFrom+"i", From)); TDContent.push(SommaireCompactCategorieDeluxe_CreateLink(FirstLetterFrom+"j", From)); TDContent.push(SommaireCompactCategorieDeluxe_CreateLink(FirstLetterFrom+"k", From)); TDContent.push(SommaireCompactCategorieDeluxe_CreateLink(FirstLetterFrom+"l", From)); TDContent.push(SommaireCompactCategorieDeluxe_CreateLink(FirstLetterFrom+"m", From)); TDContent.push(SommaireCompactCategorieDeluxe_CreateLink(FirstLetterFrom+"n", From)); TDContent.push(SommaireCompactCategorieDeluxe_CreateLink(FirstLetterFrom+"o", From)); TDContent.push(SommaireCompactCategorieDeluxe_CreateLink(FirstLetterFrom+"p", From)); TDContent.push(SommaireCompactCategorieDeluxe_CreateLink(FirstLetterFrom+"q", From)); TDContent.push(SommaireCompactCategorieDeluxe_CreateLink(FirstLetterFrom+"r", From)); TDContent.push(SommaireCompactCategorieDeluxe_CreateLink(FirstLetterFrom+"s", From)); TDContent.push(SommaireCompactCategorieDeluxe_CreateLink(FirstLetterFrom+"t", From)); TDContent.push(SommaireCompactCategorieDeluxe_CreateLink(FirstLetterFrom+"u", From)); TDContent.push(SommaireCompactCategorieDeluxe_CreateLink(FirstLetterFrom+"v", From)); TDContent.push(SommaireCompactCategorieDeluxe_CreateLink(FirstLetterFrom+"w", From)); TDContent.push(SommaireCompactCategorieDeluxe_CreateLink(FirstLetterFrom+"x", From)); TDContent.push(SommaireCompactCategorieDeluxe_CreateLink(FirstLetterFrom+"y", From)); TDContent.push(SommaireCompactCategorieDeluxe_CreateLink(FirstLetterFrom+"z", From)); return TDContent.join("·"); } function SommaireCompactCategorieDeluxe_CreateLink(From, CurrentFrom){ if(From == CurrentFrom){ return '<strong class="selflink">'+From+'</strong>'; }else{ return '<a href="' + wgServer + wgScript + '?title=' + encodeURIComponent(wgPageName) + '&from=' + From + '">'+From+'</a>'; } }
-
-
- 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.
+ 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,
Merci beaucoup. C'est super.--Crazy runner (d) 19 décembre 2010 à 08:03 (CET)
- Parfait,
- Merci beaucoup, je testerai une fois que j'aurais lu Aide:Monobook et l'autre.
-
Pratique ce script
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
fordeSommaireCompactCategorieDeluxe_GetFrom(),aetlsont en globales implicites - Tu pourrais encloser les sous-fonctions, pour qu'elles ne soient pas dans l'espace global :
function SommaireCompactCategorieDeluxe() { // code principal ici... function getFrom() { // ... } function createLinks(firstLetterFrom, from) { // ... } function createLink(from, currentFrom) { // ... } // ... ou ici, fonctionnement identique }
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)
- 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à !!
if(wgNamespaceNumber==14 && (wgAction=="view"||wgAction=="purge") ) addOnloadHook(SommaireCompactCategorieDeluxe); var SommaireCompactCategorieDeluxe_Letters = new Array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"); function SommaireCompactCategorieDeluxe(){ var Sommaire = document.getElementById("SommaireCompactCategorie"); if(!Sommaire) return; var FirstLetterFrom = false; var From = SommaireCompactCategorieDeluxe_GetFrom(); if(From||From==0) FirstLetterFrom = From[0]; var TR = Sommaire.getElementsByTagName('tr'); var LastTR = TR[(TR.length-1)]; var LastTRLinks = LastTR.getElementsByTagName('a'); for(var a=0,l=LastTRLinks.length;a<l;a++){ var Link = LastTRLinks[a]; var Letter = SommaireCompactCategorieDeluxe_GetFrom(Link.href); if(Letter===false) continue; Link.href= "javascript:SommaireCompactCategorieDeluxe_ShowMenu(\'"+Letter+"\', \'"+From+"\');"; Link.target = ""; Link.className = ""; if(Letter === FirstLetterFrom) Link.style.color = "black"; } if(FirstLetterFrom||FirstLetterFrom==0) SommaireCompactCategorieDeluxe_ShowMenu(FirstLetterFrom, From); } function SommaireCompactCategorieDeluxe_ShowMenu(Letter, From){ var OldMenu = document.getElementById("SommaireCompactCategorieBis"); if(OldMenu) OldMenu.parentNode.removeChild(OldMenu); var Sommaire = document.getElementById("SommaireCompactCategorie"); var TR = Sommaire.getElementsByTagName('tr'); var LastTR = TR[(TR.length-1)]; var NewTR = document.createElement('tr'); NewTR.id = "SommaireCompactCategorieBis"; var NewTD = document.createElement('td'); var TDContent = SommaireCompactCategorieDeluxe_CreateLinks(Letter, From); NewTD.innerHTML = TDContent; NewTR.appendChild(NewTD); insertAfter(LastTR.parentNode, NewTR, LastTR); } function SommaireCompactCategorieDeluxe_GetFrom(URL){ if(!URL) URL = document.URL try{ var From = false; var Params = decodeURIComponent(URL).split('&'); for(var a=0,l=Params.length;a<l;a++){ if(Params[a].indexOf("from=")==-1) continue; From = Params[a].split("=")[1].substring(0,2); } return From; }catch(e){ return false; } } function SommaireCompactCategorieDeluxe_CreateLinks(Letter, From){ var TDContent = new Array(); for(var a=0,l=SommaireCompactCategorieDeluxe_Letters.length;a<l;a++){ TDContent.push(SommaireCompactCategorieDeluxe_CreateLink(Letter+SommaireCompactCategorieDeluxe_Letters[a].toLowerCase(), From)); } return SommaireCompactCategorieDeluxe_CreateLink(Letter, From) + " — " + TDContent.join("·"); } function SommaireCompactCategorieDeluxe_CreateLink(From, CurrentFrom){ if(From === CurrentFrom){ return '<strong class="selflink">'+From+'</strong>'; }else{ return '<a href="' + wgServer + wgScript + '?title=' + encodeURIComponent(wgPageName) + '&from=' + From + '">'+From+'</a>'; } }
⇨ 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)pardecodeURIComponent(URL)ça va tout de suite mieux
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 defrom=), 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)

- 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
od†n [dead words] 12 janvier 2011 à 17:33 (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
- 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)
- Ah j'avais oublié de te signaler un autre bug. Le «
(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)
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)
[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.
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).
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,
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 LiveRCnon 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
— Arkanosis ✉ 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)
⇨ 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
— Arkanosis ✉ 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)
- 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)
- Merci à tous les deux
- Merci, j'ai mis la doc à jour. Orlodrim [discuter] 14 janvier 2011 à 00:59 (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)
- Cette approche me semble correcte également… à votre convenance
- 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
- Si tu es sous IE, c'est normal. Il te faut aussi (avant de recharger le cache) :
- 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).
[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
ttpour 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)
/** * Utilisation du modèle Modèle:Images */ function toggleImage(group, remindex, shwindex) { document.getElementById("ImageGroupsGr"+group+"Im"+remindex).style.display="none"; document.getElementById("ImageGroupsGr"+group+"Im"+shwindex).style.display="inline"; } function imageGroup(){ if (document.URL.match(/printable/g)) return; var bc=document.getElementById("bodyContent"); if( !bc ) bc = document.getElementById("mw_contentholder"); if( !bc ) bc = document.getElementById("article"); if( !bc ) return; var divs=bc.getElementsByTagName("div"); var i = 0, j = 0; var units, search; var currentimage; var UnitNode; for (i = 0; i < divs.length ; i++) { if (divs[i].className != "ImageGroup") continue; UnitNode=undefined; search=divs[i].getElementsByTagName("div"); for (j = 0; j < search.length ; j++) { if (search[j].className != "ImageGroupUnits") continue; UnitNode=search[j]; break; } if (UnitNode==undefined) continue; units=Array(); for (j = 0 ; j < UnitNode.childNodes.length ; j++ ) { var temp = UnitNode.childNodes[j]; if (temp.className=="center") units.push(temp); } for (j = 0 ; j < units.length ; j++) { currentimage=units[j]; currentimage.id="ImageGroupsGr"+i+"Im"+j; var imghead = document.createElement("div"); var leftlink; var rightlink; if (j != 0) { leftlink = document.createElement("a"); leftlink.href = "javascript:toggleImage("+i+","+j+","+(j-1)+");"; leftlink.innerHTML="◀"; leftlink.title="Image 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="Image suivante"; } else { rightlink = document.createElement("span"); rightlink.innerHTML=" "; } var comment = document.createElement("tt"); comment.innerHTML = "("+ (j+1) + "/" + units.length + ")"; with(imghead) { style.fontSize="110%"; style.fontweight="bold"; appendChild(leftlink); appendChild(comment); appendChild(rightlink); } currentimage.insertBefore(imghead,currentimage.childNodes[0]); if (j != 0) currentimage.style.display="none"; } } } addOnloadHook(imageGroup);
/** * Utilisation du modèle Modèle:Images */ function toggleImage(group, remindex, shwindex) { document.getElementById("ImageGroupsGr"+group+"Im"+remindex).style.display="none"; document.getElementById("ImageGroupsGr"+group+"Im"+shwindex).style.display="inline"; } function imageGroup(){ if (document.URL.match(/printable/g)) return; var bc=document.getElementById("bodyContent"); if( !bc ) bc = document.getElementById("mw_contentholder"); if( !bc ) bc = document.getElementById("article"); if( !bc ) return; var divs=bc.getElementsByTagName("div"); var i = 0, j = 0; var units, search; var currentimage; var UnitNode; for (i = 0; i < divs.length ; i++) { if (divs[i].className != "ImageGroup") continue; UnitNode=undefined; search=divs[i].getElementsByTagName("div"); for (j = 0; j < search.length ; j++) { if (search[j].className != "ImageGroupUnits") continue; UnitNode=search[j]; break; } if (UnitNode==undefined) continue; units=Array(); for (j = 0 ; j < UnitNode.childNodes.length ; j++ ) { var temp = UnitNode.childNodes[j]; if (temp.className=="center") units.push(temp); } for (j = 0 ; j < units.length ; j++) { currentimage=units[j]; currentimage.id="ImageGroupsGr"+i+"Im"+j; var imghead = document.createElement("div"); var leftlink; var rightlink; if (j != 0) { leftlink = document.createElement("a"); leftlink.href = "javascript:toggleImage("+i+","+j+","+(j-1)+");"; var leftArrow = document.createElement('img'); leftArrow.src= "http://upload.wikimedia.org/wikipedia/commons/thumb/4/49/ArrowLeftNavbox.svg/12px-ArrowLeftNavbox.svg.png"; leftArrow.width = "12"; leftArrow.height = "12"; leftArrow.alt = "Précédent"; leftlink.appendChild(leftArrow); leftlink.title="Image 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)+");"; var rightArrow = document.createElement('img'); rightArrow.src= "http://upload.wikimedia.org/wikipedia/commons/thumb/1/10/ArrowRightNavbox.svg/12px-ArrowRightNavbox.svg.png"; rightArrow.width = "12"; rightArrow.height = "12"; rightArrow.alt = "Suivant"; rightlink.appendChild(rightArrow); rightlink.title="Image suivante"; } else { rightlink = document.createElement("span"); rightlink.innerHTML=" "; } var comment = document.createElement("tt"); comment.innerHTML = "("+ (j+1) + "/" + units.length + ")"; with(imghead) { style.fontSize="110%"; appendChild(leftlink); appendChild(comment); appendChild(rightlink); } currentimage.insertBefore(imghead,currentimage.childNodes[0]); if (j != 0) currentimage.style.display="none"; } } } addOnloadHook(imageGroup);
- 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 (
/
) - 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é
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 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.
- J'ai fait sauter le
- 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)
- 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
- J'améliore aussi un peu le modèle de mon côté, quelques remarques dans le plus grand désordre :
- (edith) Merci Dr Brains, j'avais commencé à faire ce code en bac à sable mais tu m'as devancé
- Idée en passant : on pourrait en profiter pour ajouter des boutons pour revenir au début ou à la fin (
[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...
Sinon j'ai des problèmes avec ma signature, elle n'apparait pas dans les modèles ex:
|
|
Vous savez pourquoi ? Argos - oO 28 janvier 2011 à 18:12 (CET)
- c'est à cause du "=" de
<span style="text-shadow: 0.1em 0.1em 0.1em black;">. - Pour corriger ça, il te faut nommer explicitement le paramètre ( {{Article supprimé|raison|2=~~~~}} )
- Ex :
|
|
- ⇨ Dr Brains ∞ Consultation ∞ 28 janvier 2011 à 18:37 (CET)
- Concernant le code (sans tester), il y a plusieurs points améliorables ou source de bugs potentiels :
- 1.)
if (wgTitle.search("Suppression") >0) {
-
- Ce test ne me semble pas assez restrictif. Il faudrait tester
- que l'on est bien dans une page de discussion
- que "Suppression" fait partie de la sous-page.
- Ce test ne me semble pas assez restrictif. Il faudrait tester
if (wgNamespaceNumber%2!=0 && wgTitle.match(/\/Suppression$/)!=null) {
-
- 2.)
- Dans la création des url pour requêtes, utiliser wgScript plutôt que wgScriptPath + "/index.php", en raison de certains sites qui n'ont pas la même construction d’url ( https://secure.wikimedia.org par exemple )
- 3.)
- Toujours dans la création d’url pour requête Ajax, remplacer systématiquement dans le nom de la page & par %26, sinon ce qui suit est considéré comme un paramètre et ce n'est pas la bonne page qui est requise.
- ⇨ Dr Brains ∞ Consultation ∞ 28 janvier 2011 à 18:55 (CET)
- Sinon, un peu de publicité pour un script à moi qui pourrait t'être utile : Utilisateur:Dr Brains/BotFramework.js. Tout ce qu'il faut pour faire des requêtes Ajax.
- ⇨ Dr Brains ∞ Consultation ∞ 28 janvier 2011 à 18:58 (CET)
- merci des infos, je regarderais tout ça, j'ai déja corrigé le coup du modèle Argos - oO 28 janvier 2011 à 21:03 (CET)
- Bon ça à l'air de gèner puisque Basilus m'est tombé dessus en me disant que c'était pas comme ça qu'on faisait une cloture, etc etc, donc je touche plus à l'outil tant que j'ai pas compris comment on clos une PaS. Vais pas perdre du temps bénévolement pour me faire engueuler quand même... Argos - oO 28 janvier 2011 à 22:23 (CET)
- Ok, j'ai fait des améliorations, si vous voulez tester... Argos - oO 29 janvier 2011 à 21:29 (CET)
- J'ai des problèmes avec les noms, genre ma fonction getPageName() qui est foireuse (marche pas pour les cats par exemple). Argos - oO 29 janvier 2011 à 21:42 (CET)
- Marche pas, c'est à dire ?
- Essaye ceci :
-
function getPageName(){ return wgTitle.replace(/\/Suppression$/, ""); } - ⇨ Dr Brains ∞ Consultation ∞ 29 janvier 2011 à 21:54 (CET)
- non ça marchera pas, car par exemple ça peut commencer pas Discussion:Blabla/Suppression mais aussi Discussion_catégorie:Truc/Suppression Argos - oO 29 janvier 2011 à 22:11 (CET)
- ça me donne une idée en fait ! Argos - oO 29 janvier 2011 à 22:12 (CET)
- Mais tu veux bien enlever l'espace de noms ( .split(":")[1] ) ?
- C'est ce à quoi revient d’utiliser wgTitle plutôt que wgPageName (en plus du fait qu'avec wgPageName les espaces sont remplacés par des underscores, ce qui n'est pas glop).
- ⇨ Dr Brains ∞ Consultation ∞ 29 janvier 2011 à 22:15 (CET)
- nan regarde Discussion_catégorie:Ordre_de_la_Toison_d'or_(XVIe_siècle)/Suppression du coup ça chie, m^me le WgTitle est pas bon (on perd le ns Catégorie). Sinon j'ai un autre problème : quand tu cliques sur le bouton 3 requetes ajax partent, que se passe-t-il si le coco ferme la fenetre avant la fin des requetes ? Argos - oO 29 janvier 2011 à 22:18 (CET)
- Ah oui, je suis con. Il faut changer le NS. Du coup, ce serait plutôt un truc de ce genre :
-
function getPageName(){ return ((wgNamespaceNumber-1)==0 ? "" : wgFormattedNamespaces[(wgNamespaceNumber-1)]+":" )+ wgTitle.replace(/\/Suppression$/, ""); } - ⇨ Dr Brains ∞ Consultation ∞ 29 janvier 2011 à 23:36 (CET)
- Cool, ça marche *mieux*. Bon, c'est pas trop mal et ça à l'air de faire le boulot. A voir si des gens veulent l'utiliser... Argos - oO 30 janvier 2011 à 01:15 (CET)
- Dis-moi, je souhaiterais tester si le coco est admin, et dans ce cas supprimer la page via l'API plutot que de faire une demande de SI... Argos - oO 30 janvier 2011 à 01:59 (CET)
-
var CocoIsAdmin = (wgUserGroups.indexOf("sysop")!=-1); - Pour la suppression elle-même, tu peux trouver de l'inspiration dans le gadget RenommageCategorie ou dans la page que j'ai mentionnée plus haut, Utilisateur:Dr Brains/BotFramework.js.
- ⇨ Dr Brains ∞ Consultation ∞ 30 janvier 2011 à 02:25 (CET)
- Bon pour la suppression j'y arriverais pas tout seul, même avec tes scripts : j'ai jamais vu l'interface et je sais pas quel "raison" mettre et autres paramètres pour faire une jolie SI spécial PàS (ça met un bandeau spécial avec un lien vers la discussion je crois). Autre chose, les requêtes traitées ne sont pas envoyées dans la boite déroulante comme là, je voulais faire une regexp mais je suis pas certain qu'on puisse faire un match sur plusieurs lignes, si ? Argos - oO 30 janvier 2011 à 10:58 (CET)
-
- Dis-moi, je souhaiterais tester si le coco est admin, et dans ce cas supprimer la page via l'API plutot que de faire une demande de SI... Argos - oO 30 janvier 2011 à 01:59 (CET)
- Cool, ça marche *mieux*. Bon, c'est pas trop mal et ça à l'air de faire le boulot. A voir si des gens veulent l'utiliser... Argos - oO 30 janvier 2011 à 01:15 (CET)
- nan regarde Discussion_catégorie:Ordre_de_la_Toison_d'or_(XVIe_siècle)/Suppression du coup ça chie, m^me le WgTitle est pas bon (on perd le ns Catégorie). Sinon j'ai un autre problème : quand tu cliques sur le bouton 3 requetes ajax partent, que se passe-t-il si le coco ferme la fenetre avant la fin des requetes ? Argos - oO 29 janvier 2011 à 22:18 (CET)
- Bon ça à l'air de gèner puisque Basilus m'est tombé dessus en me disant que c'était pas comme ça qu'on faisait une cloture, etc etc, donc je touche plus à l'outil tant que j'ai pas compris comment on clos une PaS. Vais pas perdre du temps bénévolement pour me faire engueuler quand même... Argos - oO 28 janvier 2011 à 22:23 (CET)
- merci des infos, je regarderais tout ça, j'ai déja corrigé le coup du modèle Argos - oO 28 janvier 2011 à 21:03 (CET)
- (retour chariot)
- Pour la suppression, la méthode est similaire à l'édition ou au renommage, mais les "id" ou "name" des éléments sont différents.
- Le formulaire est compris dans une
<form id="deleteconfirm"> - A l'intérieur de cette forme, quatre éléments :
<select name="wpDeleteReasonList" id="wpDeleteReasonList">, une liste déroulante des motifs de suppression courants.<input type="text" name="wpReason" id="wpReason">, un champ de texte pour préciser une raison supplémentaire.<input type="checkbox" id="wpWatch" name="wpWatch">, une case à cocher pour suivre ou pas la page supprimée.<input type="hidden" name="wpEditToken">, le "token"
- Attendu que la suppression est sans doute la dernière étape du processus, une requête ajax n'est sans doute pas nécessaire, et tu peux te contenter de faire document.getElementById("deleteconfirm").submit(); comme RenommageCategorie. Avant ça, il faudra juste que tu aies rempli convenablement "wpReason" et checké ou pas "wpWatch"
- Mais c'est sûr que programmer ça en aveugle n'est guère aisé. Peut-être peux-tu demander le statut temporairement le temps de tester ça.
- ⇨ Dr Brains ∞ Consultation ∞ 30 janvier 2011 à 15:12 (CET)
- Vu que la communauté m'a refusé les outils d'admin il y a peu de temps, ça m'exclut de tout sysoppage temporaire, j'ai demandé un sysoppage de 2h sur IRC, ils sont pas d'accord (mon dieu, je pourrais effacer WP). Alors bon, je laisse comme ça, si un admin le veut, il complètera mon script. Argos - oO 30 janvier 2011 à 15:03 (CET)
- Vu que je reste aussi éloigné que possible de l'agitation des PàS, ce ne sera pas moi. Désolé.
- ⇨ Dr Brains ∞ Consultation ∞ 30 janvier 2011 à 15:12 (CET)
- Noprob Argos - oO 30 janvier 2011 à 16:35 (CET)
- Hello. Ce gadget m'intéresse alors je veux bien aider pour ça. Si tu as le temps, tu peux repomper le code de Utilisateur:Orlodrim/testsuppresssion.js pour supprimer des pages, il y a juste une fonction deletePage à appeler. Sinon, fais-moi signe et je m'en occuperai. Orlodrim [discuter] 30 janvier 2011 à 21:14 (CET)
- Je veux bien le pomper Orlo, mais il manque toujours la réponse à ma question importante : quelle raison/manip mettre/faire pour obtenir ça : [1] avoir le joli bandeau en haut et tout.
- C'est automatique quand la page a été précédemment supprimée en fait. Totodu74 (devesar…) 30 janvier 2011 à 21:35 (CET)
- Pour être précis, le bandeau apparaît à la seule condition que la sous-page relative à la suppression existe (donc rien de particulier à faire). Pour le motif de suppression, l'usage est de mettre [[titre de la sous-page de suppression|Décision PàS]] (voir la ligne en commentaire dans la fonction testDeletion de mon code). Orlodrim [discuter] 30 janvier 2011 à 21:40 (CET)
- Fait
sur la version _test si tu veux essayer Orlodrim. J'ai l'impression qu'il reste des bugs sur mon script...Argos - oO 30 janvier 2011 à 21:53 (CET)
- Aucun problème, ça marche (en tout cas pour la suppression). Après il y a encore de quoi faire : supprimer ou demander la suppression de la page de discussion si elle existe, idem pour les redirections, et avertir s'il y a des pages liées dans l'espace principal (juste avertir, enlever automatiquement les liens est sans doute trop complexe). Orlodrim [discuter] 30 janvier 2011 à 22:12 (CET)
- J'ai mis à jour. Le plus important à mes yeux serait de fournir un véritable retour utilisateur pour pouvoir dire ce qui a fonctionné/merdé...et par la même empècher l'utilisateur de fermer la fenêtre avant al fin de actions.Argos - oO 30 janvier 2011 à 23:23 (CET)
- Pour tester toutes les erreurs possibles, ce n'est pas simple. Par contre, tu peux facilement afficher un message quand tout a marché : à la fin de chaque requête ajax, mets dans le onSuccess une fonction qui incrémente un compteur et qui teste sa valeur. Quand elle est égale au nombre total d'actions à effectuer, c'est gagné. Orlodrim [discuter] 30 janvier 2011 à 23:30 (CET)
- Oui j'avais pensé à ça... Mais y'a des trucs plus complexes, genre l'Ajax s'est terminé mais la regexp n'a pas matchée... La meilleure solution reste de garder un œil sur "mes contributions". Argos - oO 30 janvier 2011 à 23:40 (CET)
- J'ai MAJ avec le compteur en question, et Orlodrim est crédité dans le source. Un autre problème signalé sur le bistro, c'est qu'en cas de conservation, si la PDD de l'article est inexistante, alors elle n'est pas créée automatiquement pour l'ajout du bandeau. Pourtant j'ai repris le code de liveRC, il le fait pas tout seul lui ? Argos - oO 31 janvier 2011 à 00:22 (CET)
- Pour tester toutes les erreurs possibles, ce n'est pas simple. Par contre, tu peux facilement afficher un message quand tout a marché : à la fin de chaque requête ajax, mets dans le onSuccess une fonction qui incrémente un compteur et qui teste sa valeur. Quand elle est égale au nombre total d'actions à effectuer, c'est gagné. Orlodrim [discuter] 30 janvier 2011 à 23:30 (CET)
- J'ai mis à jour. Le plus important à mes yeux serait de fournir un véritable retour utilisateur pour pouvoir dire ce qui a fonctionné/merdé...et par la même empècher l'utilisateur de fermer la fenêtre avant al fin de actions.Argos - oO 30 janvier 2011 à 23:23 (CET)
- Aucun problème, ça marche (en tout cas pour la suppression). Après il y a encore de quoi faire : supprimer ou demander la suppression de la page de discussion si elle existe, idem pour les redirections, et avertir s'il y a des pages liées dans l'espace principal (juste avertir, enlever automatiquement les liens est sans doute trop complexe). Orlodrim [discuter] 30 janvier 2011 à 22:12 (CET)
- Fait
- Pour être précis, le bandeau apparaît à la seule condition que la sous-page relative à la suppression existe (donc rien de particulier à faire). Pour le motif de suppression, l'usage est de mettre [[titre de la sous-page de suppression|Décision PàS]] (voir la ligne en commentaire dans la fonction testDeletion de mon code). Orlodrim [discuter] 30 janvier 2011 à 21:40 (CET)
- C'est automatique quand la page a été précédemment supprimée en fait. Totodu74 (devesar…) 30 janvier 2011 à 21:35 (CET)
- Je veux bien le pomper Orlo, mais il manque toujours la réponse à ma question importante : quelle raison/manip mettre/faire pour obtenir ça : [1] avoir le joli bandeau en haut et tout.
- Hello. Ce gadget m'intéresse alors je veux bien aider pour ça. Si tu as le temps, tu peux repomper le code de Utilisateur:Orlodrim/testsuppresssion.js pour supprimer des pages, il y a juste une fonction deletePage à appeler. Sinon, fais-moi signe et je m'en occuperai. Orlodrim [discuter] 30 janvier 2011 à 21:14 (CET)
- Noprob Argos - oO 30 janvier 2011 à 16:35 (CET)
- Vu que la communauté m'a refusé les outils d'admin il y a peu de temps, ça m'exclut de tout sysoppage temporaire, j'ai demandé un sysoppage de 2h sur IRC, ils sont pas d'accord (mon dieu, je pourrais effacer WP). Alors bon, je laisse comme ça, si un admin le veut, il complètera mon script. Argos - oO 30 janvier 2011 à 15:03 (CET)
[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 :
- En fait, c'est possible, mais faut bidouiller et forcer l'importation à travers 2 pages.
- 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)
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)
-
-
- 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
. 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, 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)
- 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
- 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)
- 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)
- 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)
- 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)
[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)
[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
. Orlodrim [discuter] 5 février 2011 à 17:55 (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
- That's a pain in the ass... Argos - oO 4 février 2011 à 10:23 (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)
- Si, on peut passer par secure... Pas de X-domain comme çà...Argos - oO 7 février 2011 à 13:48 (CET)
- Oui, c'est une bonne idée (forcément, je l'avais eue aussi
). - 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
. - Plus sérieusement, merci pour le lien
— Arkanosis ✉ 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)
- 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)
- addOnloadHook et importScript sont donc dépréciés… Heureusement que tout le monde utilisait encore addLoadEvent et loadJs
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
. - 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)
- Mon avis pour les découpage des sous-pages c'est qu'il faudrait un découpage
- Sur l'idée jQuery, je serais le dernier à protester
[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)
Corrigé. Le problème était beaucoup plus simple — j'en viens à me demander comment le script a pu fonctionner jusqu'ici
.- Amicalement — Arkanosis ✉ 22 février 2011 à 14:40 (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)
- 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)
- 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
patrolse 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)
- Ah, j'ai eu un problème avec xpatrol après le passage à la 1.17 : les tokens pour
- 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)
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)
[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

- od†n ↗blah 16 mai 2011 à 21:37 (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
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).
- l'
- Donc normalement, tu coches « évaluation » dans Spécial:Préférences#preftab-8 et c'est bon
. - 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 :
- 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)
- 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)
- … 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)
- Erreur : div is null - Fichier Source : http://fr.wikipedia.org/w/index.php?title=MediaWiki:Gadget-Evaluation.js&action=raw&ctype=text/javascript&62560387 - Ligne : 69
>> Quand j'efface la console puis tente (sans recharger le cache) de cliquer sur "éval"
- Erreur : jsAlert is not defined - Fichier Source : http://pl.wikipedia.org/w/index.php?action=raw&ctype=text/javascript&title=Wikipedysta%3ANux%2FSearchBox.js - Ligne : 58
>> 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)
- 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)
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 :
- 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)
// 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)
-
[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)
[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 :
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 ![]()
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
localStoragea 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
À 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
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)
- 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
[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 :
- 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 ?
- 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 ?
- 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 ?
- 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)
-
- 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.
- Elle peut être hébergée ici, dans l'espace MediaWiki (à moins que sa licence ne le permette pas ?).
- Et ?
- 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)
-
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é.
- Salut
- J'ai regardé vite fait ton code.
- Quelques remarques :
- La fonction
BuildUrlPrefix()est inutile (ou inutilement compliquée). Tu peux créer le début de l'URL avec les variables globaleswgServer(http://fr.wikipedia.org),wgScript(/w/index.php),wgScripPath(/w) ouwgArticlePath(/wiki/$1) - La fonction
GetNamespacesInfos()ne sert à rien non plus, tu peux retrouver les espaces de noms dans la variable globalewgFormattedNamespaces - Le format JSON n'est pas supporté par tous les navigateurs. Mieux vaudrait utiliser le format XML.
- 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).
- 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)
- je ne connaissais pas cette
action=userdailycontribsde l'API. On en apprend tous les jours...
- La fonction
- ⇨ Dr Brains ∞ Consultation ∞ 31 août 2011 à 15:44 (CEST)
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
. 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)
-
- Il faut aussi utiliser
wgScript,wgScriptpathouwgArticlePathsinon ton script fonctionnera mal sur https://secure.wikimedia.org - 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...
- Si tu veux tous les passer en revue, tu peux utiliser une boucle
for(... in ...):
- Il faut aussi utiliser
for(var NSnb in wgFormattedNamespaces){
var NamespaceNumber = NSnb;
var NamespaceName = wgFormattedNamespaces[NSnb];
...
}
- ⇨ Dr Brains ∞ Consultation ∞ 31 août 2011 à 20:36 (CEST)
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
) 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)
[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.
/* DÉBUT DU CODE JAVASCRIPT DE "CADRE À ONGLETS"
Fonctionnement du [[Modèle:Cadre à onglets]]
Modèle implanté par User:Peleguer de http://ca.wikipedia.org
Actualisé par User:Joanjoc de http://ca.wikipedia.org
Traduction et adaptation User:Antaya de http://fr.wikipedia.org
*/
function CadreOngletInitN(){
// retour si ailleurs que sur l'espace utilisateur,
// sachant que c'est une horreur au niveau de l'accessibilité
// et qu'il est impossible de "récupérer" ou de recycler ce script
// (celui-ci fonctionnant par inclusion de sous pages)
if ( mw.config.get('wgCanonicalNamespace') != 'User') return;
var i=0
for (i=0;i<=9;i++){
var vOnglet = document.getElementById("onglet"+i);
if (!vOnglet) break;
var j=1
var vOgIni = 0
for (j=1;j<=9;j++){
var vBt = document.getElementById("onglet"+i+"bt"+j);
if (!vBt) break;
vBt.onclick = CadreOngletVoirOngletN;
if (vBt.className=="nowrap ongletBoutonSel") vOgIni=j;
}
// devrait se trouver inutile, sauf si onglet de départ mal renseigné
if (vOgIni == 0) {
vOgIni = 1+Math.floor((j-1)*Math.random()) ;
document.getElementById("onglet"+i+"og"+vOgIni).style.display = "block";
document.getElementById("onglet"+i+"og"+vOgIni).style.visibility = "visible";
document.getElementById("onglet"+i+"bt"+vOgIni).className="nowrap ongletBoutonSel";
document.getElementById("onglet"+i+"bt"+vOgIni).style.backgroundColor="inherit";
document.getElementById("onglet"+i+"bt"+vOgIni).style.borderTopColor="inherit"; // propriété par propriété sinon Chromium se loupe
document.getElementById("onglet"+i+"bt"+vOgIni).style.borderRightColor="inherit";
document.getElementById("onglet"+i+"bt"+vOgIni).style.borderBottomColor="inherit";
document.getElementById("onglet"+i+"bt"+vOgIni).style.borderLeftColor="inherit";
}
}
}
function CadreOngletVoirOngletN(){
var vOngletNom = this.id.substr(0,7);
var vOngletIndex = this.id.substr(9,1);
var rule1=$('.ongletBouton')[0].style.backgroundColor.toString();
var rule2=$('.ongletBouton')[0].style.borderColor.toString(); //rule2=$('.ongletBouton').css("border-color"); ne fonctionne pas sous Firefox
var i=1
for (i=1;i<=9;i++){
var vOgElem = document.getElementById(vOngletNom+"og"+i);
if (!vOgElem) break;
if (vOngletIndex==i){
vOgElem.style.display = "block";
vOgElem.style.visibility = "visible";
document.getElementById(vOngletNom+"bt"+i).className="nowrap ongletBoutonSel";
document.getElementById(vOngletNom+"bt"+i).style.backgroundColor="inherit";
document.getElementById(vOngletNom+"bt"+i).style.borderTopColor="inherit"; // propriété par propriété sinon Chromium se loupe
document.getElementById(vOngletNom+"bt"+i).style.borderRightColor="inherit";
document.getElementById(vOngletNom+"bt"+i).style.borderBottomColor="inherit";
document.getElementById(vOngletNom+"bt"+i).style.borderLeftColor="inherit";
} else {
vOgElem.style.display = "none";
vOgElem.style.visibility = "hidden";
document.getElementById(vOngletNom+"bt"+i).className="nowrap ongletBouton";
document.getElementById(vOngletNom+"bt"+i).style.backgroundColor=rule1;
document.getElementById(vOngletNom+"bt"+i).style.borderColor=rule2;
}
}
return false;
}
addOnloadHook(CadreOngletInitN);
/*FIN DU CODE JAVASCRIPT DE "CADRE À ONGLETS"*/
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)
[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)
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)
[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)
- J'ai essayé, mais dans ce cas je n'ai plus aucune barre d'outils --Hercule (d) 6 janvier 2012 à 14:36 (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
functionqui 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)
- 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)
- Et bien il faut déjà importer ce fichier externe, via la fonction
- 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)
[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)
- 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)
[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)
[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)
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, lewgActiondevient"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)























![N5 [ra] ra](http://bits.wikimedia.org/w/extensions-1.19/wikihiero/img/hiero_N5.png)
![F12 [wsr] wsr](http://bits.wikimedia.org/w/extensions-1.19/wikihiero/img/hiero_F12.png)
![U21 [stp] stp](http://bits.wikimedia.org/w/extensions-1.19/wikihiero/img/hiero_U21.png)
![N35 [n] n](http://bits.wikimedia.org/w/extensions-1.19/wikihiero/img/hiero_N35.png)



