Messagerie privée pour RBS Change

17 juillet 2010

Je viens de créer la page dédiée à ce module ainsi que le projet SourceForge pour ce module avec une première version de développement.

Donc au programme de ce module déjà évoqué il y a quelques temps : des messages organisés en conversations à deux participants ou plus. Il est possible d’inviter un nouveau participant en cours de route et de quitter une conversation (elle ne sera effacée en base qu’une fois que tous les participants l’auront quittée).

Cette version n’est pas encore utilisable notamment sur un point : la sélection des destinataire qui doit encore être revue. Mais il y a déjà pas mal de choses fonctionnelles, donc ça valait le coup de l’archiver quelque part ^^

Ce qu’il me reste à faire sur ce module avant d’en sortir une première version stable :

  • comme dit plus haut : implémenter une sélection viable des destinataires (là c’est une liste à sélection multiple… ça va quand il y a dix membres mais ça ne tient absolument pas un grande volumétrie).
  • indexer les messages pour qu’on puisse les retrouver dans la recherche mais en gérant correctement les permissions d’accès pour que seuls les participants de la discussion puissent les voir.
  • d’une manière ou d’une autre (rien n’est encore vraiment arrêté dans la façon de faire), possibilité de marquer des messages/discussions : “à traiter”, “réponse attendue”, “contient des informations importantes”…
    • Print this article!
    • Turn this article into a PDF!
    • E-mail this story to a friend!
    • Facebook
    • Twitter
    • del.icio.us
    • Digg
    • Google Bookmarks
    • BlogMemes Fr
    • Wikio FR
    • Netvibes

Quelques extensions pour Firefox #4

20 mai 2010
JSONView

Bon, c’est encore un truc purement pour développeurs mais c’est bien pratique quand on utilise JSON comme mode de communication client/serveur sur une application web (plus compact et moins lourd à utiliser qu’XML) : elle permet de faire afficher le JSON directement dans Firefox de façon un peu lisible plutôt que de forcer l’ouverture dans un logiciel externe où on se retrouve avec tout sur une unique ligne peu lisible ^^

Browser View Plus et Open With

Ces deux extensions sont des alternatives “groupées” à toutes les extensions IE View, Opera View, Safari View, etc. Ces extensions permette d’ouvrir un lien ou la page courante dans un autre navigateur. C’est pratique si jamais la page s’affiche mal ou bien, pour un développeur web, tester une page rapidement sur différents navigateurs.

L’avantage ici est de n’avoir qu’une seule extension installée au lieu de quatre ou cinq et de gérer également les navigateurs plus confidentiels. Actuellement, j’utilise la première chez moi et la seconde au boulot, n’ayant pas encore tranché entre les deux qui se valent un peu a priori…

OptimizeGoogle

Il s’agit d’un fork de l’excellent CustomizeGoogle qui ne semble malheureusement plus maintenu depuis quelques temps (et notamment pas compatible avec Firefox 3.6)… Cette extension permet d’arranger quelques trucs dans l’interface de Google, notamment :

  • réduire un peu le nombre d’infos que Google récolte sur vous lors des recherches.
  • virer les pubs
  • transformer les liens dans Google Images en liens directs vers les images plutôt que vers une page intermédiaire.
  • ajouter un compteur à côté de chaque résultat pour connaître sa position (quand on s’intéresse au référencement d’un site, ça peut être sympa).
  • et bien d’autres mais qui personnellement ne m’intéressent pas trop…

Toutes des modifications sont activables/désactivables dans les préférences de l’extension.

  • Print this article!
  • Turn this article into a PDF!
  • E-mail this story to a friend!
  • Facebook
  • Twitter
  • del.icio.us
  • Digg
  • Google Bookmarks
  • BlogMemes Fr
  • Wikio FR
  • Netvibes

Quelques trucs sur PHP #3

9 mai 2010
Auto-complétion du code avec PDT

PDT est un IDE pour PHP basé sur Eclipse relativement performant. Notamment il permet l’auto-complétion de code, ce qu’on n’a que rarement avec des éditeurs plus légers.

Sous certaines conditions (notamment avec le plugin SVN), l’auto-complétion n’est pas activée par défaut. Il y a peut-être moyen de le régler dans le labyrinthe qui sert de système d’options à Eclipse mais sinon, un moyen simple reste d’ajouter la ligne suivante dans la section natures du fichier .project du projet :

<nature>org.eclipse.php.core.PHPNature</nature>

Flux RSS et format de date

Pour formater une date en vue de générer un flux RSS, il y a plusieurs méthodes :

  1. chercher le détail du format sur le net et l’appliquer… c’est possible mais risque d’erreur.
  2. utiliser le format ‘r’ qui renvoie le bon format.
  3. utiliser la constante DateTime::RFC822… sauf que là le flux ne sera pas forcément valide et qu’il y aura potentiellement des problèmes avec certains agrégateurs.

Préférez donc la seconde solution, celle-là en principe elle marche (et en bonus c’est la plus compacte, que demander de plus ?).

Méthodes privées en PHP 5.1.6

Le principe d’une méthode privée c’est d’être interne à la classe et aucunement visible ou surchargeable depuis une classe qui l’étend (contrairement à une méthode protégée). Cependant dans certaines versions de PHP, dont la 5.1.6 (je ne sais pas quand exactement il a été corrigé mais il n’est plus présent dans les dernières 5.2.x), permet de surcharger les méthodes privées d’une classe… Ça peut arriver involontairement et ne prête pas à conséquence, sauf quand par la suite vous tentez d’exécuter votre script sur une version corrigée de PHP et là c’est pas évident de comprendre pourquoi tout d’un coup on ne passe plus dans la surcharge !

L’angoisse de la page blanche #2

J’évoquais ici le fait qu’on risquait une page blanche sans autre forme de procès en déclarant deux fois une même méthode dans une même classe et en voici un autre : déclarer comme abstraite une méthode d’une interface.

C’est peut être une déformation due au fait qu’on me l’a présenté comme ça lors de mes premiers cours de programmation objet Java mais pour moi une interface c’est pousser à l’extrême le concept de la classe abstraite : toutes les méthodes sont abstraites (et on n’a pas de champs). En Java, il me semble bien me souvenir que dans le cas d’une interface, le mot-clé abstract sur une méthode est facultatif (vu que de toutes façons toutes les méthodes d’une interface le sont). Eh bien en PHP il n’est pas facultatif mais interdit. Sinon, page blanche (du moins sous certaines versions/configurations) et bon courage pour retrouver l’erreur \o/

  • Print this article!
  • Turn this article into a PDF!
  • E-mail this story to a friend!
  • Facebook
  • Twitter
  • del.icio.us
  • Digg
  • Google Bookmarks
  • BlogMemes Fr
  • Wikio FR
  • Netvibes

Modules à venir pour RBS Change

18 avril 2010

J’entame progressivement la migration de mes forums vers RBS Change, ce qui implique le développement d’un bon nombre de fonctionnalités qui ne sont pas présentes dans les modules standards. Voici une petite liste de ce que j’ai déjà commencé :

Logos aléatoires

Il s’agit simplement de reproduire l’affichage aléatoire des logos comme c’est le cas sur EDForum. La version actuelle du module se borne à ce fonctionnel strict : toutes les n minutes, on change de logos en choisissant aléatoirement parmi les logos définis en backoffice, chaque logo ayant un poids donné.

C’est clairement pas le plus utile des modules mais c’est une fonctionnalité simple et il fallait bien commencer quelque part…

Évolutions à venir

À terme, j’ajouterai sans doute une galerie des logos en cours et passés.

Micro-news

Là aussi on reproduit à l’identique une fonctionnalité d’EDForum : il s’agit simplement de mettre en avant des liens d’actualités. Chaque “micro-news” contient un libellé et un lien (soit un document du site, soit une URL externe).

Le module dispose également d’une fonction d’importation de flux RSS externes et les blocs d’affichage s’accompagnent de la génération de flux RSS.

Messagerie privée

Là on entre dans le vif du sujet : après deux modules mineurs, on arrive à une fonctionnalité importante dans tout site communautaire (donc notamment un forum).

J’ai choisi de ne pas reprendre le modèle standard de messagerie privée calquée sur les mails qu’on peut trouver dans la plupart des gestionnaires de forums pour reprendre le principe utilisé sur les forums MesDiscussions.Net (Hardware.fr, JudgeHype ou encore Doctissimo) qui présente les messages plutôt comme des conversations, sous la même forme que les sujets des forums (quand on y pense c’est nettement plus pratique et logique).

Ce module-là est encore loin d’être fini mais il permettra entre autres :

  • un nombre de participants potentiellement supérieur à 2 (nombre maximum réglable par configuration).
  • invitation de nouveaux participants en cours de route.
  • indexation des messages.
  • possibilité de modifier un message tant que personne ne l’a lu.
  • d’une manière ou d’une autre (rien n’est encore vraiment arrêté dans la façon de faire), possibilité de marquer des messages/discussions : “à traiter”, “réponse attendue”, “contient des informations importantes”…

Pour plus d’informations sur le développement de ce module ou discuter de ses fonctionnalités, rendez-vous sur le sujet dédié sur EDForum.

La page dédiée et le repository SVN seront créés quand j’approcherai suffisamment d’une version utilisable.

Et ensuite ?

Ensuite je passerai sans doute à la gestion des smileys, l’ajout des bbcodes non-gérés en standard par Change… Ou autre chose selon ce qui m’inspirera le plus sur le moment :p

Quand à mon module de gestion de bibliothèque que j’évoquais lors de la sortie de Change, il a pas mal avancé mais je le laisse un peu de côté pour le moment puisque je ne le mettrai pas en ligne avant d’avoir migré les forums…

EDIT 16h41 :
Finalement j’ai fini ce qui manquait dans le module Micro-news, j’ai donc ajouté la page dédiée et initialisé le repository SVN avec la première version du code.

  • Print this article!
  • Turn this article into a PDF!
  • E-mail this story to a friend!
  • Facebook
  • Twitter
  • del.icio.us
  • Digg
  • Google Bookmarks
  • BlogMemes Fr
  • Wikio FR
  • Netvibes

Correction pour l’inspecteur DOM de Firefox

20 mars 2010

Firefox propose sous forme d’une extension (en général incluse par défaut) un inspecteur DOM. Cet outils bien pratique permet de parcourir le DOM d’une page, de voir tous les attributs de chaque noeud, les styles appliqués, le code javascript associé, bref un paquet de choses qu’on est bien content de pouvoir consulter dans certains cas.

Pour une bonne partie de ces informations, des extensions comme les bien connues Web Developer ou Firebug offrent des interfaces plus agréables mais d’une ne permettent pas d’aller aussi loin et de deux ne permettent pas d’inspecter du DOM XUL… Or dans RBS Change, le backoffice est en XUL et quand on veut faire des choses assez avancées ou débuguer, on n’y coupe pas.

Le problème c’est que dans sa version actuelle, l’inspecteur DOM est foireux en version française : certaines clés de localisation manquent, ce qui bloque carrément le fonctionnement de certaines parties de l’interface…

J’espère que la correction sera incluse dans la prochaine version mais ça fait déjà plusieurs mois que ça dure et ça commence à bien faire… Voici donc une version corrigée du fichier inspector.jar contenant les dites clés de localisation (les fichiers modifiés dans l’archive sont locale/fr/accessibleProps.dtd et locale/fr/styleRules.dtd).

Je me suis concentré sur le fait de rajouter les clés manquantes, la traduction n’est pas forcément top, voire dans le cas où je ne voyais pas comment traduire, j’ai carrément gardé le texte anglais… L’essentiel étant d’éviter le gros message en rouge qui dit qu’il manque une entité et bloque l’interface :)

Installation : ce fichier zip contient le fichier inspector.jar qui remplace le fichier suivant (sous Windows du moins, sur un autre système il faudra chercher un peu) :

Code

C:\Documents and Settings\<votre-profil>\Application Data\Mozilla\Firefox\Profiles\1473dcd0.default\extensions\inspector@mozilla.org\chrome\inspector.jar

Une fois le fichier remplacé, relancez Firefox et le problème est réglé \o/

P.S. : puisqu’on parle de l’inspecteur DOM, j’en profite pour évoquer Stacked inspector une micro-extension bien pratique qui ne fait qu’ajouter un bouton permettant de switcher l’interface de l’inspecteur en mode vertical ou horizontal. Ça n’a l’air de rien mais dans certains cas c’est vachement plus agréable !

  • Print this article!
  • Turn this article into a PDF!
  • E-mail this story to a friend!
  • Facebook
  • Twitter
  • del.icio.us
  • Digg
  • Google Bookmarks
  • BlogMemes Fr
  • Wikio FR
  • Netvibes