Positionner l'ancre d'un bloc ajax

Le 28/09/2021 à 10:06, Florence HENRY via Discuter de SPIP a écrit :

[Florence_HENRY] Florence HENRY https://discuter.spip.net/u/florence_henry
Septembre 28

Question connexe : que faudrait-il que je fasse pour que suite au traitement de mon formulaire, mon bloc ajax soit
rechargé, dans une configuration de code ainsi :

|[(#INCLURE{fond=inc-batiment,env,ajax=modifier_batiment})] #FORMULAIRE_BATIMENT |

Tel quel, seul le bloc du formulaire est rechargé, pas le bloc ajax |modifier_batiment|

|C’est exactement à ça que servent ajax : à pas tout reloader,
|||et ajaxReload|||: reloader un autre bloc que celui ajaxé.|

|Il faut donc

  • déclarer cet autre bloc ajax : c’est le rôle de l’argument ajax=autrebloc dans un INCLURE
  • appeler ajaxReload en javascript, quelque part et au bon moment, avec cet argument ‹ autrebloc ›|

|Pour appeler ajaxReload, une recherche sur le source des différents plugins ramène plein d’exemples
et au moins 2 manières de faire :
|

|- en incluant le javascript dans le HTML du formulaire… ou de la noisette qui l’appelle.
Par exemple pour la config du plugin reservation_evenement il y a quelque chose qui y ressemble
dans
prive/squelettes/contenu/configurer_reservation_evenement.html · master · spip-contrib-extensions / reservation_evenement · GitLab

|

$(function() {
$(« body »).on(‹ submit ›, ‹ .formulaire_configurer_reservation_evenement form ›, function(event) {
ajaxReload(‹ configurer_re_menu ›); ajaxReload(‹ navigation ›); }); });
||

|- en incluant le javascript dans le message de reponse_ok de ton formulaire.||
C’est ce qui est fait par exemple dans le plugin-dist medias||

if ($res[‹ message_ok ›]) {
$res[‹ message_ok ›] .= ‹  ›;
}
|||

|JLuc|

J’ai réussi à faire marcher la fonction |ajaxReload| avec l’argument |var_ajax_ancre|, mais cet argument ne semble pas
pris en compte lors de l’inclusion avec |#INCLURE|.

J’ai même tenté un |#FORMULAIRE_BATIMENT{var_ajax_ancre=monancre}|, mais sans succès.

[JLuc] JLuc https://discuter.spip.net/u/jluc
Septembre 23

As tu vu le commit forcer le scroll pour avoir l’ancre tout en haut de la page · 5108fb09af - agenda - SPIP on GIT
https://git.spip.net/spip-contrib-extensions/agenda/commit/5108fb09afff37379acdc9f2ff42c02421c8c475 ?

Il utilise |var_ajax_ancre| en argument de ajaxReload donc tu pourrais essayer d’INCLURE la noisette ajaxée avec cet
argument : |<INCLURE{fond=…,ajax,env,var_ajax_ancre=nomdelancre}>|