Liste noire (version bêta)

Le script est disponible ici : https://github.com/SimeonLePoisson/liste-noire-lesmaths/blob/master/listenoire.user.js
Et la première version alternative proposée par Steven Neutral est là : https://github.com/SimeonLePoisson/liste-noire-lesmaths/blob/bouton/listenoire.user.js

J'avais envie d'apprendre un peu de JavaScript aujourd'hui, alors je me suis amusé à écrire un userscript pour le forum que je partage avec vous. Il est conçu pour l'extenstion Greasemonkey de Mozilla Firefox mais devrait pouvoir s'utiliser sur la plupart des navigateurs modernes.

Il a une seule fonction : afficher ou masquer des messages en cliquant sur un bouton, ceci afin d'alléger certaines pages de discussion du forum. Son nom vient du fait qu'il permet de définir une "liste noire" d'utilisateurs dont les messages sont masqués par défaut. Vous pourrez constater l'efficacité de ceci sur la capture d'écran tirée du fil APMEP avec la liste d'exemple (j'espère que christophe et Fin de partie ne m'en voudront pas).

Le code est livré sans aucune garantie, et je serais heureux d'avoir des retours de ceux qui l'auront essayé.

P.S. Plusieurs bugs ont été corrigés mais il peut encore en rester.

Edit : j'ai ajouté une fonction qui corrige les accents dans les messages "La dernière correction date de [...]".33363

Réponses

  • De mon tel: je t en veux pas et je te rejoins même. Moi aussi je rêve d acquérir java script
    Aide les autres comme toi-même car ils sont toi, ils sont vraiment toi
  • JS est déjà dans ton navigateur.
    Algebraic symbols are used when you do not know what you are talking about.
            -- Schnoebelen, Philippe
  • Je sais, je voulais dire je rêve de l'utiliser les doigts dans le nez. Je l'ai un peu montré à mes élèves, en en apprenant un bout pour l'occasion, mais la syntaxe est vraiment toute pourrie de chez pourrie.
    Aide les autres comme toi-même car ils sont toi, ils sont vraiment toi
  • @siméon, mais à quel endroit tu mets le scrip déjà pour commencer? Parce que si tu as sauvé le source d'une page de forum et que tu la recharges en interne ensuite en lui ayant ajouté ton script, ce n'est pas très maniable.
    Aide les autres comme toi-même car ils sont toi, ils sont vraiment toi
  • http://www.les-mathematiques.net/phorum/read.php?32,960683,960799#msg-960799

    @christophe : est-ce que tu connais coffee-script ? C'est un langage "pythonique" qui produit du javascript une fois compilé. Je n'ai pas encore eu l'occasion d'essayer mais le concept est sympa.
  • Merci, je ne sais hélas pas programmer en Python. Mais c'est une bonne information (je suppose qu'il a une syntaxe moins "folle" que le JS). Mais ma question était "comment insères-tu TON script java DANS une page que tu n'as PAS ENCORE chargée?"
    Aide les autres comme toi-même car ils sont toi, ils sont vraiment toi
  • Euuu non... T'as dû essayer en faisant un JS, mais je ne tombe que sur nos profils respectifs. (N'oublie pas que le JS s'exécute sur la machine cliente par sur le serveur :-D )
    Aide les autres comme toi-même car ils sont toi, ils sont vraiment toi
  • La syntaxe javascript n'est pas plus compliquée que ton Caml.
    Merci Siméon. J'avais déjà essayé cette extension une fois (je me suis amusé à changer le nom de mes amis facebook), mais d'habitude j'utilise Chrome. Si quelqu'un a une solution pour Chrome je suis preneur.
  • @steven, l'extension Tampermonkey de Chrome semble faire le même boulot que Greasemonkey. Je ne l'ai pas encore testée.

    @steven+christophe, il existe aussi des compilateurs Ocaml > Javascript comme Js_of_Ocaml.
  • Gigantesque (si ça marche, je n'ai pas essayé). Merci Siméon!!
    Aide les autres comme toi-même car ils sont toi, ils sont vraiment toi
  • @Steven Neutral : je viens de tester avec Chrome+Tampermonkey, ça marche comme sur des roulettes !
  • C'est un peu agaçant de faire les frais de la guéguerre entre entre la communauté "pour le gratuit et libre" et windows.
    Pas de js_of_caml.exe à installer en un clic pour windows. Ce n'était qu'une vue de l'esprit.

    Un parcours du combattant prenant des heures pour essayer de comprendre les labyrinthiques constructions empilées de "ocsigen" pour finalement comprendre.... qu'il n'y a pas d'exe clé en main dans cette histoire et ... qu'à moins de changer d'OS et de faire 6 mois de formation dans le chinois élaboré des "opam, lbt, debian, unbuntu et cie" (la liste de tous ces mots incompréhensible pour moi est interminable), pas d'espoir pour un bête ocamleur qui a eu le malheur comme tout le monde de s'acheter malencontreusement un pc avec windows de transformer ses programmes caml en JS...

    :-X
  • @snif : les militants neuneus et ébahis du libre ou des macs sont pénibles, mais je ne comprends pas bien le lien entre ton histoire et une << guéguerre entre entre la communauté "pour le gratuit et libre" et windows >>. Peux-tu développer ?
  • Eh ben merci H ! J'en avais tellement marre de la lenteur de windows, de ces c..d'antivirus et aussi de la complication que je suis passé à Linux et je le conseille à tout le monde. Tout marche mieux et est plus simple.
  • @Blueberry : tu t'es reconnu dans "les militants neuneus et ébahis du libre ou des macs" ? Je ne comprends pas ton intervention en fait. Je peux détailler la mienne : je trouve pénibles ces militants qui te vantent les méritent du système qu'ils ont choisis en passant sous silence les difficultés ou en brossant un tableau mirifique de leur système. Je n'utilise quasiment que des ordinateurs sous linux depuis une dizaine d'années, cela me convient mais j'ai conscience que ce n'est pas parfait. Tous les systèmes ont leurs défauts.
  • Je m'amusais. Mais je viens de sortir de Msoft windows ; évidemment qu'il n'y a rien de mirifique mais ce que j'avais avant est une belle m..de et payante ! Linux pour moi gagne largement : simple, gratuit et rapide. (Comparativement)
    Pour ce qui est du Mac, j'ai juste utilisé I-Tunes à une époque et la différence est immense avec les logiciels Microsoft. Avec ces derniers rien n'est intuitifs, tout est compliqué ou manquant. J'ai vu ce qu'était un logiciel utilisable très facilement et qui prévoyait ce dont tu allais avoir besoin. Cela-dit jamais je ne paierai le prix de ce matériel et je trouve détestable leur politique d'étancheïté totale avec les pc pour obliger les utilisateurs à payer.
  • En ce qui me concerne, je suis très terre à terre. Mon pc est sous windows, je voulais tout bêtement télécharger un "js_of_caml.exe (ou éventuellement l'installer en lançant un simple "install.exe" cliqué sur un dowload donné puis m'en servir pour exécuter mes caml.

    Bin ça n'existe tout simplement pas. J'ai visionné pas moins de 3 séminaires quasiment en entier de post-taupins avec des micros mal branchés (donc on entend quasiment rien) vanter les mérites d'ocsigen ou de je sais pas quoi, avec force transparents tout à fait jolis, lu 50 pages an anglais, etc, pour arriver à la conclusion que ... js_of_caml n'existe pas pour windows. En passant, c'est un peu dommage. ocaml est développé par l'INRIA, ils ont les moyens et sont dynamiques, mais à demander un parcours du combattant, voir un changement d'OS aux programmeurs qui voudraient essayer leurs trucs, ils se referment finalement sur eux-mêmes... A la belle époque de Delphi avec tout clé en main est finie.

    Qu'à cela ne tienne, je me suis dis "on va tenter "obrowser" (qui se vante d'exécuter du caml dans la fenètre du navigateur et d'être programmé en java script). Là, pas besoin d'exe, à priori, on peut rêver de télécharger un simple fichier html. Et bin non même pas, y a un nouveau parcours du combattant et j'ai pas le courage... (et pas le temps)

    Evidemment, j'ai exulté ma frustration spontanément, y a pas de développements derrière, je ne sais pas ce qu'il y a derrière. Il est peut-être techniquement impossible à l'INRIA de faire ce qu'a fait borland avec delphi ou c builder après tout (menfin, delphi était-il un tel exploit??? (remplacé par Lazarus en mode gratuit aujourd'hui)). C'est vraiment frustrant, j'aurais vraiment bien kiffé de traduire du caml en JS.
  • @snif : c'est dommage. Tu peux jouer avec Js_of_Ocaml sans l'installer avec http://tryocaml.ocamlpro.com/js_of_ocaml/.
  • Je n'arrive pas à faire marcher Tampermonkey. Dans le tableau de bord je sélectionne ton script, je sélectionne "Activer" puis "Démarrer", mais il ne se passe rien.
  • Quand tu fais "Ajouter un nouveau script...", Tampermonkey te propose un éditeur avec les lignes suivantes
    // ==UserScript==
    // @name       My Fancy New Userscript
    // @namespace  http://use.i.E.your.homepage/
    // @version    0.1
    // @description  enter something useful
    // @match      http://www.les-mathematiques.net/phorum/read.php?32,960683,961903#msg-961903
    // @copyright  2012+, You
    // ==/UserScript==
    

    Il faut supprimer ces lignes et copier-coller à la place le code de mon premier message http://www.les-mathematiques.net/phorum/read.php?32,960683,960683#msg-960683, en prenant bien soin de corriger les deux url du préambule massacrées par le forum en :
    http://www.les-mathematiques.net/phorum/read.php?*
    
    http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js
    

    Ceci fait il ne reste plus qu'à enregistrer le script et ça devrait fonctionner directement sans même redémarrer le navigateur (j'ai testé avec deux versions de Chrome sous Linux et Windows). Dis moi si tu n'y parviens pas.
  • ça fonctionne très bien chez moi ! (Mozilla/Greasemonkey)
    Merci cher Siméon pour ce partage ingénieux.

    J'ai déjà quelques idées pour ma liste noire....lol

    Bon été à toi,
  • @Bbidule : de rien, n'hésite à suggérer des améliorations. Bon été à toi aussi !
  • Oui le problème était les liens. Ca marche très bien, merci Siméon.
  • Ma maigre contribution :
    var $toggle = $('<button/>', {
    			html: "masquer",
    			click: hide
    	});
    

    Désolé je ne sais pas comment insérer une image pour montrer le rendu. C'est simplement un joli bouton à la place de "[masquer le message]".
  • Remarque: il n'y a pas besoin du $(document).ready(function () {. Mais je ne sais pas si ça apporte quelque chose de l'enlever.
  • Nouvelle version, les messages explosent quand on les masque

    Les liens corrigés:

    http://ajax.googleapis.com/ajax/libs/jqueryui/1.11.0/themes/smoothness/jquery-ui.css

    http://ajax.googleapis.com/ajax/libs/jqueryui/1.11.0/jquery-ui.min.js


    // ==UserScript==
    // @name        Liste Noire
    // @namespace   listenoire
    // @description Ajoute un bouton afficher/masquer aux messages
    // @author      Siméon & Steven Neutral
    // @include     http://www.les-mathematiques.net/phorum/read.php?*
    // @version     2
    // @grant       none
    // @require     http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js
    // @require		MYCSS http://ajax.googleapis.com/ajax/libs/jqueryui/1.11.0/themes/smoothness/jquery-ui.css 
    // @require		http://ajax.googleapis.com/ajax/libs/jqueryui/1.11.0/jquery-ui.min.js
    // @grant       GM_addStyle
    // @grant       GM_getResourceText
    // ==/UserScript==
    
    // include MYCSS
    var cssTxt  = GM_getResourceText ("MYCSS");
    GM_addStyle (cssTxt);
    
    // Liste des utilisateurs dont les messages seront masqués par défaut
    var blacklist = ['Alannaria', 'Fin de partie', 'FDP-HLM', 'FDP_HLM'];
    
    var unhide_txt = 'masquer';
    
    var toggle_style = {
    	'margin-left': '0.5em',
    	'font-size': '1em',
    	'font-weight': 'normal',
    	'visible' : 'hidden'
    }
    
    function add_toggle ($msg) {
    	var $author = $('div.message-author', $msg);
    	var author_text = $author.text().trim();
    
    	var $toggle = $('<button/>', {
    			html: unhide_txt,
    			click: hide
    	});
    	$toggle.appendTo($author);
    	
    	var $body = $('div.message-body', $msg);	
    	
    	function hide () {
    		var text_length = String($body.text().trim().length);
    		var text = '[afficher ' + text_length + ' caractères]';
    		//$body.css('display','none');
            $body.toggle('explode');
    		$toggle.html(text);
    		$toggle.click(unhide);
    	}
    	
    	function unhide () {
    		//$body.css('display','block');
            $body.show('explode');
    		$toggle.html(unhide_txt);
    		$toggle.click(hide);
    	}
    
    	if (blacklist.indexOf(author_text) >= 0) {
    		hide();
    	}
    }
    
    function correct_accents ($msg) {
    	content = $msg.html();
    	content = content.replace(/&amp;/g,'&');
    	$msg.html(content);
    }
    
    //$(document).ready(function () {
    	$('.message-body').css({'margin':'0', 'border':'0'});
    	$('.generic').css({'margin':'0', 'border':'0'});
    	$('.message').css({'margin':'16px', 'border': '1px solid #c0cdc0'});
    	$('div.message-body').each(function (index) {correct_accents($(this))});
    	$('div.message').each(function (index) {add_toggle($(this))});
    //});
    
  • Salut,

    Je viens de créer un dépôt sur github pour simplifier les modifications ainsi que l'accès au fichier (plus d'url massacrées). C'est ici : https://github.com/SimeonLePoisson/liste-noire-lesmaths. Je vais modifier le premier message du fil en conséquence.

    J'ai aussi corrigé un bug dans la fonction correct_accents qui faisait que le script ne fonctionnait pas avec certaines versions de Firefox/Greasemonkey.

    @Steven Neutral : super tes contributions ! j'ai créé une branche 'bouton' sur le dépôt pour la première, ici : https://github.com/SimeonLePoisson/liste-noire-lesmaths/tree/bouton. Je n'ai pas intégré la modification à la branche 'master' parce que je trouve que ces gros boutons manquent un peu de discrétion.

    Je ne me suis pas occupé de l'effet explosif mais je t'encourage à créer toi-même une nouvelle branche sur le dépôt.
Connectez-vous ou Inscrivez-vous pour répondre.