/extension/myblog/design/myblog/stylesheets/white.css
/extension/myblog/design/myblog/stylesheets/black.css

Select your style :

A la une // Les blogs sur le développement Web, l'oenologie, Montpellier, etc...

Faire un Widget Netvibes & iGoogle avec UWA, AJAX & eZ Publish : Introduction à UWA (Partie 1)

Vous aurez remarqué (ou pas) dans la colonne droite, un nouveau bloc qui permet d'ajouter un Widget gandbox.fr à Netvibes ou iGoogle. On retrouve les grandes fonctionnalités du site, dans une version "light". Mon parti pris reste cependant de naviguer exclusivement dans le Widget, sans sortir du portail au moindre clic (comme on le voit trop souvent).

Une fois ajouté à votre portail personnel, ce Widget (ou Gadget pour iGoogle...) permet de :

  • Suivre les derniers billets ajoutés
  • Suivre les derniers commentaires ajoutés
  • Naviguer dans la rubrique "ma Cave" par recherche libre, par région, par appellations, par domaines, par cuvées, etc.
  • J'avais initialement prévu une authentification sur le Widget, pour pouvoir mettre à jour mes stocks de vins, mais UWA ne permet pas encore ce genre de fonctionnalité de façon fiables (j'y reviendrai)

L'intérêt fonctionnel de ce Widget est très discutable (voir nul). C'est surtout un prétexte pour expérimenter le développement d'un Widget un peu avancé via UWA (Universal Widget API). Ce premier billet décrit la logique de fonctionnement, et la prise en main d'un développement avec UWA, un prérequis indispensable avant d'aborder la couche eZ Publish.

Le concept UWA

UWA (Universal Widget API) affiche une promesse de taille : Développer votre Widget, et déployez le sur tous les supports (Netvibes, iGoogle, Windows Vista, Apple Dashboard, Live.com, iPhone, Opera, blogs, MySpace, etc.).

Les grands principes de UWA :

  • Le développement d'un Widget sur un modèle unifié : Une simple page XHTML, contenant un namespace additionnel "widget" pour gérer la déclaration des préférences (les fameuses options des Widgets). Voir l'anatomie d'un Widget UWA, et le Hello World.
  • Une interface transformant votre XHTML unifié vers du XHTML / XML spécifique au portail devant interpréter le Widget. Cette interface est invoquée dans l'URL d'ajout du Widget
  • Un FrameWork JavaScript permettant de manipuler le Widget, le DOM, les préférences utilisateurs, certains éléments d'interfaces (les tabView par exemple), et d'autres éléments pas toujours documentés (je reviendrai sur ce point précis).

Exemple de traduction de UWA vers iGoogle :

Décomposant les différentes étapes pour l'ajout de mon Widget UWA sur iGoogle :

<a class="object-left" target="_blank" href="http://www.google.com/ig/add?moduleurl=http%3A%2F%2Fwww.netvibes.com%2Fapi%2Fuwa%2Fcompile%2Fgoogle.php%3FmoduleUrl%3Dhttp%253A%252F%252Fwww.gandbox.fr%252Fmywidget%252Fgandbox_V1.0.html" title="Ajouter gandbox.fr à Google Homepage // ">
 <img src="http://www.netvibes.com/img/uwa-google.png" alt="Ajouter à Google Homepage"/>
</a>
 
 

On remarque cependant qu'il n'y a rien de miraculeux. La transformation se contente de transposer les éléments externes du Widget (paramètres, titre, etc.), pour finalement afficher le Widget en IFRAME.

Dispositif de développement en local

Version standalone

Comme le précise la documentation, il faut ajouter la feuille de style CSS et le FrameWork JavaScript :

<link rel="stylesheet" type="text/css" 
      href="http://www.netvibes.com/themes/uwa/style.css" />
<script type="text/javascript" 
      src="http://www.netvibes.com/js/UWA/load.js.php?env=Standalone"></script>
 
 

Concernant le documentation : Il est conseillé d'exploiter cette version : Documentation UWA la plus à jour.

Mode Debug

Les META permettent de configurer certains comportements du Widget, comme la description, l'auteur, la version de l'API, la fréquence de rafraîchissement, etc. (voir la liste complète sur le documentation). Une directive permet d'activer le mode debug :

<meta name="debugMode" content="true" />
 
 

Il est ensuite possible d'envoyer du debug JavaScript sur la console (en utilisant FireBug par exemple) :

widget.log('mon debug');
 

Fixer le Proxy Ajax en PHP

Il est nécessaire pour les appels AJAX de définir quel fichier PHP doit être exploitée. La directive 'UWA.proxies.ajax' est un peu capricieuse en local, mais rien de grave. Le mécanisme étant trivial (appeler un fichier PHP relatif au domaine, avec l'URL externe en paramètre), il est très simple de définir soit même les URL complètes :

var _URL_PROXY = '';
var _URL_GANDBOX = 'http://www.gandbox.fr';
 
if (document.location && document.location.hostname == 'localhost') {
 UWA.proxies.ajax = 'ajaxProxy.php';
 _URL_PROXY = 'http://localhost/html/widget/ajaxProxy.php?url=';
 _URL_GANDBOX = 'http://gandbox.loc';
}
 
if (document.location && document.location.hostname == 'www.gandbox.fr') {
 UWA.proxies.ajax = 'ajaxProxy.php';
 _URL_PROXY = 'http://www.gandbox.fr/mywidget/ajaxProxy.php?url=';
 _URL_GANDBOX = 'http://www.gandbox.fr';
}
 
 

Par ailleurs, le fichier ajaxProxy.php proposé dans la documentation est trop pauvre pour une exploitation avancée des appels AJAX (gestion des appels en POST par exemple), il est conseillé d'exploiter un autre script :

Résultat en image

Version Netvibes (paramétrages)

Version iGooge (paramétrages)

Version iGooge (ma cave)

Que boire avec ce billet ?

Domaine Virgile Joly - Blanc Sec 2004

Région : Languedoc
Appellation : Vin de Pays de l'Hérault
Domaine : Domaine Virgile Joly
Couleur :
 
Stock : 0
Notation :
Prix : 25 €
Commentaire(s) : 2 Commentaire(s)

Un vin 100% Grenache Blanc, d'un splendide équilibre entre rondeur et fraîcheur. La couleur et le gras sont impressionnants, et représentatif de ce cépage. Un grand vin de connaisseur, mais qui séduira certainement les moins connaisseurs pour la seule sensation pure de "vin naturel".

Publié par : Xavier, le 07 mai 2009 12:44 pm

URL de compilation

Merci pour ce sympathique tutoriel !

Juste une remarque : l'URL de compilation devrait être différente : plutôt que...

http://www.netvibes.com/api/uwa/c...andbox.fr/mywidget/gandbox_V1.0.html

...il faudrait utiliser...

http://nvmodules.netvibes.com/wid...andbox.fr/mywidget/gandbox_V1.0.html

L'ancienne URL est en effet dépréciée, et la nouvelle plus pérenne.

Bonne continuation !

Publié par : gandbox, le 07 mai 2009 03:19 pm

Nouvelle URL de compilation iGoogle

Exact,

D'ailleurs, suite à l'écriture du tutoriel, j'ai modifié l'URL dans le bloc d'ajout du Widget (voir bloc en haut à droite). L'ancienne URL provoquait une erreur sur iGoogle lié au format XML de sortie. D'ailleurs je vois que les propositions de boutons sur la version standalone (en dessous du widget) sont correctes Smiling

http://www.gandbox.fr/mywidget/gandbox_V1.0.html

Publié par : alexandre, le 12 juillet 2009 12:11 pm

Code source

bonjour,

est il utopique de croire que le code source de cet exemple sera publié un jour ....

au fait content d'avoir fait ta connaissance pendant la conf d'ailleurs j'ai un peu eu ma certif grace a toi ....

Merci d'avance

Alexandre

Publié par : Gandbox, le 12 juillet 2009 01:18 pm

Le code source est disponible

Alexandre, que manque-t-il au niveau code source ?

Le frontal est visible sur : http://www.gandbox.fr/mywidget/gandbox_V1.0.html
Il suffit d'afficher le code source de la page.

La partie serveur coté eZ, est visible dans la suite de ce billet, je te laisse chercher sur le Blog Smiling

Publié par : Opidoc, le 30 décembre 2010 10:54 am

Un seul fichier UWA pour Netvibes et iGoogle?

Bonjour,

Votre tutoriel est intéressant, mais je comprends que vous soumettez le widget à iGoogle via Netvibes, ce qui présente, sauf erreur, deux inconvénients:
- on a toujours "Powered by Netvibes"
- si Netvibes s'arrête (ce qui arrive de temps en temps), le widget n'est plus accessible sur iGoogle

Ce que j'ai compris, c'est que Netvibes réclame un fichier avec des balises <html> <Head><body> etc., alors que Google n'accepte que <Module> ("The outermost tag must be <Module>"Wink.

J'en déduis qu'un même fichier xml UWA ne peut donc pas être lu indépendamment par Netvibes et iGoogle.

Mais vous avez peut-être trouvé une solution et ça m'a échappé?

Par avance merci!

Publié par : Jerome, le 16 mars 2012 09:58 am

Netvibes offline

Bonjour,

Merci pour ce tutoriel.

Je voulais juste savoir si vous aviez connaissance d'un moyen de pouvoir créer sa propre Dashboard sans avoir accès à internet.

Pour le CSS et je Javascript on est soumis à leur propres fichiers en ligne et je voulais savoir si l'on pouvait faire sans...


Merci d'avance