Ajout de la possibilité de configurer les montants par campagne.
[spip_souscriptions.git] / formulaires / editer_souscription_campagne.php
index 21793cc..000ac5c 100644 (file)
@@ -80,8 +80,39 @@ function formulaires_editer_souscription_campagne_charger_dist($id_souscription_
                                                  'options' => array('nom' => 'objectif_initial',
                                                                     'label' => _T('souscription:label_objectif_initial'),
                                                                     'explication' => _T('souscription:explication_campagne_objectif_initial'))
-                                                 )
-                                           )
+                                           ),
+                                           array('saisie' => 'oui_non',
+                                                 'options' => array('nom' => 'objectif_limiter',
+                                                                    'explication' => _T('souscription:explication_campagne_objectif_limite'),
+                                                                    'label' => _T('souscription:label_objectif_limite')))
+                                           ),
+                        ),
+                  array('saisie' => 'oui_non',
+                        'options' => array('nom' => 'configuration_specifique',
+                                           'label' => _T('souscription:label_configuration_specifique'),
+                                           'explication' => _T('souscription:explication_configuration_specifique'),
+                                           'defaut' => $defaut_objectif)
+                        ),
+                  array('saisie' => 'fieldset',
+                        'options' => array('nom' => 'groupe_configuration_specifique',
+                                           'label' => _T('souscription:label_objectif_groupe'),
+                                           'afficher_si' => '@configuration_specifique@ == "on"'),
+                        'saisies' => array(array('saisie' => 'selection',
+                                                 'options' => array('nom' => 'type_saisie',
+                                                                    'label' => _T('souscription:label_type_saisie'),
+                                                                    'explication' => _T('souscription:explication_type_saisie'),
+                                                                    'datas' => array("input" => _T("souscription:configurer_type_saisie_input"),
+                                                                                     "radio" => _T("souscription:configurer_type_saisie_radio"),
+                                                                                     "selection" => _T("souscription:configurer_type_saisie_selection")),
+                                                                    'defaut' => 'input')
+                                                 ),
+                                           array('saisie' => 'textarea',
+                                                 'options' => array('nom' => 'montants',
+                                                                    'label' => _T('souscription:label_montants'),
+                                                                    'explication' => _T('souscription:explication_montants'),
+                                                                    'afficher_si' => '@type_saisie@ == "radio" || @type_saisie@ == "selection"',
+                                                                    'rows' => 4))
+                                           ),
                         ),
                   array('saisie' => 'textarea',
                         'options' => array('nom' => 'texte',
@@ -129,6 +160,34 @@ function formulaires_editer_souscription_campagne_verifier_dist($id_souscription
     }
   }
 
+  /* Si une limite est demandée, alors, on vérifie que le champs est
+   * bien un entier. */
+  $limite_oui_non = _request('limite_oui_non');
+  if($limite_oui_non == "on") {
+    $limite = _request('limite');
+    if(!ctype_digit($objectif))
+      $ret['limite'] = _T("souscription:message_nok_limite_valeur");
+  }
+
+  /* Si une guration spécifique est demandée, alors on vérifie les
+   * valeurs 'type_saisie' et 'montants' (si on a demandé un bouton
+   * radio ou une selection). Autrement, les données sont supprimées
+   * dans la fonction traiter. */
+  if(_request('configuration_specifique')) {
+    $type_saisie = _request('type_saisie');
+    if(!$type_saisie || !in_array($type_saisie, array('radio', 'selection', 'input')))
+      $ret['type_saisie'] = _T('souscription:message_nok_type_saisie');
+
+    $montants = _request('montants');
+    if($type_saisie && in_array($type_saisie, array('radio', 'selection'))) {
+      if(!$montants || !is_string($montants))
+       $ret['montants'] = _T('souscription:message_nok_montants');
+
+      elseif(!montants_str2array($montants))
+       $ret['montants'] = _T('souscription:message_nok_montants');     
+    }
+  }
+
   return $ret;
 }
 
@@ -139,12 +198,17 @@ function formulaires_editer_souscription_campagne_traiter_dist($id_souscription_
                                                                $row=array(),
                                                                $hidden='')
 {
-
   /* Si un objectif n'est pas demandée, alors, on remplace la valeur
    * fournie (quelqu'elle soit, par 0) */
   if(_request('objectif_oui_non') != "on") {
     set_request('objectif', 0);
     set_request('objectif_initial', 0);
+    set_request('objectif_limiter', '');
+  }
+
+  if(_request('configuration_specifique' != "on")) {
+    set_request('type_saisie', '');
+    set_request('montants', '');
   }
 
   $res = formulaires_editer_objet_traiter('souscription_campagne',