90

TIBCO GI a l'air de partir d'une bonne idée, bien que complètement différente de l'approche que je voulais avoir (là encore il faut changer de conception, mais au moins celle-ci a l'avantage d'être saine et d'avoir une justification un peu plus solide que "il faut que ça marche en ajax").

Pour ce qui est du Javascript, j'ai tendance à le considérer comme un petit outil capable d'effectuer certaines tâches au niveau de la présentation, c'est en partie pour ça que je bloque avec l'implémentation actuellement requise pour la technologie ajax, qui utilise à mon avis Javascript pour faire des choses qui ne sont pas du tout de son domaine.

Bref, concevoir son site d'une façon un peu plus orientée objet pourrait être une solution effectivement : ça permet de faire autant de choses qu'avec des méthodes plus classiques, mais ça permet quand même d'intégrer de nouveaux éléments comme ajax de façon élégante. Mais ce serait supposer qu'il n'existe pas de solution "à mi-chemin" qui sans trop s'éloigner d'une conception classique permette quand même d'intégrer ajax sans conséquences trop lourdes sur le reste. La solution de spipu me semblait être une piste intéressante, reste à voir ce qu'on peut en tirer (j'ai un peu arrêté de réfléchir là dessus pour l'instant, je manque un peu de temps, mais j'y reviendrai surement ^^)
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

91

Spipu (./82) :
Exemple : la ligne suivant me récupère automatiquement sur yaronet la 6em div du premier body, ce qui veut dire la liste des connectés. et ca marche nikel smile
http://spipu.net/test/get/?url=http://www.yaronet.com/&id=body|1,div|6si tu veux je poste mon code ici


Peut-être que ce serait alors plus plus souple d'utiliser un interpréteur PHP XPath ?

92

bob> moi aussi ca fait 2 ans que je me dis qu'il faudrait que je m'y plonge serieusement dans l'ajax trioui
avatar
納 豆パワー!
I becamed a natto!!!1!one!

93

À tout hasard, si ça vous intéresse, voilà la solution que j'ai retenue. Finalement elle est toute simple, mais elle me convient bien puisqu'elle n'impacte que la couche présentation : aucune modification dans le code PHP n'est nécessaire pour la mettre en oeuvre (donc sur un site proposant deux skins différentes, l'une peut proposer des fonctionnalités Ajax et l'autre pas du tout, la structure du code n'a pas à en souffrir).

- Ce sont les templates (j'utilise Smarty) qui contiennent des "filtres", utilisés uniquement dans le cas d'Ajax, qui permettent de désactiver l'affichage de certaines parties. Si aucun filtre n'est actif, l'affichage a lieu. Ça se résume à des instructions de type "{if (!isset ($filtre) || $filtre = 'id_bloc')}" dans les templates, autour des quelques blocs que j'aurai à afficher séparément.
- Ces filtres sont en fait des variables récupérées en GET (l'intérêt apparaitra plus bas). Finalement dans le template, l'instruction risque de ressembler plus à ça : "{if (!isset ($_GET['filtre']) || $_GET['filtre'] == 'id_bloc'} <!-- code html du bloc --> {/if}".

En temps normal, aucun filtre n'est activé, l'affichage se fait donc entièrement. Si je veux ajouter de l'Ajax à un traitement, par exemple ne mettre à jour que l'intérieur d'un cadre lors de login d'un utilisateur, la seule modification à apporter se fait encore du coté présentation (dans le fichier template). Là où j'avais un lien "<a href="{$mon_lien}">lien</a>", il suffit de demander à l'objet XMLHttpRequest l'url "{$mon_lien}&filtre=login". La variable "filtre" sera transmise à la page et donc à mon template, ce qui bloquera l'affichage de toutes les parties qui ne m'intéressent pas, pour ne renvoyer que l'intérieur du cadre que je voulais mettre à jour.

(en réalité il y a un petit test à ajouter pour savoir si il faut ajouter "?filtre=login" ou "&filtre=login", puisque la syntaxe diffère suivant que le lien avait déjà des paramètres ou non, mais ce genre de détail mineur se règle très facilement avec les plugins de Smarty par exemple).

Au final, j'ai bien la possibilité d'ajouter de l'Ajax partout où je veux, mais sans avoir ni à modifier la structure du site, ni même à toucher la moindre ligne de code dans les couches autres que la présentation. Néanmoins le résultat reste bien plus propre que ce qui était proposé en début de topic, puisque seule la partie à mettre à jour est envoyée au client, et non pas l'intégralité de la page.

Voilà, pour le moment cette solution me convient très bien puisqu'elle répond à toutes les contraintes que j'avais exprimées plus haut. Mais si vous avez autre chose en tête ou des critiques à formuler, le topic est là pour ça smile
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)