Discussion Projet:Scripts et gadgets/2015

Dernier commentaire : il y a 7 ans par Gratus dans le sujet Signer
Autres discussions [liste]
  • 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.


Signer

modifier

Bonjour, 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)

MediaWiki:Gadget-DeluxeHistory

modifier

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');
⇨ Dr Brains ∞ Consultation ∞ 1 mars 2015 à 13:55 (CET)

MediaWiki:Gadgets-definition et MediaWiki:Gadget-monBrouillon

modifier

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 (typiquement sendemail) 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)

jQuery == Brainfuck

modifier

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

modifier

Voir Discussion MediaWiki:Gadget-LiveRC.js#Extension Mediawiki : LiveRC

⇨ Dr Brains ∞ Consultation ∞ 3 avril 2015 à 23:03 (CEST)

Tooltip

modifier

Bonjour,

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)

Icône lien externe, comment ne pas le copier ?

modifier

Bonjour,

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 css a.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

modifier

Bonjour, 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 .
⇨ Dr Brains ∞ Consultation ∞ 20 avril 2015 à 20:06 (CEST)

Changement de l'API pour les requêtes concernant les journaux d'événements

modifier

BREAKING CHANGE: Formatting of log parameters is changing in logevents, recentchanges, and watchlist queries

Le 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)

PàStec

modifier

Bonjour, 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) :

  1. 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).
  2. 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

modifier

Bonjour,

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)

modifier

Le 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.

Orlodrim (discuter) 3 juin 2015 à 19:38 (CEST)

afficher des suggestions basées sur les pages d'une catégorie

modifier

bonjour 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

modifier

Le 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 ?

Zebulon84 (discuter) 13 juin 2015 à 18:43 (CEST)

DrapeauJaune

modifier

Bonjour le projet JS  ,

J'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

  1. de déplacer la liste des modifications douteuses dans l'espace Wikipédia ;
  2. 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.

Merci — 0x010C ~discuter~ 15 juillet 2015 à 22:15 (CEST)

Flow

modifier

Bonjour,

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é :

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

modifier

Un 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"

modifier

Bonsoir,

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)

MediaWiki:Gadget-PageAuHasard.js et modèle {{Page au hasard}}

modifier

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)

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

modifier

Bonsoir, 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)

Spécial:GadgetUsage

modifier

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

modifier

Bonsoir,

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)
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)
Revenir à la page « Scripts et gadgets/2015 ».