Discussion Projet:Scripts et gadgets/2015
- Admissibilité
- Neutralité
- Droit d'auteur
- Portail de qualité
- Bon portail
- Lumière sur
- À faire
- Archives
- Commons
Cette page de discussion est destinée aux discussions sur le Projet:Scripts et gadgets.
- 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.
Aide • Exemples |
Fonctions avancées |
Apparence Vector |
Apparence Timeless |
Projet:Scripts et gadgets |
(en) User styles |
common.css personnel |
Common.css commun |
Monobook.css commun |
Vector.css commun |
(en) Catalogue of classes |
Index des propriétés CSS2 |
common.js personnel |
Common.js commun |
Fonctions JavaScript |
Signer
modifierBonjour, quelle est l'astuce pour signer en Javascript ? (ex : "{{Suppression Immédiate|"+motif+"|~~~}}\n" '''Demandé''' par ~~~ le ~~~~~\)
Je sais que c'est possible sans bidouillage monstre vu que je suis arrivé (miraculeusement) à obtenir le code entre parenthèse sur mon script. Malheureusement, je ne me souviens plus des manipulation que j'ai fait pour leurrer médiaWiki. J'ai essayé avec nowiki et includeonly mais ça ne fonctionne pas. Cordialement.— Gratus (discuter) 28 février 2015 à 11:07 (CET)
- Réponse un peu tardive, mais le truc est de couper la chaine :
'~~' + '~~'
(notif Gratus, si cela peut encore te servir…) od†n ↗blah 29 octobre 2017 à 01:13 (CEST)- Merci Od1n ! — Gratus (discuter) 29 octobre 2017 à 08:09 (CET)
Hello,
Est-ce possible d'utiliser ce script ailleurs (Commons, Meta, etc.) ? Si oui, où puis-je trouver le code source ?
Bonne journée
Scoopfinder(d) 1 mars 2015 à 12:26 (CET)
- Scoopfinder :
- Pour l'installer ailleurs, ajouter dans son common.js le code suivant :
// DeluxeHistory
mw.loader.load('//fr.wiki.x.io/w/index.php?title=MediaWiki:Gadget-DeluxeHistory.js&action=raw&ctype=text/javascript');
mw.loader.load('//fr.wiki.x.io/w/index.php?title=MediaWiki:Gadget-DeluxeHistory.css&action=raw&ctype=text/css', 'text/css');
Salut les scripteurs,
Trizek a voulu rendre disponible par défaut le gadget monBrouillon, mais Gratus a annulé sa modif car les utilisateurs non connectés étaient dirigés vers Utilisateur:null/Brouillon.
Deux questions :
- Est-ce qu'il est possible de faire marcher le gadget pour les IP ? Une lecture rapide de mw:Manual:Interface/JavaScript me fait penser que non, il est d'ailleurs peut-être impossible de récupérer l'IP côté JS à dessein, pour des questions de confidentialité.
- À défaut, j'imagine qu'on peut rendre le gadget inopérant pour les utilisateurs non enregistrés en ajoutant quelque chose comme
if (mw.config.get('wgUserName')!= null) {
au début de la fonction ? (ça fait longtemps que j'ai pas fait de JS).
Merci de votre attention,
El pitareio (discuter) 25 mars 2015 à 19:24 (CET)
- Le gadget peut aussi n'être activé que pour les utilisateurs inscrits en requérant un droit (mwoauthmanagemygrants par exemple) dont les IPs ne disposent pas.
- Mais pourquoi encore un gadget par défaut ? Il est possible de contribuer directement à MediaWiki plutôt que d'ajouter du JavaScript partout pour modifier l'interface en local…
- Amicalement — Arkanosis ✉ 25 mars 2015 à 20:58 (CET)
- [conflit/grmf !] Effectivement, je doute qu’on ait l’IP disponible.
- Plutôt
mw.user.isAnon()
, l’abstraction de la même chose, mais il me semble qu’on peut utiliser une dépendance en un droit spécifique aux utilisateurs enregistrés (typiquementsendemail
) pour ne carrément pas exécuter le gadget pour les IPs. - — Ltrlg (discuter), le 25 mars 2015 à 21:00 (CET)
- PS : ah, oui, j’ai trouvé : c’est l’option
rights=…
- Encore merci à Gratus d'avoir veillé sur mes bêtises, et merci à vous de vous pencher sur le problème !
- Arkanosis, j'avais posté un ticket sur Bugzilla où on m'avait envoyé aux fraises. Je n'ai donc pas insisté. Trizek bla 26 mars 2015 à 09:43 (CET)
- Euh... finalement le gadget a été activé même pour les IP. C'est voulu ? Ça risque d'être un peu déconcertant pour ceux qui une IP dynamique. Orlodrim (discuter) 27 mars 2015 à 21:27 (CET)
- C’était le but initial : il a été désactivé à cause du problème de la récupération d’un titre de page de brouillon, puis réactivé lorsqu’une solution a été trouvée. Ça risque effectivement d’être déroutant, d’autant que la consigne est « Pour revenir à tout moment sur votre brouillon, cliquez sur votre pseudonyme en haut à droite. », ce qui est franchement inadapté. Trizek ! — Ltrlg (discuter), le 27 mars 2015 à 22:34 (CET)
- Faut avoir suivi le processus de relecture des articles mis en place depuis un bon moment, qui encourage IP et comptes à passer par un brouillon. La question à se poser est : faut-il demander sur phabricator la possibilité d'indiquer dans la définition des gadgets non pas un droit à avoir, mais un droit à ne pas avoir (comme autopatrol, ici). J'en ai discuté avec un commonist qui aurait besoin de la même chose. Frakir 28 mars 2015 à 10:14 (CET)
- À l'heure actuelle, les pages d'aide encouragent les IP à créer d'abord un compte puis un brouillon.
- Aide:Brouillon : « Vous devez avoir un compte et y être connecté pour faire cette action » et « Les pages de brouillon sont disponibles pour les utilisateurs ayant un compte »
- Aide:Comment créer un article/3 : « Préparer mon article au brouillon - Méthode conseillée, nécessite un compte gratuit et anonyme ».
- Faut-il changer les pages d'aide pour enlever ces consignes et dire à la place « le bouton Brouillon risque de mener à une page différente d'un jour sur l'autre ; pensez à mettre votre brouillon dans vos marques-pages pour ne pas le perdre »
- Orlodrim (discuter) 28 mars 2015 à 10:44 (CET)
- Bonsoir
- Désolé d'avoir fait des bêtises, ça m’embête vraiment. J’espère pouvoir compter sur votre aide pour en sortir.
- Les différents messages et consignes sont adaptées au fait d'activer ce gadget pour les utilisateurs connectés seulement (hors de question de le faire pour les IP, vous savez que ce serait un foutoir monstre !). Seule la phrase « Pour revenir à tout moment sur votre brouillon, cliquez sur votre pseudonyme en haut à droite » est visiblement à revoir, car elle date de l’époque où l’activation du gadget par défaut n’était pas faite.
- Frakir, ton idée m'a l'air cool. Si tu fais un ticket, peux-tu me mettre en copie ?
- Trizek bla 29 mars 2015 à 21:24 (CEST)
- Très bien, puisqu'on est d'accord, je le désactive pour les IP : Spécial:Diff/113368934. À vrai dire, les IP n'ont pratiquement pas utilisé le lien de toute façon (un seul brouillon créé aujourd'hui par une IP dans nouvelles pages, et avec l'éditeur visuel donc je ne sais pas s'il est passé par ce lien).
- Concernant le droit à ne pas avoir : si le gadget est activé par défaut, autant le laisser activé pour tous ceux qui ne l'ont pas désactivé explicitement, non ? Parce qu'il y a de temps en temps des contributeurs qui deviennent autopatrolled, et s'ils utilisent le lien, ils ne vont pas comprendre pourquoi il disparaît.
- Orlodrim (discuter) 29 mars 2015 à 21:55 (CEST)
- Hello
- Orlodrim, si j'ai bien suivi, c’est disponible pour tous les comptes enregistrés et ce par défaut ? J'ai essayé de voir pour l’activer ou le désactiver dans mes préférences, et, du coup, le lien ne s'affiche plus du tout, que je sois connecté ou non.
- Est-ce normal ?
- Merci, Trizek bla 9 avril 2015 à 17:12 (CEST)
- C'est activé par défaut pour les utilisateurs enregistrés. Cela fonctionne correctement pour moi. Quand tu actives le gadget, est-ce que ça fonctionne mal sur toutes les pages ? Orlodrim (discuter) 9 avril 2015 à 19:29 (CEST)
- Après deux ou trois purges de cache et quelques heures de navigation, c’est bon. Désolé du dérangement et encore merci pour la réparation ! Trizek bla 9 avril 2015 à 20:16 (CEST)
- Nouvelle du jour : on peut demander à avoir la même chose sans gadget avec mw:Help:Extension:SandboxLink. En fait, ça vient d'être activé par défaut sur Wikipédia en anglais, pour tous les comptes (en:Wikipedia:Village pump (technical)#Sandbox link). Orlodrim (discuter) 9 avril 2015 à 21:19 (CEST)
- J'ai fait la demande : phab:T95604. Orlodrim (discuter) 9 avril 2015 à 21:31 (CEST)
- Nouvelle du jour : on peut demander à avoir la même chose sans gadget avec mw:Help:Extension:SandboxLink. En fait, ça vient d'être activé par défaut sur Wikipédia en anglais, pour tous les comptes (en:Wikipedia:Village pump (technical)#Sandbox link). Orlodrim (discuter) 9 avril 2015 à 21:19 (CEST)
- Après deux ou trois purges de cache et quelques heures de navigation, c’est bon. Désolé du dérangement et encore merci pour la réparation ! Trizek bla 9 avril 2015 à 20:16 (CEST)
- C'est activé par défaut pour les utilisateurs enregistrés. Cela fonctionne correctement pour moi. Quand tu actives le gadget, est-ce que ça fonctionne mal sur toutes les pages ? Orlodrim (discuter) 9 avril 2015 à 19:29 (CEST)
- Faut avoir suivi le processus de relecture des articles mis en place depuis un bon moment, qui encourage IP et comptes à passer par un brouillon. La question à se poser est : faut-il demander sur phabricator la possibilité d'indiquer dans la définition des gadgets non pas un droit à avoir, mais un droit à ne pas avoir (comme autopatrol, ici). J'en ai discuté avec un commonist qui aurait besoin de la même chose. Frakir 28 mars 2015 à 10:14 (CET)
- C’était le but initial : il a été désactivé à cause du problème de la récupération d’un titre de page de brouillon, puis réactivé lorsqu’une solution a été trouvée. Ça risque effectivement d’être déroutant, d’autant que la consigne est « Pour revenir à tout moment sur votre brouillon, cliquez sur votre pseudonyme en haut à droite. », ce qui est franchement inadapté. Trizek ! — Ltrlg (discuter), le 27 mars 2015 à 22:34 (CET)
- Euh... finalement le gadget a été activé même pour les IP. C'est voulu ? Ça risque d'être un peu déconcertant pour ceux qui une IP dynamique. Orlodrim (discuter) 27 mars 2015 à 21:27 (CET)
Bonsoir. Je m’insurge avec véhémence contre la « décision » non discutée d’imposer sur Wikimedia l’usage de jQuery, qui n’est en fait qu’une pâle copie de Brainfuck (en aussi imbitable, mais en moins drôle ).
J’aimerais connaitre tous vos trucs pour ne surtout pas utiliser $(jQuery).
Amitiés. --GaAs 2 avril 2015 à 20:19 (CEST)
Extension MediaWiki : LiveRC
modifierVoir Discussion MediaWiki:Gadget-LiveRC.js#Extension Mediawiki : LiveRC
Tooltip
modifierBonjour,
Je ne suis pas sûr que ce soit le bon endroit pour ma question, mais je tente .
J'ai développé le module Module:Échiquier à partir de la version anglaise pour remplacer les codes des différents modèles d'échiquier ({{Diagramme d'échecs}}, ...), et j'ai pour l'instant un petit souci de performance (l'utilisation du module demande un peu plus de ressources processeur que le modèle actuel). Actuellement, le module utilise une image de fond de l’échiquier et ajoute par dessus une image pour chaque case. J'aimerais bien ne pas ajouter d'image dans le cas des cases vides, mais je voudrais conserver l'affichage d'un tooltip sur la case, ce qui est actuellement fait par le code wiki pour l'image de la case (ligne 109 du module, return string.format( '[[File:Chess %s45.svg|%dx%dpx|alt=%s|%s]]', caseName, size, size, alt, alt )
). Est-ce qu'il y a un moyen simple pour ajouter un tooltip seul sur un div ? --NicoV (discuter) 8 avril 2015 à 11:15 (CEST)
- Il suffit d'ajouter un attribut
title
à ton div, avec comme valeur le texte du tooltip. - Tu est rapide pour remercier ! J'avais a à peine poster la réponse sur le projet modèle, sans te notifier, je passe à une autre page et la notification était là.
- Zebulon84 (discuter) 8 avril 2015 à 11:48 (CEST)
- Merci Zebulon84, ça marche. Bon, ça ne résoud pas mon écart de performance par contre Les statistiques semblent plus en faveur de Variante Najdorf qui utilise l’ancien modèle que Utilisateur:NicoV/Variante Najdorf qui utilise le nouveau modèle. Quelqu'un aurait des idées d'optimisation ? --NicoV (discuter) 8 avril 2015 à 18:20 (CEST)
- Y a-t-il vraiment un problème de performance ? Les 36 modèles {{diagramme d'échecs}} mettent entre 1 et 2 secondes à être exécutés, contre 1 à 2 secondes pour les 36 {{Utilisateur:NicoV/Diagramme d'échecs}}. Pas d'amélioration certes, mais c'est pas non plus un temps infini. Ces temps sont indiqués dans le code source à la fin de la page. J'utilise la console pour le trouver rapidement (sous firefox click droit vers le bas de la page, Examiner l'élément ; Inspecter l'élément sous IE11). Le temps lui-même est variable suivant le serveur qui traite la demande, mais assez stable en %.
- Quelques éléments qui peuvent améliorer la performance de Scribunto, mais peut-être pas vraiment ce module (je n'ai fait que le survoler) :
- mw.ustring est assez lent. Il vaut mieux éviter de l'utiliser lorsque c'est possible, surtout dans les boucles ou dans les fonction souvent utilisées. Lorsque le pattern ne contient pas de caractères non ASCII on peut à priori utilisé string sans risque. Attention %a,%w... contiennent les caratères unicodes dans mw.ustring, mais pas dans string. Attention aussi la syntaxe s:gsub(...) utilise string.gsub et non mw.ustring.gsub.
- alt = alt .. xyz n'est pas optimal si souvent utilisé, surtout si les chaines xyz sont souvent les même. Lua gère en effet un tableau avec toutes les chaines utilisées. chaque concaténation de ce type va donc générer une nouvelle entrée dans le tableau, avec vérification de l'unicité... Si alt fini par être une grande chaine il est plus rapide de mettre tout les bouts de chaines dans un tableau, et de concaténé le tableau à la fin. Ceci dit la différence est minime tant que le nombre de concaténation est faible (il en faut plusieurs milliers pour que la différences soit mesurable)
- Zebulon84 (discuter) 8 avril 2015 à 19:49 (CEST)
- Autre élément éventuel : il me semble qu'utiliser string.format est plus gourmand que concaténer des valeurs (quand c'est possible, ce qui est le cas ici).
- Après − mais je ne sais pas si ça s'applique ici − il est plus efficace de rechercher un élément indexé (truc[bidule]) que de parcourir des éléments. Donc parfois c'est intéressant de construire une table (un peu) plus grande complète pour piocher dedans plutôt que de construire un résultat.
- Cordialement, Hexasoft (discuter) 8 avril 2015 à 20:15 (CEST)
- Conflit d’édition —
- Merci Zebulon84, je vais regarder les pistes d'optimisation que tu m'as indiqué
- En fait, si je cherche à optimiser, c'est aussi suite à cette discussion. Etant parti du module anglais, j’espérais améliorer les temps. Par rapport au module anglais, ma plus grosse modification a consisté à ajouter des tooltips même pour les cases vides de l’échiquier. Ce qui veut dire un nombre nettement plus important d'appels à la fonction qui calcule les tooltips, donc ça peut être une piste. --NicoV (discuter) 8 avril 2015 à 20:27 (CEST)
- Merci Zebulon84 et Hexasoft, j'ai tenté vos suggestions:
- pas réussi à utiliser string à la place de mw.ustring, ça ne marche pas, tant pis
- j'ai simplifié les concaténations et remplacé le format : il est possible que ça ait amélioré les choses, c'est passé de environ 6s à environ 4.5s sur un test
- --NicoV (discuter) 8 avril 2015 à 20:46 (CEST)
- Merci Zebulon84 et Hexasoft, j'ai tenté vos suggestions:
- Merci Zebulon84, ça marche. Bon, ça ne résoud pas mon écart de performance par contre Les statistiques semblent plus en faveur de Variante Najdorf qui utilise l’ancien modèle que Utilisateur:NicoV/Variante Najdorf qui utilise le nouveau modèle. Quelqu'un aurait des idées d'optimisation ? --NicoV (discuter) 8 avril 2015 à 18:20 (CEST)
Icône lien externe, comment ne pas le copier ?
modifierBonjour,
Voilà mon souci : le lien mediawik.org est immédiatement suivi de l'icône . Comment le moteur s'y prend-il pour qu'on ne puisse copier/coller l'icône ? Je souhaite en effet utiliser cette technique de « non-copie » pour un texte de Wikisource. J'ai trouvé une longue recette dans http://stackoverflow.com/questions/826782/css-rule-to-disable-text-selection-highlighting, mais je pense qu'il y a plus court. Par exemple, dans https://developer.mozilla.org/fr/docs/Web/CSS/:after, on propose plus court mais il faut utiliser la pseudo-classe :after
.
Dans un fichier CSS :
.texte-interessant::after { content: "<- Là, ça devient intéressant !"; color: green; }
et dans HTML :
<p class="texte-ennuyeux">Du texte bien barbant.</p>
Comment inscrire la pseudo-classe directement dans le wikitexte ?
Merci de votre aide,
— CdlEst discuter 17 avril 2015 à 18:04 (CEST)
- L'icône en question n'est en fait pas une image (balise
<img>
) mais un background ajouté via la class cssa.external
. - Quelques exemples d'utilisation d'icônes en background pour des liens : Utilisateur:Dr Brains/common.css
- ⇨ Dr Brains ∞ Consultation ∞ 17 avril 2015 à 18:54 (CEST)
Boucle
modifierBonjour, comment peut-on savoir quand une boucle est bien fini ? En effet, dans le script que j'écris, j'ai impérativement besoin que la boucle soit fini avant de lancer la suite. Merci d'avance.— Gratus (discuter) 19 avril 2015 à 17:23 (CEST)
- C'est tout simple, après la boucle c'est plus la boucle :
for (var i = 0; i < 10; i++) { console.log("C'est la boucle numéro " + i); } console.log("La boucle est forcément finie quand on arrive ici");
- Prométhée33 (discuter) 19 avril 2015 à 18:06 (CEST)
- C'est plus complexe que ça car je crois qu'il y a des requêtes Ajax asynchrone dans la boucle.
- Gratus : On parle bien de Utilisateur:Gratus/PaFtec real.js ? Tu veux faire quoi exactement ?
- ⇨ Dr Brains ∞ Consultation ∞ 19 avril 2015 à 18:18 (CEST)
- Dr Brains : Bonjour. Oui, c'est bien ce script . La fonction « verification » vérifie que les articles existent. Si ce n'est pas le cas, il réactualise la page, mettant fin au script. La boucle dans « titrepaf » sert à faire vérifier que toutes les pages indiqués dans la variable « chaine » existent. Ce que je cherche à faire, c'est savoir quand la boucle est finie, c'est à dire, quand on est sûr que tous les articles existent avant de lancer la suite des opérations. — Gratus (discuter) 19 avril 2015 à 18:51 (CEST)
- Ca devrait fonctionner avec les modifs apportées.
- ⇨ Dr Brains ∞ Consultation ∞ 19 avril 2015 à 19:59 (CEST)
- Gratus : On peut même faire mieux. Avec le module prop=info, on peut tester plusieurs pages à la fois : une seule requête devrait donc suffire à toutes les tester.
- ⇨ Dr Brains ∞ Consultation ∞ 19 avril 2015 à 20:06 (CEST)
- Dr Brains : Bonjour et merci pour les améliorations. Pourrai tu m'expliquer comment fonctionne les « CallBack, CallBackArgs » de la ligne 22 ainsi que les lignes 39, 64 et 68 ? Cordialement.— Gratus (discuter) 20 avril 2015 à 07:08 (CEST)
- Gratus :
- C'est relativement simple :
- CallBack, c'est la fonction que tu passes en paramètre et que tu souhaites exécuter à la fin de la requête. Tu la définis au moment de l'appel de la fonction, ou ailleurs dans le script.
- CallBackArgs c'est les arguments (dans un Object de préférence si tu veux en passer plusieurs) que tu souhaites que la fonction que tu exécutes à la fin utilise. Ces arguments sont facultatifs.
- Un exemple simple :
// #### Fonction d'initialisation du bouzin // - Pas d'arguments var Init = function(){ // Pas de lien pour les IP if(!mw.config.get('wgUserName')) return; // On définit le titre de la page "brouillon" var PageBrouillon = mw.config.get('wgFormattedNamespaces')[2] + ":" + mw.config.get('wgUserName') + '/Brouillon'; // On crée un <li> et on l'ajoute aux liens personnels var BrouillonLi = document.createElement('li'); document.getElementById('p-personal').getElementsByTagName('ul')[0].appendChild(BrouillonLi); // On définit les arguments nécessaires à la création du lien via la fonction "creerLien" définie plus bas var Args = { page : PageBrouillon, title : 'Votre brouillon', text : 'Brouillon', target : BrouillonLi }; // On lance le test de la page testpage(PageBrouillon, creerLien, Args); } // #### Fonction pour tester l'existence d'une page // - Page = titre d'une page // - CallBack = fonction à exécuter après la fin du test // - Args = Arguments à passer à la fonction CallBack var testpage = function(Page, CallBack, Args){ // On lance une requête API (asynchrone) pour avoir des infos sur la page var api = new mw.Api(); api.get({ action: 'query', prop: 'info', titles: Page }).then(function(data) { // La requête a aboutit // On vérifie si la page existe ( pageID < 0, si on a demandé des infos sur une seule page, la présence d'un item -1 indique que la page n'existe pas ) var existe = !data.query.pages[-1]; // Si la page n'existe pas, alors on ajoute un argument à passer à la fonction CallBack if(!existe) Args.missing = true; // On vérifie que CallBack est bien une fonction et on l'exécute (avec les arguments) if(typeof(CallBack)==="function") CallBack(Args); }); } // #### Fonction pour créer un lien // - Args.title = infobulle du lien // - Args.text = texte du lien // - Args.page = page cible du lien // - Args.missing = page manquante (facultatif) // - Args.redirect = page redirigée (facultatif) // - Args.target = node dans laquelle on insère le lien var creerLien = function(Args){ // On crée le lien var Lien = document.createElement('a'); // On définit le titre Lien.title = Args.title; // On définit le texte du lien Lien.innerHTML = Args.text; // On définit la cible du lien Lien.href = mw.config.get('wgServer') + mw.config.get('wgArticlesPath').split('$1').join(Args.page); // Si Args.missing, la page est manquante (lien rouge via classe CSS "new") if(Args.missing) $(Lien).addClass("new"); // Si Args.redirect, la page est une redirection (classe CSS "mw-redirect") if(Args.redirect) $(Lien).addClass("mw-redirect"); // On met le lien dans la page, Args.target.appendChild(Lien); } // #### On lance le bouzin $(Init);
- Ce code rajoute un lien pour tout utilisateur enregistré vers sa sous-page
/Brouillon
après avoir testé son existence via une requête asynchrone sur l'API, et si elle n'existe pas alors elle est affichée en rouge (classe CSS "new"). - ⇨ Dr Brains ∞ Consultation ∞ 20 avril 2015 à 17:42 (CEST)
- Dr Brains : Bonsoir, désolé j'ai quasiment rien compris à l'exemple mais je crois comprendre lorsque je l'analyse avec mon script. En résumé, la fonction callback est la fonction qui est en variable de « vérification », les fonctions qui sont à effectuer à la fin sont inscrits dans la variable « CallBack ». Ensuite, quand la fonction « vérification » est exécutée, ce qui était gardé bien au chaud ressort grâce à « if(typeof(CallBack)==="function") CallBack(CallBackArgs) » qui peut être traduit par : si mon paramètre est en réalité une fonction, alors je « transforme » la variable en fonction et je récupère éventuellement CallBackArgs comme variables de la fonction « CallBack ». Mais dans ce cas, à quoi sert le « Args » dans « function(Args) » puisqu'elle ne semble pas être définie ? — Gratus (discuter) 20 avril 2015 à 18:50 (CEST)
- Gratus :
- Avec les commentaires, ça va mieux ?
- ⇨ Dr Brains ∞ Consultation ∞ 20 avril 2015 à 19:24 (CEST)
- Dr Brains : Beaucoup mieux , je pense comprendre le fonctionnement (j'ai juste dans mon raisonnement précédent ?). Comment fonctionnent les $ (par exemple : $(Lien)). En tout cas, merci pour tes réponses.— Gratus (discuter) 20 avril 2015 à 19:45 (CEST)
- Gratus :
- Oui, tu as juste (même si c'est en des termes peu orthodoxes). $ c'est un alias de jQuery. Difficile à expliquer en quelques lignes. Tu trouveras un début de doc ici et surtout là.
- ⇨ Dr Brains ∞ Consultation ∞ 20 avril 2015 à 20:06 (CEST)
- Dr Brains : Beaucoup mieux , je pense comprendre le fonctionnement (j'ai juste dans mon raisonnement précédent ?). Comment fonctionnent les $ (par exemple : $(Lien)). En tout cas, merci pour tes réponses.— Gratus (discuter) 20 avril 2015 à 19:45 (CEST)
- Dr Brains : Bonsoir, désolé j'ai quasiment rien compris à l'exemple mais je crois comprendre lorsque je l'analyse avec mon script. En résumé, la fonction callback est la fonction qui est en variable de « vérification », les fonctions qui sont à effectuer à la fin sont inscrits dans la variable « CallBack ». Ensuite, quand la fonction « vérification » est exécutée, ce qui était gardé bien au chaud ressort grâce à « if(typeof(CallBack)==="function") CallBack(CallBackArgs) » qui peut être traduit par : si mon paramètre est en réalité une fonction, alors je « transforme » la variable en fonction et je récupère éventuellement CallBackArgs comme variables de la fonction « CallBack ». Mais dans ce cas, à quoi sert le « Args » dans « function(Args) » puisqu'elle ne semble pas être définie ? — Gratus (discuter) 20 avril 2015 à 18:50 (CEST)
- Dr Brains : Bonjour et merci pour les améliorations. Pourrai tu m'expliquer comment fonctionne les « CallBack, CallBackArgs » de la ligne 22 ainsi que les lignes 39, 64 et 68 ? Cordialement.— Gratus (discuter) 20 avril 2015 à 07:08 (CEST)
- Dr Brains : Bonjour. Oui, c'est bien ce script . La fonction « verification » vérifie que les articles existent. Si ce n'est pas le cas, il réactualise la page, mettant fin au script. La boucle dans « titrepaf » sert à faire vérifier que toutes les pages indiqués dans la variable « chaine » existent. Ce que je cherche à faire, c'est savoir quand la boucle est finie, c'est à dire, quand on est sûr que tous les articles existent avant de lancer la suite des opérations. — Gratus (discuter) 19 avril 2015 à 18:51 (CEST)
Changement de l'API pour les requêtes concernant les journaux d'événements
modifierLe changement aura lieu le 29 janvier avril pour Wikipédia. Les scripts contenant "logevents" ou "loginfo" nécessitent pour la plupart une mise à jour. Je pense que LiveRC est concerné, en particulier.
Orlodrim (discuter) 20 avril 2015 à 22:46 (CEST)
- Orlodrim :
- Merci pour l'info. En effet, LiveRC sera impacté.
- 29 janvier ? Tu veux dire avril bien sûr.
- ⇨ Dr Brains ∞ Consultation ∞ 20 avril 2015 à 22:57 (CEST)
- Oups, oui, c'est bien ça. Orlodrim (discuter) 20 avril 2015 à 22:58 (CEST)
- LiveRC prêt.
- ⇨ Dr Brains ∞ Consultation ∞ 20 avril 2015 à 23:34 (CEST)
- Dr Brains : Il y a aussi MediaWiki:Gadget-GlobalWatchlist.js qui contient "new_title", propriété qui va être renommée. Les scripts de certains utilisateurs pointent encore vers Utilisateur:Dr Brains/GlobalWatchlist.js, peut-être peux-tu le remplacer par un simple import du gadget.
- Orlodrim (discuter) 21 avril 2015 à 19:59 (CEST)
- Orlodrim :
- Corrigé.
- Je n'ai pas trouvé d'utilisateur utilisant Utilisateur:Dr Brains/GlobalWatchlist.js, hormis Utilisateur:H4stings/vector.js que j'ai corrigé. Tu en connais d'autres ?
- ⇨ Dr Brains ∞ Consultation ∞ 21 avril 2015 à 20:13 (CEST)
- Utilisateur:Grind24/vector.js, Utilisateur:Mathieugp/vector.js, Utilisateur:NicoV/vector.js (en commentaire), ainsi que dans un grand nombre de sous-pages "/GlobalManager.js" [1] (j'ignore s'il est utile de modifier dans ces sous-pages). Orlodrim (discuter) 21 avril 2015 à 20:43 (CEST)
- Oups, oui, c'est bien ça. Orlodrim (discuter) 20 avril 2015 à 22:58 (CEST)
PàStec
modifierBonjour, j'ai amélioré le script en ajoutant des tableaux, ce qui permet d'avertir plusieurs projets/contributeurs à la fois (contre 2 avant) et simultanément. Cependant, j'ai deux bugs principaux (mais suffisamment mineure pour que je le laisse dans le script le temps d'avoir une réponse) :
- Les noms avec espaces ne sont pas accepté par le script, l'ajout n'est pas réalisé (cependant les autres noms classiques sont acceptés, même s'ils se trouvent après le noms problématique).
- Le message « Traitement en cours, veuillez patienter. Si ce message persiste, une erreur a du survenir. » ne se retire pas.
— Gratus (discuter) 4 mai 2015 à 21:25 (CEST)
- Gratus : Avant que tu ailles plus loin : j'ai pas mal bossé de mon côté (miroir).
- ⇨ Dr Brains ∞ Consultation ∞ 4 mai 2015 à 23:26 (CEST)
- Dr Brains : Je viens de voir, ça à l'air d'être du lourd. Je te laisse faire pour éviter de me voir mon travail « écrasé » . En tout cas merci pour l'attention apporté à ce script. — Gratus (discuter) 5 mai 2015 à 01:03 (CEST)
Renommer onglet liste de suivi
modifierBonjour,
Quelle fonction javascript faut-il utiliser si je souhaite par exemple changer le nom de l'onglet "liste de suivi" en haut de page par "LdS" ?
Cordialement. £e p$y £éon (discuter) 7 mai 2015 à 15:40 (CEST)
function RenameLdS(){
var LdSLi = document.getElementById('pt-watchlist');
if(!LdSLi) return;
LdSLi.firstChild.innerHTML = "LdS";
}
$(RenameLdS);
- Par exemple.
- ⇨ Dr Brains ∞ Consultation ∞ 7 mai 2015 à 17:41 (CEST)
- Yes, c'est ça, merci ! £e p$y £éon (discuter) 7 mai 2015 à 22:32 (CEST)
Changement du format de query-continue dans l'API (3) (rappel)
modifierLe changement annoncé plus haut aura lieu à la fin du mois de juin (voir aussi Discussion Wikipédia:Bot#API BREAKING CHANGE: Default continuation mode for action=query will change at the end of this month).
J'ai mis à jour les scripts de l'espace MediaWiki le 21 avril, mais il y en a au moins un nouveau depuis (MediaWiki:Gadget-AddContribNumberInNewPages.js).
Je n'ai pas vérifié les sous-pages personnelles, il reste peut-être d'autres gadgets à mettre à jour.
afficher des suggestions basées sur les pages d'une catégorie
modifierbonjour tout le monde, je cherche a afficher (par fonction javascript) des suggestions basées sur les pages membres d'une catégorie. Quelque chose qui ressemble à ce que affiche BandeauxPortails.js.
Mon problème : l'api disponible (categorymember) ne permet pas d'afficher une partie de la liste basée sur un préfixe (exemple des titres commencent par « 2015 en .. ».
y-a-t-il une autre solution ?? --وهراني (discuter) 8 juin 2015 à 21:46 (CEST)
newCollapsible et target
modifierLe projet:Aide et accueil utilise abondamment le gadget newCollapsible via {{Section déroulante début}} / fin. Le problème c'est que les liens vers un titre à l'intérieur d'une section enroulée ne marchent pas.
J'arrive à les faire marcher avec le code suivant :
function openNewCollapsibleTarget() {
$( this ).find('> .fr-collapsible-toggle-collapsed').click();
}
$( ':target()' ).parents( '.fr-collapsible' ).each( openNewCollapsibleTarget );
$( window ).on('hashchange', function(){
$(':target').parents( '.fr-collapsible' ).each( openNewCollapsibleTarget );
});
C'est bien plus court que ce que j'imaginais initialement. J'ai malgré tout quelques questions :
- y a-t-il moyen de mieux l'intégré au gadget.
- avez-vous une solution pour que ça marche deux fois de suite sur le même lien. En effet avec la formule actuelle l'ouverture des boites n'est faite que lors du changement du target dans l'url. si on a refermer les boites recliquer sur le même lien ne les rouvre pas puisque l'adresse ne change pas.
- Je ne comprend pas vraiment l'utilité du
return
au début de la fonction « newCollapsible ». Est-ce que ca marcherait sans ?
DrapeauJaune
modifierJ'ai développé il y a quelques mois de cela un script, DrapeauJaune.js, qui sert à marquer comme douteuse des modifications, afin d'éviter que celles-ci ne tombent dans l'oubli général et que quelqu'un de compétent dans le domaine puisse passer derrière pour vérifier.
Cela a aujourd'hui bien fait ses preuves, et suite à plusieurs demandes (sur IRC ou sur le Bistro), j'envisage
- de déplacer la liste des modifications douteuses dans l'espace Wikipédia ;
- de faire du script un gadget.
Est-ce que cela vous semble pertinent, vous qui avez plus l'habitude que moi des scripts ? Si oui, j'avertirais en premier lieu les utilisateurs actuel avant de déplacer quoi que se soit.
Flow
modifierBonjour,
Flow arrive sur les pages de discussion utilisateur.
Pour l'instant, c'est en phase de test (trois utilisateurs qui l'ont fait activer manuellement). J'ai cherché les gadgets qui laissent des messages aux utilisateurs et qui doivent être mis à jour, pour l'instant j'ai repéré :
- MediaWiki:Gadget-LiveRC.js
- MediaWiki:Gadget-PaStec.js Gratus
- MediaWiki:Gadget-RevertDiff.js
- MediaWiki:Gadget-BlockMessage.js Arkanosis
Les fonctions qui écrivent des pages de discussion utilisateur doivent être mise à jour pour utiliser action=flow&submodule=new-topic (j'ai donné des liens sur la page de discussion des bots). LiveRC est sans doute un gros morceau, si jamais vous avez du temps pour vous plonger dans le code...
Orlodrim (discuter) 20 juillet 2015 à 20:40 (CEST)
- Pour poster des messages sur les PDD, MW core propose maintenant une API JS permettant de poster une nouvelle discussion que ce soit sur une PDD classique ou Flow. C'est le module mediawiki.messagePoster. Tpt (discuter) 21 juillet 2015 à 06:02 (CEST)
Dépréciation de document.write
modifier
Bonjour,
La prochaine version de ResourceLoader étant complètement asynchrone, il ne sera plus possible d'effectuer des modifications synchrones à l'aide de document.write
dans les gadgets, common.js. etc.
Sur la Wikipédia francophone, il y a encore une poignée de scripts qui se servent de cette fonction :
Amicalement — Arkanosis ✉ 6 août 2015 à 09:06 (CEST)
Projet:JavaScript/Notices/RevertDiff
modifierUn petit souci en ce qui concerne ce gadget : il semble qu'il ne soit plus possible de laisser un résumé de modif précis. La fenêtre popup ne s'ouvre plus lorsque l'on clique sur "message", mais peut-être est-ce un souci similaire à ceci, corrigé par Arkanosis ?--SammyDay (discuter) 24 août 2015 à 19:09 (CEST)
- Est-ce encore d'actualité après un petit Ctrl + F5 ? Je pensais avoir corrigé ce problème vendredi soir suite à ce signalement…
- Pour information, il reste encore une belle poignée de gadgets à réparer.
- Amicalement — Arkanosis ✉ 24 août 2015 à 20:25 (CEST)
- C'est nickel, merci !--SammyDay (discuter) 24 août 2015 à 21:20 (CEST)
Suggestion : gadget "onglet WikiBlame"
modifierBonsoir,
Seriez-vous intéressé par la création d'un gadget "OngletWikiBlame" ? Comme le nom l'indique, cela permettrait d'ouvrir la page en cours dans WikiBlame, un outil extrêmement utile !
L'ajout est très simple et se ferait à la suite des autres gadgets de type "onglet". Le code est le suivant :
if ( mw.config.get( 'wgNamespaceNumber' ) >= 0 ) {
$( document ).ready( function () {
mw.util.addPortletLink(
'p-cactions',
'http://wikipedia.ramselehof.de/wikiblame.php?lang=fr&article='
+ encodeURIComponent( mw.config.get( 'wgPageName' ) ).replace( /_/g, '+' ),
'WikiBlame',
'ca-wikiblame',
'Ouvrir WikiBlame avec cette page pré-renseignée'
);
});
}
Ce message pour savoir si vous approuvez la suggestion. Personnellement j'utilise l'outil depuis des années, et on peut dire qu'il m'a rendu de fiers services.
od†n ↗blah 14 septembre 2015 à 02:41 (CEST)
- Il y a déjà un lien vers Wikiblame dans les historiques (« Rechercher l'auteur d'un passage de l'article »). Tu penses quand même que ce serait utile ? Orlodrim (discuter) 15 septembre 2015 à 00:07 (CEST)
- Je n'avais pas remarqué ce lien dans les historiques ; du coup, ajouter un gadget pour faire gagner un clic de distance ne me parait pas rentable.
- En revanche, j'ai remarqué que le paramètre "binary_search_inverse" (apparu ici, correction ici) est ineffectif, car la valeur reconnue est "on". Mais comme il serait inopportun de l'activer, il faudrait tout simplement le supprimer.
- od†n ↗blah 15 septembre 2015 à 05:34 (CEST)
- Je l'ai supprimé. Orlodrim (discuter) 15 septembre 2015 à 21:18 (CEST)
Bonjour,
est-ce que quelqu'un saurai intégrer le Module:Random plutôt que le Modèle:Rand dans les modèles ci-dessus ? Ainsi, pour des pages telles que Portail:Bogota/Page au hasard/Liste, cela intégrerait directement le code [[{{#invoke:random|item|article1|article2|article3}}]] plutôt que {{#switch: {{{1|{{rand|1|3}}}}}|1=[[article1]]|2=[[article2]]|3=[[article3]]}}. Cela permettrait d'éliminer les "X=" et les "[[]]", soit 6 octets par ligne. Ça peut paraître dérisoire, mais pour des pages telles que Portail:Angleterre/Page au hasard/Liste pour lesquelles il y a près de 18000 articles liés, cela permettrait d'en réduire considérablement le poids et de pouvoir les générer plus rapidement (donc moins de ressources serveur).
N'ayant pas réussi à le faire par moi-même, un coup de main éventuel serait le bienvenu (cf un exemple d'utilisation du Module:Random sur cette page). Cordialement. £e p$y £éon (discuter) 24 septembre 2015 à 16:10 (CEST)
- Je viens de faire une petite modification sur le code de MediaWiki:Gadget-PageAuHasard.js et je l'ai testé sur Portail:Psychologie/Page au hasard/Liste. Ce script semble toujours fonctionner sauf qu'au lieu d'avoir une page de 130 971 octets, elle n'est plus que de 88 389 octets ! Qu'en pensez vous ? Ce code vous semble-t-il correct ? Cordialement. £e p$y £éon (discuter) 24 septembre 2015 à 22:11 (CEST)
- Ça semble correct. J'ai ajouté le remplacement de "=" par "{{=}}", sinon, sans la numérotation, les titres avec des signes "=" seraient interprétés comme des paramètres nommés du module. Je ne pense pas que le "rawcontinue=1" soit nécessaire. Orlodrim (discuter) 24 septembre 2015 à 22:44 (CEST)
- Orlodrim, "rawcontinue=1" rajouté suite conseil de Prométhée sur sa PDD. Après, si cela n'est effectivement pas nécessaire, on peut toujours l'enlever. £e p$y £éon (discuter) 24 septembre 2015 à 22:54 (CEST)
- Orlodrim a raison ça sert à rien, Portail:Psychologie/Page au hasard/Liste contient a priori le même nombre d'article qu'avant donc le rawcontinue change rien : tu les récupérais déjà tous avant. La perte d'octet semble uniquement due au module random. Prométhée (discuter) 25 septembre 2015 à 08:05 (CEST)
- "rawcontinue=1" supprimé. Il semblerait même engendre des problèmes car la page Portail:Afro-Américains/Page au hasard pour laquelle j'ai effectué un test s'est retrouvée catégorisée dans Catégorie:Page utilisant des arguments dupliqués dans les appels de modèle. £e p$y £éon (discuter) 25 septembre 2015 à 08:59 (CEST)
- Le script semble fonctionner correctement avec des gains considérables pour certaines pages. Si vous voyez d'autres améliorations à apporter, je suis preneur, dans la mesure du possible. Cordialement. £e p$y £éon (discuter) 25 septembre 2015 à 10:00 (CEST)
- "rawcontinue=1" supprimé. Il semblerait même engendre des problèmes car la page Portail:Afro-Américains/Page au hasard pour laquelle j'ai effectué un test s'est retrouvée catégorisée dans Catégorie:Page utilisant des arguments dupliqués dans les appels de modèle. £e p$y £éon (discuter) 25 septembre 2015 à 08:59 (CEST)
- Orlodrim a raison ça sert à rien, Portail:Psychologie/Page au hasard/Liste contient a priori le même nombre d'article qu'avant donc le rawcontinue change rien : tu les récupérais déjà tous avant. La perte d'octet semble uniquement due au module random. Prométhée (discuter) 25 septembre 2015 à 08:05 (CEST)
- Orlodrim, "rawcontinue=1" rajouté suite conseil de Prométhée sur sa PDD. Après, si cela n'est effectivement pas nécessaire, on peut toujours l'enlever. £e p$y £éon (discuter) 24 septembre 2015 à 22:54 (CEST)
- Ça semble correct. J'ai ajouté le remplacement de "=" par "{{=}}", sinon, sans la numérotation, les titres avec des signes "=" seraient interprétés comme des paramètres nommés du module. Je ne pense pas que le "rawcontinue=1" soit nécessaire. Orlodrim (discuter) 24 septembre 2015 à 22:44 (CEST)
hotcast
modifier(problème abordé ici: Wikipédia:Le Bistro/17 octobre 2015#Portails et catégories)
bonjour, sur cette page: Projet:JavaScript/Notices/BandeauxPortails vous dites (ligne 2) "Son fonctionnement est similaire à celui du gadget HotCats." voulez vous dire hotcatsmulti à la place de hotcats? (la redirection vers la notice hotcats est vide. une redirection vers la notice de hotcats multi serait peut être mieux?) --Vatadoshu ... 17 octobre 2015 à 20:18 (CEST)
Bouton maison
modifierBonsoir, j'ai essayé de me faire un bouton de modification pour wikifier et mettre en italliques un terme en un seul clic ( ''[[]]''
). J'ai bidouillé un bouton existant mais ça me fait disparaitre la moitié de ma barre monobook. Qu'est-ce qu'il faut corriger ?
mw.toolbar.addButton('//up.wiki.x.io/wikipedia/commons/b/bd/Wikilinker.png', 'Taxon', '''[[', ']]''', '', 'mw-editbutton-taxon');
-- Amicalement, Salix [Converser] 27 octobre 2015 à 18:04 (CET)
- Salix : Si tu veux insérer du texte qui contient des apostrophes comme
''[[
, encadre-le avec des guillemets ("''[["
) plutôt qu'avec des apostrophes ('''[['
). Même chose pour la ligne suivante :']]'''
→"]]''"
. Orlodrim (discuter) 27 octobre 2015 à 18:57 (CET)- Merci Orlodrim, ça marche impec' ! -- Amicalement, Salix [Converser] 28 octobre 2015 à 21:30 (CET)
Nouvelle page spéciale (phab:T115152), résultats un peu inattendus il me semble. Il y a peut-être du ménage à faire vers la fin de la liste, qui allonge la liste des préférences alors que ce n'est utilisé par presque personne. — Oliv☮ Éppen hozzám? 7 novembre 2015 à 06:50 (CET)
Après retrait des gadgets qui n’existent plus Ordre (section/no ) Gadget Nombre d’utilisateurs 01/13 Popups 3 160 01/11 LastContrib 3 030 09/01 DeluxeHistory 2 958 01/08 FlecheHaut 2 887 04/04 ResumeDeluxe 2 739 04/08 WikEd 2 537 03/01 EditZeroth 2 491 04/05 QPreview 2 429 03/02 OngletGoogle 2 380 06/01 CaracteresHTML 2 305 06/02 CaracteresMagic 2 244 02/02 SousPages 2 054 11/02 RevertDiff 1 846 03/04 OngletPurge 1 795 02/01 NavigAdmin 1 794 13/04 Evaluation 1 721 07/03 HotCatsMulti 1 674 06/03 CaracteresParser 1 614 03/03 OngletJournal 1 606 02/03 TriInterWiki 1 597 01/02 AncreTitres 1 573 10/02 OptimizedSuivi 1 534 01/03 dictionaryLookupHover 1 487 01/09 HomonymiesEnCouleur 1 474 10/01 LiveRC 1 422 07/02 BandeauxPortails 1 376 01/18 ZoomOnThumb 1 358 13/01 Accessibility 1 312 01/15 tooltipRef 1 279 07/01 BandeauxEbauches 1 241 01/01 AffMasLiens 1 220 01/04 EbauchesOff 1 118 12/02 AdvancedResearch 1 081 06/05 specialchars 981 01/14 referencederoulante 974 04/02 iRef 938 13/02 AvertissementImage 928 13/05 OptimizedShort 924 04/06 searchbox 904 08/01 AdvancedContribs 887 03/06 UTCLiveClock 861 08/02 ContribColors 766 05/03 MonobookToolbarSources 759 08/03 contribsrange 638 02/04 verifHomon 631 03/05 SupprimerInfoBulles 596 01/07 ExtendedCache 583 10/03 recentchangesbox 563 13/07 SuppressionDeluxe 485 02/05 verifEbauche 472 05/01 ForceMonobookToolbar 467 01/10 interProjets 466 12/03 OldSearchBox 454 05/04 MonobookToolbarPatrouille 453 04/03 MagnusEditBox 440 10/04 SuiviSimple 395 05/08 MonobookToolbarChangeCase 374 04/01 DotsSyntaxHighlighter 370 06/04 CaracteresOff 363 05/07 MonobookToolbarSmiliesAlien 337 05/09 MonobookToolbarDiacritiques 335 05/06 MonobookToolbarNotif 314 13/09 BugStatusUpdate 216 10/05 GlobalWatchlist 173 01/19 VectorClassic 158 04/07 TiretSignature 150 13/08 AllmessagesDeluxe 109 01/20 MiseEnPageEspaceAide 85 13/06 PaStec 85 01/05 LabelsOff 84 13/03 DeleteBot 31 11/01 ConfirmRollback 24 08/04 FusionContribs 4
- Cette copie pourra aussi servir de référence future pour voir les évolutions.
- En plus d’un éventuel ménage, il serait intéressant de comparer avec l’ordre dans lequel ils sont présentés (et éventuellement adapter celui-ci).
- — bonnes contributions, Ltrlg (discuter), le 7 novembre 2015 à 18:28 (CET)
- Aparté : sur la page en question, le tri des colonnes se fait incorrectement ; les valeurs sont traitées commes des chaînes et non comme des nombres. À part cela, une nouvelle page très utile od†n ↗blah 31 janvier 2016 à 03:56 (CET)
Compter les unread
modifierBonsoir,
existe-il une fonction javascript pour compter le nombre de unread (pages modifiées non lues) de notre liste de suivi ?
Cordialement. £e p$y £éon (discuter) 23 novembre 2015 à 23:01 (CET)
- Bonjour, je pensais avoir trouvé la solution en générant un JSON (exemple) et en récupérant la valeur de unreadcount mais je n'y parviens pas. Quelqu'un sait-il comment faire ? Cordialement. £e p$y £éon (discuter) 25 novembre 2015 à 11:02 (CET)
Ça dépend comment tu veux l'utiliser exactement, mais si par exemple tu veux modifier le lien « Liste de suivi » dans la barre personnelle pour y ajouter le résultat, tu peux faire comme ça :
var api = new mw.Api();
api.get({action: 'query', meta: 'userinfo', uiprop: 'unreadcount'}).done(function (data) {
$('#pt-watchlist a').text('Liste de suivi (' + data.query.userinfo.unreadcount + ')');
});
Orlodrim (discuter) 25 novembre 2015 à 20:14 (CET)
- Bonsoir Orlodrim. J'avais trouvé le code suivant qui semble aboutir au même résultat mais en plus de lignes :
var req= new XMLHttpRequest(); req.open("GET", mw.config.get('wgServer') + mw.config.get('wgScriptPath') + "/api.php?action=query&meta=userinfo&format=json&uiprop=unreadcount", true); req.onreadystatechange = function() { if (req.readyState === 4 && req.status === 200) { var json = JSON.parse(req.response); document.write(json.query.userinfo.unreadcount); } }; req.send(null);
- Néanmoins, que ce soit mon code ou le tien, je ne parviens pas à l'insérer dans le code d'Utilisateur:Lepsyleon/MajLdS.js qui permettrait d'avoir, quand il y a de nouveaux éléments non lus dans la liste de suivi, un fond rouge ET le nombre d'éléments non lus. Si tu as une solution, je suis preneur ! Cordialement. £e p$y £éon (discuter) 25 novembre 2015 à 21:19 (CET)
- Bizarrerie : alors que je n'ai plus que deux éléments non lus dans ma liste de suivi, ton script comme le mien indiquent que j'en aurais 4. Comment cela peut-il être expliqué ? Cordialement. £e p$y £éon (discuter) 25 novembre 2015 à 21:37 (CET)
api.get() ne renvoie pas le résultat, elle exécute une autre fonction en lui donnant en paramètre le résultat (que j'ai nommé data
). Tout ce que tu veux faire avec ce résultat, il faut donc le mettre dans le fonction appelée par api.get().
var api = new mw.Api();
api.get({action: 'query', meta: 'userinfo', uiprop: 'unreadcount'}).done(function (data) {
if (data.query.userinfo.unreadcount == 0) return;
$('#pt-watchlist a').text('Liste de suivi (' + data.query.userinfo.unreadcount + ')').css({
"background-color": "#C00",
// Autres attributs CSS...
});
});
Quant au nombre de messages non lus, je n'ai jamais regardé en détail comment ça fonctionnait (personnellement, j'ai entièrement désactivé la mise en évidence des modifications non consultées). Peut-être s'agit-il de modifications par des bots, masquées par défaut ? Ou alors des modifications trop anciennes pour être encore affichées ? Orlodrim (discuter) 25 novembre 2015 à 22:21 (CET)
- Orlodrim, merci pour l'aide. J'ai réussi à l'intégré dans mon code et il semblerait que cela fonctionne. Mais, j'ai toujours le problème avec le nombre de messages non lus, alors que les modifications des bots sont affichées ainsi que celles de wikidata. Même quand je désactive ces options, le bug demeure. Lepsyleon (discuter) 25 novembre 2015 à 22:43 (CET)
- Orlodrim, pour info, bug qui semble avoir disparu maintenant que je ne fais plus charger le brouillon de mon code javascript. Encore merci ! Cordialement. £e p$y £éon (discuter) 26 novembre 2015 à 12:12 (CET)
- Bonjour Orlodrim. Je pense avoir trouvé la source du problème d'écart entre le nombre généré par le script et ce que je vois dans ma liste de suivi. En fait, il comptabilise les modifications apportées sur un article via wikidata, bien que celles-ci soient masquées dans ma liste de suivi. Sais tu comment faire pour que les modifications sous wikidata ne soient pas comptabilisées ? --Cordialement. £e p$y £éon (discuter) 27 novembre 2015 à 18:01 (CET)
- Pas directement. Tu peux utiliser la fonction qui renvoie les articles de la liste de suivi qui satisfont certains critères et afficher le nombre d'éléments du résultat. La requête suivante renvoie les dernières modifications non vues (au plus 500) ayant n'importe quel type sauf « external » (c'est-à-dire Wikidata), sans inclure ni le titre ni aucune autre propriété (vu que ça ne sert qu'à compter) : https://fr.wiki.x.io/w/api.php?action=query&list=watchlist&wltype=edit%7Cnew%7Clog&wlprop=&wlshow=unread&wllimit=500. Orlodrim (discuter) 27 novembre 2015 à 21:03 (CET)
- Bonjour Orlodrim. Je pense avoir trouvé la source du problème d'écart entre le nombre généré par le script et ce que je vois dans ma liste de suivi. En fait, il comptabilise les modifications apportées sur un article via wikidata, bien que celles-ci soient masquées dans ma liste de suivi. Sais tu comment faire pour que les modifications sous wikidata ne soient pas comptabilisées ? --Cordialement. £e p$y £éon (discuter) 27 novembre 2015 à 18:01 (CET)
- Orlodrim, pour info, bug qui semble avoir disparu maintenant que je ne fais plus charger le brouillon de mon code javascript. Encore merci ! Cordialement. £e p$y £éon (discuter) 26 novembre 2015 à 12:12 (CET)
- non désolé, ça ne semble pas fonctionner car il m'inclut un article modifié via wikidata dans le total des non lus. Tant pis, je vais voir pour faire autrement. --Cordialement. £e p$y £éon (discuter) 29 novembre 2015 à 21:56 (CET)