Flash CMS: Utiliser Drupal 6 pour gérer le contenu de Flash – le module “services”
Bonjour tout le monde !
En faisant mes petites recherches pour un projet nécessitant Drupal, je suis tombé sur ce module. Ce module permet à Drupal de communiquer directement avec l’extérieur, en utilisant son API. Ce qui est plus “pro” que ce que je vous proposait jusqu’ici
. Il faut passer par un objet NetConnect et installer un serveur AMFPHP (Actionscript Message Format – permet à PHP de renvoyer des objets Flash natifs). L’approche est différente: jusqu’ici, j’utilise Drupal comme un système de gestion de base de données et je connecte Flash directement à cette dernière (voir mes posts précédents), le module “Services” utilise Drupal comme une application web. Mais, je vais suivre de très près l’évolution de ce module “Services”. Il promet d’être incroyablement puissant. Pour l’instant il est en béta, mais voici comment il fonctionne.
Vous devez télécharger
- Module Services
- Module AMFPHP
- Puis le serveur AMFPHP et extraire le contenu du .zip dans sites/all/modules/amfphp/amfphp/
Installez ces modules tout simplement. Puis, vous devriez pouvoir aller à l’adresse suivante: votredomaine.com/drupal/services/amfphp
Un texte vous informera que tout fonctionne. Voilà pour Drupal
. Facile non ? Maintenant Flash.
On se connecte à un service web. On utilise un objet NetConnection (Note: il y a des chances que la sécurité de Flash vous empêche de tester tout ceci en local pour vous connecter à un serveur distant) Edit: En fait, c’est le module Services qui bloque l’accès aux applications tentant de se connecter d’un autre serveur. Ceci peut être configuré par contre. C’est un grand plus pour la sécurité !
drupal.addEventListener(NetStatusEvent.NET_STATUS, netStatus); // sinon Flash va vous donner des erreurs
drupal.objectEncoding = ObjectEncoding.AMF3; // encodage AS 3.0 pour le format AMF
drupal.connect("votredomaine.com/drupal/services/amfphp"); // chemin vers le "gateway.php" pour lier les deux applications
function netStatus(e:NetStatusEvent):void { } // nécessaire pour éviter des erreurs pendant l'exécution du flash
Puis, il vous faut vous connecter à Drupal. Pour ce faire:
drupal.call("system.connect", resp);
Il faut créer un objet Responder qui gérera les réponses de Drupal. Et c’est là qu’intervient la puissance de AMF:
Vous appellez la méthode connect() de la classe system ! Le module Services va à présent vous connecter à Drupal et vous renvoyer un Session ID. Cet ID vous sera utile pour toutes les autres requêtes que vous allez effectuer. Le Responder a deux méthode: onResult et onError. Dès que Drupal va donner sa réponse pour la connexion et nous renvoyer notre ID:
{
sessID = e.sessid;
}
Nous avons à présent un ID (note: l’ID est un String), nécessaire pour tout le reste. Maintenant, imaginez que vous désirez obtenir le contenu d’une page (rappelons le, un “node”), ici la page 1:
Puis, dans notre fonction onNode:
{
trace(e.title); // titre de la page
trace(e.body); // corps de la page
}
Il existe de nombreuses autres propriétés que la classe node nous renvoie (date du dernier commentaire, auteur de l’article, date de la dernière révision, etc).
Un des gros avantages de cette méthode est la possibilité de créer du contenu depuis Flash dans Drupal ! Imaginez un site à la YouTube, complétement en Flash. Tout le backend (upload des vidéos, système de tri (grâce à Taxonomy), système de vote (Voting API)) pourrait être géré par Drupal ! Et ce quasi nativement, sans aucune programmation côté serveur de votre part !
Services vous permet également de créer assez facilement vos propres services, par contre il faut connaitre l’API de Drupal, ne serait-ce qu’un minimum.
Résumé, de nouvelles perspectives en vue. Il pourrait devenir de plus en plus simple de créer des RIA très complexes en utilisant des outils performant et gratuits, disponibles pour tous !
- Wouter










Leave a Comment