Utilisation du plugin 'pays'.
authorOlivier Tétard <olivier.tetard@miskin.fr>
Thu, 21 Mar 2013 11:44:17 +0000 (12:44 +0100)
committerOlivier Tétard <olivier.tetard@miskin.fr>
Thu, 21 Mar 2013 11:44:17 +0000 (12:44 +0100)
Le plugin 'pays' est utilisé pour afficher la liste des pays sur le
formulaire de souscription. Le plugin est aussi utilisé pour vérifier
que le pays annoncé par le souscripteur est bien valide.

action/editer_souscription.php
formulaires/souscription.html
formulaires/souscription.php
paquet.xml

index d53c02f..ef80f1c 100644 (file)
@@ -69,7 +69,6 @@ function souscription_modifier($id_souscription, $set=false) {
                                 'adresse',
                                 'code_postal',
                                 'ville',
-                                'pays',
                                 'id_souscription_campagne',
                                 'type_souscription'),
                           // black list
@@ -90,7 +89,13 @@ function souscription_modifier($id_souscription, $set=false) {
     return "Identifiant de transaction introuvable..."; /* FIXME: à rendre traduisible. */
   }
 
-  $c = array_merge($c, array("id_transaction" => $id_transaction));
+  /* Récupération du nom du pays */
+  $code_pays = _request('pays');
+  $pays = sql_getfetsel(sql_multi("nom", $GLOBALS['spip_lang']), 'spip_pays', "code='$code_pays'");
+
+  $c = array_merge($c,
+                   array("id_transaction" => $id_transaction,
+                         "pays" => $pays));
 
   if($err = objet_modifier_champs('souscription', $id_souscription, array(), $c))
     return $err;
index 1f2a93e..c5cbc19 100644 (file)
@@ -1,3 +1,8 @@
+[(#SET{liste_pays,#ARRAY{}})]
+<BOUCLE_p(PAYS){par nom}>
+  [(#SET{liste_pays, #GET{liste_pays}|array_merge{#ARRAY{#CODE, #NOM}}})]
+</BOUCLE_p>
+
 <div class="formulaire_spip formulaire_#FORM formulaire_#FORM-#ENV{id_souscription,nouveau}[ formulaire_souscription_(#ENV{type_souscription})]">
   [<p class="reponse_formulaire reponse_formulaire_ok">(#ENV**{message_ok})</p>]
   [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
@@ -29,7 +34,7 @@
          [(#SAISIE{textarea, adresse, label=<:souscription:label_adresse:>, rows=3})]
          [(#SAISIE{input, code_postal, label=<:souscription:label_code_postal:>})]
          [(#SAISIE{input, ville, label=<:souscription:label_ville:>})]
-         [(#SAISIE{input, pays, label=<:souscription:label_pays:>})]
+         [(#SAISIE{selection, pays, label=<:souscription:label_pays:>, datas=#GET{liste_pays}})]
        </ul>
       </fieldset>
       <p class="boutons"><input type="submit" class="submit" value="<:souscription:confirmer:>" /></p>
index 69d28c5..aedf849 100644 (file)
@@ -163,10 +163,17 @@ function formulaires_souscription_verifier_dist($id_souscription_campagne) {
   if ($e = _request('courriel') AND !email_valide($e))
     $erreurs['courriel'] = _T('form_prop_indiquer_email');
 
-  /* Le code postal n'est vérifié que si on est dans le cas de la France */
-  if($e = _request('pays') AND strtolower(trim($e)) == "france") {
-    if ($e = _request('code_postal') AND !preg_match("/^(2[ABab]|0[1-9]|[1-9][0-9])[0-9]{3}$/", $e)) {
-      $erreurs['code_postal'] = "Code postal invalide";
+  if($e = _request('pays')) {
+    $ret = sql_select('nom', 'spip_pays', "code='${e}'");
+
+    if(sql_count($ret) != 1)
+      $erreurs['pays'] = "Pays invalide";
+
+    /* Le code postal n'est vérifié que si on est dans le cas de la France */
+    elseif($e = _request('pays') AND $e == "FR") {
+      if ($e = _request('code_postal') AND !preg_match("/^(2[ABab]|0[1-9]|[1-9][0-9])[0-9]{3}$/", $e)) {
+        $erreurs['code_postal'] = "Code postal invalide";
+      }
     }
   }
 
index 946a8dc..64ac3ee 100644 (file)
@@ -1,7 +1,7 @@
 <paquet
     prefix="souscription"
     categorie="communication"
-    version="0.1"
+    version="0.2"
     etat="dev"
     compatibilite="[3.0.5;3.0.*]"
     logo=""
@@ -17,6 +17,7 @@
   <necessite nom="saisies" compatibilite="[1.24.0;]" />
   <necessite nom="bank" compatibilite="[2.2.1;]" />
   <necessite nom="spip_bonux" compatibilite="[3.0.4;]" />
+  <necessite nom="pays" compatibilite="];[" />
 
   <pipeline nom="autoriser" inclure="souscription_autorisations.php" />