Formulaire personnalisable.

Pour discuter de phpBB3 - Pas de support dans cette section !
Pour du support veuillez vous rendre dans la section de support

Modérateur : Équipe

Règles du forum
A lire impérativement : Règlement de phpBB-fr.com

Attention, aucun support n'est donné dans cette section.
Répondre
Avatar du membre
Censure
Posteur habitué
Posteur habitué
Messages : 241
Enregistré le : 23 oct. 2012 à 15:37
Localisation : Infiltrate !
Contact :

Formulaire personnalisable.

Message par Censure »

Ajouter un formulaire personnalisable à phpBB
Cette documentation va vous expliquer comment mettre en place un formulaire personnalisable de présentation pour votre forum.
Ce formulaire contiendra les champs suivants :
  • Nom d’utilisateur.
  • Pseudo en jeu
  • Âge
  • Sexe
  • Localisation
  • Texte de présentation

Sommaire
Le fichier « presentation.php »
Ce fichier est à enregistrer à la racine du forum.
  • Copiez et collez le code ci-dessous dans votre éditeur de texte (Notepad++, sublime text, etc.).

    Code : Tout sélectionner

    <?php
    /**
    *
    * @package phpBB3
    * @version $Id$
    * @copyright (c) 2005 phpBB Group
    * @license http://opensource.org/licenses/gpl-license.php GNU Public License
    *
    */
    
    /**
    * @ignore
    */
    define('IN_PHPBB', true);
    $phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
    $phpEx = substr(strrchr(__FILE__, '.'), 1);
    include($phpbb_root_path . 'common.' . $phpEx);
    include($phpbb_root_path . 'includes/functions_posting.' . $phpEx);
    include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
    include($phpbb_root_path . 'includes/message_parser.' . $phpEx);
    
    // Start session management
    $user->session_begin();
    $auth->acl($user->data);
    $user->setup('mods/presentation');
    
    // If no logged in user, we stop here and ask him/her to connect
    if (!$user->data['is_registered'])
    {
       login_box('', $user->lang['LOGIN_EXPLAIN_FORM']);
    }
    // Grab some parameters
    $submit      = (isset($_POST['submit'])) ? true : false;
    $username    = utf8_normalize_nfc(request_var('username', '', true));
    $nickname    = utf8_normalize_nfc(request_var('nickname', '', true));
    $age         = utf8_normalize_nfc(request_var('age', '', true));
    $gender      = utf8_normalize_nfc(request_var('gender', '', true));
    $location    = utf8_normalize_nfc(request_var('location', '', true));
    $other       = utf8_normalize_nfc(request_var('other', '', true));
    $time        = time();
    $error       = array();
    
    $message = ''; // This will be filled with datas from our form
    $forum_id = 138;     // Forum where our message will be published
    
    // Post content
    $message .= "[color=#FF8000][b]" . $user->lang['PRESENT_USERNAME'] . "[/b][/color] " . $username. "\r\n";
    $message .= "[color=#FF8000][b]" . $user->lang['NICKNAME'] . "[/b][/color] " . $nickname. "\r\n";
    $message .= "[color=#FF8000][b]" . $user->lang['AGE'] . "[/b][/color] " . $age . "\r\n";
    $message .= "[color=#FF8000][b]" . $user->lang['SEXE'] . "[/b][/color] " . $gender . "\r\n";
    $message .= "[color=#FF8000][b]" . $user->lang['PRESENT_LOCATION'] . "[/b][/color] " . $location . "\r\n";
    $message .= "[color=#FF8000][b]" . $user->lang['TEXT_PRESENTATION'] . "[/b][/color] " . $other;
    
    $topic_title   = $user->lang['PRESENTATION'] . $user->data['username'];
    
    $poll = $bbcode_uid = $bbcode_bitfield = $options = '';
    
    generate_text_for_storage($topic_title, $bbcode_uid, $bbcode_bitfield, $options, false, false, false);
    generate_text_for_storage($message, $bbcode_uid, $bbcode_bitfield, $options, true, true, true);
    
        $data = array(
            'forum_id'          => $forum_id,
            'icon_id'           => 0,
    
            'enable_bbcode'     => true,
            'enable_smilies'    => true,
            'enable_urls'       => true,
            'enable_sig'        => true,
    
            'message'           => $message,
            'message_md5'       => md5($message),
    
            'bbcode_bitfield'   => $bbcode_bitfield,
            'bbcode_uid'        => $bbcode_uid,
    
            'post_edit_locked'  => false,
            'topic_title'       => $topic_title,
            'notify_set'        => false,
            'notify'            => true,
            'post_time'         => 0,
            'forum_name'        => '',
            'enable_indexing'   => true,
        );
    
    if ($submit)
    {
    // We submit... do we have errors
        if (empty($username))
        {
            $error[] = $user->lang['NO_USERNAME'];
        }
        if (empty($nickname))
        {
            $error[] = $user->lang['NO_NICKNAME'];
        }
        if (empty($age))
        {
            $error[] = $user->lang['NO_AGE'];
        }
        if ($gender =="0")
        {
            $error[] = $user->lang['NO_GENDER'];
        }
        if (empty($location))
        {
            $error[] = $user->lang['NO_LOCATION'];
        }   
        if (empty($other))
        {
            $error[] = $user->lang['NO_OTHER'];
        }
    }
    
    if ($submit) // if we submit
    {
        if ($error) // if we have errors
        {
            $template->assign_vars(array(
                'PRESENT_USERNAME'  => $username,
                'NICKNAME'          => $nickname,
                'AGE'               => $age,
                'S_GENDER_MALE'     => ($gender == $user->lang['MALE']) ? true : false,
                'S_GENDER_FEMALE'   => ($gender == $user->lang['FEMALE']) ? true : false,
                'PRESENT_LOCATION'  => $location,
                'OTHER'             => $other,
            ));
        }
        else
        {
            $redirect_url = submit_post('post', $topic_title, $user->data['username'], POST_NORMAL, $poll, $data);
    
            meta_refresh(3, $redirect_url); // Show normal refresh time
         
            $message = $user->lang['SUBMIT_FORM'] . '<br />' . $user->lang('PRESENT_REDIRECT', '<a href="' . $redirect_url . '">', '</a>');
            trigger_error($message);
        }
    }
    
    $template->assign_vars(array(
        'S_ERROR'               => !empty($error) ? true : false,
        'ERROR_TITLE'           => $user->lang['ERROR_TITLE'],
        'ERROR_TEXT'            => !empty($error) ? implode('<br />', $error) : '',
    ));   
    
    page_header($user->lang['SUBMIT_PRESENTATION']);
    
    $template->set_filenames(array(
        'body' => 'presentation_body.html',
    ));
    
    make_jumpbox(append_sid("{$phpbb_root_path}viewforum.$phpEx"));
    page_footer();
    ?>
Note : assurez-vous qu'il n'y ait aucune ligne blanche et/ou espace avant la partie <?php et après la partie ?>

Pensez à modifier l'id du forum où seront stockées les présentations.
  • Pour cela, cherchez :

    Code : Tout sélectionner

    $forum_id = 138;     // Forum where our message will be published  
    Remplacez 138 par l'id du forum voulu.
Le fichier « presentation_body.html »
Le fichier HTML va permettre d'afficher et de mettre en forme le contenu des données traitées par le fichier « présentation.php »

Ce fichier est à enregistrer dans le dossier template de chaque style actif de votre forum.
  • Copiez et collez le code ci-dessous dans votre éditeur de texte (Notepad++, sublime text, etc.).

    Code : Tout sélectionner

    <!-- INCLUDE overall_header.html -->
    
    <form method="post" action="presentation.php">
    
    <div class="panel">
       <div class="inner"><span class="corners-top"><span></span></span>
    
       <h2>{L_FORM}</h2>
       
       <fieldset class="fields1">
       <!-- IF S_ERROR --><dl><dd class="error">{ERROR_TEXT}</dd></dl><!-- ENDIF -->
       <dl><dd><strong>{L_FIELDS}</strong></dd></dl>
       
       <dl style="clear: left;">
          <dt><label for="username">{L_PRESENT_USERNAME}*</label></dt>
          <dd><input type="text" name="username" id="username" size="25" tabindex="2" value="{PRESENT_USERNAME}" class="inputbox autowidth" /></dd>
       </dl>
    
       <dl style="clear: left;">
          <dt><label for="nickname">{L_NICKNAME}*</label></dt>
          <dd><input type="text" name="nickname" id="nickname" size="25" tabindex="4" value="{NICKNAME}" class="inputbox autowidth" /></dd>
       </dl>
    
       <dl style="clear: left;">
          <dt><label for="age">{L_AGE}*</label></dt>
          <dd><input type="text" name="age" id="age" size="25" tabindex="6" value="{AGE}" class="inputbox autowidth" /></dd>
       </dl>
    
       <dl style="clear: left;">
          <dt><label for="gender">{L_SEXE}*</label></dt>
             <dd>
             <select id="gender" name="gender" tabindex="8">
                <option value="0"> --------------- </option>
                <option value="{L_MALE}"<!-- IF S_GENDER_MALE --> selected<!-- ENDIF -->>{L_MALE}</option>
                <option value="{L_FEMALE}"<!-- IF S_GENDER_FEMALE --> selected<!-- ENDIF -->>{L_FEMALE}</option>
             </select>
             </dd>
       </dl>
    
       <dl style="clear: left;">
          <dt><label for="location">{L_PRESENT_LOCATION}*</label></dt>
          <dd><input type="text" name="location" id="location" size="25" tabindex="10" value="{PRESENT_LOCATION}" class="inputbox autowidth" /></dd>
       </dl>
    
       <dl style="clear: left;">
          <dt><label for="other">{L_TEXT_PRESENTATION}*</label></dt>
          <dd><textarea id="other" name="other" rows="3" cols="25" tabindex="12" class="inputbox post">{OTHER}</textarea></dd>
       </dl>
    
    </fieldset>
    
       <span class="corners-bottom"><span></span></span></div>
    </div>
    
    <div class="panel">
       <div class="inner"><span class="corners-top"><span></span></span>
       
    <fieldset class="submit-buttons">
       <input type="reset" value="{L_RESET}" name="reset" tabindex="14" class="button2" />
       <input type="submit" name="submit" id="submit" value="{L_SUBMIT}" tabindex="16" class="button1" />
    </fieldset>
    
       <span class="corners-bottom"><span></span></span></div>
    </div>
    
    </form>
    
    <!-- INCLUDE overall_footer.html -->
Le fichier de langue « presentation.php »
Mais à quoi peut bien servir ce fichier ? Et bien il va permettre de proposer une gestion multi-langue du formulaire.

Ce fichier est à enregistrer dans le dossier language/fr/mods de votre forum.
  • Copiez et collez le code ci-dessous dans votre éditeur de texte (Notepad++, sublime text, etc.).

    Code : Tout sélectionner

    <?php
    /**
    *
    * presentation [French]
    *
    * version $Id: presentation.php 573 2014-06-24 19:14:36 Censure $
    * copyright (c) 2014 Censure
    * license http://opensource.org/licenses/gpl-license.php GNU Public License
    *
    */
    
    /**
    * DO NOT CHANGE
    */
    if (!defined('IN_PHPBB'))
    {
        exit;
    }
    
    if ( empty($lang) || !is_array($lang) )
    {
        $lang = array();
    }
    
    // DEVELOPERS PLEASE NOTE
    //
    // All language files should use UTF-8 as their encoding and the files must not contain a BOM.
    //
    // Placeholders can now contain order information, e.g. instead of
    // 'Page %s of %s' you can (and should) write 'Page %1$s of %2$s', this allows
    // translators to re-order the output of data while ensuring it remains correct
    //
    // You do not need this where single placeholders are used, e.g. 'Message %d' is fine
    // equally where a string contains only two placeholders which are used to wrap text
    // in a url you again do not need to specify an order e.g., 'Click %sHERE%s' is fine
    //
    // Some characters you may want to copy&paste:
    // ’ » „ “ — …
    //
    $lang = array_merge($lang, array(
        'FORM'                    => 'Formulaire de présentation',
        'FIELDS'                  => 'Les champs marqués d’une étoile * sont obligatoires.',
        'PRESENT_USERNAME'        => 'Nom d’utilisateur :',
        'NICKNAME'                => 'Pseudo en jeu :',
        'AGE'                     => 'Âge :',
        'SEXE'                    => 'Sexe :',
        'PRESENT_LOCATION'         => 'Localisation :',
        'MALE'                    => 'Masculin',
        'FEMALE'                  => 'Féminin',
        'TEXT_PRESENTATION'       => 'Texte de présentation :',
        'LOGIN_EXPLAIN_FORM'      => 'L’administrateur du forum exige que vous soyez enregistré et connecté pour envoyer ce formulaire.',
    
        'ERROR_TITLE'             => 'Il y a des erreurs dans le formulaire.', 
        'NO_USERNAME'             => 'Le nom d’utilisateur est manquant.',
        'NO_NICKNAME'             => 'Le pseudo est manquant.',
        'NO_AGE'                  => 'L’âge est manquant.',
        'NO_GENDER'               => 'Le sexe est manquant.',
        'NO_LOCATION'             => 'La localisation est manquante.',
        'NO_OTHER'                => 'Le texte de présentation est manquant.',
        'PRESENTATION'            => 'Présentation de ',
        'SUBMIT_FORM'             => 'Votre présentation a été envoyée.<br /><br />',
        'SUBMIT_PRESENTATION'     => 'Envoyer sa présentation',
        'PRESENT_REDIRECT'        => 'Vous allez être redirigé vers le forum des %sprésentations%s.',
    )); 
    ?>
Note : assurez-vous qu'il n'y ait aucune ligne blanche et/ou espace avant la partie <?php et après la partie ?>

Et si vous souhaitez ajouter d'autres champs

Ajouter un champ texte
Dans cette partie nous allons ajouter un simple champ texte « Aimez-vous les sushis ? » à notre formulaire.

Pour commencer, nous allons créer dans le fichier « presentation.php » (celui qui se situe à la racine du forum) une variable nommée $sushis. Le nom de cette variable est un exemple et vous pouvez la nommer comme bon vous semble, tant que vous n'oubliez pas de remplacer le nom de cette variable dans tous les exemples de code qui vont suivre.
  • Cherchez :

    Code : Tout sélectionner

    $location     = utf8_normalize_nfc(request_var('location', '', true));
    Ajoutez après :

    Code : Tout sélectionner

    $sushis      = utf8_normalize_nfc(request_var('sushis', '', true));
  • Cherchez :

    Code : Tout sélectionner

    $message .= "[color=#FF8000][b]" . $user->lang['PRESENT_LOCATION'] . "[/b][/color] " . $location . "\r\n";
    Ajoutez après :

    Code : Tout sélectionner

    $message .= "[color=#FF8000][b]" . $user->lang['SUSHIS'] . "[/b][/color] " . $sushis . "\r\n";
Bonus : rendre le champ obligatoire
Il est possible de rendre le champ obligatoire, pour cela nous allons ajouter une condition.
  • Cherchez :

    Code : Tout sélectionner

        if (empty($location))
        {
            $error[] = $user->lang['NO_LOCATION'];
        } 
    Ajoutez après :

    Code : Tout sélectionner

        if (empty($sushis))
        {
            $error[] = $user->lang['NO_SUSHIS'];
        } 
Pour ne pas perdre les données du champ « sushis » (s'il n'est pas rempli), nous allons ajouter une variable.
  • Cherchez :

    Code : Tout sélectionner

                'PRESENT_LOCATION'  => $location,
    Ajoutez après :

    Code : Tout sélectionner

                'SUSHIS'            => $sushis,
Enregistrer le fichier modifié.

Nous allons ajouter un champ au fichier « presentation_body.html ».
  • Cherchez :

    Code : Tout sélectionner

    	<dl style="clear: left;">
    		<dt><label for="location">{L_PRESENT_LOCATION}*</label></dt>
    		<dd><input type="text" name="location" id="location" size="25" tabindex="10" value="{PRESENT_LOCATION}" class="inputbox autowidth" /></dd>
    	</dl>
    Ajoutez après :

    Code : Tout sélectionner

    	<dl style="clear: left;">
    		<dt><label for="sushis">{L_SUSHIS}*</label></dt>
    		<dd><input type="text" name="sushis" id="sushis" size="25" tabindex="12" value="{SUSHIS}" class="inputbox autowidth" /></dd>
    	</dl>
    Note : N'oubliez pas de modifier la valeur de tabindex="". Cet attribut permet de se déplacer de case en case en utilisant la touche de tabulation de votre clavier.
    Par exemple, l'attribut tabindex de {OTHER} passerai de 12 à 14, celui de {L_RESET} 14 => 16 et {L_SUBMIT} 16 => 18.
Enregistrer le fichier modifié.

Nous allons maintenant nous occuper des clés de langue de notre formulaire, pour cela ouvrez le fichier de langue « presentation.php » (language/fr/mods).

Nous avons deux clés à ajouter :
  • La clé utiliser par :

    Code : Tout sélectionner

    $message .= "[color=#FF8000][b]" . $user->lang['SUSHIS'] . "[/b][/color] " . $sushis . "\r\n"; 
    Et la clé utiliser par :

    Code : Tout sélectionner

        if (empty($sushis))
        {
            $error[] = $user->lang['NO_SUSHIS'];
        } 
Dans notre fichier de langue « presentation.php »,
  • Cherchez :

    Code : Tout sélectionner

        'PRESENT_LOCATION'        => 'Localisation :', 
    Ajoutez après :

    Code : Tout sélectionner

        'SUSHIS'                  => 'Aimez-vous les sushis ?', 
  • Cherchez :

    Code : Tout sélectionner

        'NO_LOCATION'           => 'La localisation est manquante.', 
    Ajoutez après :

    Code : Tout sélectionner

        'NO_SUSHIS'               => 'Le champ « Aimez-vous les sushis ? » n’a pas été rempli.', 
Ajouter un champ type bouton radio au formulaire
Reprenons l'exemple du champ « Aimez-vous les sushis ? ». Si vous préférez avoir des cases à cocher à la place d'un simple champ texte, avec comme choix possible « Oui j'aime les sushis ! » ou « Non je déteste les sushis... » voilà les indications à suivre :

Ouvrez le fichier « presentation_body ».
  • Trouvez :

    Code : Tout sélectionner

    	<dl style="clear: left;">
    		<dt><label for="sushis">{L_SUSHIS}*</label></dt>
    		<dd><input type="text" name="sushis" id="sushis" size="25" tabindex="12" value="{SUSHIS}" class="inputbox autowidth" /></dd>
    	</dl>
    Remplacez par :

    Code : Tout sélectionner

       <dl style="clear: left;">
          <dt><label for="sushis">{L_SUSHIS}*</label></dt>
          <dd><input type="radio" name="sushis" id="sushis" size="25" tabindex="12" value="sushis_option_1" class="inputbox autowidth"<!-- IF S_SUSHIS_OPTIONS_1 --> checked<!-- ENDIF -->>{L_SUSHIS_OPTION_1}</dd>
          <dd><input type="radio" name="sushis" id="sushis" size="25" tabindex="13" value="sushis_option_2" class="inputbox autowidth"<!-- IF S_SUSHIS_OPTIONS_2 --> checked<!-- ENDIF -->>{L_SUSHIS_OPTION_2}</dd>
       </dl>
    Note : Nous utilisons des noms de clés génériques. Chaque identifiant (value="") doit être unique !
Enregistrer le fichier modifié.

Nous allons maintenant attribuer les clés de langue.
Pour cela, ouvrez le fichier de langue « presentation.php ».
  • Cherchez :

    Code : Tout sélectionner

        'SUSHIS'                  => 'Aimez-vous les sushis ?', 
    Ajoutez après :

    Code : Tout sélectionner

        'SUSHIS_OPTION_1'         => 'Oui j’aime les sushis !',
        'SUSHIS_OPTION_2'         => 'Non je déteste les sushis...', 
Maintenant nous allons nous occuper du fichier « presentation.php » (celui qui se trouve à la racine du forum).
  • Cherchez :

    Code : Tout sélectionner

    $message .= "[color=#FF8000][b]" . $user->lang['SUSHIS'] . "[/b][/color] " . $sushis . "\r\n"; 
    Remplacez par :

    Code : Tout sélectionner

    $message .= "[color=#FF8000][b]" . $user->lang['SUSHIS'] . "[/b][/color] " . (!empty($sushis) ? $user->lang[strtoupper($sushis)] : '') . "\r\n"; 
Pour ne pas perdre les données du champ « sushis » (si aucun choix n'a été fait), nous allons ajouter deux variables.
  • Cherchez :

    Code : Tout sélectionner

                'SUSHIS'            => $sushis, 
    Ajoutez après :

    Code : Tout sélectionner

                'S_SUSHIS_OPTIONS_1'       => $sushis == "sushis_option_1" ? true : false,
                'S_SUSHIS_OPTIONS_2'       => $sushis == "sushis_option_2" ? true : false, 
Et voila !


Ajouter un champ type liste déroulante au formulaire
Reprenons l'exemple du champ « Aimez-vous les sushis ? ». Si vous préférez avoir une liste déroulante avec plusieurs choix possible :
  • « Oui j'aime les sushis ! »
  • « Non je déteste les sushis... »
  • « J'aime les sushis avec du saké »
  • « Non je préfère le saké !»

1 - A partir d'un simple champ texte
Ouvrez le fichier « presentation_body ».
  • Trouvez :

    Code : Tout sélectionner

       <dl style="clear: left;">
          <dt><label for="sushis">{L_SUSHIS}*</label></dt>
          <dd><input type="text" name="sushis" id="sushis" size="25" tabindex="12" value="{SUSHIS}" class="inputbox autowidth" /></dd>
       </dl>
    Remplacez par :

    Code : Tout sélectionner

    	<dl style="clear: left;">
    		<dt><label for="sushis">{L_SUSHIS}*</label></dt>
    			<dd>
    			<select id="sushis" name="sushis" tabindex="12">
    			    <option value="sushis_option_0"> --------------- </option>
                    <option value="sushis_option_1"<!-- IF S_SUSHIS_OPTIONS_1 --> selected<!-- ENDIF -->>{L_SUSHIS_OPTION_1}</option> 
                    <option value="sushis_option_2"<!-- IF S_SUSHIS_OPTIONS_2 --> selected<!-- ENDIF -->>{L_SUSHIS_OPTION_2}</option> 
                    <option value="sushis_option_3"<!-- IF S_SUSHIS_OPTIONS_3 --> selected<!-- ENDIF -->>{L_SUSHIS_OPTION_3}</option> 
                    <option value="sushis_option_4"<!-- IF S_SUSHIS_OPTIONS_4 --> selected<!-- ENDIF -->>{L_SUSHIS_OPTION_4}</option> 
    			</select>
    			</dd>
    	</dl>
Note : Nous utilisons des noms de clés génériques. Chaque identifiant (value="") doit être unique !
Enregistrer le fichier modifié.

Nous allons maintenant attribuer les clés de langue.
Pour cela, ouvrez le fichier de langue « presentation.php ».
  • Cherchez :

    Code : Tout sélectionner

         'SUSHIS'                  => 'Aimez-vous les sushis ?', 
    Ajoutez après :

    Code : Tout sélectionner

         'SUSHIS_OPTION_1'         => 'Oui j’aime les sushis !',
         'SUSHIS_OPTION_2'         => 'Non je déteste les sushis...',
         'SUSHIS_OPTION_3'         => 'J’aime les sushis avec du saké',
         'SUSHIS_OPTION_4'         => 'Non je préfère le saké !', 
Puis nous allons nous occuper du fichier « presentation.php » (celui qui se trouve à la racine du forum).
  • Cherchez :

    Code : Tout sélectionner

    $message .= "[color=#FF8000][b]" . $user->lang['SUSHIS'] . "[/b][/color] " . $sushis . "\r\n"; 
    Remplacez par :

    Code : Tout sélectionner

    $message .= "[color=#FF8000][b]" . $user->lang['SUSHIS'] . "[/b][/color] " . (!empty($sushis) ? $user->lang[strtoupper($sushis)] : '') . "\r\n"; 
Pour ne pas perdre les données du champ « sushis » (si aucun choix n'a été fait), nous allons ajouter plusieurs variables.
  • Cherchez :

    Code : Tout sélectionner

                'SUSHIS'            => $sushis, 
    Ajoutez après :

    Code : Tout sélectionner

                'S_SUSHIS_OPTIONS_1'       => $sushis == "sushis_option_1" ? true : false,
                'S_SUSHIS_OPTIONS_2'       => $sushis == "sushis_option_2" ? true : false,
                'S_SUSHIS_OPTIONS_3'       => $sushis == "sushis_option_3" ? true : false,
                'S_SUSHIS_OPTIONS_4'       => $sushis == "sushis_option_4" ? true : false, 
Puis nous allons modifier la partie qui permet d'attribuer un message d'erreur si le champ n'a pas été renseigné.

Information :
sushis_option_0 correspond à ------------------. Pour éviter que le formulaire prenne en compte ce champ, une valeur lui a été attribuée (value="sushis_option_0"). Maintenant il faut dire au formulaire de considérer ce champ comme vide.
  • Pour cela cherchez :

    Code : Tout sélectionner

        if (empty($sushis))
        {
            $error[] = $user->lang['NO_SUSHIS'];
        } 
    Remplacez par :

    Code : Tout sélectionner

        if ($sushis == "sushis_option_0")
        {
            $error[] = $user->lang['NO_SUSHIS'];
        } 
Et voila !

2 - A partir d'un champ type bouton radio
Ouvrez le fichier « presentation_body ».
  • Trouvez :

    Code : Tout sélectionner

       <dl style="clear: left;">
          <dt><label for="sushis">{L_SUSHIS}*</label></dt>
          <dd><input type="radio" name="sushis" id="sushis" size="25" tabindex="12" value="sushis_option_1" class="inputbox autowidth"<!-- IF S_SUSHIS_OPTIONS_1 --> checked<!-- ENDIF -->>{L_SUSHIS_OPTION_1}</dd>
          <dd><input type="radio" name="sushis" id="sushis" size="25" tabindex="13" value="sushis_option_2" class="inputbox autowidth"<!-- IF S_SUSHIS_OPTIONS_2 --> checked<!-- ENDIF -->>{L_SUSHIS_OPTION_2}</dd>
       </dl
    Remplacez par :

    Code : Tout sélectionner

    	<dl style="clear: left;">
    		<dt><label for="sushis">{L_SUSHIS}*</label></dt>
    			<dd>
    			<select id="sushis" name="sushis" tabindex="12">
    			    <option value="sushis_option_0"> --------------- </option>
                    <option value="sushis_option_1"<!-- IF S_SUSHIS_OPTIONS_1 --> selected<!-- ENDIF -->>{L_SUSHIS_OPTION_1}</option> 
                    <option value="sushis_option_2"<!-- IF S_SUSHIS_OPTIONS_2 --> selected<!-- ENDIF -->>{L_SUSHIS_OPTION_2}</option> 
                    <option value="sushis_option_3"<!-- IF S_SUSHIS_OPTIONS_3 --> selected<!-- ENDIF -->>{L_SUSHIS_OPTION_3}</option> 
                    <option value="sushis_option_4"<!-- IF S_SUSHIS_OPTIONS_4 --> selected<!-- ENDIF -->>{L_SUSHIS_OPTION_4}</option> 
    			</select>
    			</dd>
    	</dl>
Note : Nous utilisons des noms de clés génériques. Chaque identifiant (value="") doit être unique !
Enregistrer le fichier modifié.

Nous allons maintenant attribuer les clés de langue.
Pour cela, ouvrez le fichier de langue « presentation.php ».
  • Cherchez :

    Code : Tout sélectionner

         'SUSHIS_OPTION_1'         => 'Oui j’aime les sushis !',
         'SUSHIS_OPTION_2'         => 'Non je déteste les sushis...', 
    Remplacez par :

    Code : Tout sélectionner

         'SUSHIS_OPTION_1'         => 'Oui j’aime les sushis !',
         'SUSHIS_OPTION_2'         => 'Non je déteste les sushis...',
         'SUSHIS_OPTION_3'         => 'J’aime les sushis avec du saké',
         'SUSHIS_OPTION_4'         => 'Non je préfère le saké !', 
Puis nous allons nous occuper du fichier « presentation.php » (celui qui se trouve à la racine du forum).

Pour ne pas perdre les données du champ « sushis » (si aucun choix n'a été fait), nous allons modifier deux variables.
  • Cherchez :

    Code : Tout sélectionner

                'S_SUSHIS_OPTIONS_1'       => $sushis == "sushis_option_1" ? true : false,
                'S_SUSHIS_OPTIONS_2'       => $sushis == "sushis_option_2" ? true : false, 
    Remplacez par :

    Code : Tout sélectionner

                'S_SUSHIS_OPTIONS_1'       => $sushis == "sushis_option_1" ? true : false,
                'S_SUSHIS_OPTIONS_2'       => $sushis == "sushis_option_2" ? true : false,
                'S_SUSHIS_OPTIONS_3'       => $sushis == "sushis_option_3" ? true : false,
                'S_SUSHIS_OPTIONS_4'       => $sushis == "sushis_option_4" ? true : false, 
Puis nous allons modifier la partie qui permet d'attribuer un message d'erreur si le champ n'a pas été renseigné.

Information :
sushis_option_0 correspond à ------------------. Pour éviter que le formulaire prenne en compte ce champ, une valeur lui a été attribuée (value="sushis_option_0"). Maintenant il faut dire au formulaire de considérer ce champ comme vide.
  • Pour cela cherchez :

    Code : Tout sélectionner

        if (empty($sushis))
        {
            $error[] = $user->lang['NO_SUSHIS'];
        } 
    Remplacez par :

    Code : Tout sélectionner

        if ($sushis == "sushis_option_0")
        {
            $error[] = $user->lang['NO_SUSHIS'];
        } 
Et voila !

Ce que l'on peut modifier

Vous pouvez changer ce qui s'affichera dans la barre de titre du navigateur.
Cherchez :
  • Code : Tout sélectionner

        'SUBMIT_PRESENTATION'   => 'Envoyer sa présentation', 
    Remplacez Envoyer sa présentation, par le texte voulu.
Vous pouvez aussi changer la traduction des champs.
Pour cela ouvrez le fichier de langue « presentation.php ».
  • Cherchez :

    Code : Tout sélectionner

        'PRESENT_USERNAME'        => 'Nom d’utilisateur :',
        'NICKNAME'                => 'Pseudo en jeu :',
        'AGE'                     => 'Âge :',
        'SEXE'                    => 'Sexe :',
        'PRESENT_LOCATION'        => 'Localisation :',
        'MALE'                    => 'Masculin',
        'FEMALE'                  => 'Féminin',
        'TEXT_PRESENTATION'       => 'Texte de présentation :', 
Nous pouvons aussi modifier les messages de confirmations d'envois du formulaire.
Cherchez :
  • Code : Tout sélectionner

        'PRESENTATION'            => 'Présentation de ',
        'SUBMIT_FORM'             => 'Votre présentation a été envoyée.<br /><br />',
        'PRESENT_REDIRECT'        => 'Vous allez être redirigé vers le forum des %sprésentations%s.', 
    Toutes les traductions des clés de langue du fichier « presentation.php » sont modifiables.
    Note : Attention de ne pas supprimer les ',%s, => qui entourent les variables.
Modifié en dernier par Censure le 28 juil. 2014 à 20:35, modifié 67 fois.
Zoddo
Equipe site
Equipe site
Messages : 7074
Enregistré le : 16 mars 2011 à 17:44
Localisation : Laval, France
Contact :

Re: Formulaire de présentation.

Message par Zoddo »

Bon bah rien à redire pour moi si ce n'est qu'il faudrait utiliser pour tous les messages les clés dans langue (message de confirmation par exemple).

Ah si, y'a un petit oublie, on est pas en septembre 2010 :mrgreen:

Code : Tout sélectionner

* @version $Id: applciation.php,v1.0.0 2010/09/05 2:43 PM PPCW2 Exp $
Remplace tout simplement par ça : ;)

Code : Tout sélectionner

* @version $Id$
Concernant le lien de l'archive, de tout façon, elle sera surement ré-héberger sur notre FTP.
[Doc] Installer une extension - [Extension] Post Models - [Recrutement] Équipe des Extensions
Si vous considérez votre requête comme résolue, merci d'ajouter l'attribut de sujet [Réglé]
Avatar du membre
Censure
Posteur habitué
Posteur habitué
Messages : 241
Enregistré le : 23 oct. 2012 à 15:37
Localisation : Infiltrate !
Contact :

Re: Formulaire de présentation.

Message par Censure »

Je corrige ça. :mrgreen:
Édit : Corrigé.
Avatar du membre
cabot
Equipe site
Equipe site
Messages : 28249
Enregistré le : 13 févr. 2011 à 19:42
Localisation : Rarement sur la plaque
Contact :

Re: Formulaire de présentation.

Message par cabot »

J'ai fait quelques petites modifs dans le fichier application.html :
  • Déplacement de tout le bloc et du titre dans le formulaire.
  • Suppression du titre H2 pour les erreurs.
    :!: Penser à supprimer la clé de langue {ERROR_TITLE} dans le fichier de traduction.
  • Remplacement de la liste de définition par une balise de paragraphe pour les erreurs.
  • Remplacement de la liste de définition par une balise de paragraphe pour l'explication des champs obligatoires.
  • Suppression des attributs value vides.
  • Suppression de l'attribut tabindex sur le bouton de validation.
application.zip
(791 Octets) Téléchargé 429 fois
ps : j'ai eu un petit moment d'émotion lorsque j'ai vu tous ces sushis :mrgreen:

ps2 : Namého :mrgreen: :mrgreen:
Image



edit : je m'étais planté de fichier, je viens de refaire l'archive. ^^
Avatar du membre
Censure
Posteur habitué
Posteur habitué
Messages : 241
Enregistré le : 23 oct. 2012 à 15:37
Localisation : Infiltrate !
Contact :

Re: Formulaire de présentation.

Message par Censure »

Techniquement c'est corrigé.
Je n'ai pas renvoyer les archives, j'ai un petit soucis avec mon forum. (vive les pages blanches) :mrgreen:
Avatar du membre
cabot
Equipe site
Equipe site
Messages : 28249
Enregistré le : 13 févr. 2011 à 19:42
Localisation : Rarement sur la plaque
Contact :

Re: Formulaire de présentation.

Message par cabot »

Vérifie bien les modifs indiquées dans ton tuto pour le fichier HTML, car le code n'est pas le même que celui de la dernière archive. :wink:
Avatar du membre
Censure
Posteur habitué
Posteur habitué
Messages : 241
Enregistré le : 23 oct. 2012 à 15:37
Localisation : Infiltrate !
Contact :

Re: Formulaire de présentation.

Message par Censure »

Ah ! Je corrige ça de suite. En effet j'avais oublier de modifier une partie.
Avatar du membre
cabot
Equipe site
Equipe site
Messages : 28249
Enregistré le : 13 févr. 2011 à 19:42
Localisation : Rarement sur la plaque
Contact :

Re: Formulaire de présentation.

Message par cabot »

Pour ma partie, c'est bon. :wink:

Reste à ajouter les clés de langue, comme indiqué par Zoddo, et si Fofa valide aussi de son côté, on envoie la sauce. :D
Avatar du membre
Censure
Posteur habitué
Posteur habitué
Messages : 241
Enregistré le : 23 oct. 2012 à 15:37
Localisation : Infiltrate !
Contact :

Re: Formulaire de présentation.

Message par Censure »

Effectivement, encore deux petites clefs à ajouter et hop !

Je corrige ça dès que possible.
Skouat
Resp. Traducteurs
Resp. Traducteurs
Messages : 15959
Enregistré le : 02 avr. 2008 à 20:47
Contact :

Re: Formulaire de présentation.

Message par Skouat »

Bonjour,

Quelques petites remarques ;)
  • Location en français c'est à traduire par Emplacement. Car location en FR ca ne signifie pas la même chose. :wink:
  • il faut une espace (insécable de préférence) avant toutes les doubles ponctuations ( ?, !, : et ;).
    C'est globalement correct, sauf pour les ? et quelques :
  • les " sont à remplacer par «  et  ».
  • Attention aux anglicismes !
    uploader est à remplacer par transférer
    loggé est à remplacer par connecté
  • Attention ! il n'est mentionné nul par que les textes contenant des caractères accentués (Ex : les clés de langues) doivent être placés dans des fichiers encodés en UTF-8 sans BOM.
  • il manque une espace après changer dans la phrase
    ChangerVous allez être redirigé sur le forum. par le message voulu.
    et accessoirement ce n'est pas plutot être redirigé vers ?
  • nous y somme il faut un s à sommes
  • Mais ou ajouter notre clef => et éventuellement clé
  • Impératif vs infinitif....
    Tu mélanges la forme impérative des verbes avec la forme infinitive sans trop de logique.
    Ceci est de plus en plus brouillon sur la fin du doc.
    Voir à prendre le parti pour une forme ou l'autre et de limiter le mélange.
Ca sera tout pour le moment, j'ai juste parcouru rapidement sans trop rentrer dans les détails.

A+
Avatar du membre
Censure
Posteur habitué
Posteur habitué
Messages : 241
Enregistré le : 23 oct. 2012 à 15:37
Localisation : Infiltrate !
Contact :

Re: Formulaire de présentation.

Message par Censure »

Merci Skouat.
Je sais que la fin de la doc. est brouillon. Je ferai de mon mieux pour corriger toutes ces erreurs.

Pour le moment j'ai quelques problèmes à résoudre. Je m'y remet dès que possible ;)
FoFa
Resp. des supporters
Resp. des supporters
Messages : 10515
Enregistré le : 15 nov. 2008 à 18:04
Localisation : Auxonne
Contact :

Re: Formulaire de présentation.

Message par FoFa »

Bonsoir,

J'ai enfin pu mettre les fichiers en ligne sur mon forum test ^_^

Déjà deux petites choses:
  • personnellement, j'éviterais de nommer un fichier submit.php Pourquoi pas introduction.php ou presentation.php
  • d'autre part, si je nomme un fichier presentation.php, alors le fichier template, je le nomme presentation_body.html. Cela me permet de tout de suite savoir quel fichier template est associé, sans avoir à m'en souvenir.
Sinon, je suis en train de voir pour résoudre ce souci => http://forums.phpbb-fr.com/coding-webma ... l#p1572971

@+++
De retour parmi vous :wink:
Avatar du membre
Censure
Posteur habitué
Posteur habitué
Messages : 241
Enregistré le : 23 oct. 2012 à 15:37
Localisation : Infiltrate !
Contact :

Re: Formulaire de présentation.

Message par Censure »

Ah oui, effectivement. Je ferais les modifications dès que possible. Avec vos explications ça devrais être plutôt facile. J'en profiterais pour faire une documentation plus complète et plus explicite.

Mais comme dit plus haut j'ai quelques soucis personnel à régler avant.

Merci à vous d'avoir pris le temps de vérifier les fichiers et la doc.
FoFa
Resp. des supporters
Resp. des supporters
Messages : 10515
Enregistré le : 15 nov. 2008 à 18:04
Localisation : Auxonne
Contact :

Re: Formulaire de présentation.

Message par FoFa »

La vie privée passe avant tout.

Cela me donnera le temps de passer de manière plus approfondie dans le fichier.
De retour parmi vous :wink:
Geo
Trifouilleur de code
Messages : 11279
Enregistré le : 25 févr. 2010 à 05:03
Localisation : Nantes, France
Contact :

Re: Formulaire de présentation.

Message par Geo »

Hello,

Quand le côté pratique et linguistique seras abouti, je te ferais un retour de code car il y a pas mal de choses à optimiser/modifier ;)

Amicalement
Tout mes MODs/Extensions sont maintenant au statut abandonné.
Répondre

Retourner vers « Discussions sur phpBB3 »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 0 invité