Fork me on GitHub











Mettre à  jour le module systême

Attention si vous utilisez les templates.

Il faut modifier le template que vous avez créé.

Cliquez sur Liste de l'item Systême, puis éditez system_userinfo.html en ajoutant la modification ci-dessus.



Testez maintenant 'Voir son compte'



10) Editer son compte



Fichier style="color: rgb(0, 0, 255);">/edituser.php

Dans la partie

if ($op == 'saveuser') {

Sous la ligne

$edituser->setVar('name', $name);




Ajoutez

$edituser->setVar('genre', $genre);



Dans la partie

if ($op == 'editprofile') {

Sous les lignes

$name_text = new XoopsFormText(_US_REALNAME, 'name', 30, 60, $xoopsUser->getVar('name', 'E'));$form->addElement($name_text);



Ajoutez

$genre_select = new XoopsFormSelectGenre(_US_GENRE, 'genre', $xoopsUser->getVar('genre'));

$form->addElement($genre_select);




Testez maintenant 'Editer son compte'



11) Administration membre



Fichier style="color: rgb(0, 0, 255);">/modules/system/admin/users/userform.php

Au début, sous la ligne

$name_text = new XoopsFormText(_AM_NAME, "name", 30, 60, $name_value);



Ajoutez

$genre_select = new XoopsFormSelectGenre(_AM_GENRE, "genre", $genre_value);



Vers la fin, sous la ligne

$form->addElement($name_text);



Ajoutez

$form->addElement($genre_select);



12) Administration membre: fichier principal



Fichier style="color: rgb(0, 0, 255);">/modules/system/admin/users/main.php

Modifiez l'appel à  la fonction updateUser



updateUser($uid, $uname, $name, $genre, $url, $email, $user_icq, $user_aim, $user_yim, $user_msnm, $user_from, $user_occ, $user_intrest, $user_viewemail, $user_avatar, $user_sig, $attachsig, $theme, $pass, $pass2, $rank, $bio, $uorder, $umode, $notify_method, $notify_mode, $timezone_offset, $user_mailok);



13) Administration : édition/mise à  jour du membre



Fichier style="color: rgb(0, 0, 255);">/modules/system/admin/users/users.php



Au début de la fonction function displayUsers()

Ajoutez dans la liste

$genre_value = "0";



Dans la fonction : function modifyUser($user)

Sous la ligne

$name_value = $user->getVar("name", "E");



Ajoutez

$genre_value = $user->getVar("genre");



Dans la fonction : function updateUser

function updateUser($uid, $uname, $name, $genre, $url, $email, $user_icq, $user_aim, $user_yim, $user_msnm, $user_from, $user_occ, $user_intrest, $user_viewemail, $user_avatar, $user_sig, $attachsig, $theme, $pass, $pass2, $rank, $bio, $uorder, $umode, $notify_method, $notify_mode, $timezone_offset, $user_mailok)



puis sous la ligne

$edituser->setVar("name", $name);



Ajoutez

$edituser->setVar("genre", $genre);



14) Définition de langage pour l'administration



Fichier style="color: rgb(0, 0, 255);">/modules/system/language/.../admin/users.php

define("_AM_GENRE","Genre");



Testez maintenant ''Editer/effacer des membres' dans la partie administration de Xoops.



The End !



jbaudin
Licence, certains droits réservés
Partager Twitter Partagez cette article sur GG+
  Voir cet article en format PDF Imprimer cet article Envoyer cet article

Documentations > Utilisateurs standards > Personnaliser son site > Modifier le formulaire d'inscription (exemple pratique)

Modifier le formulaire d'inscription (exemple pratique)


Ce guide a pour but de vous expliquer comment modifier le formulaire d'inscription, en ajoutant une liste déroulante pour déterminer le genre de l'utilisateur (Monsieur, Madame, Mademoiselle).


Comme indiqué dans l'article "Modifier le formulaire d'inscription", je ne saurai trop vous conseiller de faire une sauvegarde de votre base ainsi que des fichiers que nous allons modifier.


J'espêre que l'auteur de l'article "Modifier le formulaire d'inscription" ne m'en voudra pas d'avoir largement copié son texte en l'adaptant pour cet article.

Je l'ai fait dans le but de garder une cohérence de présentation et saluer son travail que j'utilise beaucoup dans mes installations.


1) Ajout du code nécessaire au remplissage de la liste


a) Création du fichier /class/xoopsform/formselectgenre.php

<?php<br />
    <br />
    include_once XOOPS_ROOT_PATH."/class/xoopslists.php";<br />
    include_once XOOPS_ROOT_PATH."/class/xoopsform/formselect.php";<br />
    <br />
    class XoopsFormSelectGenre extends XoopsFormSelect<br />
    {<br />
        function XoopsFormSelectGenre($caption, $name, $value=null, $size=1)<br />
        {<br />
            $this->XoopsFormSelect($caption, $name, $value, $size);<br />
            $this->addOptionArray(XoopsLists::getGenreList());<br />
        }<br />
    }<br />
    ?>





b) Modification du fichier /class/xoopslists.php

En dessous de

if ( !defined("XOOPS_LISTS_INCLUDED") ) {

define("XOOPS_LISTS_INCLUDED",1);

class XoopsLists

{




Ajoutez

function &getGenreList()

{

include_once XOOPS_ROOT_PATH.'/language/'.$GLOBALS['xoopsConfig']['language'].'/user.php';

$genre_list = array ("0" => _US_GENRE_MAN, "1" => _US_GENRE_WOMAN, "2" => _US_GENRE_MISS);

return $genre_list;

}




C'est ici qu'il faut ajouter les champs si vous désirez créer une liste autre que pour le genre.

0 : premier item. Dans l'exemple "0" => _US_GENRE_MAN

1 : deuxiême item. Dans l'exemple "1" => _US_GENRE_WOMAN

2 : troisiême item. Dans l'exemple "2" => _US_GENRE_MISS

etc...


c) Modification du fichier /class/xoopsformloader.php

En dessous de

include_once XOOPS_ROOT_PATH."/class/xoopsform/formdatetime.php";



Ajoutez

include_once XOOPS_ROOT_PATH."/class/xoopsform/formselectgenre.php";


d) Modification du fichier /include/functions.php

Ajouter la fonction suivante :

function xoops_getgenre($genre_id =0)

{



switch ($genre_id) {

case '0':

$genre_lib = _US_GENRE_MAN;

break;

case '1':

$genre_lib = _US_GENRE_WOMAN;

break;

case '2':

$genre_lib = _US_GENRE_MISS;

break;

default:

$genre_lib = _US_GENRE_MAN;

break;

}



return $genre_lib;

}




Lí  aussi, veuillez à  ajouter vos items.



Votre liste est remplie et prête à  être utiliée partout où vous le désirez.


2) Formulaire d'enregistrement


Fichier /include/registerform.php

Sous la ligne

$reg_form->addElement(new XoopsFormText(_US_NICKNAME, "uname", 26, 25, $uname), true);



Ajoutez

$reg_form->addElement(new XoopsFormSelectGenre(_US_GENRE, "genre", $genre));


3) Définitions de langage


Fichier language/...../user.php

Sous la ligne

define('_US_NAME','Name');



Ajoutez

define('_US_GENRE','Genre');


4) Table xoops_users


Ajoutez un champs genre, de type float (0,0 par défaut) aprês le champ name.

Attention, l'emplacement de ce champ est important !


5) Classe user


Modifiez la classe user pour la prise en compte du nouveau champ genre

Fichier style="color: rgb(0, 0, 255);">/kernel/user.php



Sous les lignes

function XoopsUser($id = null)

$this->initVar('name', XOBJ_DTYPE_TXTBOX, null, false, 60);



Ajoutez

$this->initVar('genre', XOBJ_DTYPE_OTHER, null, false);



Ajoutez la fonction

function genre()

{

$this->_genre = xoops_getgenre($this->getVar('genre'));

return $this->_genre;

}




Dans la fonction : function insert(&$user, $force = false)

insérez les parties en rouge: (respectez ici pour votre nouveau champ sa position dans la table users)



if ($user->isNew()) {

$sql = sprintf("INSERT INTO %s (uid, uname, name,
genre, email, ....

...... VALUES (%u, %s, %s,
%.2f, %s, .....

..... $this->db->quoteString($uname), $this->db->quoteString($name), $genre,

$this->db->quoteString($email),....



} else {

$sql = sprintf("UPDATE %s SET uname = %s, name = %s,
genre = %.2f, email = %s .....

.... $this->db->quoteString($uname), $this->db->quoteString($name),
$genre,

$this->db->quoteString($email), ....



6) Gestion du formulaire d'inscription


Fichier /register.php



Partie case 'newuser':

Sous la ligne

<input type='hidden' name='uname' value='".$myts->makeTboxData4PreviewInForm($uname)."' />



Ajoutez

<input type='hidden' name='genre' value='".(float)$genre."' />



Partie case 'finish':

Sous la ligne

$newuser->setVar('uname', $uname);



Ajoutez

$newuser->setVar('genre', $genre);



7) Définitions de langage



Fichier style="color: rgb(0, 0, 255);">/language/...../user.php

Sous la ligne

define('_US_NAME','Name');



Ajoutez

define('_US_GENRE','Genre');

define('_US_GENRE_MAN','Monsieur');

define('_US_GENRE_WOMAN','Madame');

define('_US_GENRE_MISS','Mademoiselle');




Testez maintenant l'enregistrement d'un membre.



8) Affichage du profil



Fichier style="color: rgb(0, 0, 255);">/userinfo.php

Sous les lignes

$xoopsTpl->assign('lang_realname', _US_REALNAME);

$xoopsTpl->assign('user_realname', $thisUser->getVar('name'));




Ajoutez

$xoopsTpl->assign('lang_genre', _US_GENRE);

$usergenre =& $thisUser->genre();

$xoopsTpl->assign('user_genre', $usergenre);




9) Template d'affichage du profil



Fichier style="color: rgb(0, 0, 255);">/modules/system/templates/system_userinfo.html

En rajoutant

<{$lang_genre}> <{$user_genre}>
Naviguer à travers les articles
Article précédent Modifier le formulaire d'inscription Optimiser le moteur de recherche Google et le programme publicitaire Adsense pour Xoops Article suivant
Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

32 Personne(s) en ligne (1 Personne(s) connectée(s) sur Documentations) | Utilisateur(s): 0 | Invité(s): 32 | Plus ...