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..
Exemple:
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