Page 1 sur 2

Comment simplifier la vie de Orion???

Posté : mar. 5 avr. 2011 10:56
par Ikki
Bonjour à tous,

Etant modo de notre super forum, je me dois de regarder tous les nouveaux sujets/prez/réponses sur les différents topics.
Pour se faire, j’utilise la page http://www.team-aaz.com/search.php?search_id=newposts" onclick="window.open(this.href);return false;
Et je clique droit / nouvel onglet sur" Voir le premier message non lu" ( carré orange à gauche de chaque topic).

Quand il y a qu'une dizaine de topics non lus ça va, mais quand y en a 2 voir 3 pages ( après une absence de plus de 24h), celà devient chiant de faire clic droit ouvrir un nouvel onglet sur chaque carré orange.

Donc je cherche un plug in ou un script qui pourrait me le faire automatiquement dès que je l'active ou autre.
Ah oui, je n'utilise que Firefox ( version 4.0 actuellement ) de ma Liberkey.

Je fais donc appel aux dev et autres techniciens qui ont envie de se casser la tête sur ce challenge.

Je reste à votre disposition pour plus de renseignements ou différents tests.

merci bien à vous tous.

PS: Si celà marche pour ce forum, je l'appliquerais à bon nombre de mes autres forums.

Re: Comment simplifier la vie de Orion???

Posté : mar. 5 avr. 2011 14:14
par oOZz
installe l'extension Greasemonkey, trouve quelqu'un qui sait écrire en javascript

Le script doit faire:
- recherche de l'élément "icon_topic_newest.gif"
- lire le lien dans la balise href précédente :

Code : Tout sélectionner

<a href="./viewtopic.php?f=4&t=2619&view=unread#unread"><img src="./styles/subsilver2/imageset/icon_topic_newest.gif" width="18" height="9" alt="Voir le premier message non lu" title="Voir le premier message non lu"></a>
- envoyer un nouvel onglet avec ce lien

y a ka comme on dit.

Je peut te donner un début de structure, faudrait s'y pencher un peu plus pour les commandes d'éxécution:

Code : Tout sélectionner

// ==UserScript==
// @name           TeamAAZ Read Unread messages in Tab
// @namespace      
// @identifier     
// @version        0.1
// @date           05-04-2011
// @description    Ouvre les nouveaux mesages non lu dans des onglets
// @include        http://www.team-aaz.com/search.php?search_id=unreadposts
// @include        http://www.team-aaz.com/search.php?search_id=newposts
// ==/UserScript==

// ChangeLog
// 0.1     05-04-2011     Creation

// ------------------------------------------------------
window.addEventListener('load', function() {
var doc=unsafeWindow.document;

// ------------------------------------------------------
ecrire ici le code javascript (une RegEXP dans le contenu html irait bien) pour rechercher la chaine: "icon_topic_newest.gif"

régler une variable (exemple: Allhref) avec les valeurs des href précédent chaque itération avec la fonction xpath ça devrais le faire, du genre:
var Allhref=doc.evaluate(xpath,doc,null,XPathResult.ORDERED_NODE_ITERATOR_TYPE,null);

envoyer la fonction firefox d'ouvrir tous les liens de la variable Allhref dans des onglets, doit pouvoir trouver ça sur https://developer.mozilla.org/fr/docs

Mais attention tu va souffrir de ralentissements s'il y a 25 liens vois 50... 50 onglet lol ! j'y pense même pas !

// ------------------------------------------------------
}, false);

Re: Comment simplifier la vie de Orion???

Posté : mar. 5 avr. 2011 14:33
par gibe
+1 d'autant que souvent certains répondent avant les admin et/ou les modérateurs du coup on ne sait plus où on en est des nouveaux inscrits ; souhaitant la bienvenue même si la présentation est mauvais et on a des relances : "pkoi ke chui po ok" ?
Quand tu auras ton script tu pourras le diffuser stp ?
Merci :)

Re: Comment simplifier la vie de Orion???

Posté : mar. 5 avr. 2011 17:12
par Ikki
Merci de l'aide, je vais étudier ça même si je pense que ça doit déjà exister..

Re: Comment simplifier la vie de Orion???

Posté : mer. 6 avr. 2011 08:37
par oOZz
tien, j'en ai trouvé un de tout fait. Il faut juste le mettre à jour car plus développé.

http://userscripts.org/scripts/show/4681" onclick="window.open(this.href);return false;

Sous FF4, je ne sais pas quelle fonction n'est pas à jour mais le script n'ouvre pas les onglet

Installe le script, et quand tu es sur la page http://www.team-aaz.com/search.php?search_id=newposts" onclick="window.open(this.href);return false;

clic droit sur greasemonkey, menu "User Script commands..." t'a le choix: Tout ouvrir, ouvrir les 5 premiers, les 10 premiers.

Le script est prévu pour que ça fonctionne sur:
- les nouveau messages ( */search.php?*search_id=newposts* )
- Les forums ( */viewforum.php?f=* )

si tu veux le faire marcher sur d'autres pages il te suffit d'ajouter une ligne par exemple:

Code : Tout sélectionner

// @include        */search.php?*search_id=unreadposts*
Après recherches j'y suis presque.

Voici ce que donne le script épuré, simplifié mais pas encore tout à fait fonctionnel:

Code : Tout sélectionner

// ==UserScript==
// @name           Open recent message
// @namespace      
// @description    
// @include        */search.php?*search_id=newposts*
// @include        */search.php?*search_id=unreadposts*
// @include        */viewforum.php?f=*
// ==/UserScript==
//
// --------------------------//

//--- Je défini mes variables ---
var strLabel;
var allLinks, thisLink, maxLinks;
var i;

// -- Définition titres des commandes
LabelAll = "Tous les nouveaux messages";
LabelOnly05 = "Voir les 5 premier messages";
LabelOnly10 = "Voir les 10 premier messages";

// -- Définition des commandes --
GM_registerMenuCommand(LabelAll, openRecentPostsAll);
GM_registerMenuCommand(LabelOnly05, openRecentPosts05);
GM_registerMenuCommand(LabelOnly10, openRecentPosts10);

// Recherche des liens qui sont sur l'icone icon_topic_newest.gif
allLinks = document.evaluate(
      "//a[contains(@href, 'unread#unread')]",
      document, null,   XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null
      );

// -- Envoi des commandes
function openRecentPostsAll() {
   openRecentPosts(0);
   }
function openRecentPosts05() {
   openRecentPosts(5);
   }
function openRecentPosts10() {
   openRecentPosts(10);
   }

// -- Ouverture des liens dans des onglets      
function openRecentPosts(maxLinks) {
   if (maxLinks == 0) {
      maxLinks = allLinks.snapshotLength;
      }
   for (var i = 0; i < maxLinks; i++) {
      if (i == maxLinks) {
         break;
         }
      thisLink = allLinks.snapshotItem(i);
//      alert(thisLink.href);
      GM_openInTab(thisLink.href);
      }
   }
Le problème c'est que la commande GM_openInTab casse la boucle for.
Et donc je n'ai qu'un onglet qui s'ouvre, le premier trouvé.

J'ai ajouté " // alert(thisLink.href); " pour la vérification qu'il trouve bien les liens. décommente la ligne, "commente" la suivante en ajoutant // et tu verras.


EDIT:

Tiens change la dernière section par ça:

Code : Tout sélectionner

// -- Ouverture des liens dans des onglets      
function openRecentPosts(maxLinks) {
   if (maxLinks == 0) {
      maxLinks = allLinks.snapshotLength;
      }
   for (var i = 0; i < maxLinks; i++) {
      if (i == maxLinks) {
         break;
         }
      //thisLink = allLinks.snapshotItem(i);
      //alert(thisLink.href);
      //GM_openInTab(thisLink.href);
      window.open(allLinks.snapshotItem(i).href);
      }
   }
ça marche, sauf que tu dois impérativement forcer firefox à ouvrir les liens dans des onglet (dans les options).

je regarde pour ajouter les fonction directement en haut dans un des menu du fofo.

Re: Comment simplifier la vie de Orion???

Posté : mer. 6 avr. 2011 15:33
par Ikki
Merci de ton aide. Je vais tester ça cette nuit tranquille au taffe..

Re: Comment simplifier la vie de Orion???

Posté : mer. 6 avr. 2011 15:55
par oOZz
moi j'ai eu de ERREUR 500 de la part du serveur. 10 requètes en même temps (dans la même seconde) sur le fofo... houlaaaa... Prof va pas aimer...

Re: Comment simplifier la vie de Orion???

Posté : mer. 6 avr. 2011 16:03
par Prof
Il lui en faut plus... :twisted: :twisted:

Re: Comment simplifier la vie de Orion???

Posté : mer. 6 avr. 2011 16:43
par gibe
...il y a du ban dans l'air....

Re: Comment simplifier la vie de Orion???

Posté : mer. 6 avr. 2011 18:54
par Ikki
Pas grave si il mets de spages 500 sur chaque onglet, je les relancerai avec actualiser les onglets et comme j'utilisais load progressively tabs, ca ne chargerais pas en même temps.
Mince Load ne marche pas sous FF4, faut que je lui trouve un remplaçant, je trouvais aussi FF4 plus long à charger