Modale Bootstrap et Formulaire de contact

Bonsoir,
je voudrais utiliser le Formulaire de contact dans une boite modale bootstrap. Mon problème est que la modale « bootstrap » se ferme quand je demande d’envoyer le message.

J’ai fait un modele « modale » pour afficher la modale. Le code du modèle est donné à la fin du message.
Comme on peut le voir, le modèle embarque un article comme body de la boite modale :

[

(#ENV{contenu})

]

Pour cela il utilise transmet l’environnement + ajax, comme indiqué ici :
https://www.spip.net/fr_article3753.html

Pour continuer d’être conforme avec la doc, j’ai ajouté la classe « ajax » au bouton « envoyer le mail » mais ca ne fonctionne pas.
Autre symptôme « rigolo » : le titre du bouton prend comme nom le texte qui a été tapé dans le formulaire.

Je sèche ….
Une idée ?
Merci,
Mikhaël


<BOUCLE_test(CONDITION){si #ENV{bouton}|concat{#ENV{img}}|concat{#ENV{texte}}|oui}>
[(#ENV{type}|oui)#MODELE{section_debut,env}]
[(#ENV{img}|oui)

]
<a href="#myModal#ENV{id}" [(#ENV{bouton}|?{role=« button » class=« btn » })] data-toggle=« modal » >
[(#ENV{bouton})]
[(#ENV{texte})]
#SET{tailleimage,#ENV{largeur,400}}
<BOUCLE_document (DOCUMENTS) {si #ENV{img}|oui} {id_document=#ENV{img}}>
[(#MODELE{imgB,env,autoZoom=non})]
</BOUCLE_document>

<BOUCLE_art(ARTICLES){id_article=#ENV{article}}>
[(#ENV{img}|oui)
[

(#TITRE)

]
[

(#SOUSTITRE)

]
]
</BOUCLE_art>

[(#ENV{img}|oui)

]
[(#ENV{type}|oui)#MODELE{section_fin,env}]
</BOUCLE_test>

[(#ENV{titre}|oui)
×

#ENV{titre}

]
[

(#ENV{contenu})

]
Fermer

—————————

Trouvé.
Il faut entourer la modale avec la classe ajax :

[

(#ENV{contenu})

]

Voilou !

Le 20 déc. 2017 à 18:41, Mikhaël MYARA <mikhael.myara@ies.univ-montp2.fr> a écrit :

Bonsoir,
je voudrais utiliser le Formulaire de contact dans une boite modale bootstrap. Mon problème est que la modale « bootstrap » se ferme quand je demande d’envoyer le message.

J’ai fait un modele « modale » pour afficher la modale. Le code du modèle est donné à la fin du message.
Comme on peut le voir, le modèle embarque un article comme body de la boite modale :

[

(#ENV{contenu})

]

Pour cela il utilise transmet l’environnement + ajax, comme indiqué ici :
https://www.spip.net/fr_article3753.html

Pour continuer d’être conforme avec la doc, j’ai ajouté la classe « ajax » au bouton « envoyer le mail » mais ca ne fonctionne pas.
Autre symptôme « rigolo » : le titre du bouton prend comme nom le texte qui a été tapé dans le formulaire.

Je sèche ….
Une idée ?
Merci,
Mikhaël


<BOUCLE_test(CONDITION){si #ENV{bouton}|concat{#ENV{img}}|concat{#ENV{texte}}|oui}>
[(#ENV{type}|oui)#MODELE{section_debut,env}]
[(#ENV{img}|oui)

]
<a href=« #myModal#ENV{id} » [(#ENV{bouton}|?{role=« button » class=« btn » })] data-toggle=« modal » >
[(#ENV{bouton})]
[(#ENV{texte})]
#SET{tailleimage,#ENV{largeur,400}}
<BOUCLE_document (DOCUMENTS) {si #ENV{img}|oui} {id_document=#ENV{img}}>
[(#MODELE{imgB,env,autoZoom=non})]
</BOUCLE_document>

<BOUCLE_art(ARTICLES){id_article=#ENV{article}}>
[(#ENV{img}|oui)
[

(#TITRE)

]
[

(#SOUSTITRE)

]
]
</BOUCLE_art>

[(#ENV{img}|oui)

]
[(#ENV{type}|oui)#MODELE{section_fin,env}]
</BOUCLE_test>

[(#ENV{titre}|oui)
×

#ENV{titre}

]
[

(#ENV{contenu})

]
Fermer

—————————


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

Archives : https://www.mail-archive.com/spip@rezo.net/maillist.html

Infos : http://listes.rezo.net/mailman/listinfo/spip

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

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

Juste au passage : {id_article=#ENV{article}}
devrait pouvoir s'écrire plus simplement : {id_article}
JL

Le 20/12/2017 à 18:41, Mikhaël MYARA a écrit :

Bonsoir,
je voudrais utiliser le Formulaire de contact dans une boite modale bootstrap. Mon problème est que la modale « bootstrap » se ferme quand je demande d’envoyer le message.

J’ai fait un modele « modale » pour afficher la modale. Le code du modèle est donné à la fin du message.
Comme on peut le voir, le modèle embarque un article comme body de la boite modale :
<div class="modal-body [(#ENV{titre}|non)modal-body-no-header]">
[<p>(#ENV{contenu})</p>] <INCLURE{fond=content/article,id_article=#ENV{article},env,ajax} />
</div>
Pour cela il utilise transmet l’environnement + ajax, comme indiqué ici :
`{ajax}` pour les `inclure` - SPIP

Pour continuer d’être conforme avec la doc, j’ai ajouté la classe « ajax » au bouton « envoyer le mail » mais ca ne fonctionne pas.
Autre symptôme « rigolo » : le titre du bouton prend comme nom le texte qui a été tapé dans le formulaire.

Je sèche ….
Une idée ?
Merci,
Mikhaël

------------------
<!-- Button to trigger modal -->
<BOUCLE_test(CONDITION){si #ENV{bouton}|concat{#ENV{img}}|concat{#ENV{texte}}|oui}>
[(#ENV{type}|oui)#MODELE{section_debut,env}]
[(#ENV{img}|oui)<div style="text-align: center;">]
<a href="#myModal#ENV{id}" [(#ENV{bouton}|?{role="button" class="btn" })] data-toggle="modal" >
[(#ENV{bouton})]
[(#ENV{texte})]
#SET{tailleimage,#ENV{largeur,400}}
<BOUCLE_document (DOCUMENTS) {si #ENV{img}|oui} {id_document=#ENV{img}}>
[(#MODELE{imgB,env,autoZoom=non})]
</BOUCLE_document>
</a>
<BOUCLE_art(ARTICLES){id_article=#ENV{article}}>
[(#ENV{img}|oui)
[<p class="modalIconTitle">(#TITRE)</p>]
[<p class="modalIconSubtitle">(#SOUSTITRE)</p>]
]
</BOUCLE_art>

[(#ENV{img}|oui)</div>]
[(#ENV{type}|oui)#MODELE{section_fin,env}]
</BOUCLE_test>

<!-- Modal -->
<div id="myModal#ENV{id}" class="modal animated fadeInDownBig hide" tabindex="-1" role="dialog" aria-labelledby="myModal#ENV{id}Label" aria-hidden="true">
[(#ENV{titre}|oui)<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h3 id="myModal#ENV{id}Label">#ENV{titre}</h3>
</div> ]
<div class="modal-body [(#ENV{titre}|non)modal-body-no-header]">
[<p>(#ENV{contenu})</p>] <INCLURE{fond=content/article,id_article=#ENV{article},env,ajax} />
</div>
<div class="modal-footer">
<button class="btn" btn-primary data-dismiss="modal" aria-hidden="true">Fermer</button>
</div>
</div>

<script type="text/javascript">
// SVG case
var spipDocNode = document.getElementsByClassName("spip_document_#ENV{SVGDoc}")[0]
if(spipDocNode) {
var objectNode = spipDocNode.getElementsByTagName("object")[0]
objectNode.addEventListener("load",function(){
var svgDoc = objectNode.contentDocument;
var delta = svgDoc.getElementById("#ENV{SVGId}");
delta.addEventListener("mousedown",function(){
$('#myModal#ENV{id}').appendTo("body").modal('show');
}, false);
}, false);
}
// explicitly force append to body
var wantedParent = "#ENV{parent}";
if(wantedParent)
$(document).ready(function(){
$('#myModal#ENV{id}').appendTo(wantedParent);
});
</script>

—————————

Ok merci. Mon SPIP est en effet lourd et je m’en rends compte, juste je manque d’expérience :wink:
Merci !

Le 21 déc. 2017 à 10:43, JLuc <jluc@no-log.org> a écrit :

Juste au passage : {id_article=#ENV{article}}
devrait pouvoir s'écrire plus simplement : {id_article}
JL

Le 20/12/2017 à 18:41, Mikhaël MYARA a écrit :

Bonsoir,
  je voudrais utiliser le Formulaire de contact dans une boite modale bootstrap. Mon problème est que la modale « bootstrap » se ferme quand je demande d’envoyer le message.
J’ai fait un modele « modale » pour afficher la modale. Le code du modèle est donné à la fin du message.
Comme on peut le voir, le modèle embarque un article comme body de la boite modale :
  <div class="modal-body [(#ENV{titre}|non)modal-body-no-header]">
     [<p>(#ENV{contenu})</p>] <INCLURE{fond=content/article,id_article=#ENV{article},env,ajax} />
  </div>
Pour cela il utilise transmet l’environnement + ajax, comme indiqué ici :
`{ajax}` pour les `inclure` - SPIP
Pour continuer d’être conforme avec la doc, j’ai ajouté la classe « ajax » au bouton « envoyer le mail » mais ca ne fonctionne pas.
Autre symptôme « rigolo » : le titre du bouton prend comme nom le texte qui a été tapé dans le formulaire.
Je sèche ….
  Une idée ?
    Merci,
     Mikhaël
------------------
<!-- Button to trigger modal -->
<BOUCLE_test(CONDITION){si #ENV{bouton}|concat{#ENV{img}}|concat{#ENV{texte}}|oui}>
[(#ENV{type}|oui)#MODELE{section_debut,env}]
[(#ENV{img}|oui)<div style="text-align: center;">]
<a href="#myModal#ENV{id}" [(#ENV{bouton}|?{role="button" class="btn" })] data-toggle="modal" >
  [(#ENV{bouton})]
  [(#ENV{texte})]
  #SET{tailleimage,#ENV{largeur,400}}
  <BOUCLE_document (DOCUMENTS) {si #ENV{img}|oui} {id_document=#ENV{img}}>
    [(#MODELE{imgB,env,autoZoom=non})]
  </BOUCLE_document>
</a>
<BOUCLE_art(ARTICLES){id_article=#ENV{article}}>
[(#ENV{img}|oui)
[<p class="modalIconTitle">(#TITRE)</p>]
[<p class="modalIconSubtitle">(#SOUSTITRE)</p>]
]
</BOUCLE_art>
[(#ENV{img}|oui)</div>]
[(#ENV{type}|oui)#MODELE{section_fin,env}]
</BOUCLE_test>
<!-- Modal -->
<div id="myModal#ENV{id}" class="modal animated fadeInDownBig hide" tabindex="-1" role="dialog" aria-labelledby="myModal#ENV{id}Label" aria-hidden="true">
  [(#ENV{titre}|oui)<div class="modal-header">
    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
    <h3 id="myModal#ENV{id}Label">#ENV{titre}</h3>
  </div> ]
  <div class="modal-body [(#ENV{titre}|non)modal-body-no-header]">
     [<p>(#ENV{contenu})</p>] <INCLURE{fond=content/article,id_article=#ENV{article},env,ajax} />
  </div>
  <div class="modal-footer">
    <button class="btn" btn-primary data-dismiss="modal" aria-hidden="true">Fermer</button>
  </div>
</div>
<script type="text/javascript">
// SVG case
var spipDocNode = document.getElementsByClassName("spip_document_#ENV{SVGDoc}")[0]
if(spipDocNode) {
var objectNode = spipDocNode.getElementsByTagName("object")[0]
objectNode.addEventListener("load",function(){
                var svgDoc = objectNode.contentDocument;
                var delta = svgDoc.getElementById("#ENV{SVGId}");
                delta.addEventListener("mousedown",function(){
                $('#myModal#ENV{id}').appendTo("body").modal('show');
                }, false);
            }, false);
          }
// explicitly force append to body
var wantedParent = "#ENV{parent}";
if(wantedParent)
$(document).ready(function(){
  $('#myModal#ENV{id}').appendTo(wantedParent);
});
</script>
—————————

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

Archives : https://www.mail-archive.com/spip@rezo.net/maillist.html

Infos : http://listes.rezo.net/mailman/listinfo/spip

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

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

Le 21/12/2017 à 11:28, Mikhaël MYARA a écrit :

Ok merci. Mon SPIP est en effet lourd et je m’en rends compte, juste je manque d’expérience :wink:
Merci !

Le 21 déc. 2017 à 10:43, JLuc <jluc@no-log.org> a écrit :

Juste au passage : {id_article=#ENV{article}}
devrait pouvoir s'écrire plus simplement : {id_article}

Oups j'avais lu trop vite ! car tu écris #ENV{article} et non #ENV{id_article}
et tu ne peux pas simplifier si vraiment c'est 'article' qui a la valeur dans l'environnement et non id_article .

Mais il est vivement conseillé d'utiliser id_article pour tes variables d'url ou d'env lorsque c'est un id qui est contenu.
D'une part pour les simplifications syntaxiques que ça permet
ex : critère de boucle {id_article} au lieu de {id_article=#ENV{id_article}}
Mais aussi pour les fonctionnalités supplémentaires comme les critères conditionnels {id_article?}
et pour l'écran de sécurité qui protège de certaines tentatives de hack
en vérifiant que les id_ sont bien numériques.

Ensuite pour l'écriture, au lieu de #ENV{bouton} ou autre tu peux écrire directement #BOUTON
La lecture est plus légère avec #BOUTON.
Mais parfois c'est utile aussi de distinguer visuellement les #CHAMPS qui viennent des boucles
et les valeurs qui viennent de l'environnement d'appel en gardant #ENV{bouton}.

JL

Le 20/12/2017 à 18:41, Mikhaël MYARA a écrit :

Bonsoir,
   je voudrais utiliser le Formulaire de contact dans une boite modale bootstrap. Mon problème est que la modale « bootstrap » se ferme quand je demande d’envoyer le message.
J’ai fait un modele « modale » pour afficher la modale. Le code du modèle est donné à la fin du message.
Comme on peut le voir, le modèle embarque un article comme body de la boite modale :
   <div class="modal-body [(#ENV{titre}|non)modal-body-no-header]">
      [<p>(#ENV{contenu})</p>] <INCLURE{fond=content/article,id_article=#ENV{article},env,ajax} />
   </div>
Pour cela il utilise transmet l’environnement + ajax, comme indiqué ici :
`{ajax}` pour les `inclure` - SPIP
Pour continuer d’être conforme avec la doc, j’ai ajouté la classe « ajax » au bouton « envoyer le mail » mais ca ne fonctionne pas.
Autre symptôme « rigolo » : le titre du bouton prend comme nom le texte qui a été tapé dans le formulaire.
Je sèche ….
   Une idée ?
     Merci,
      Mikhaël
------------------
<!-- Button to trigger modal -->
<BOUCLE_test(CONDITION){si #ENV{bouton}|concat{#ENV{img}}|concat{#ENV{texte}}|oui}>
[(#ENV{type}|oui)#MODELE{section_debut,env}]
[(#ENV{img}|oui)<div style="text-align: center;">]
<a href="#myModal#ENV{id}" [(#ENV{bouton}|?{role="button" class="btn" })] data-toggle="modal" >
   [(#ENV{bouton})]
   [(#ENV{texte})]
   #SET{tailleimage,#ENV{largeur,400}}
   <BOUCLE_document (DOCUMENTS) {si #ENV{img}|oui} {id_document=#ENV{img}}>
     [(#MODELE{imgB,env,autoZoom=non})]
   </BOUCLE_document>
</a>
<BOUCLE_art(ARTICLES){id_article=#ENV{article}}>
[(#ENV{img}|oui)
[<p class="modalIconTitle">(#TITRE)</p>]
[<p class="modalIconSubtitle">(#SOUSTITRE)</p>]
]
</BOUCLE_art>
[(#ENV{img}|oui)</div>]
[(#ENV{type}|oui)#MODELE{section_fin,env}]
</BOUCLE_test>
<!-- Modal -->
<div id="myModal#ENV{id}" class="modal animated fadeInDownBig hide" tabindex="-1" role="dialog" aria-labelledby="myModal#ENV{id}Label" aria-hidden="true">
   [(#ENV{titre}|oui)<div class="modal-header">
     <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
     <h3 id="myModal#ENV{id}Label">#ENV{titre}</h3>
   </div> ]
   <div class="modal-body [(#ENV{titre}|non)modal-body-no-header]">
      [<p>(#ENV{contenu})</p>] <INCLURE{fond=content/article,id_article=#ENV{article},env,ajax} />
   </div>
   <div class="modal-footer">
     <button class="btn" btn-primary data-dismiss="modal" aria-hidden="true">Fermer</button>
   </div>
</div>
<script type="text/javascript">
// SVG case
var spipDocNode = document.getElementsByClassName("spip_document_#ENV{SVGDoc}")[0]
if(spipDocNode) {
var objectNode = spipDocNode.getElementsByTagName("object")[0]
objectNode.addEventListener("load",function(){
                 var svgDoc = objectNode.contentDocument;
                 var delta = svgDoc.getElementById("#ENV{SVGId}");
                 delta.addEventListener("mousedown",function(){
                 $('#myModal#ENV{id}').appendTo("body").modal('show');
                 }, false);
             }, false);
           }
// explicitly force append to body
var wantedParent = "#ENV{parent}";
if(wantedParent)
$(document).ready(function(){
   $('#myModal#ENV{id}').appendTo(wantedParent);
});
  </script>
—————————

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

Archives : https://www.mail-archive.com/spip@rezo.net/maillist.html

Infos : http://listes.rezo.net/mailman/listinfo/spip

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

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

Merci pour ces conseils ! en effet j’ignorais pour le « raccourci » des variables issues de l’environement avec la syntaxe #. Mais en effet ca peut sembler ambigu dans certaines situations.
Merci encore,
Mikhaël

Le 21 déc. 2017 à 11:57, JLuc <jluc@no-log.org> a écrit :

Le 21/12/2017 à 11:28, Mikhaël MYARA a écrit :

Ok merci. Mon SPIP est en effet lourd et je m’en rends compte, juste je manque d’expérience :wink:
Merci !

Le 21 déc. 2017 à 10:43, JLuc <jluc@no-log.org> a écrit :

Juste au passage : {id_article=#ENV{article}}
devrait pouvoir s’écrire plus simplement : {id_article}

Oups j’avais lu trop vite ! car tu écris #ENV{article} et non #ENV{id_article}
et tu ne peux pas simplifier si vraiment c’est ‹ article › qui a la valeur dans l’environnement et non id_article .

Mais il est vivement conseillé d’utiliser id_article pour tes variables d’url ou d’env lorsque c’est un id qui est contenu.
D’une part pour les simplifications syntaxiques que ça permet
ex : critère de boucle {id_article} au lieu de {id_article=#ENV{id_article}}
Mais aussi pour les fonctionnalités supplémentaires comme les critères conditionnels {id_article?}
et pour l’écran de sécurité qui protège de certaines tentatives de hack
en vérifiant que les id_ sont bien numériques.

Ensuite pour l’écriture, au lieu de #ENV{bouton} ou autre tu peux écrire directement #BOUTON
La lecture est plus légère avec #BOUTON.
Mais parfois c’est utile aussi de distinguer visuellement les #CHAMPS qui viennent des boucles
et les valeurs qui viennent de l’environnement d’appel en gardant #ENV{bouton}.

JL

Le 20/12/2017 à 18:41, Mikhaël MYARA a écrit :

Bonsoir,
je voudrais utiliser le Formulaire de contact dans une boite modale bootstrap. Mon problème est que la modale « bootstrap » se ferme quand je demande d’envoyer le message.
J’ai fait un modele « modale » pour afficher la modale. Le code du modèle est donné à la fin du message.
Comme on peut le voir, le modèle embarque un article comme body de la boite modale :

[

(#ENV{contenu})

]
Pour cela il utilise transmet l’environnement + ajax, comme indiqué ici : [https://www.spip.net/fr_article3753.html](https://www.spip.net/fr_article3753.html) Pour continuer d’être conforme avec la doc, j’ai ajouté la classe « ajax » au bouton « envoyer le mail » mais ca ne fonctionne pas. Autre symptôme « rigolo » : le titre du bouton prend comme nom le texte qui a été tapé dans le formulaire. Je sèche …. Une idée ? Merci, Mikhaël ------------------ [(#ENV{type}|oui)#MODELE{section_debut,env}] [(#ENV{img}|oui)] [(#ENV{type}|oui)#MODELE{section_fin,env}]
[(#ENV{titre}|oui)
×

#ENV{titre}

]
[

(#ENV{contenu})

]
Fermer
—————————

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

Archives : https://www.mail-archive.com/spip@rezo.net/maillist.html

Infos : http://listes.rezo.net/mailman/listinfo/spip

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

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


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

Archives : https://www.mail-archive.com/spip@rezo.net/maillist.html

Infos : http://listes.rezo.net/mailman/listinfo/spip

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

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