Merge remote-tracking branch 'cedric/feature/editersouscription' into refconfig
authorOlivier Tétard <olivier.tetard@miskin.fr>
Tue, 10 Dec 2013 14:10:19 +0000 (15:10 +0100)
committerOlivier Tétard <olivier.tetard@miskin.fr>
Tue, 10 Dec 2013 14:10:19 +0000 (15:10 +0100)
Refactoring du formulaire de souscription :
- des wrappers avec des classes dans le modele pour permettre de styler
- formulaire en HTML au lieu de #SAISIES, ce qui permet de regrouper nom/prenom et code postal/ville
- l'inscription à la newsletter et l'information du comité local sont des options qu'il faut activer dans la config
- PHPDoc, coquilles, indentation

29 files changed:
formulaires/configurer_souscription.html
formulaires/editer_souscription_campagne.html
formulaires/editer_souscription_campagne.php
formulaires/inc-formulaires-suite.html [new file with mode: 0644]
formulaires/inc-souscription-input.html [new file with mode: 0644]
formulaires/inc-souscription-radio.html [new file with mode: 0644]
formulaires/inc-souscription-selection.html [new file with mode: 0644]
formulaires/souscription.html
formulaires/souscription.php
inclure/objectif_atteint.html
lang/souscription_campagne_fr.php [new file with mode: 0644]
lang/souscription_fr.php
modeles/avancement-campagne.html
modeles/souscription.html
paquet.xml
prive/objets/contenu/souscription_campagne.html
prive/objets/infos/souscription_campagne.html
prive/objets/liste/souscription_campagnes.html
prive/squelettes/contenu/souscription_campagne.html
prive/squelettes/contenu/souscription_campagnes.html
prive/squelettes/hierarchie/souscription_campagne.html
prive/squelettes/hierarchie/souscription_campagne_edit.html
prive/squelettes/hierarchie/souscription_campagnes.html
prive/style_prive_plugin_souscription.html [new file with mode: 0644]
prive/themes/spip/images/souscription-24.png [new file with mode: 0644]
prive/themes/spip/images/souscription_campagne-16.png [new file with mode: 0644]
prive/themes/spip/images/souscription_campagne-24.png [new file with mode: 0644]
prive/themes/spip/images/souscription_campagne-32.png [new file with mode: 0644]
souscription_fonctions.php

index b96dd83..8ff2b97 100644 (file)
                                                        ]<textarea name="#GET{name}" class="textarea" rows="4">
 #ENV*{#GET{name},#GET{defaut}}</textarea>
                                                </li>
+                                               #SET{name,proposer_informer_comite_local}#SET{obli,''}#SET{defaut,''}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
+                                               <li class="editer pleine_largeur editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">[
+                                                       <span class='erreur_message'>(#GET{erreurs})</span>
+                                                       ]
+                                                       #SET{val,off}
+                                                       <input type="hidden" name="#GET{name}" value="#GET{val}" />
+                                                       #SET{val,on}
+                                                       <div class="choix">
+                                                               <input type="checkbox" name="#GET{name}" class="checkbox" id="#GET{name}_#GET{val}" value="#GET{val}"[(#ENV{#GET{name},#GET{defaut}}|=={#GET{val}}|oui)checked="checked"] />
+                                                               <label for="#GET{name}_#GET{val}"><:souscription:label_proposer_informer_comite_local:></label>
+                                                       </div>
+                                               </li>
                                        </ul>
                                </fieldset>
                        </li>
                                        ]<textarea name="#GET{name}" class="textarea" rows="4">
 #ENV*{#GET{name},#GET{defaut}}</textarea>
                                </li>
+                               #SET{name,proposer_infolettre}#SET{obli,''}#SET{defaut,''}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
+                               <li class="editer pleine_largeur editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">[
+                                       <span class='erreur_message'>(#GET{erreurs})</span>
+                                       ]
+                                       #SET{val,off}
+                                       <input type="hidden" name="#GET{name}" value="#GET{val}" />
+                                       #SET{val,on}
+                                       <div class="choix">
+                                               <input type="checkbox" name="#GET{name}" class="checkbox" id="#GET{name}_#GET{val}" value="#GET{val}"[(#ENV{#GET{name},#GET{defaut}}|=={#GET{val}}|oui)checked="checked"] />
+                                               <label for="#GET{name}_#GET{val}"><:souscription:label_proposer_infolettre:></label>
+                                       </div>
+                               </li>
                        </ul>
                </fieldset>
 
        </div>
        </form>
 </div>
-<script type="text/javascript">
-       jQuery(function(){
-               jQuery(".suite.fieldset").each(function(){
-                       var me=this;
-                       jQuery(me).prev(".editer").find("input.checkbox").click(function(){
-                               if (jQuery(this).prop("checked"))
-                                       jQuery(me).show('fast');
-                               else
-                                       jQuery(me).hide('fast');
-                       })
-               })
-       })
-</script>
-<style>
-input.checkbox:checked+label {font-weight: bold;}
-li.fieldset.adhesion {margin-bottom: 1em}
-li.suite {margin-left: 40px;}
-</style>
\ No newline at end of file
+<INCLURE{fond=formulaires/inc-formulaires-suite} />
index d330355..8aee088 100644 (file)
@@ -7,7 +7,122 @@
       #ACTION_FORMULAIRE{#ENV{action}}
 
       <ul>
-      #GENERER_SAISIES{#ENV{_saisies}}
+             #SET{name,titre}#SET{obli,'obligatoire'}#SET{defaut,''}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
+        <li class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
+          <label for="#GET{name}"><:souscription_campagne:label_titre_campagne:> <:info_obligatoire_02:></label>[
+          <span class='erreur_message'>(#GET{erreurs})</span>
+          ]<input type="text" name="#GET{name}" class="text" value="#ENV*{#GET{name},#GET{defaut}}" id="#GET{name}" [(#HTML5|et{#GET{obli}})required='required']/>
+        </li>
+             #SET{name,type_objectif}#SET{obli,''}#SET{defaut,''}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
+        <li class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
+          <label for="#GET{name}"><:souscription_campagne:label_type_objectif:></label>[
+          <span class='erreur_message'>(#GET{erreurs})</span>
+          ]<select name="#GET{name}" class="select" id="#GET{name}">
+            #SET{val,don}
+                       [(#CONFIG{souscription/don_activer,'off'}|=={on}|ou{[(#ENV{#GET{name},#GET{defaut}}|=={#GET{val}}|oui)]})
+            <option value="#GET{val}"[(#ENV{#GET{name},#GET{defaut}}|=={#GET{val}}|oui)selected="selected"]><:souscription_campagne:label_type_objectif_dons:> <:souscription_campagne:info_type_objectif_dons:></option>
+                       ]
+            #SET{val,adhesion}
+                       [(#CONFIG{souscription/adhesion_activer,'off'}|=={on}|ou{[(#ENV{#GET{name},#GET{defaut}}|=={#GET{val}}|oui)]})
+            <option value="#GET{val}"[(#ENV{#GET{name},#GET{defaut}}|=={#GET{val}}|oui)selected="selected"]><:souscription_campagne:label_type_objectif_adhesions:> <:souscription_campagne:info_type_objectif_adhesions:></option>
+                       ]
+          </select>
+        </li>
+             #SET{name,texte}#SET{obli,''}#SET{defaut,''}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
+                               <li class="editer pleine_largeur editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
+                                       <label for="#GET{name}"><:souscription_campagne:label_description:></label>[
+                                       <span class='erreur_message'>(#GET{erreurs})</span>
+                                       ]<textarea name="#GET{name}" class="textarea" rows="10">
+#ENV*{#GET{name},#GET{defaut}}</textarea>
+                               </li>
+             #SET{name,objectif_oui_non}#SET{obli,''}#SET{defaut,#ENV{_defaut_objectif,''}}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
+             <li class="editer pleine_largeur editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">[
+                       <span class='erreur_message'>(#GET{erreurs})</span>
+                       ]
+                       #SET{val,'off'}
+                       <input type="hidden" name="#GET{name}" value="#GET{val}" />
+                       #SET{val,on}
+                       <div class="choix">
+                               <input type="checkbox" name="#GET{name}" class="checkbox" id="#GET{name}_#GET{val}" value="#GET{val}"[(#ENV{#GET{name},#GET{defaut}}|=={#GET{val}}|oui)checked="checked"] />
+                               <label for="#GET{name}_#GET{val}"><:souscription_campagne:label_objectif_oui_non:></label>
+                       </div>
+               </li>
+             <li class="suite fieldset limite[(#ENV{#GET{name},#GET{defaut}}|=={on}|non)none]">
+                       <fieldset>
+                               <legend><:souscription_campagne:label_objectif_groupe:></legend>
+                               <ul>
+                                     #SET{name,objectif}#SET{obli,'obligatoire'}#SET{defaut,''}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
+                               <li class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
+                                 <label for="#GET{name}"><:souscription_campagne:label_objectif:> <:info_obligatoire_02:></label>[
+                                 <span class='erreur_message'>(#GET{erreurs})</span>
+                                 ]<input type="text" name="#GET{name}" class="text" value="#ENV*{#GET{name},#GET{defaut}}" id="#GET{name}"/>
+                                       <p class="explication"><:souscription_campagne:explication_campagne_objectif:></p>
+                               </li>
+                                     #SET{name,objectif_initial}#SET{obli,''}#SET{defaut,''}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
+                               <li class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
+                                 <label for="#GET{name}"><:souscription_campagne:label_objectif_initial:></label>[
+                                 <span class='erreur_message'>(#GET{erreurs})</span>
+                                 ]<input type="text" name="#GET{name}" class="text" value="#ENV*{#GET{name},#GET{defaut}}" id="#GET{name}" [(#HTML5|et{#GET{obli}})required='required']/>
+                                       <p class="explication"><:souscription_campagne:explication_campagne_objectif_initial:></p>
+                               </li>
+                                     #SET{name,objectif_limiter}#SET{obli,''}#SET{defaut,#ENV{_defaut_objectif,''}}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
+                                     <li class="editer pleine_largeur editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">[
+                                               <span class='erreur_message'>(#GET{erreurs})</span>
+                                               ]
+                                               #SET{val,'off'}
+                                               <input type="hidden" name="#GET{name}" value="#GET{val}" />
+                                               #SET{val,on}
+                                               <div class="choix">
+                                                       <input type="checkbox" name="#GET{name}" class="checkbox" id="#GET{name}_#GET{val}" value="#GET{val}"[(#ENV{#GET{name},#GET{defaut}}|=={#GET{val}}|oui)checked="checked"] />
+                                                       <label for="#GET{name}_#GET{val}"><:souscription_campagne:label_objectif_limite:></label>
+                                               </div>
+                                             <p class="explication"><:souscription_campagne:explication_campagne_objectif_limite:></p>
+                                       </li>
+                             </ul>
+                     </fieldset>
+             </li>
+             #SET{name,configuration_specifique}#SET{obli,''}#SET{defaut,#ENV{_defaut_objectif,''}}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
+             <li class="editer pleine_largeur editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">[
+                       <span class='erreur_message'>(#GET{erreurs})</span>
+                       ]
+                       #SET{val,'off'}
+                       <input type="hidden" name="#GET{name}" value="#GET{val}" />
+                       #SET{val,on}
+                       <div class="choix">
+                               <input type="checkbox" name="#GET{name}" class="checkbox" id="#GET{name}_#GET{val}" value="#GET{val}"[(#ENV{#GET{name},#GET{defaut}}|=={#GET{val}}|oui)checked="checked"] />
+                               <label for="#GET{name}_#GET{val}"><:souscription_campagne:label_configuration_specifique:></label>
+                       </div>
+                     <p class="explication"><:souscription_campagne:explication_configuration_specifique:></p>
+               </li>
+             <li class="suite fieldset configuration_specifique[(#ENV{#GET{name},#GET{defaut}}|=={on}|non)none]">
+                       <fieldset>
+                               <legend><:souscription_campagne:label_objectif_groupe:></legend>
+                               <ul>
+                                     #SET{name,type_saisie}#SET{obli,''}#SET{defaut,''}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
+                         <li class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
+                           <label for="#GET{name}"><:souscription:label_type_saisie:></label>[
+                           <span class='erreur_message'>(#GET{erreurs})</span>
+                           ]<select name="#GET{name}" class="select" id="#GET{name}">
+                             #SET{val,input}
+                             <option value="#GET{val}"[(#ENV{#GET{name},#GET{defaut}}|=={#GET{val}}|oui)selected="selected"]><:souscription:configurer_type_saisie_input:></option>
+                             #SET{val,radio}
+                             <option value="#GET{val}"[(#ENV{#GET{name},#GET{defaut}}|=={#GET{val}}|oui)selected="selected"]><:souscription:configurer_type_saisie_radio:></option>
+                             #SET{val,selection}
+                             <option value="#GET{val}"[(#ENV{#GET{name},#GET{defaut}}|=={#GET{val}}|oui)selected="selected"]><:souscription:configurer_type_saisie_selection:></option>
+                           </select>
+                                 <p class="explication"><:souscription:explication_type_saisie:></p>
+                         </li>
+                                     #SET{name,montants}#SET{obli,''}#SET{defaut,''}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
+                         <li class="editer pleine_largeur editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
+                           <label for="#GET{name}"><:souscription:label_montants:></label>[
+                           <span class='erreur_message'>(#GET{erreurs})</span>
+                           ]<textarea name="#GET{name}" class="textarea" rows="4">
+#ENV*{#GET{name},#GET{defaut}}</textarea>
+                           <p class="explication"><:souscription:explication_montants:></p>
+                         </li>
+                             </ul>
+                     </fieldset>
+             </li>
       </ul>
 
       <p class="boutons"><input type="submit" class="submit" value="<:souscription:confirmer_creation_campagne:>" /></p>
   </form>
   ]
 </div>
+<INCLURE{fond=formulaires/inc-formulaires-suite} />
+<script type="application/javascript">
+function up_visibility_montants(){
+       var val = jQuery('select[name="type_saisie"]').val();
+       console.log(val);
+       if (val=="input")
+               jQuery(".editer_montants").hide('fast');
+       else
+               jQuery(".editer_montants").show('fast');
+}
+jQuery(function(){
+       up_visibility_montants();
+       jQuery('select[name="type_saisie"],input.checkbox[name="configuration_specifique"]').change(up_visibility_montants);
+});
+</script>
index 000ac5c..a5ff7cd 100644 (file)
@@ -14,211 +14,137 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
 include_spip('inc/actions');
 include_spip('inc/editer');
 
-function formulaires_editer_souscription_campagne_identifier_dist($id_souscription_campagne='new',
-                                                                  $retour='',
-                                                                  $lier_trad=0,
-                                                                  $config_fonc='',
-                                                                  $row=array(),
-                                                                  $hidden='')
-{
-  return serialize(array(intval($id_souscription_campagne)));
+function formulaires_editer_souscription_campagne_identifier_dist($id_souscription_campagne = 'new',
+                                                                  $retour = '',
+                                                                  $lier_trad = 0,
+                                                                  $config_fonc = '',
+                                                                  $row = array(),
+                                                                  $hidden = ''){
+       return serialize(array(intval($id_souscription_campagne)));
 }
 
-function formulaires_editer_souscription_campagne_charger_dist($id_souscription_campagne='new',
-                                                               $retour='',
-                                                               $lier_trad=0,
-                                                               $config_fonc='',
-                                                               $row=array(),
-                                                               $hidden='')
-{
-  $valeurs = formulaires_editer_objet_charger('souscription_campagne',
-                                             $id_souscription_campagne,
-                                             '',
-                                             $lier_trad,
-                                             $retour,
-                                             $config_fonc,
-                                             $row,
-                                             $hidden);
-
-  $valeurs['objectif_oui_non'] = _request('objectif_oui_non');
-
-  /* Si la valeur du champ 'objectif' est 0, alors, c'est que
-   * l'objectif n'est pas activé. */
-  $defaut_objectif = "";
-  if($valeurs['objectif'] && $valeurs['objectif'] > 0)
-    $defaut_objectif = "on";
-
-  $saisies = array(array('saisie' => 'input',
-                        'options' => array('nom' => 'titre',
-                                           'label' => _T('souscription:label_titre'),
-                                           'obligatoire' => 'oui')
-                        ),
-                  array('saisie' => 'selection',
-                        'options' => array('nom' => 'type_objectif',
-                                           'obligatoire' => 'oui',
-                                           'label' => _T('souscription:label_type_objectif'),
-                                           'explication' => _T('souscription:explication_type_objectif'),
-                                           'datas' => array('don' => 'Dons',
-                                                            'adhesion' => 'Adhésions'))
-                        ),
-                  array('saisie' => 'oui_non',
-                        'options' => array('nom' => 'objectif_oui_non',
-                                           'label' => _T('souscription:label_objectif_oui_non'),
-                                           'defaut' => $defaut_objectif)
-                        ),
-                  array('saisie' => 'fieldset',
-                        'options' => array('nom' => 'groupe_limite',
-                                           'label' => _T('souscription:label_objectif_groupe'),
-                                           'afficher_si' => '@objectif_oui_non@ == "on"'),
-                        'saisies' => array(array('saisie' => 'input',
-                                                 'options' => array('nom' => 'objectif',
-                                                                    'obligatoire' => 'oui',
-                                                                    'label' => _T('souscription:label_objectif'),
-                                                                    'explication' => _T('souscription:explication_campagne_objectif')),
-                                                 ),
-                                           array('saisie' => 'input',
-                                                 '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',
-                                           'label' => _T('souscription:label_description'),
-                                           'inserer_barre' => 'edition',
-                                           'rows' => '10'))
-                  );
-
-  $valeurs['_saisies'] = $saisies;
-
-  return $valeurs;
+function formulaires_editer_souscription_campagne_charger_dist($id_souscription_campagne = 'new',
+                                                               $retour = '',
+                                                               $lier_trad = 0,
+                                                               $config_fonc = '',
+                                                               $row = array(),
+                                                               $hidden = ''){
+       $valeurs = formulaires_editer_objet_charger('souscription_campagne',
+               $id_souscription_campagne,
+               '',
+               $lier_trad,
+               $retour,
+               $config_fonc,
+               $row,
+               $hidden);
+
+       /* Si la valeur du champ 'objectif' est 0, alors, c'est que
+        * l'objectif n'est pas activé. */
+       $valeurs['_defaut_objectif'] = "";
+       if ($valeurs['objectif'] AND $valeurs['objectif']>0)
+               $valeurs['_defaut_objectif'] = "on";
+
+       // pour la saisie uniquement, pas en base
+       $valeurs['objectif_oui_non'] = "";
+
+       return $valeurs;
 }
 
-function formulaires_editer_souscription_campagne_verifier_dist($id_souscription_campagne='new',
-                                                                $retour='',
-                                                                $lier_trad=0,
-                                                                $config_fonc='',
-                                                                $row=array(),
-                                                                $hidden='')
-{
-
-  $ret = formulaires_editer_objet_verifier('souscription_campagne',
-                                           $id_souscription_campagne,
-                                           array('titre',
-                                                 'type_objectif',
-                                                 ));
-
-  $type = _request("type_objectif");
-  if(!in_array($type, array('don', 'adhesion')))
-    $ret['type_objectif'] = _T("souscription:message_nok_objectif_invalide");
-
-  /* Si un objectif est demandé, alors on vérifie que les champs sont
-   * bien des entiers. */
-  if(_request('objectif_oui_non') == 'on') {
-    $objectif = _request('objectif');
-    if(!ctype_digit($objectif) || intval($objectif) < 0)
-      $ret['objectif'] = _T("souscription:message_nok_objectif_invalide");
-
-    $objectif_initial = _request('objectif_initial');
-    if($objectif_initial != '') {
-      if(!ctype_digit($objectif_initial) || intval($objectif_initial < 0))
-       $ret['objectif_initial'] = _T("souscription:message_nok_objectif_initial_valeur");
-      elseif(intval($objectif_initial) > $objectif)
-       $ret['objectif_initial'] = _T("souscription:message_nok_objectif_initial_supperieur_objectif");
-    }
-  }
-
-  /* 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;
+function formulaires_editer_souscription_campagne_verifier_dist($id_souscription_campagne = 'new',
+                                                                $retour = '',
+                                                                $lier_trad = 0,
+                                                                $config_fonc = '',
+                                                                $row = array(),
+                                                                $hidden = ''){
+
+       $erreurs = formulaires_editer_objet_verifier('souscription_campagne',
+               $id_souscription_campagne,
+               array('titre',
+                       'type_objectif',
+               ));
+
+       $type = _request("type_objectif");
+       if (!in_array($type, array('don', 'adhesion')))
+               $erreurs['type_objectif'] = _T("souscription_campagne:erreur_objectif_invalide");
+       elseif ($type=="don" AND lire_config("souscription/don_activer","off")!=="on")
+               $erreurs['type_objectif'] = _T("souscription_campagne:erreur_objectif_don_inactif");
+       elseif ($type=="adhesion" AND lire_config("souscription/adhesion_activer","off")!=="on")
+               $erreurs['type_objectif'] = _T("souscription_campagne:erreur_objectif_adhesion_inactif");
+
+       /* Si un objectif est demandé, alors on vérifie que les champs sont
+        * bien des entiers. */
+       if (_request('objectif_oui_non')=='on'){
+               $objectif = _request('objectif');
+               if (!ctype_digit($objectif) || intval($objectif)<0)
+                       $erreurs['objectif'] = _T("souscription_campagne:erreur_objectif_invalide");
+
+               $objectif_initial = _request('objectif_initial');
+               if ($objectif_initial!=''){
+                       if (!ctype_digit($objectif_initial) || intval($objectif_initial<0))
+                               $erreurs['objectif_initial'] = _T("souscription_campagne:erreur_objectif_initial_valeur");
+                       elseif (intval($objectif_initial)>$objectif)
+                               $erreurs['objectif_initial'] = _T("souscription_campagne:erreur_objectif_initial_supperieur_objectif");
+               }
+       }
+
+       /* 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))
+                       $erreurs['limite'] = _T("souscription_campagne:erreur_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')))
+                       $erreurs['type_saisie'] = _T('souscription:erreur_type_saisie');
+
+               $montants = _request('montants');
+               if ($type_saisie && in_array($type_saisie, array('radio', 'selection'))){
+                       if (!$montants || !is_string($montants))
+                               $erreurs['montants'] = _T('souscription:erreur_montants');
+
+                       elseif (!montants_str2array($montants))
+                               $erreurs['montants'] = _T('souscription:erreur_montants');
+               }
+       }
+
+       return $erreurs;
 }
 
-function formulaires_editer_souscription_campagne_traiter_dist($id_souscription_campagne='new',
-                                                               $retour='',
-                                                               $lier_trad=0,
-                                                               $config_fonc='',
-                                                               $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',
-                                          $id_souscription_campagne,
-                                          '',
-                                          $lier_trad,
-                                          $retour,
-                                          $config_fonc,
-                                          $row,
-                                          $hidden);
-
-  return $res;
+function formulaires_editer_souscription_campagne_traiter_dist($id_souscription_campagne = 'new',
+                                                               $retour = '',
+                                                               $lier_trad = 0,
+                                                               $config_fonc = '',
+                                                               $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',
+               $id_souscription_campagne,
+               '',
+               $lier_trad,
+               $retour,
+               $config_fonc,
+               $row,
+               $hidden);
+
+       return $res;
 }
diff --git a/formulaires/inc-formulaires-suite.html b/formulaires/inc-formulaires-suite.html
new file mode 100644 (file)
index 0000000..3ddde71
--- /dev/null
@@ -0,0 +1,18 @@
+<script type="text/javascript">
+       jQuery(function(){
+               jQuery(".suite.fieldset").each(function(){
+                       var me=this;
+                       jQuery(me).prev(".editer").find("input.checkbox").click(function(){
+                               if (jQuery(this).prop("checked"))
+                                       jQuery(me).show('fast');
+                               else
+                                       jQuery(me).hide('fast');
+                       })
+               })
+       })
+</script>
+<style>
+input.checkbox:checked+label {font-weight: bold;}
+li.fieldset.adhesion {margin-bottom: 1em}
+li.suite {margin-left: 40px;}
+</style>
\ No newline at end of file
diff --git a/formulaires/inc-souscription-input.html b/formulaires/inc-souscription-input.html
new file mode 100644 (file)
index 0000000..668c904
--- /dev/null
@@ -0,0 +1,2 @@
+#CACHE{0}
+<input type="text" name="#ENV{name}" class="text" value="#ENV*{valeur}" id="#ENV{name}" [(#HTML5|et{#ENV{obli}})required='required']/>
\ No newline at end of file
diff --git a/formulaires/inc-souscription-radio.html b/formulaires/inc-souscription-radio.html
new file mode 100644 (file)
index 0000000..693a0f5
--- /dev/null
@@ -0,0 +1,8 @@
+#CACHE{0}
+<BOUCLE_p(POUR){tableau #ENV{montants}}>
+       #SET{val,#CLE}
+       <div class="choix">
+               <input type="radio" name="#ENV{name}" class="radio" id="#ENV{name}_#GET{val}" value="#GET{val}"[(#ENV{valeur}|=={#GET{val}}|oui)checked="checked"] />
+               <label for="#ENV{name}_#GET{val}">#VALEUR</label>
+       </div>
+</BOUCLE_p>
diff --git a/formulaires/inc-souscription-selection.html b/formulaires/inc-souscription-selection.html
new file mode 100644 (file)
index 0000000..ccee28b
--- /dev/null
@@ -0,0 +1,8 @@
+#CACHE{0}
+<select name="#ENV{name}" class="select" id="#ENV{name}">
+       <option value=""><:souscription:info_choisissez_montant:></option>
+       <BOUCLE_p(POUR){tableau #ENV{montants}}>
+               #SET{val,#CLE}
+               <option value="#GET{val}"[(#ENV{valeur}|=={#GET{val}}|oui)selected="selected"]>#VALEUR</option>
+       </BOUCLE_p>
+</select>
index 4878fc0..b868b74 100644 (file)
   <form method="post" action="#ENV{action}"><div>
 
       #ACTION_FORMULAIRE{#ENV{action}}
+
+           [<p class="explication dispositions_fiscales">
+                   (#CONFIG{souscription/dispositions_fiscales_explications}|nl2br)
+           </p>]
+
       <ul>
-       [(#SAISIE{#ENV{montant_type}, montant, obligatoire=oui, label=#ENV{montant_label}, explication=#ENV{montant_explication}, datas=#ENV{montant_datas}})]
-       [(#SAISIE{explication, dispositions_fiscales_explications, texte=#CONFIG{souscription/dispositions_fiscales_explications}|nl2br})]
-       [(#SAISIE{input, courriel, obligatoire=oui, label=<:souscription:label_courriel:>})]
-       [(#SAISIE{oui_non, recu_fiscal, label=<:souscription:label_recu_fiscal:>})]
-        [(#SAISIE{oui_non, envoyer_info, label=<:souscription:label_envoyer_info:> })]
-        [(#ENV{type_souscription}|=={adhesion}|oui) [(#SAISIE{oui_non, informer_comite_local, label=<:souscription:label_informer_comite_local:> })]]
-        [(#SAISIE{hidden, id_souscription_campagne})]
-        [(#SAISIE{hidden, type_souscription})]
-      </ul>
+             #SET{name,montant}#SET{obli,'obligatoire'}#SET{defaut,''}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
+        <li class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
+          <label for="#GET{name}">#ENV{montant_label}</label>[
+          <span class='erreur_message'>(#GET{erreurs})</span>
+          ][<span class="input">(#INCLURE{fond=formulaires/inc-souscription-#ENV{montant_type},name=#GET{name},valeur=#ENV*{#GET{name},#GET{defaut}},obli=#GET{obli},montants=#ENV{_montant_datas}})</span>]
+               [<p class="explication">(#ENV{montant_explication})</p>]
+        </li>
+             #SET{name,courriel}#SET{obli,'obligatoire'}#SET{defaut,''}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
+        <li class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
+          <label for="#GET{name}"><:souscription:label_courriel:></label>[
+          <span class='erreur_message'>(#GET{erreurs})</span>
+          ]<input type="email" name="#GET{name}" class="text email" value="#ENV*{#GET{name},#GET{defaut}}" id="#GET{name}" [(#HTML5|et{#GET{obli}})required='required']/>
+        </li>
+             #SET{name,recu_fiscal}#SET{obli,''}#SET{defaut,'non'}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
+        <li class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">[
+          <span class='erreur_message'>(#GET{erreurs})</span>
+          ]
+          #SET{val,off}
+          <input type="hidden" name="#GET{name}" value="#GET{val}" />
+          #SET{val,on}
+          <div class="choix">
+            <input type="checkbox" name="#GET{name}" class="checkbox" id="#GET{name}_#GET{val}" value="#GET{val}"[(#ENV{#GET{name},#GET{defaut}}|=={#GET{val}}|oui)checked="checked"] />
+            <label for="#GET{name}_#GET{val}"><:souscription:label_recu_fiscal:></label>
+          </div>
+        </li>
+             <li class="fieldset suite souscription_bloc_fiscal[(#ENV{#GET{name},#GET{defaut}}|=={#GET{val}}|non)none]">
+                     <fieldset>
+                             <legend><:souscription:label_legende_bloc_fiscal:></legend>
+                             [(#INCLURE{fond=inclure/souscription_bloc_fiscal_intro,type_souscription=#ENV{type_souscription}})]
+                             <ul>
+                                     #SET{name1,prenom}#SET{obli1,'obligatoire'}#SET{defaut1,''}#SET{erreurs1,#ENV**{erreurs}|table_valeur{#GET{name1}}}
+                                     #SET{name2,nom}#SET{obli2,'obligatoire'}#SET{defaut2,''}#SET{erreurs2,#ENV**{erreurs}|table_valeur{#GET{name2}}}
+                         <li class="editer [ (#GET{obli1})][ (#GET{erreurs1}|oui)erreur][ (#GET{erreurs2}|oui)erreur]">
+                                 <div class="demi left editer_[(#GET{name1})]">
+                                         <label for="#GET{name1}"><:souscription:label_prenom:></label>[
+                                   <span class='erreur_message'>(#GET{erreurs1})</span>
+                                   ]<input type="text" name="#GET{name1}" class="text" value="#ENV*{#GET{name1},#GET{defaut1}}" id="#GET{name1}"/>
+                                 </div>
+                                 <div class="demi right editer_[(#GET{name2})]">
+                                         <label for="#GET{name2}"><:souscription:label_nom:></label>[
+                                   <span class='erreur_message'>(#GET{erreurs2})</span>
+                                   ]<input type="text" name="#GET{name2}" class="text" value="#ENV*{#GET{name2},#GET{defaut2}}" id="#GET{name2}"/>
+                                 </div>
+                         </li>
+                                     #SET{name,adresse}#SET{obli,'obligatoire'}#SET{defaut,''}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
+                         <li class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
+                           <label for="#GET{name}"><:souscription:label_adresse:></label>[
+                           <span class='erreur_message'>(#GET{erreurs})</span>
+                           ]<textarea name="#GET{name}" class="textarea" rows="3">
+#ENV*{#GET{name},#GET{defaut}}</textarea>
+                         </li>
+                                     #SET{name1,code_postal}#SET{obli1,'obligatoire'}#SET{defaut1,''}#SET{erreurs1,#ENV**{erreurs}|table_valeur{#GET{name1}}}
+                                     #SET{name2,ville}#SET{obli2,'obligatoire'}#SET{defaut2,''}#SET{erreurs2,#ENV**{erreurs}|table_valeur{#GET{name2}}}
+                         <li class="editer [ (#GET{obli1})][ (#GET{erreurs1}|oui)erreur][ (#GET{erreurs2}|oui)erreur]">
+                                 <div class="demi left editer_[(#GET{name1})]">
+                                         <label for="#GET{name1}"><:souscription:label_code_postal:></label>[
+                                   <span class='erreur_message'>(#GET{erreurs1})</span>
+                                   ]<input type="text" name="#GET{name1}" class="text" value="#ENV*{#GET{name1},#GET{defaut1}}" id="#GET{name1}"/>
+                                 </div>
+                                 <div class="demi right editer_[(#GET{name2})]">
+                                         <label for="#GET{name2}"><:souscription:label_ville:></label>[
+                                   <span class='erreur_message'>(#GET{erreurs2})</span>
+                                   ]<input type="text" name="#GET{name2}" class="text" value="#ENV*{#GET{name2},#GET{defaut2}}" id="#GET{name2}"/>
+                                 </div>
+                         </li>
+                                     [(#SAISIE{selection, pays, label=<:souscription:label_pays:>, datas=#GET{liste_pays}})]
+                                     #SET{name,telephone}#SET{obli,''}#SET{defaut,''}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
+                         <li class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
+                           <label for="#GET{name}"><:souscription:label_telephone:></label>[
+                           <span class='erreur_message'>(#GET{erreurs})</span>
+                           ]<input type="text" name="#GET{name}" class="text" value="#ENV*{#GET{name},#GET{defaut}}" id="#GET{name}"/>
+                         </li>
+                             </ul>
+                     </fieldset>
+             </li>
 
-      <fieldset class="souscription_bloc_fiscal">
-        <legend><:souscription:label_legende_bloc_fiscal:></legend>
-        [(#INCLURE{fond=inclure/souscription_bloc_fiscal_intro,type_souscription=#ENV{type_souscription}})]
-        <ul>
-         [(#SAISIE{input, prenom, label=<:souscription:label_prenom:>})]
-          [(#SAISIE{input, nom, label=<:souscription:label_nom:>})]
-         [(#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{selection, pays, label=<:souscription:label_pays:>, datas=#GET{liste_pays}})]
-         [(#SAISIE{input, telephone, label=<:souscription:label_telephone:>})]
-       </ul>
-      </fieldset>
+
+             [(#CONFIG{souscription/proposer_infolettre,off}|=={on}|oui)
+             #SET{name,envoyer_info}#SET{obli,''}#SET{defaut,'non'}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
+             <li class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">[
+                                       <span class='erreur_message'>(#GET{erreurs})</span>
+                                       ]
+                                       #SET{val,off}
+                                       <input type="hidden" name="#GET{name}" value="#GET{val}" />
+                                       #SET{val,on}
+                                       <div class="choix">
+                                               <input type="checkbox" name="#GET{name}" class="checkbox" id="#GET{name}_#GET{val}" value="#GET{val}"[(#ENV{#GET{name},#GET{defaut}}|=={#GET{val}}|oui)checked="checked"] />
+                                               <label for="#GET{name}_#GET{val}"><:souscription:label_envoyer_info:></label>
+                                       </div>
+                               </li>
+                               ]
+
+                               [(#ENV{type_souscription}|=={adhesion}|oui)
+                     [(#CONFIG{souscription/proposer_informer_comite_local,off}|=={on}|oui)
+                                               [(#SAISIE{oui_non, informer_comite_local, label=<:souscription:label_informer_comite_local:> })]
+                     ]
+                               ]
+      </ul>
 
       <p class="boutons"><input type="submit" class="submit" value="<:souscription:confirmer:>" /></p>
     </div>
   </form>
   ]
 </div>
+<script type="text/javascript">
+       jQuery(function(){
+               jQuery(".suite.fieldset").each(function(){
+                       var me=this;
+                       jQuery(me).prev(".editer").find("input.checkbox").click(function(){
+                               if (jQuery(this).prop("checked"))
+                                       jQuery(me).show('fast');
+                               else
+                                       jQuery(me).hide('fast');
+                       })
+               })
+       })
+</script>
+<style>
+input.checkbox:checked+label {font-weight: bold;}
+li.suite {margin-left: 40px;}
+li.suite.none {display: none;}
+</style>
\ No newline at end of file
index 8f3fe01..2767d18 100644 (file)
@@ -15,32 +15,6 @@ include_spip('inc/actions');
 include_spip('inc/editer');
 include_spip('inc/config');
 
-/**
- * Identifier le formulaire en faisant abstraction des paramètres qui ne représentent pas l'objet edité
- *
- * @param int|string $id_souscription
- *     Identifiant du souscription. 'new' pour un nouveau souscription.
- * @param string $retour
- *     URL de redirection après le traitement
- * @param int $lier_trad
- *     Identifiant éventuel d'un souscription source d'une traduction
- * @param string $config_fonc
- *     Nom de la fonction ajoutant des configurations particulières au formulaire
- * @param array $row
- *     Valeurs de la ligne SQL du souscription, si connu
- * @param string $hidden
- *     Contenu HTML ajouté en même temps que les champs cachés du formulaire.
- * @return string
- *     Hash du formulaire
- */
-function formulaires_souscription_identifier_dist($id_souscription='new',
-                                                      $retour='',
-                                                      $lier_trad=0,
-                                                      $config_fonc='',
-                                                      $row=array(),
-                                                      $hidden='') {
-  return serialize(array(intval($id_souscription)));
-}
 
 /**
  * Chargement du formulaire d'édition de souscription
@@ -49,261 +23,232 @@ function formulaires_souscription_identifier_dist($id_souscription='new',
  *
  * @uses formulaires_editer_objet_charger()
  *
- * @param int|string $id_souscription
- *     Identifiant du souscription. 'new' pour un nouveau souscription.
- * @param string $retour
- *     URL de redirection après le traitement
- * @param int $lier_trad
- *     Identifiant éventuel d'un souscription source d'une traduction
- * @param string $config_fonc
- *     Nom de la fonction ajoutant des configurations particulières au formulaire
- * @param array $row
- *     Valeurs de la ligne SQL du souscription, si connu
- * @param string $hidden
- *     Contenu HTML ajouté en même temps que les champs cachés du formulaire.
+ * @param int$id_souscription_campagne
+ *     Identifiant de la campagne de souscription
  * @return array
  *     Environnement du formulaire
  */
-function formulaires_souscription_charger_dist($id_souscription_campagne) {
-
-  if(!verifier_campagne($id_souscription_campagne))
-    return false;
-
-  /* Récupération des information à propos de la campagne */
-  $campagne = sql_fetsel(array("type_objectif", "configuration_specifique", "type_saisie", "montants"),
-                        "spip_souscription_campagnes",
-                        "id_souscription_campagne=$id_souscription_campagne");
-
-  $type = $campagne['type_objectif'];
-
-  $recu_fiscal = "";
-  if($type == "adhesion")
-    $recu_fiscal = "on";
-
-  if($campagne['configuration_specifique'] !== 'on') {
-    $montant_type = lire_config("souscription/{$type}_type_saisie", 'input');
-    $montant_datas = lire_config("souscription/${type}_montants", array());
-  }
-  else {
-    $montant_type = $campagne['type_saisie'];
-    $montant_datas = $campagne['montants'];
-  }
-
-  $montant_label = lire_config("souscription/${type}_montants_label", _T('souscription:label_montant'));
-  $montant_explication = nl2br(lire_config("souscription/${type}_montants_description"));
-
-  return array('montant' => '',
-               'courriel' => '',
-               'recu_fiscal' => $recu_fiscal,
-               'envoyer_info' => 'on',
-               'informer_comite_local' => 'on',
-               'prenom' => '',
-               'nom' => '',
-               'adresse' => '',
-               'code_postal' => '',
-               'ville' => '',
-               'pays' => 'FR',
-               'telephone' => '',
-               'id_souscription_campagne' => $id_souscription_campagne,
-               'type_souscription' => $type,
-               'montant_datas' => montants_str2array($montant_datas),
-               'montant_type' => $montant_type,
-               'montant_label' => $montant_label,
-               'montant_explication' => $montant_explication
-               );
+function formulaires_souscription_charger_dist($id_souscription_campagne){
+
+       if (!verifier_campagne($id_souscription_campagne))
+               return false;
+
+       /* Récupération des information à propos de la campagne */
+       $campagne = sql_fetsel(array("type_objectif", "configuration_specifique", "type_saisie", "montants"),
+               "spip_souscription_campagnes",
+               "id_souscription_campagne=$id_souscription_campagne");
+
+       $type = $campagne['type_objectif'];
+
+       $recu_fiscal = "";
+       if ($type=="adhesion")
+               $recu_fiscal = "on";
+
+       if ($campagne['configuration_specifique']!=='on'){
+               $montant_type = lire_config("souscription/{$type}_type_saisie", 'input');
+               $montant_datas = lire_config("souscription/${type}_montants", array());
+       } else {
+               $montant_type = $campagne['type_saisie'];
+               $montant_datas = $campagne['montants'];
+       }
+
+       $montant_label = lire_config("souscription/${type}_montants_label", _T('souscription:label_montant'));
+       $montant_explication = nl2br(lire_config("souscription/${type}_montants_description"));
+
+       return array('montant' => '',
+               'courriel' => '',
+               'recu_fiscal' => $recu_fiscal,
+               'envoyer_info' => 'on',
+               'informer_comite_local' => 'on',
+               'prenom' => '',
+               'nom' => '',
+               'adresse' => '',
+               'code_postal' => '',
+               'ville' => '',
+               'pays' => 'FR',
+               'telephone' => '',
+               'id_souscription_campagne' => $id_souscription_campagne,
+               'type_souscription' => $type,
+               '_montant_datas' => montants_str2array($montant_datas),
+               'montant_type' => $montant_type,
+               'montant_label' => $montant_label,
+               'montant_explication' => $montant_explication
+       );
 }
 
+
 /**
- * Vérifications du formulaire d'édition de souscription
+ * Chargement du formulaire d'édition de souscription
  *
- * Vérifier les champs postés et signaler d'éventuelles erreurs
+ * Déclarer les champs postés et y intégrer les valeurs par défaut
  *
- * @uses formulaires_editer_objet_verifier()
+ * @uses formulaires_editer_objet_charger()
  *
- * @param int|string $id_souscription
- *     Identifiant du souscription. 'new' pour un nouveau souscription.
- * @param string $retour
- *     URL de redirection après le traitement
- * @param int $lier_trad
- *     Identifiant éventuel d'un souscription source d'une traduction
- * @param string $config_fonc
- *     Nom de la fonction ajoutant des configurations particulières au formulaire
- * @param array $row
- *     Valeurs de la ligne SQL du souscription, si connu
- * @param string $hidden
- *     Contenu HTML ajouté en même temps que les champs cachés du formulaire.
+ * @param int$id_souscription_campagne
+ *     Identifiant de la campagne de souscription
  * @return array
  *     Tableau des erreurs
  */
-function formulaires_souscription_verifier_dist($id_souscription_campagne) {
-  $campagne = _request('id_souscription_campagne');
-
-  $erreurs = formulaires_editer_objet_verifier('souscription', 'new',
-                                               array('courriel',
-                                                     'montant',
-                                                     'id_souscription_campagne'));
-
-  if(!$id_souscription_campagne || intval($id_souscription_campagne) != intval($campagne)) {
-      $erreurs['message_erreur'] = "Campagne invalide";
-  }
-
-  $campagne = sql_fetsel(array("type_objectif", "configuration_specifique", "type_saisie", "montants"),
-                        "spip_souscription_campagnes", "id_souscription_campagne=$id_souscription_campagne");
-
-  $type_campagne = $campagne['type_objectif'];
-
-  /* Le champ 'type' (hidden) doit être le même que celui défini dans
-   * la campagne. */
-  if(_request('type_souscription') != $type_campagne)
-    $erreurs['message_erreur'] = "Type de souscription invalide : " . _request('type_souscription');
-
-  if(!verifier_campagne($id_souscription_campagne, $type_campagne)) {
-    $erreurs['message_erreur'] = "La campagne à laquelle est associée cette souscription est invalide";
-  }
-
-
-  if(_request('recu_fiscal') || $type_campagne == "adhesion") {
-    foreach(array('prenom', 'nom', 'adresse', 'code_postal', 'ville', 'pays') as $obligatoire) {
-      if(!_request($obligatoire)) {
-        if($type_campagne == "adhesion") {
-          $erreurs[$obligatoire] = "Ce champ est obligatoire pour les adhésions";
-        }
-        else {
-          $erreurs[$obligatoire] = 'Ce champ est obligatoire (reçu fiscal demandé)';
-        }
-      }
-    }
-  }
-
-  if ($e = _request('courriel') AND !email_valide($e))
-    $erreurs['courriel'] = _T('form_prop_indiquer_email');
-
-  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";
-      }
-    }
-  }
-
-  if ($e = _request('telephone') AND !preg_match("/^[0-9\+ \.]+$/", $e)) {
-    $erreurs['telephone'] = "Numéro de téléphone incorrect";
-  }
-
-  /* Vérification du montant. Si la campagne est configurée pour
-   * utiliser une configuration spécifique, alors, il faut vérifier
-   * avec les montants de la campagne. Autrement, il faut utiliser les
-   * paramètres globaux.
-   */
-  if ($e = _request('montant')) {
-    if(!(ctype_digit($e)))
-      $erreurs['montant'] = "Montant invalide";
-    else {
-      if($campagne['configuration_specifique'] !== 'on') {
-       $montant_type = lire_config("souscription/{$type}_type_saisie", 'input');
-       $montant_datas = lire_config("souscription/${type}_montants", array());
-      }
-      else {
-       $montant_type = $campagne['type_saisie'];
-       $montant_datas = montants_str2array($campagne['montants']);
-      }
-
-      /* On ne vérifie strictement la valeur du montant que si on
-       * n'utilise pas le type de saisie « entrée libre » (input) pour
-       * le montant. */
-      if(($montant_type != "input") AND !array_key_exists($e, $montant_datas))
-        $erreurs['montant'] = "Le montant spécifié est invalide" . var_export($campagne, true);
-    }
-  }
-
-  if(count($erreurs) > 0) {
-    $erreurs['message_erreur'] = "Le formulaire contient des erreurs";
-  }
-
-  return $erreurs;
+function formulaires_souscription_verifier_dist($id_souscription_campagne){
+       $campagne = _request('id_souscription_campagne');
+
+       $erreurs = formulaires_editer_objet_verifier('souscription', 'new',
+               array('courriel',
+                       'montant',
+                       'id_souscription_campagne'));
+
+       if (!$id_souscription_campagne || intval($id_souscription_campagne)!=intval($campagne)){
+               $erreurs['message_erreur'] = "Campagne invalide";
+       }
+
+       $campagne = sql_fetsel(array("type_objectif", "configuration_specifique", "type_saisie", "montants"),
+               "spip_souscription_campagnes", "id_souscription_campagne=$id_souscription_campagne");
+
+       $type_campagne = $campagne['type_objectif'];
+
+       /* Le champ 'type' (hidden) doit être le même que celui défini dans
+        * la campagne. */
+       if (_request('type_souscription')!=$type_campagne)
+               $erreurs['message_erreur'] = "Type de souscription invalide : " . _request('type_souscription');
+
+       if (!verifier_campagne($id_souscription_campagne, $type_campagne)){
+               $erreurs['message_erreur'] = "La campagne à laquelle est associée cette souscription est invalide";
+       }
+
+
+       if (_request('recu_fiscal') || $type_campagne=="adhesion"){
+               foreach (array('prenom', 'nom', 'adresse', 'code_postal', 'ville', 'pays') as $obligatoire){
+                       if (!_request($obligatoire)){
+                               if ($type_campagne=="adhesion"){
+                                       $erreurs[$obligatoire] = "Ce champ est obligatoire pour les adhésions";
+                               } else {
+                                       $erreurs[$obligatoire] = 'Ce champ est obligatoire (reçu fiscal demandé)';
+                               }
+                       }
+               }
+       }
+
+       if ($e = _request('courriel') AND !email_valide($e))
+               $erreurs['courriel'] = _T('form_prop_indiquer_email');
+
+       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";
+                       }
+               }
+       }
+
+       if ($e = _request('telephone') AND !preg_match("/^[0-9\+ \.]+$/", $e)){
+               $erreurs['telephone'] = "Numéro de téléphone incorrect";
+       }
+
+       /* Vérification du montant. Si la campagne est configurée pour
+        * utiliser une configuration spécifique, alors, il faut vérifier
+        * avec les montants de la campagne. Autrement, il faut utiliser les
+        * paramètres globaux.
+        */
+       if ($e = _request('montant')){
+               if (!(ctype_digit($e)))
+                       $erreurs['montant'] = "Montant invalide";
+               else {
+                       if ($campagne['configuration_specifique']!=='on'){
+                               $montant_type = lire_config("souscription/{$type_campagne}_type_saisie", 'input');
+                               $montant_datas = lire_config("souscription/${$type_campagne}_montants", array());
+                       } else {
+                               $montant_type = $campagne['type_saisie'];
+                               $montant_datas = montants_str2array($campagne['montants']);
+                       }
+
+                       /* On ne vérifie strictement la valeur du montant que si on
+                        * n'utilise pas le type de saisie « entrée libre » (input) pour
+                        * le montant. */
+                       if (($montant_type!="input") AND !array_key_exists($e, $montant_datas))
+                               $erreurs['montant'] = "Le montant spécifié est invalide" . var_export($campagne, true);
+               }
+       }
+
+       if (count($erreurs)>0){
+               $erreurs['message_erreur'] = "Le formulaire contient des erreurs";
+       }
+
+       return $erreurs;
 }
 
 /**
- * Traitement du formulaire d'édition de souscription
+ * Chargement du formulaire d'édition de souscription
  *
- * Traiter les champs postés
+ * Déclarer les champs postés et y intégrer les valeurs par défaut
  *
- * @uses formulaires_editer_objet_traiter()
+ * @uses formulaires_editer_objet_charger()
  *
- * @param int|string $id_souscription
- *     Identifiant du souscription. 'new' pour un nouveau souscription.
- * @param string $retour
- *     URL de redirection après le traitement
- * @param int $lier_trad
- *     Identifiant éventuel d'un souscription source d'une traduction
- * @param string $config_fonc
- *     Nom de la fonction ajoutant des configurations particulières au formulaire
- * @param array $row
- *     Valeurs de la ligne SQL du souscription, si connu
- * @param string $hidden
- *     Contenu HTML ajouté en même temps que les champs cachés du formulaire.
+ * @param int$id_souscription_campagne
+ *     Identifiant de la campagne de souscription
  * @return array
  *     Retours des traitements
  */
-function formulaires_souscription_traiter_dist($id_souscription_campagne) {
-  $lier_trad=0;
-  $config_fonc='';
-  $row=array();
-  $hidden='';
-
-  $ret = formulaires_editer_objet_traiter('souscription',
-                                          'new',
-                                          '',
-                                          $lier_trad,
-                                          $retour,
-                                          $config_fonc,
-                                          $row,
-                                          $hidden);
-
-  $redirect = "";
-  $row = sql_fetsel("transaction_hash,id_transaction",
-                    "spip_transactions LEFT JOIN spip_souscriptions USING(id_transaction)",
-                    "id_souscription=".$ret['id_souscription']);
-
-  if(!$row) {
-    spip_log(sprintf("Erreur lors de la création de la transaction liée à la souscription [%s].", $ret['id_souscription']), "souscription");
-    $ret['message_erreur'] = "Echec creation de la transaction";
-  }
-  else {
-    spip_log(sprintf("La souscription [%s], associée à la transaction [%s] a bien été crée.", $ret['id_souscription'], $row['id_transaction']), "souscription");
-    $hash = $row['transaction_hash'];
-    $id_transaction = $row['id_transaction'];
-    $redirect = generer_url_public("payer-acte", "id_transaction=$id_transaction&transaction_hash=$hash", false, false);
-    $ret['redirect'] = $redirect;
-  }
-
-  return $ret;
+function formulaires_souscription_traiter_dist($id_souscription_campagne){
+       $lier_trad = 0;
+       $config_fonc = '';
+       $row = array();
+       $hidden = '';
+       $retour = '';
+
+       set_request("id_souscription_campagne",$id_souscription_campagne);
+
+       $ret = formulaires_editer_objet_traiter('souscription',
+               'new',
+               '',
+               $lier_trad,
+               $retour,
+               $config_fonc,
+               $row,
+               $hidden);
+
+       $redirect = "";
+       $row = sql_fetsel("transaction_hash,id_transaction",
+               "spip_transactions LEFT JOIN spip_souscriptions USING(id_transaction)",
+               "id_souscription=" . $ret['id_souscription']);
+
+       if (!$row){
+               spip_log(sprintf("Erreur lors de la création de la transaction liée à la souscription [%s].", $ret['id_souscription']), "souscription");
+               $ret['message_erreur'] = "Echec creation de la transaction";
+       } else {
+               spip_log(sprintf("La souscription [%s], associée à la transaction [%s] a bien été crée.", $ret['id_souscription'], $row['id_transaction']), "souscription");
+               $hash = $row['transaction_hash'];
+               $id_transaction = $row['id_transaction'];
+               $redirect = generer_url_public("payer-acte", "id_transaction=$id_transaction&transaction_hash=$hash", false, false);
+               $ret['redirect'] = $redirect;
+       }
+
+       return $ret;
 }
 
-function verifier_campagne($id_souscription_campagne, $type_souscription=null) {
-  /* FIXME: vérifier que la campagne a bien le bon statut (ouverte, fermée, terminée, etc.) */
+function verifier_campagne($id_souscription_campagne, $type_souscription = null){
+       /* FIXME: vérifier que la campagne a bien le bon statut (ouverte, fermée, terminée, etc.) */
 
-  $campagne = sql_fetsel(array('type_objectif', 'objectif_initial', 'objectif', 'objectif_limiter'),
-                        'spip_souscription_campagnes', 'id_souscription_campagne='.sql_quote(intval($id_souscription_campagne)));
+       $campagne = sql_fetsel(array('type_objectif', 'objectif_initial', 'objectif', 'objectif_limiter'),
+               'spip_souscription_campagnes', 'id_souscription_campagne=' . sql_quote(intval($id_souscription_campagne)));
 
-  /* La campagne doit exister */
-  if(!count($campagne['type_objectif']))
-    return false;
+       /* La campagne doit exister */
+       if (!count($campagne['type_objectif']))
+               return false;
 
-  elseif($type_souscription != null && $campagne['type_objectif'] != $type_souscription)
-    return false;
+       elseif ($type_souscription!=null && $campagne['type_objectif']!=$type_souscription)
+               return false;
 
-  /* Si la campagne doit être fermée lorsque l'objectif est atteint,
-   * alors on bloque. */
-  elseif($campagne['objectif_limiter'] &&
-        calcul_avancement_campagne($id_souscription_campagne, $campagne['type_objectif'], $campagne['objectif_initial']) >= $campagne['objectif'])
-    return false;
+       /* Si la campagne doit être fermée lorsque l'objectif est atteint,
+        * alors on bloque. */
+       elseif ($campagne['objectif_limiter'] &&
+               calcul_avancement_campagne($id_souscription_campagne, $campagne['type_objectif'], $campagne['objectif_initial'])>=$campagne['objectif']
+       )
+               return false;
 
-  return true;
+       return true;
 }
index eff9b28..5de726b 100644 (file)
@@ -1 +1 @@
-<p>Formulaire fermé !</p>
\ No newline at end of file
+<p>La souscription est terminée, merci pour votre aide !</p>
\ No newline at end of file
diff --git a/lang/souscription_campagne_fr.php b/lang/souscription_campagne_fr.php
new file mode 100644 (file)
index 0000000..5c6a25d
--- /dev/null
@@ -0,0 +1,55 @@
+<?php
+
+// Ceci est un fichier langue de SPIP -- This is a SPIP language file
+// Produit automatiquement par le plugin LangOnet a partir de la langue source fr
+// Module: souscription
+// Langue: fr
+// Date: 28-05-2013 19:55:44
+// Items: 72
+
+if (!defined('_ECRIRE_INC_VERSION')) return;
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+       'explication_campagne_objectif' => 'Indiquer un montant en Euros pour des dons et un nombre pour des adhésions.',
+       'explication_campagne_objectif_initial' => 'Permet d\'indiquer le niveau initial de la campagne. Ce champs peut être utilisé pour indiquer des dons ou adhésions n\'ayant pas été compatibilisées par le module de souscriptions.',
+       'explication_campagne_objectif_limite' => "Permet de bloquer les nouvelles adhésions/dons pour cette campagne si l'objecif est attend (offre spéciale d'adhésion par exemple)",
+       'explication_type_objectif' => 'Type de l\'objectif (influe le montant de l\'objectif)',
+       'explication_configuration_specifique' => "Permet de configurer des niveaux spécifiques d'adhésion ou de dons pour cette campagne",
+
+       'icone_creer_souscription_campagne' => 'Créer une campagne de souscription',
+       'icone_modifier_souscription_campagne' => 'Modifier cette campagne',
+       'info_1_souscription_campagne' => '1 campagne',
+       'info_aucun_souscription_campagne' => 'Aucune campagne',
+       'info_nb_souscription_campagnes' => '@nb@ campagnes',
+       'info_type_objectif_dons' => '(objectif en Euros)',
+       'info_type_objectif_adhesions' => '(objectif en nombre d\'adhésions)',
+
+
+       'titre_logo_souscription_campagne' => 'Logo de cette campagne',
+       'titre_souscription_campagne' => 'Campagne',
+       'titre_souscription_campagnes' => 'Campagnes',
+
+       'label_titre_campagne' => 'Titre de la campagne',
+       'label_description' => 'Description de la campagne',
+       'label_type_objectif' => 'Type d\'objectif',
+       'label_type_objectif_dons' => 'Dons',
+       'label_type_objectif_adhesions' => 'Adhésions',
+       'label_objectif_oui_non' => 'Fixer un objectif à cette campagne',
+       'label_objectif' => 'Niveau de l\'objectif',
+       'label_objectif_initial' => 'Niveau initial de la campagne',
+       'label_objectif_groupe' => 'Definition de l\'objectif de la campagne',
+       'label_objectif_limite' => 'Fermer la campagne si l\'objectif est atteint',
+       'label_configuration_specifique' => 'Activer une configuration spécifique',
+
+       'info_objectif' => 'Objectif',
+       'info_avancement' => 'Avancement',
+       
+       'erreur_objectif_initial_invalide' => "Valeur de l'objectif initial invalide",
+       'erreur_objectif_initial_valeur' => "Valeur de l'objectif initial invalide",
+       'erreur_objectif_initial_supperieur_objectif' => "Valeur de l'objectif initial suppérieur à l'objectif",
+       'erreur_objectif_invalide' => "Type d'objectif invalide",
+       'erreur_objectif_don_inactif' => "Les objectifs de type Dons ne sont pas activés dans la configuration.",
+       'erreur_objectif_adhesion_inactif' => "Les objectifs de type Adhésions ne sont pas activés dans la configuration.",
+
+);
+?>
index 931dbd8..bea4d72 100644 (file)
@@ -32,30 +32,20 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'explication_montant_adhesion' => ' ',
        'explication_montant_don' => ' ',
        'explication_montants' => 'Le montants divent être au format suivant: <code>[montant]|[description]</code> à raison d\'une entrée par ligne.',
-       'explication_campagne_objectif' => 'Permet d\'indiquer un objectif monétaire pour la campagne.',
-       'explication_campagne_objectif_initial' => 'Permet d\'indiquer le niveau initial de la campagne. Ce champs peut être utilisé pour indiquer des dons ou adhésions n\'ayant pas été compatibilisées par le module de souscriptions.',
-       'explication_campagne_objectif_limite' => "Permet de bloquer les nouvelles adhésions/dons pour cette campagne si l'objecif est attend (offre spéciale d'adhésion par exemple)",
        'explication_recu_fiscal' => ' ',
-       'explication_type_objectif' => 'Type de l\'objectif (influe le montant de l\'objectif)',
        'explication_bloc_fiscal_adhesion' => "Les informations suivantes sont nécessaire pour nous permettre de réaliser l'adhésion&nbsp;:",
        'explication_bloc_fiscal_don' => "Ces informations sont nécessaire en vue de l'établissement du reçu permettant une déduction fiscale qui vous sera envoyé",
-       'explication_configuration_specifique' => "Permet de configurer des niveaux spécifiques d'adhésion ou de dons pour cette campagne",
        'explication_type_saisie' => "Mode d'affichage des différents montants possibles",
 
 // I
        'icone_creer_souscription' => 'Créer une souscription',
-       'icone_creer_souscription_campagne' => 'Créer une campagne',
        'icone_modifier_souscription' => 'Modifier cette souscription',
-       'icone_modifier_souscription_campagne' => 'Modifier cette campagne',
-       'info_1_souscription' => 'Une souscription',
-       'info_1_souscription_campagne' => 'Une campagne',
-       'info_1_souscription_campagnes' => 'Une campagne',
+       'info_1_souscription' => '1 souscription',
        'info_aucun_souscription' => 'Aucune souscription',
-       'info_aucun_souscription_campagne' => 'Aucune campagne',
-       'info_aucun_souscription_campagnes' => 'Aucune campagne',
-       'info_nb_souscription_campagnes' => '@nb@ campagnes',
        'info_nb_souscriptions' => '@nb@ souscriptions',
        'info_souscriptions_auteur' => 'Les souscriptions de cet auteur',
+       'info_objectif_limite' => 'La campagne sera fermée lorsque l\'objectif sera atteint.',
+       'info_choisissez_montant' => 'Choisissez un montant…',
 
 // L
        "label_exporter_entete_adresse" => "Adresse",
@@ -86,7 +76,6 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'label_campagne' => 'Campagne',
        'label_code_postal' => 'Code postal',
        'label_courriel' => 'Courriel',
-       'label_description' => 'Description de la campagne',
        'label_dispositions_fiscales_explications' => 'Texte de présentation des dispositions fiscales',
        'label_envoyer_info' => 'M\'inscrire sur la liste d\'information',
        'label_exporter_campagne' => 'Campagne',
@@ -98,6 +87,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'label_exporter_type_souscription' => "Type de souscription",
        'label_id_transaction' => 'Identifiant de la transaction',
        'label_informer_comite_local' => 'Me faire connaître auprès du comité local le plus proche',
+       'label_proposer_informer_comite_local' => 'Proposer d\'informer le comité local lors de l\'adhésion',
        'label_montant' => 'Montant',
        'label_montant_actuel' => 'Niveau actuel de la campagne',
        'label_montant_liste' => 'Montant',
@@ -105,20 +95,13 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'label_montants_explication' => 'Texte d\'explication des montants',
        'label_montants_label' => 'Label pour le champ « montants »',
        'label_nom' => 'Nom',
-       'label_objectif_oui_non' => 'Fixer un objectif à cette campagne',
-       'label_objectif' => 'Niveau de l\'objectif',
-       'label_objectif_initial' => 'Niveau initial de la campagne',
-       'label_objectif_groupe' => 'Definition de l\'objectif de la campagne',
-       'label_objectif_limite' => 'Fermer la campagne si l\'objectif est atteint',
-       'label_configuration_specifique' => 'Activer une configuration spécifique',
        'label_pays' => 'Pays',
        'label_prenom' => 'Prénom',
+       'label_proposer_infolettre' => 'Proposer l\'inscription à la lettre d\'information',
        'label_recu_fiscal' => 'Recevoir un reçu fiscal',
        'label_statut' => 'Statut',
        'label_telephone' => 'Téléphone',
        'label_titre' => 'Titre',
-       'label_titre_campagne' => 'Titre de la campagne',
-       'label_type_objectif' => 'Type d\'objectif',
        'label_type_saisie' => 'Types de saisies',
        'label_type_souscription' => 'Type de souscription',
        'label_ville' => 'Ville',
@@ -132,10 +115,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
 // M
        'message_nok_champ_invalide' => "Le type de saisie pour le montant est invalide",
        'message_nok_champ_obligatoire' => 'Ce champ est obligatoire',
-       'message_nok_objectif_initial_invalide' => "Valeur de l'objectif initial invalide",
-       'message_nok_objectif_initial_valeur' => "Valeur de l'objectif initial invalide",
-       'message_nok_objectif_initial_supperieur_objectif' => "Valeur de l'objectif initial suppérieur à l'objectif",
-       'message_nok_objectif_invalide' => "Type d'objectif invalide",
+       'message_nok_montants' => 'Erreur dans le format',
 
 // S
        'souscription_titre' => 'Souscription',
@@ -146,12 +126,9 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
        'texte_ajouter_souscription' => 'Ajouter une souscription',
        'texte_changer_statut_souscription' => 'Cette souscription est :',
        'titre_configurer_souscriptions' => 'Souscriptions',
-       'titre_logo_souscription_campagne' => 'Logo de cette campagne',
        'titre_page_configurer_souscriptions' => 'Configuration des souscriptions',
        'titre_page_souscriptions_tous' => 'Liste des souscriptions',
        'titre_souscription' => 'Souscription',
-       'titre_souscription_campagne' => 'Campagne',
-       'titre_souscription_campagnes' => 'Campagnes',
        'titre_souscriptions' => 'Souscriptions',
        'titre_types_souscriptions' => 'Types de souscriptions',
 
index 01a159b..c339c35 100644 (file)
@@ -1,12 +1,10 @@
 <BOUCLE_campagne(SOUSCRIPTION_CAMPAGNES){id_souscription_campagne=#ENV{campagne}}{objectif>0}>
   [(#SET{pourcentage_objectif,#AVANCEMENT_CAMPAGNE|div{#OBJECTIF}|mult{100}|round{2}})]
-
-  <p>
+  <p class="avancement_texte">
     [(#TYPE_OBJECTIF|=={don}|oui) <:souscription:label_avancement_campagne_dons{montant=#AVANCEMENT_CAMPAGNE,objectif=#OBJECTIF}:>]
     [(#TYPE_OBJECTIF|=={adhesion}|oui) <:souscription:label_avancement_campagne_adhesions{nombre=#AVANCEMENT_CAMPAGNE,objectif=#OBJECTIF}:>]
   </p>
-
-  <div class="progress progress-striped active">
+  <div class="avancement_progress progress progress-striped active">
     <div class="bar" style="width: #GET{pourcentage_objectif}%;">#GET{pourcentage_objectif} %</div>
   </div>
 </BOUCLE_campagne>
index a6ffb7c..ecfedc0 100644 (file)
@@ -1,16 +1,14 @@
 <BOUCLE_campagne(SOUSCRIPTION_CAMPAGNES){id_souscription_campagne=#ENV{campagne}}>
+<div class="souscription">
 <h3>#TITRE</h3>
-
-[(#INCLURE{fond=#VAL{inclure/presentation_type},type_objectif=#TYPE_OBJECTIF})]
-
-[(#TEXTE)]
-
-[(#ENV{avancement}|!={non}|?{#MODELE{avancement-campagne,campagne=#ENV{campagne}}})]
-
+[<span class="souscription_type">(#INCLURE{fond=#VAL{inclure/presentation_type},type_objectif=#TYPE_OBJECTIF})</span>]
+[<div class="souscription_presentation">(#TEXTE)</div>]
+[<div class="souscription_avancement">(#ENV{avancement}|!={non}|?{#MODELE{avancement-campagne,campagne=#ENV{campagne}}})</div>]
 [(#OBJECTIF_LIMITER|non|ou{#OBJECTIF_LIMITER|=={on}|oui|et{#AVANCEMENT_CAMPAGNE|<{#OBJECTIF}|oui}})
 #FORMULAIRE_SOUSCRIPTION{#ENV{campagne}}
 ]
 [(#OBJECTIF_LIMITER|=={on}|oui|et{#AVANCEMENT_CAMPAGNE|<{#OBJECTIF}|non})
 [(#INCLURE{fond=inclure/objectif_atteint,env})]
 ]
+</div>
 </BOUCLE_campagne>
index 0d23535..889e285 100644 (file)
@@ -1,6 +1,6 @@
 <paquet prefix="souscription"
         categorie="communication"
-        version="0.20.1"
+        version="0.20.3"
         etat="dev"
         compatibilite="[3.0.5;3.0.*]"
         logo="souscription-32.png"
index f864832..79bceac 100644 (file)
@@ -1,26 +1,33 @@
 <BOUCLE_souscription_campagne(SOUSCRIPTION_CAMPAGNES){id_souscription_campagne}>
 
 [<div class="champ contenu_type_objectif[ (#TYPE_OBJECTIF*|strlen|?{'',vide})]">
-       <label><:souscription:label_type_objectif:> : </label>
+       <div class='label'><:souscription_campagne:label_type_objectif:> : </div>
        <span dir='#LANG_DIR' class='#EDIT{type_objectif} type_objectif'>(#TYPE_OBJECTIF)</span>
 </div>]
 
-[<div class="champ contenu_objectif_initial[ (#OBJECTIF_INITIAL*|strlen|?{'',vide})]">
-       <label><:souscription:label_objectif_initial:> : </label>
-       <span dir='#LANG_DIR' class='#EDIT{objectif_initial} objectif_initial'>(#OBJECTIF_INITIAL)</span>
+[<div class="champ contenu_objectif_initial[ (#OBJECTIF_INITIAL*|intval|?{'',vide})]">
+       <div class='label'><:souscription_campagne:label_objectif_initial:> : </div>
+       <span dir='#LANG_DIR' class='#EDIT{objectif_initial} objectif_initial'>(#OBJECTIF_INITIAL|campagne_afficher_objectif{#TYPE_OBJECTIF})</span>
 </div>]
 
-[<div class="champ contenu_objectif[ (#OBJECTIF*|strlen|?{'',vide})]">
-       <label><:souscription:label_objectif:> : </label>
-       <span dir='#LANG_DIR' class='#EDIT{objectif} objectif'>(#OBJECTIF)</span>
+[<div class="champ contenu_objectif[ (#OBJECTIF*|intval|?{'',vide})]">
+       <div class='label'><:souscription_campagne:label_objectif:> : </div>
+       <span dir='#LANG_DIR' class='#EDIT{objectif} objectif'>(#OBJECTIF|campagne_afficher_objectif{#TYPE_OBJECTIF})</span>
 </div>]
 
-<div class="champ contenu_objectif">
-       <label><:souscription:label_montant_actuel:> : </label>
-       <span class='montant_actuel'>#AVANCEMENT_CAMPAGNE</span>
+<div class="champ contenu_montant_actuel">
+       <div class='label'><:souscription:label_montant_actuel:> : </div>
+       <span class='montant_actuel'>[(#AVANCEMENT_CAMPAGNE|campagne_afficher_objectif{#TYPE_OBJECTIF})][(#OBJECTIF|intval|oui)[ ((#AVANCEMENT_CAMPAGNE|mult{100}|div{#OBJECTIF}|round{1})%)]]</span>
 </div>
+[ (#OBJECTIF_LIMITER*|=={on}|oui)
+<div class="champ contenu_objectif_limiter">
+       <div class='label'><:souscription:info_objectif_limite:></div>
+</div>
+]
+
 
-[<div class="champ contenu_texte[ (#TEXTE*|strlen|?{'',vide})]">
+[<div class="champ contenu_texte contenu_ps[ (#TEXTE*|strlen|?{'',vide})]">
+       <div class='label'><:info_descriptif:></div>
        <span dir='#LANG_DIR' class='#EDIT{texte} texte'>(#TEXTE)</span>
 </div>]
 
index 13bbba1..5726539 100644 (file)
@@ -1,6 +1,6 @@
 <BOUCLE_souscription_campagne(SOUSCRIPTION_CAMPAGNES){id_souscription_campagne=#ENV{id}}>
 <div class='infos'>
-[(#SET{texte_objet,<:souscription:titre_souscription_campagne:>})]
+[(#SET{texte_objet,<:souscription_campagne:titre_souscription_campagne:>})]
 <div class='numero'><:titre_cadre_numero_objet{objet=#GET{texte_objet}}:><p>#ID_SOUSCRIPTION_CAMPAGNE</p></div>
 
 </div>
index 2d66aee..bbcbbfd 100644 (file)
@@ -5,20 +5,26 @@
 #ANCRE_PAGINATION
 <div class="liste-objets souscription_campagnes">
 <table class="spip liste">
-       [<caption><strong class="caption">(#ENV*{titre,#GRAND_TOTAL|singulier_ou_pluriel{souscription:info_1_souscription_campagnes,souscription:info_nb_souscription_campagnes}})</strong></caption>]
+       [<caption><strong class="caption">(#ENV*{titre,#GRAND_TOTAL|singulier_ou_pluriel{souscription_campagne:info_1_souscription_campagne,souscription_campagne:info_nb_souscription_campagnes}})</strong></caption>]
        <thead>
                <tr class="first_row">
                        <th class="id" scope="col">[(#TRI{id_souscription_campagne,<:info_numero_abbreviation:>,ajax})]</th>
-                       <th class="titre" scope="col">[(#TRI{titre,<:souscription:label_titre:>,ajax})]</th>
+                       <th class="titre" scope="col">[(#TRI{titre,<:souscription_campagne:label_titre_campagne:>,ajax})]</th>
+                       <th class="objectif" scope="col"><:souscription_campagne:info_objectif:></th>
+                       <th class="avancement" scope="col"><:souscription_campagne:info_avancement:></th>
+                       <th class="type" scope="col"></th>
                </tr>
        </thead>
        <tbody>
        <BOUCLE_liste_souscription_campagnes(SOUSCRIPTION_CAMPAGNES){id_mot?}{id_auteur?}{where?}{recherche?}{tri #ENV{par,id_souscription_campagne},#GET{defaut_tri}}{pagination #ENV{nb,10}}>
                <tr class="[(#COMPTEUR_BOUCLE|alterner{row_odd,row_even})]">
                        <td class="id">#ID_SOUSCRIPTION_CAMPAGNE</td>
-                       <td class="titre secondaire">[(#AUTORISER{voir,souscription_campagne,#ID_SOUSCRIPTION_CAMPAGNE}|?{
+                       <td class="titre principale">[(#AUTORISER{voir,souscription_campagne,#ID_SOUSCRIPTION_CAMPAGNE}|?{
                                <a href="[(#URL_ECRIRE{souscription_campagne,id_souscription_campagne=#ID_SOUSCRIPTION_CAMPAGNE})]">#TITRE</a>,
                        })]</td>
+                       <td class="objectif">[(#OBJECTIF|intval|oui)[(#OBJECTIF|campagne_afficher_objectif{#TYPE_OBJECTIF})]]</td>
+                       <td class="avancement">[(#AVANCEMENT_CAMPAGNE|campagne_afficher_objectif{#TYPE_OBJECTIF})][(#OBJECTIF|intval|oui)[ ((#AVANCEMENT_CAMPAGNE|mult{100}|div{#OBJECTIF}|round{1})%)]]</td>
+                       <td class="type">[(#TYPE_OBJECTIF|=={don}|?{<:souscription_campagne:label_type_objectif_dons:>,<:souscription_campagne:label_type_objectif_adhesions:>})]</td>
                </tr>
        </BOUCLE_liste_souscription_campagnes>
        </tbody>
index 63005a1..ac3d817 100644 (file)
@@ -3,14 +3,15 @@
 [(#BOITE_OUVRIR{[
        [(#AUTORISER{modifier,souscription_campagne,#ID_SOUSCRIPTION_CAMPAGNE})
                [(#ID_SOUSCRIPTION_CAMPAGNE|afficher_qui_edite{souscription_campagne}|non)
-                       [(#URL_ECRIRE{souscription_campagne_edit,id_souscription_campagne=#ID_SOUSCRIPTION_CAMPAGNE}|icone_verticale{<:souscription:icone_modifier_souscription_campagne:>,souscription_campagne,edit,right ajax preload})]
+                       [(#URL_ECRIRE{souscription_campagne_edit,id_souscription_campagne=#ID_SOUSCRIPTION_CAMPAGNE}|icone_verticale{<:souscription_campagne:icone_modifier_souscription_campagne:>,souscription_campagne,edit,right ajax preload})]
                ]
                [(#ID_SOUSCRIPTION_CAMPAGNE|afficher_qui_edite{souscription_campagne}|oui)
                        [(#URL_ECRIRE{souscription_campagne_edit,id_souscription_campagne=#ID_SOUSCRIPTION_CAMPAGNE}|icone_verticale{#ID_SOUSCRIPTION_CAMPAGNE|afficher_qui_edite{souscription_campagne},warning-24,'',right edition_deja ajax preload})]
                ]
        ]
 
-       <h1>#PRENOM (#NOM)</h1>
+       <h1>(#TITRE)[(#VAL{souscription_campagne}|objet_icone|inserer_attribut{class,cadre-icone})]</h1>
+       <strong>[(#TYPE_OBJECTIF|=={don}|?{<:souscription:sous_titre_type_dons:>,<:souscription:sous_titre_type_adhesions:>})]</strong>
 
 ],simple fiche_objet})]
 
@@ -24,7 +25,7 @@
 
 [(#AUTORISER{modifier,souscription_campagne,#ID_SOUSCRIPTION_CAMPAGNE})
        [(#ID_SOUSCRIPTION_CAMPAGNE|afficher_qui_edite{souscription_campagne}|non)
-               [(#URL_ECRIRE{souscription_campagne_edit,id_souscription_campagne=#ID_SOUSCRIPTION_CAMPAGNE}|icone_verticale{<:souscription:icone_modifier_souscription_campagne:>,souscription_campagne,edit,right ajax preload})]
+               [(#URL_ECRIRE{souscription_campagne_edit,id_souscription_campagne=#ID_SOUSCRIPTION_CAMPAGNE}|icone_verticale{<:souscription_campagne:icone_modifier_souscription_campagne:>,souscription_campagne,edit,right ajax preload})]
        ]
        [(#ID_SOUSCRIPTION_CAMPAGNE|afficher_qui_edite{souscription_campagne}|oui)
                [(#URL_ECRIRE{souscription_campagne_edit,id_souscription_campagne=#ID_SOUSCRIPTION_CAMPAGNE}|icone_verticale{#ID_SOUSCRIPTION_CAMPAGNE|afficher_qui_edite{souscription_campagne},warning-24,'',right edition_deja ajax preload})]
index 6fbad12..c22fe9a 100644 (file)
@@ -1,6 +1,6 @@
 [(#AUTORISER{voir,souscriptioncampagne}|sinon_interdire_acces)]
-<INCLURE{fond=prive/objets/liste/souscription_campagnes, par=id_souscription_campagne, env, ajax, sinon=<:souscription:info_aucun_souscription_campagnes:>}>
+<INCLURE{fond=prive/objets/liste/souscription_campagnes, par=id_souscription_campagne, env, ajax, sinon=<:souscription_campagne:info_aucun_souscription_campagne:>}>
 
 [(#AUTORISER{creer,souscriptioncampagne})
-        [(#URL_ECRIRE{souscription_campagne_edit,new=oui}|icone_verticale{<:souscription:icone_creer_souscription_campagne:>,souscription_campagne,new,right})]
+        [(#URL_ECRIRE{souscription_campagne_edit,new=oui}|icone_verticale{<:souscription_campagne:icone_creer_souscription_campagne:>,souscription_campagne,new,right})]
 ]
index d30f122..ad216ca 100644 (file)
@@ -1,3 +1,3 @@
 <BOUCLE_souscription_campagne(SOUSCRIPTION_CAMPAGNES){id_souscription_campagne}{si #ENV{exec}|=={souscription_campagne}}>
-[<a href="(#URL_ECRIRE{souscription_campagnes})"><:souscription:titre_souscription_campagnes:></a> &gt; <strong class="on">[(#TITRE)]</strong>]
+[<a href="(#URL_ECRIRE{souscription_campagnes})"><:souscription_campagne:titre_souscription_campagnes:></a> &gt; <strong class="on">[(#TITRE)]</strong>]
 </BOUCLE_souscription_campagne>
index 8d72ce2..83d29e5 100644 (file)
@@ -1 +1 @@
-<a href="#URL_ECRIRE{souscription_campagnes}"><:souscription:titre_souscription_campagnes:></a> &gt; <strong class="on"><B_souscription_campagne><BOUCLE_souscription_campagne(SOUSCRIPTION_CAMPAGNES){id_souscription_campagne}{si #ENV{exec}|=={souscription_campagne_edit}}>#TITRE</BOUCLE_souscription_campagne></B_souscription_campagne><:ecrire:info_sans_titre:><//B_souscription_campagne></strong>
\ No newline at end of file
+<a href="#URL_ECRIRE{souscription_campagnes}"><:souscription_campagne:titre_souscription_campagnes:></a> &gt; <strong class="on"><B_souscription_campagne><BOUCLE_souscription_campagne(SOUSCRIPTION_CAMPAGNES){id_souscription_campagne}{si #ENV{exec}|=={souscription_campagne_edit}}>#TITRE</BOUCLE_souscription_campagne></B_souscription_campagne><:ecrire:info_sans_titre:><//B_souscription_campagne></strong>
\ No newline at end of file
index d30f122..ad216ca 100644 (file)
@@ -1,3 +1,3 @@
 <BOUCLE_souscription_campagne(SOUSCRIPTION_CAMPAGNES){id_souscription_campagne}{si #ENV{exec}|=={souscription_campagne}}>
-[<a href="(#URL_ECRIRE{souscription_campagnes})"><:souscription:titre_souscription_campagnes:></a> &gt; <strong class="on">[(#TITRE)]</strong>]
+[<a href="(#URL_ECRIRE{souscription_campagnes})"><:souscription_campagne:titre_souscription_campagnes:></a> &gt; <strong class="on">[(#TITRE)]</strong>]
 </BOUCLE_souscription_campagne>
diff --git a/prive/style_prive_plugin_souscription.html b/prive/style_prive_plugin_souscription.html
new file mode 100644 (file)
index 0000000..e4bf7d7
--- /dev/null
@@ -0,0 +1,7 @@
+.souscription_campagne #wysiwyg .contenu_type_objectif {display:none;}
+
+.souscription_campagne #wysiwyg .contenu_objectif_initial .label,
+.souscription_campagne #wysiwyg .contenu_objectif .label,
+.souscription_campagne #wysiwyg .contenu_montant_actuel .label {display:inline;font-weight:bold;}
+.souscription_campagne #wysiwyg .contenu_objectif_limiter .label {display:inline;color:inherit;}
+.souscription_campagne #wysiwyg .contenu_texte {}
diff --git a/prive/themes/spip/images/souscription-24.png b/prive/themes/spip/images/souscription-24.png
new file mode 100644 (file)
index 0000000..c11e1b6
Binary files /dev/null and b/prive/themes/spip/images/souscription-24.png differ
diff --git a/prive/themes/spip/images/souscription_campagne-16.png b/prive/themes/spip/images/souscription_campagne-16.png
new file mode 100644 (file)
index 0000000..c6a2eab
Binary files /dev/null and b/prive/themes/spip/images/souscription_campagne-16.png differ
diff --git a/prive/themes/spip/images/souscription_campagne-24.png b/prive/themes/spip/images/souscription_campagne-24.png
new file mode 100644 (file)
index 0000000..efdd470
Binary files /dev/null and b/prive/themes/spip/images/souscription_campagne-24.png differ
diff --git a/prive/themes/spip/images/souscription_campagne-32.png b/prive/themes/spip/images/souscription_campagne-32.png
new file mode 100644 (file)
index 0000000..91006ef
Binary files /dev/null and b/prive/themes/spip/images/souscription_campagne-32.png differ
index 1ed1e80..fc57d61 100644 (file)
@@ -9,10 +9,7 @@ function calcul_avancement_campagne($id_campagne, $type_objectif, $objectif_init
                    array("S.id_souscription_campagne=".sql_quote($id_campagne),
                          "T.reglee = 'oui'"));
 
-  $nombre = $res['nombre'];
-  $somme = $objectif_initial;
-
-  return ($type_souscription == "don" ? $somme : $nombre) + $objectif_initial;
+  return ($type_objectif == "don" ? $res['somme'] : $res['nombre']) + $objectif_initial;
 }
 
 /*
@@ -56,3 +53,7 @@ function montants_str2array($str) {
 
   return saisies_chaine2tableau(saisies_aplatir_chaine($str));
 }
+
+function campagne_afficher_objectif($nombre,$type_objectif){
+       return $nombre.($type_objectif == "don" ? " EUR" : "");
+}
\ No newline at end of file