#1 Le 17/06/2009, à 19:04
- 0xdeadbeef
[script] Un script Greasemonkey spécial pour le forum (2)
Bonjour,
ce script est destiné aux gens qui utilisent Firefox, Iceweasel, Epiphany ou Midori. Il ne fonctionne que si on a installé au préalable l'extension Greasemonkey. Pour ceux qui ne connaissent pas, il s'agit d'une extension qui permet précisément à des gens ayant peu de compétences en javascript, ou peu de goût pour ça, de modifier aisément le rendu d'une page.
Le script sert à visualiser un nombre réduit de forums sur la page d'accueil du forum. Pour peu qu'on ne désire surveiller que quelques forums et en s'y prenant bien, il y a moyen de débarrasser la page de son ascenseur vertical, ce qui peut être apprécié en particulier par les gens qui utilisent un eeePC..
Merci aux experts en javascript de ne pas me jeter des pierres, j'ai fait ça à la va-vite pour un besoin particulier, et ça me suffit.
De plus je ne garantis pas la compatibilité du script avec les version passées et futures de Firefox, ni avec celles de Greasemonkey, et encore moins vis à vis des mises à jour du forum..
Pour parser le DOM, par souci de performance, XPath a été largement préféré à getElementById()
Il serait très certainement possible d'optimiser davantage (minimisation du reflow dans le navigateur..)
mais en tout cas chez moi ça marche
Testé avec FF 3.0.11 et GM 0.8.20090123.1
// ==UserScript==
// @name forum-light
// @author 0xdeadbeef
// @license GPL version 3 or any later version; http://www.gnu.org/copyleft/gpl.html
// @version 0.5
// @namespace http://www.ubuntu-fr.org
// @description Personnalisation de la page d'accueil du forum ubuntu-fr.org
// @include http://forum.ubuntu-fr.org/
// @include http://forum.kubuntu-fr.org/
// @include http://forum.xubuntu-fr.org/
// @include http://forum.ubuntu-fr.org/index.php
// @include http://forum.kubuntu-fr.org/index.php
// @include http://forum.xubuntu-fr.org/index.php
// ==/UserScript==
var DisplayFlags = new Array();
DisplayFlags["Annonce"] = false;
DisplayFlags["Info"] = false;
DisplayFlags["Installation"] = false;
DisplayFlags["Avant l'installation"] = true;
DisplayFlags["Pendant l'installation"] = true;
DisplayFlags["Session live"] = false;
DisplayFlags["Applications"] = true;
DisplayFlags["Bureautique"] = false;
DisplayFlags["Infographie"] = false;
DisplayFlags["Internet & réseaux"] = true;
DisplayFlags["Jeux"] = false;
DisplayFlags["Multimédia"] = false;
DisplayFlags["Ubuntu en entreprise"] = false;
DisplayFlags["Logiciels éducatifs"] = false;
DisplayFlags["Accessibilité"] = false;
DisplayFlags["Autres"] = false;
DisplayFlags["Support"] = true;
DisplayFlags["Général"] = false;
DisplayFlags[".deb et gestionnaire de paquets"] = false;
DisplayFlags["Serveurs graphiques et cartes vidéo"] = false;
DisplayFlags["Matériel"] = false;
DisplayFlags["Serveurs"] = false;
DisplayFlags["Virtualisation"] = true;
DisplayFlags["Développement - Programmation"] = true;
DisplayFlags["Trucs et astuces"] = false;
DisplayFlags["Version instable"] = false;
DisplayFlags["Autres architectures"] = false;
DisplayFlags["Environnements"] = false;
DisplayFlags["GNOME"] = true;
DisplayFlags["KDE"] = true;
DisplayFlags["XFCE"] = true;
DisplayFlags["Openbox, Windowmaker, Enlightenment et autres..."] = true;
DisplayFlags["Activités autour du libre"] = false;
DisplayFlags["Projets Ubuntu-fr"] = true;
DisplayFlags["Vos développements libres"] = false;
DisplayFlags["Vos sites sur le libre"] = false;
DisplayFlags["Revendeurs libres"] = true;
DisplayFlags["Divers"] = true;
DisplayFlags["Actualités autour du logiciel libre"] = false;
DisplayFlags["Café Ubuntu"] = true;
DisplayFlags["Événements"] = false;
DisplayFlags["À propos du site - Contribution(s)"] = true;
DisplayFlags["Être ou ne pas être... ?"] = true;
DisplayFlags["L'éphémère"] = false;
//////////////////////
//// BANNIERES //////
//////////////////////
if (!DisplayFlags["Info"]) {
var info = document.getElementById('info');
if (info) {
var infoBlock = info.parentNode;
if (infoBlock) {
infoBlock.parentNode.removeChild(infoBlock);
}
}
}
if (!DisplayFlags["Annonce"]) {
var announceBanner = document.getElementById('announce');
if (announceBanner) {
announceBanner.parentNode.removeChild(announceBanner);
}
}
//////////////////////
////// FORUMS //////
//////////////////////
function RemoveForum(forum)
{
var tr = forum.parentNode.parentNode.parentNode.parentNode;
tr.parentNode.removeChild(tr);
}
var forums = document.evaluate( "//tr/td[@class='tcl']/div[@class='intd']/div[@class='tclcon']/h3",
document,
null,
XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,
null );
var nforums = forums.snapshotLength;
for (var i=0; i<nforums; i++) {
var forum = forums.snapshotItem(i);
var forumname = forum.textContent;
if (!DisplayFlags[forumname]) {
RemoveForum(forum);
}
}
//////////////////////
///// SECTIONS /////
//////////////////////
function RemoveSection(section)
{
var idx = section.parentNode.parentNode;
idx.parentNode.removeChild(idx);
}
var sections = document.evaluate( "//div[@id='punindex']/div[@class='blocktable']/h2/span",
document,
null,
XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,
null );
var nsections = sections.snapshotLength;
for (var i=0; i<nsections; i++) {
var section = sections.snapshotItem(i);
var sectionname = section.textContent;
if (!DisplayFlags[sectionname]) {
RemoveSection(section);
}
}
>> la personnalisation se fait en éditant le fichier (via "Manage User Scripts" du singe) et en mettant à true ou à false ce qui doit l'être, conformément à l'intuition, dans le tableau DisplayFlags[]
>> le script fonctionne également sur les pages forum.kubuntu-fr.org et forum.xubuntu-fr.org
>> important: il doit être copié dans un fichier dont le nom est obligatoirement au format *.user.js et dont l'encodage des caractères doit être en UTF-8, avant de l'installer dans Greasemonkey
>> si une bannière avec compte à rebours est insérée sur la page par les administrateurs comme cela arrive à l'occasion de certains événements, cela peut entraîner l'émission de messages d'erreur dans la console JavaScript: c'est tout à fait explicable et ça n'a pas de conséquence sur le fonctionnement du script
Le bonjour chez vous
EDIT:
- rajouté Midori
Dernière modification par 0xdeadbeef (Le 18/06/2009, à 12:12)
#2 Le 18/06/2009, à 00:14
- Wapush
Re : [script] Un script Greasemonkey spécial pour le forum (2)
Merci
Contrairement à ton premier script "kikela", celui-ci fonctionne très bien avec Midori. Tu peux donc l'ajouter à ta liste des navigateurs supportés.
Édit : Et Midori n'a pas besoin de Greasemonkey puisqu'il gère les scripts en interne. Seul désavantage, il faut l'éditer à la main pour mettre à true ou à false.
Dernière modification par Wapush (Le 18/06/2009, à 00:19)
Hors ligne
#3 Le 18/06/2009, à 12:18
- 0xdeadbeef
Re : [script] Un script Greasemonkey spécial pour le forum (2)
Et Midori n'a pas besoin de Greasemonkey puisqu'il gère les scripts en interne. Seul désavantage, il faut l'éditer à la main pour mettre à true ou à false.
Oui, mais même en l'utilisant avec Greasemonkey on en est là. Pour pouvoir paramétrer en cochant des cases dans une boîte de dialogue il faudrait écrire une véritable extension pour Firefox dédiée. Pas le même boulot.. et de plus tu ne pourrais pas l'utiliser
#4 Le 08/07/2009, à 19:49
- Wapush
Re : [script] Un script Greasemonkey spécial pour le forum (2)
Ce n'était qu'une constatation
Merci encore !
@+
Hors ligne
#5 Le 09/07/2009, à 21:46
- geenux
Re : [script] Un script Greasemonkey spécial pour le forum (2)
Sympa, faudra que je me penche sur l'écriture de script javascript comme ça, ça permet pas mal de personnalisation.
Hors ligne