tig12.net
Site personnel

Admin
Dans la rubrique
Rubriques proches
PHP

Nombre de visites : 283
Mise en ligne : 03/2007
Dernière modif : 06/2007

 Personnaliser une pétition spip

ATTENTION : cette page est en construction, je l’ai mise en ligne pour essayer de récapituler les étapes ; j’ai réussi à faire marcher ça sur le site radio-larzac.org, mais je suis loin d’avoir compris pourquoi !
A utiliser à vos risques et périls...
Pétition spip

Rajouter des informations dans le formulaire d'une pétition spip.
Fonctionne avec spip 1.9.2 (mars 2007)

Pour l'exemple, on rajoute les champs 'profession', 'age', 'lieu',
et on considère que les squelettes sont dans le dossier ... squelettes/

Code à modifier :
- table spip_signatures
- ecrire/base/serial.php
- ecrire/balise/formulaire_signature.php
- squelettes/formulaires/signature.html
- squelettes/mes_fonctions.php
  1. Modifier la table spip_signatures
    ALTER TABLE `spip_signatures` ADD `profession`    TINYTEXT NOT NULL AFTER `maj`
    ALTER TABLE `spip_signatures` ADD `age`           TINYTEXT NOT NULL AFTER `profession`
    ALTER TABLE `spip_signatures` ADD `lieu`          TINYTEXT NOT NULL AFTER `age`
  2. Modifier le fichier ecrire/base/serial.php pour rajouter les définitions de champs :
    $spip_signatures = array(
      "id_signature"	=> "bigint(21) NOT NULL",
      "id_article"	=> "bigint(21) DEFAULT '0' NOT NULL",
      "date_time"	=> "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
      "nom_email"	=> "text NOT NULL",
      "ad_email"	=> "text NOT NULL",
      "nom_site"	=> "text NOT NULL",
      "url_site"	=> "text NOT NULL",
      "message"	  => "mediumtext NOT NULL",
      "statut"	  => "varchar(10) NOT NULL",
      "idx"       => "ENUM('', '1', 'non', 'oui', 'idx') DEFAULT '' NOT NULL",
      "maj"       => "TIMESTAMP",
      "profession"=> "tinytext NOT NULL",
      "age"       => "tinytext NOT NULL",
      "lieu"      => "tinytext" NOT NULL
    );
  3. Modifier ecrire/balise/formulaire_signature.php :
    $reponse = $controler_signature(
      $id_article,
      _request('nom_email'), _request('adresse_email'),
      _request('message'), _request('signature_nom_site'),
      _request('signature_url_site'), _request('url_page')),
      _request('profession'), _request('age')),_request('lieu'));
  4. Toujours dans ecrire/balise/formulaire_signature.php,
    modifier les paramètres de la fonction inc_controler_signature_dist() :
    function inc_controler_signature_dist($id_article, $nom_email, $adresse_email,
                                          $message, $nom_site, $url_site, 
                                          $url_page, $profession, $age, $lieu) {
  5. Toujours dans ecrire/balise/formulaire_signature.php,
    dans la fonction inc_controler_signature_dist(),
    vous pouvez tester la validité de vos champs :
    if (strlen($nom_email) < 2)
    		$texte = _T('form_indiquer_nom');
    	elseif ($adresse_email == _T('info_mail_fournisseur'))
    		$texte = _T('form_indiquer_email');
    	elseif (!email_valide($adresse_email)) 
    		$texte = _T('form_email_non_valide');
    	elseif (!is_numeric($age))
    		$texte = "L'âge que vous avez indiqué n'est pas valide";
  6. Toujours dans ecrire/balise/formulaire_signature.php,
    toujours dans la fonction inc_controler_signature_dist() :
    $messagex = _T('form_pet_mail_confirmation',
                       array('titre' => $titre, 'nom_email' => $nom_email,
                       'nom_site' => $nom_site, 'url_site' => $url_site, 'url' => $url, 'message' => $message,
                       'profession' => $profession, 'age' => $age, 'lieu' => $lieu
                       ));
  7. Toujours dans ecrire/balise/formulaire_signature.php,
    toujours dans la fonction inc_controler_signature_dist(), modifier l'appel à revision_signature() :
    revision_signature($id_signature, array(
    				'nom_email' => $nom_email,
    				'ad_email' => $adresse_email,
    				'message' => $message,
    				'nom_site' => $nom_site,
    				'profession' => $profession,
    				'age' => $age,
    				'lieu' => $lieu
    			));
  8. Toujours dans ecrire/balise/formulaire_signature.php,
    modifier dans la fonction reponse_confirmation() :
    while($row = spip_fetch_array($result_sign)) {
    					$id_signature = $row['id_signature'];
    					$id_article = $row['id_article'];
    					$date_time = $row['date_time'];
    					$nom_email = $row['nom_email'];
    					$adresse_email = $row['ad_email'];
    					$nom_site = $row['nom_site'];
    					$url_site = $row['url_site'];
    					$profession = $row['profession'];
    					$age = $row['age'];
    					$lieu = $row['lieu'];
    					$message = $row['message'];
    					$statut = $row['statut'];
  9. Modifier ecrire/inc/modifier.php :
    // http://doc.spip.org/@revision_signature
    function revision_signature($id_signature, $c=false) {
      return modifier_contenu('signature', $id_signature,
        array(
          'champs' => array('nom_email', 'ad_email', 'nom_site', 'url_site', 'message',
                            'profession', 'age', 'lieu'),
          'nonvide' => array('nom_email' => _T('info_sans_titre') )
        ),
        $c);
    }
  10. Copier dist/formulaires/signature.html dans squelettes/formulaires/signature.html
    et modifier pour faire saisir les nouveaux champs ; rajouter un code du style :
    <p><label for="profession"><:form_pet_votre_profession:></label>
    <input type="text" class="forml" name="profession" id="profession" value="" size="20" /></p>
  11. Modifier le fichier squelettes/mes_fonctions.php (ou créer ce fichier s'il n'existe pas), en rajoutant :
    include_spip('base/serial') ;
    global $tables_principales;
    $tables_principales['spip_signatures']['field']['age']= "tinytext";
    $tables_principales['spip_signatures']['field']['profession']= "tinytext";
    $tables_principales['spip_signatures']['field']['lieu']= "tinytext";


--Site écrit avec SPIP--Licence du contenu publié sur ce site--