List boxes dynamiques, CVT, et mes 3 neurones...

Bon, vu que mon premier appel a l’aide était un peu vague, je prends ma plus belle plume et j’explique le problème en détail.

  • un groupe de mots-clés : Pays

  • des sous-groupes ( go-go-gadget-o-mots-partout!) de continents

  • des mots-clés de pays dans ces différents sous-groupes.

Je veux faire un formulaire de recherche permettant aux utilisateurs de restreindre leur recherche par pays.

Pour ce faire, je mets 2 list boxes cote a cote : Continent - Pays

Ce que je voudrais, c’est que lorsqu’un utilisateur choisit un continent dans la liste « continent », la liste « pays » n’affiche plus que les pays du continent sélectionné. Evidemment, c’est pas difficile de faire ca en php / javascript - mais j’aimerais comprendre comment le faire en SPIP.

Le problème majeur étant : comment faire recalculer une partie de mon squelette dynamiquement, sans reloader la page ? changer le critère id_groupe de la boucle construisant le select « Pays » n’est pas difficile en passant par des variables d’#ENV, mais comment le faire en ajax ? ( j’avais pense appeler une noisette dans un call ajax, mais ca n’a pas l’air de fonctionner - entre autres parce que la requête ajax appelle la noisette en tant que page a part entiere, et donc injecte les boutons admin). J’ai essaye de trouver des exemples CVT ayant des fonctionnalités similaires, mais je n’ai rien trouve d’utile…

Une âme charitable sur IRC m’a lance sur la piste « set_request », mais j’avoue mon incompétence a ordonner les 3 neurones qui me restent pour arriver a qqch de valable. Je suis sur que je suis sur une voie de garage, et probablement en train d’essayer de réinventer la roue - donc si qq’un pouvait me pointer vers l’un ou l’autre exemple pertinent…

Merci beaucoup, et bon weekend a tous!

Alex Gomes

IT Unit

ITUC International Trade Union Confederation

Boulevard du Roi Albert II 5, B 1, B-1210 Brussels, Belgium
Tel: 32(0)2 224 0211 Direct: (0)2 224 0281

Bonjour,

Il faut que tu passes par des #INCLURE et avec le critère ajax…
http://www.spip.net/fr_article3753.html

Le 12 mars 2010 15:38, Gomes, Alex <Alex.Gomes@ituc-csi.org> a écrit :

Bon, vu que mon premier appel a l’aide était un peu vague, je prends ma plus belle plume et j’explique le problème en détail.

  • un groupe de mots-clés : Pays

  • des sous-groupes ( go-go-gadget-o-mots-partout!) de continents

  • des mots-clés de pays dans ces différents sous-groupes.

Je veux faire un formulaire de recherche permettant aux utilisateurs de restreindre leur recherche par pays.

Pour ce faire, je mets 2 list boxes cote a cote : Continent - Pays

Ce que je voudrais, c’est que lorsqu’un utilisateur choisit un continent dans la liste « continent », la liste « pays » n’affiche plus que les pays du continent sélectionné. Evidemment, c’est pas difficile de faire ca en php / javascript - mais j’aimerais comprendre comment le faire en SPIP.

Le problème majeur étant : comment faire recalculer une partie de mon squelette dynamiquement, sans reloader la page ? changer le critère id_groupe de la boucle construisant le select « Pays » n’est pas difficile en passant par des variables d’#ENV, mais comment le faire en ajax ? ( j’avais pense appeler une noisette dans un call ajax, mais ca n’a pas l’air de fonctionner - entre autres parce que la requête ajax appelle la noisette en tant que page a part entiere, et donc injecte les boutons admin). J’ai essaye de trouver des exemples CVT ayant des fonctionnalités similaires, mais je n’ai rien trouve d’utile…

Une âme charitable sur IRC m’a lance sur la piste « set_request », mais j’avoue mon incompétence a ordonner les 3 neurones qui me restent pour arriver a qqch de valable. Je suis sur que je suis sur une voie de garage, et probablement en train d’essayer de réinventer la roue - donc si qq’un pouvait me pointer vers l’un ou l’autre exemple pertinent…

Merci beaucoup, et bon weekend a tous!

Alex Gomes

IT Unit

ITUC International Trade Union Confederation

Boulevard du Roi Albert II 5, B 1, B-1210 Brussels, Belgium
Tel: 32(0)2 224 0211 Direct: (0)2 224 0281


liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
http://archives.rezo.net/spip.mbox/

Documentation de SPIP : http://www.spip.net/

Irc : de l’aide à toute heure : http://spip.net/irc

Bonjour,

J'aurais tendance à faire la même chose: inclure à coup d'ajax une noisette. C'est à mon sens le plus simple ( et j'ai déjà fait ce type de blagouzes sur un site maison ^^).
Le seul truc, c'est effectivement de se débrouiller pour avoir une réponse "sèche", sans les boutons d'admin, headers etc.
La dessus, il y a une petite astuce: tu colles ceci en tête de ton fichier :
#HTTP_HEADER{Content-Type: text/plain; charset=#CHARSET}
#CACHE{0}

Avec ca, logiquement, spip ne devrait plus toucher à rien ...

Bonjour,

Merci de ta reponse. J’avais déjà essaye d’utiliser {ajax}, mais je ne suis pas arrive a le faire fonctionner dans ce cas-ci, le probleme etant que je n’ai pas de liens a proprement parler auquel attacher la class « ajax ».

Je detaille un de mes essais de code ( desole pour le bordel, j’ai l’impression que plus je me casse la tete la dessus, plus j’ecris n’importe quoi – et ca fait 1 jour ½ que je suis dessus)

1 page d’appel toute simple

Ajax

<INCLURE{fond=combo-alex}{lang}{ajax}{env}{region=#ENV{region}}>

1 noisette comprenant une partie du formulaire

<B_REGIONS>

<BOUCLE_REGIONS(GROUPES_MOTS){id_parent=6}>

#TITRE

</BOUCLE_REGIONS>

</B_REGIONS>

<INCLURE{fond=combo-countries-alex}{region=(#ENV{region}|sinon{#ARRAY{0,1,1,2,2,3,4,5}})}{lang}>

1 noisette comprenant le select de pays

<B_COUNTRIES>

#SET{region, #ENV{region}

<BOUCLE_COUNTRIES(MOTS){id_groupe IN #ENV{region}}{par multi titre}>

#TITRE

</BOUCLE_COUNTRIES>

</B_COUNTRIES>

J’ai essaye autant que possible de rajouter les parametres « standard » du genre {ajax} etc etc sur les appels, mais rien n’y fait.

Evidemment, tout ceci ne tient meme pas compte du fait qu’on doit recharger une partie de formulaire, et non pas une partie de page « standard »… donc, il faudrait passer par un #FORMULAIRE_Xx dans un div avec class Ajax – mais je me tappe la tete contre les murs de ce cote-la egalement.

Desole pour le spam – je n’ai pas l’habitude de faire des formulaires, et je suis donc un peu perdu…

From: TeddyP SPIP [mailto:teddy.spip@gmail.com]
Sent: vendredi 12 mars 2010 15:57
To: Gomes, Alex
Cc: spip@rezo.net
Subject: Re: [Spip] List boxes dynamiques, CVT, et mes 3 neurones…

Bonjour,

Il faut que tu passes par des #INCLURE et avec le critère ajax…
http://www.spip.net/fr_article3753.html

Le 12 mars 2010 15:38, Gomes, Alex <Alex.Gomes@ituc-csi.org> a écrit :

Bon, vu que mon premier appel a l’aide était un peu vague, je prends ma plus belle plume et j’explique le problème en détail.

  • un groupe de mots-clés : Pays

  • des sous-groupes ( go-go-gadget-o-mots-partout!) de continents

  • des mots-clés de pays dans ces différents sous-groupes.

Je veux faire un formulaire de recherche permettant aux utilisateurs de restreindre leur recherche par pays.

Pour ce faire, je mets 2 list boxes cote a cote : Continent - Pays

Ce que je voudrais, c’est que lorsqu’un utilisateur choisit un continent dans la liste « continent », la liste « pays » n’affiche plus que les pays du continent sélectionné. Evidemment, c’est pas difficile de faire ca en php / javascript - mais j’aimerais comprendre comment le faire en SPIP.

Le problème majeur étant : comment faire recalculer une partie de mon squelette dynamiquement, sans reloader la page ? changer le critère id_groupe de la boucle construisant le select « Pays » n’est pas difficile en passant par des variables d’#ENV, mais comment le faire en ajax ? ( j’avais pense appeler une noisette dans un call ajax, mais ca n’a pas l’air de fonctionner - entre autres parce que la requête ajax appelle la noisette en tant que page a part entiere, et donc injecte les boutons admin). J’ai essaye de trouver des exemples CVT ayant des fonctionnalités similaires, mais je n’ai rien trouve d’utile…

Une âme charitable sur IRC m’a lance sur la piste « set_request », mais j’avoue mon incompétence a ordonner les 3 neurones qui me restent pour arriver a qqch de valable. Je suis sur que je suis sur une voie de garage, et probablement en train d’essayer de réinventer la roue - donc si qq’un pouvait me pointer vers l’un ou l’autre exemple pertinent…

Merci beaucoup, et bon weekend a tous!

Alex Gomes

IT Unit

ITUC International Trade Union Confederation

Boulevard du Roi Albert II 5, B 1, B-1210 Brussels, Belgium
Tel: 32(0)2 224 0211 Direct: (0)2 224 0281


liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
http://archives.rezo.net/spip.mbox/

Documentation de SPIP : http://www.spip.net/

Irc : de l’aide à toute heure : http://spip.net/irc

Avez-vous un retour d'expérience sur le CACHE SPIP et les conditions pour IE ?

J'utilise dans mon header des conditions spéciales pour IE du type :

<!--[if IE 8]>
<link href="squelettes/cssv3/menu.css" media="screen" rel="stylesheet" type="text/css"/>
<![endif]-->
<!--[if lte IE 8]>
<link href="squelettes/css/menu.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="squelettes/js/menu.js"></script>
<![endif]-->

Savez-vous comment SPIP gère cela ? Comment le cache enregistre les différentes version selon le navigateur... ?

Merci !

Le 13/03/10 11:36, Pierre-Jean Colliot a écrit :

Savez-vous comment SPIP gère cela ? Comment le cache enregistre les
différentes version selon le navigateur... ?

le cache enregistre exactement ce que tu viens d'écrire.

cette partie là du squelette ne faisant pas appel à des calculs ou évaluations de spip, elle est mise en cache comme une page statique.

(si j'ai compris la question...)

* Gomes, Alex tapuscrivait, le 12/03/2010 17:28:

Bonjour,

Merci de ta reponse. J'avais déjà essaye d'utiliser {ajax}, mais je ne suis pas arrive a le faire fonctionner dans ce cas-ci, le probleme etant que je n'ai pas de liens a proprement parler auquel attacher la class « ajax ».

Je detaille un de mes essais de code ( desole pour le bordel, j'ai l'impression que plus je me casse la tete la dessus, plus j'ecris n'importe quoi - et ca fait 1 jour ½ que je suis dessus)

1 page d'appel toute simple

<html>

<head>

<title>Ajax</title>

</head>

<body>

<INCLURE{fond=combo-alex}{lang}{ajax}{env}{region=#ENV{region}}>

</body>

Il faut que le INCLURE avec {ajax} soit dans une balise avec la class="ajax"

Par exemple :
<div class="ajax">
<INCLURE{fond=combo-alex}{lang}{ajax}{env}{region=#ENV{region}}>
</div>

-- RealET

Oui effectivement, c'est ce que je suis en train d'observer :

Pour les suivants, même avec une mise en cache, SPIP interprète bien les conditions spéciales pour IE du type
<!--[if IE 8]>
<link href="squelettes/css/menupourie.css" media="screen" rel="stylesheet" type="text/css"/>
<![endif]-->

Merci Denis !

Pierre-Jean

Le 13/03/2010 12:05, denisb a écrit :

Le 13/03/10 11:36, Pierre-Jean Colliot a écrit :

Savez-vous comment SPIP gère cela ? Comment le cache enregistre les
différentes version selon le navigateur... ?

le cache enregistre exactement ce que tu viens d'écrire.

cette partie là du squelette ne faisant pas appel à des calculs ou évaluations de spip, elle est mise en cache comme une page statique.

(si j'ai compris la question...)

_______________________________________________
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
Discuter chez rezo.net

Documentation de SPIP : http://www.spip.net/

Irc : de l'aide à toute heure : http://spip.net/irc

Le 13/03/2010 14:11, Pierre-Jean Colliot a écrit :

Pour les suivants, même avec une mise en cache, SPIP interprète bien les
conditions spéciales pour IE du type
<!--[if IE 8]>

spip met en cache sans rien y regarder,
et le ressert aux navigateurs,
qui l'interprètent ainsi que tout le code html ou javascript.

JLuc