On March 26, 2019 we launched new MODX Forums. Please join us at the new MODX Community Forums.
Subscribe: RSS
  • Bonjour à tous,

    J’ai récemment découvert comment "Ajaxifier" un site MODx grâce à ce didacticiel :
    http://modxcms.com/forums/index.php/topic,6743.0.html

    L’avantage de la solution proposée est qu’elle simplifie les appels Ajax en créant une sorte de surveillance générale des événements tels que "onclick". En triturant un peu le code, j’ai pu effectuer des appels Ajax différents selon que c’est onclick on onmouseover qui se produit.

    Le code que le didacticiel propose a été retouché par Heliotrope afin de permettre la mise en forme des contenus sur la base de la valeur donnée à l’attribut rel de l’ancre appelante.

    Lorsque l’on cherche à associer des requêtes Ajax à plusieurs événements, une limitation est que le modèle (template) reste le même. Une autre limitation est que le document à charger est toujours celui désigné par href.

    J’ai l’idée d’améliorer le code pour le rendre plus flexible en supprimant l’usage de l’attribut rel et en stockant toutes les informations nécessaires dans la valeur de l’attribut class :
    - plusieurs événements pourraient être déclencheurs de requêtes Ajax (onclick, onmouseover, etc.),
    - pour chaque événement, il serait possible de spécifier une ressource, un conteneur de destination et un template différents,
    - un même événement (p.ex. onmouseover) pourrait déclencher plusieurs requêtes Ajax (p. ex. chargement d’un résumé et d’une image).

    La syntaxe que je propose serait quelque chose du genre
    <a class="
     mouseover?45&zoneResume&resumeTpl, 
     mouseover?46&zoneDiaporama&diaporamaTpl,
     click?45&zoneContenu&contenuTpl"
    
    href="[~45~]" >Un lien ajaxifié</a>


    C’est à dire l’événement suivi du document à charger (ici son id), la zone de destination et enfin le modèle de formatage.
    Les événements seraients séparés par des virgules, des points-virgules ou des espaces.
    Dans l’exemple ci-dessus, l’événement onmouseover déclencherait deux chargements Ajax.

    L’idée est d’utiliser les expressions régulières pour décortiquer la chaîne stockée dans "class".

    J’ai écrit un bout de code pour illustrer l’idée. Je précise que c’est juste un brouillon, non fonctionnel.
    Il se trouve du côté anglophone: http://modxcms.com/forums/index.php/topic,6743.60.html

    L’implémentation me semble faisable, mais le tout est quand même assez corsé.

    Y aurait-il d’autres MODxiens codeurs Javascript intéressés par cette idée ?