Gestion de Contenu, de Communauté et de groupes de travail collaboratif - Open Source, français, sécurisé, stable et performant

  • MODULES

    Pour étendre les nombreuses fonctionnalités disponibles de base - modules.npds.org est à votre disposition.

    Des modules complémentaires, une communauté de développeurs active, des forums pour vos questions ... NPDS  est aussi une plateforme de développement !
  • STYLES

    Vous cherchez des thèmes graphiques pour votre portail ou votre communauté : styles.npds.org est à votre disposition.

    Des thèmes du plus simple au plus sophistiqué. Des thèmes facilement modifiables et toujours en Open-Source - Laissez simplement parler votre imagination !
  • BIBLES

    La documentation indispensable pour personnaliser et exploiter toute la puissante de NPDS  est à votre disposition sur bible.npds.org.

    Vous pouvez participer à l'effort de documentation - rien de plus simple : contactez un membre de la Team de développement et nous vous ouvrirons un compte sur le Wiki !
Devenir membre    |    Identifiant : Mot de Passe : -
Au delà de la gestion de contenu 'classique', NPDS met en oeuvre un ensemble de fonctions spécifiquement dédiées à la gestion de Communauté et de groupes de travail collaboratif.
Il s'agit d'un Content & Community Management System (CCMS) robuste, sécurisé, complet, performant et parlant vraiment français.

Gérez votre Communauté d'utilisateurs, vos groupes de travail collaboratif, publiez, gérez et organisez votre contenu grâce aux puissants outils disponibles de base.
  • Multi langues (Français, Anglais, Allemand, Espagnol, Chinois)
  • Respect des standards : UTF8, XHTML, CSS, ...
  • Système de blocs avancés
  • Installation et administration complète et centralisée
  • Editeur HTML intégré
  • Gestionnaire de fichier en ligne
  • Gestion des groupes de membres
  • Ecriture collaborative de documents (PAD)
  • Forums évolués
  • Mini-sites (pour les membres et les groupes de travail)
  • Chat temp réel
  • Système de News et de rubriques complet (édition, révision, publication)
  • ...
Gratuit et libre (Open-Source), développé en PHP, NPDS est personnalisable grâce à de nombreux thèmes et modules et ne requiert que quelques compétences de base.
NPDS Workplace - groupe de travail collaboratif
 NPDS WorkSpace - tous l'univers du travail collaboratif.
Modules : Modification de la fiche Membre avec SForm
Posté par : Tyr62

Rechercher dans NPDS
Si vous voulez modifier un peu les informations demandées lors de la création d'un utilisateur ou modifier l'affichage des informations dans le forum (avatar, pseudo, post...)
Je vous propose un petit exemple que j'ai réalisé. Il n'est peut etre pas super bien scripter mais je débute en php et trouver toutes les informations dans les tonnes de fichiers npds il n'y a que Developpeur pour le faire :)

Vous pouvez modifier et disposer de ce bout de code comme vous le désirez puisque npds est sous licence GNU/GPL

Note : Les espaces entre les < et les > sont voulus, vous devrez les supprimer. Ils étaient mis pour afficher le code !
Nous allons utiliser les valeurs laissées vide dans npds c'est a dire les C3, C4, C5... mais aussi les C1 et C2 qui normalement sont remplis mais qui ne servent a rien selon moi :)


(Je vous conseille avant tout de lire le fichier SForm-generator-Fields-description.pdf en anglais disponible dans modules/sform/documentations/)

Allez dans le dossier modules/sform/extend-user/ puis ouvrez le fichier formulaire.php
C'est ici que vous allez modifier l'affichage du formulaire de création d'utilisateur. Pour mon exemple j'ai rajouté quelques champs apres Votre Avatar et avant Votre adresse ICQ

Cherchez la ligne n°43 puis ajoutez ceci :

// Affiche une barre de séparation pour bien séparer les informations
$m->add_extra("< tr >< td colspan=2 > < /td >< /tr >");

// Affiche une entete pour que l'user comprenne de quoi ca parle
$m->add_comment("< center >.: Votre personnage sur Ganareth :.< /center >");

// Affiche un champ de sélection de texte limité a 50 caracteres
$m->add_field('C1', 'Vos Nom & Prenom :',$dname,'text',false,50,"","");

// Affiche un combo de sélection avec une seule sélection possible pour la race
$race=array(
"Demi-troll"=>array('en'=>"Demi-troll", 'selected'=>false),
"Demi-orque"=>array('en'=>"Demi-orque", 'selected'=>false),
"Brave"=>array('en'=>"Brave", 'selected'=>false),
"Humain"=>array('en'=>"Humain", 'selected'=>false),
);
$m->add_select('C2', "Votre Race", $race, false, 1, false);

// Affiche un combo de sélection avec une seule sélection possible pour la classe
$classe=array(
"Guerrier"=>array('en'=>"Guerrier", 'selected'=>false),
"Moine"=>array('en'=>"Moine", 'selected'=>false),
"Paladin"=>array('en'=>"Paladin", 'selected'=>false),
"ShadowKnight"=>array('en'=>"ShadowKnight", 'selected'=>false),
"Archer"=>array('en'=>"Archer", 'selected'=>false),
);
$m->add_select('C3', "Votre Classe", $classe, false, 1, false);

// Affiche une case texte limité a 3 caracteres pour le niveau de combat
$m->add_field('C4', 'Niveau de Fight eXPerience :',$fxp,'text',false,3,"","");

// Affiche encore un combo pour le métier du personnage
$metier=array(
"Chaudronnier"=>array('en'=>"Chaudronnier", 'selected'=>false),
"Armurier"=>array('en'=>"Armurier", 'selected'=>false),
"Forgeron"=>array('en'=>"Forgeron", 'selected'=>false),
"Tailleur"=>array('en'=>"Tailleur", 'selected'=>false),
);
$m->add_select('C5', "Votre Métier", $metier, false, 1, false);

// Affiche une case texte limité a 3 caracteres pour le niveau du métier
$m->add_field('C6', 'Niveau de Social eXPerience :',$sxp,'text',false,3,"","");

// Affiche un combo pour choisir le type de magie du personnage
$align=array(
"Light"=>array('en'=>"Light", 'selected'=>true),
"Dark"=>array('en'=>"Dark", 'selected'=>false),
"Neutre"=>array('en'=>"Neutre", 'selected'=>false),
);
$m->add_select('C7', "Votre type de magie", $align, false, 1, false);

// Affiche un combo pour choisir le dieu du personnage
$dieu=array(
"Aesir"=>array('en'=>"Aesir", 'selected'=>true),
"Agnar"=>array('en'=>"Agnar", 'selected'=>false),
"Calder"=>array('en'=>"Calder", 'selected'=>false),
);
$m->add_select('C8', "Votre Divinité", $dieu, false, 1, false);

// Affiche une barre de séparation pour bien séparer les informations
$m->add_extra("< tr >< td colspan=2 > < /td >< /tr >");

Maintenant le formulaire doit ressembler a ceci
Mais il faut aussi désactiver l'extender form du formulaire car nous utilisons les champs C1 et C2
Pour cela désactivez le code ci-dessous toujours dans le meme fichier en placant deux // (anti slash) devant chaques lignes :

// --- EXTENDER
if (file_exists("modules/sform/extend-user/extender/formulaire.php")) {
$m->add_extra("< tr >< td colspan=2 > < /td >< /tr >");
!include!("modules/sform/extend-user/extender/formulaire.php");
}
// --- EXTENDER

Vous devez maintenant ouvrir le fichier aff_formulaire.php toujours dans le meme dossier
Et placez les lignes suivantes au meme endroit que dans le fichier formulaire.php c'est a dire apres Votre Avatar

$m->add_extra("< tr >< td colspan=2 > < /td >< /tr >");
$m->add_comment("< center >.: Votre personnage sur Ganareth :.< /center >");

$m->add_field('C1', 'Vos Nom & Prenom :',$C1,'text',false,50,"","");
$m->add_field('C2', "Votre Race", $C2, 'text',false,50,"","");
$m->add_field('C3', "Votre Classe", $C3, 'text',false,50,"","");
$m->add_field('C4', "Niveau de Fight eXPerience :", $C4, 'text',false,3,"","");
$m->add_field('C5', "Votre Métier", $C5, 'text',false,50,"","");
$m->add_field('C6', "Niveau de Social eXPerience :", $C6, 'text',false,3,"","");
$m->add_field('C7', "Votre type de magie", $C7, 'text',false,50,"","");
$m->add_field('C8', "Votre Divinité", $C8, 'text',false,50,"","");

$m->add_extra("< tr >< td colspan=2 > < /td >< /tr >");

Ce code va d'abord afficher le nom des informations (Votre Nom & Prenom ...) puis la valeur des C1, C2, C3 ... dans lesquels nous avons stockés nos informations toute a l'heure
Ca donnera ceci mais vous remarquerez que vous n'avez aucune valeur qui s'affiche ! C'est normal votre code ne comporte pas d'erreurs, nous n'avons tout simplement pas encore était les chercher.

Vous devez maintenant ouvrir le fichier mod_formulaire.php toujours dans le meme dossier
Pour le fichier adm_formulaire.php le code est le meme donc je ne le remarquerai pas une autre fois, mais n'oubliez pas de le faire !
Attention bien que le code ressemble a celui de toute a l'heure ce n'est pas exactement le meme !

// Affiche une barre de séparation pour bien séparer les informations
$m->add_extra("< tr >< td colspan=2 > < /td >< /tr >");

// Affiche une entete pour que l'user comprenne de quoi ca parle
$m->add_comment("< center >.: Votre personnage sur Ganareth :.< /center >");

// Affiche un champ de sélection de texte limité a 50 caracteres
$m->add_field('C1', 'Vos Nom & Prenom :',$C1,'text',false,50,"","");

// Affiche un combo de sélection avec une seule sélection possible pour la race
$race=array(
"$C2"=>array('en'=>"$C2", 'selected'=>true),
"Demi-troll"=>array('en'=>"Demi-troll", 'selected'=>false),
"Demi-orque"=>array('en'=>"Demi-orque", 'selected'=>false),
"Brave"=>array('en'=>"Brave", 'selected'=>false),
"Humain"=>array('en'=>"Humain", 'selected'=>false),
);
$m->add_select('C2', "Votre Race", $race, false, 1, false);

// Affiche un combo de sélection avec une seule sélection possible pour la classe
$classe=array(
"$C3"=>array('en'=>"$C3", 'selected'=>true),
"Guerrier"=>array('en'=>"Guerrier", 'selected'=>false),
"Moine"=>array('en'=>"Moine", 'selected'=>false),
"Paladin"=>array('en'=>"Paladin", 'selected'=>false),
"ShadowKnight"=>array('en'=>"ShadowKnight", 'selected'=>false),
"Archer"=>array('en'=>"Archer", 'selected'=>false),
);
$m->add_select('C3', "Votre Classe", $classe, false, 1, false);

// Affiche une case texte limité a 3 caracteres pour le niveau de combat
$m->add_field('C4', 'Niveau de Fight eXPerience :',$C4,'text',false,3,"","");

// Affiche encore un combo pour le métier du personnage
$metier=array(
"$C5"=>array('en'=>"$C5", 'selected'=>true), "Chaudronnier"=>array('en'=>"Chaudronnier", 'selected'=>false),
"Armurier"=>array('en'=>"Armurier", 'selected'=>false),
"Forgeron"=>array('en'=>"Forgeron", 'selected'=>false),
"Tailleur"=>array('en'=>"Tailleur", 'selected'=>false),
);
$m->add_select('C5', "Votre Métier", $metier, false, 1, false);

// Affiche une case texte limité a 3 caracteres pour le niveau du métier
$m->add_field('C6', 'Niveau de Social eXPerience :',$C6,'text',false,3,"","");

// Affiche un combo pour choisir le type de magie du personnage
$align=array(
"$C7"=>array('en'=>"$C7", 'selected'=>true),
"Light"=>array('en'=>"Light", 'selected'=>true),
"Dark"=>array('en'=>"Dark", 'selected'=>false),
"Neutre"=>array('en'=>"Neutre", 'selected'=>false),
);
$m->add_select('C7', "Votre type de magie", $align, false, 1, false);

// Affiche un combo pour choisir le dieu du personnage
$dieu=array(
"$C8"=>array('en'=>"$C8", 'selected'=>true),
"Aesir"=>array('en'=>"Aesir", 'selected'=>true),
"Agnar"=>array('en'=>"Agnar", 'selected'=>false),
"Calder"=>array('en'=>"Calder", 'selected'=>false),
);
$m->add_select('C8', "Votre Divinité", $dieu, false, 1, false);

// Affiche une barre de séparation pour bien séparer les informations
$m->add_extra("< tr >< td colspan=2 > < /td >< /tr >");


Désactivez aussi l'extender form du formulaire car nous utilisons toujours les champs C1 et C2
Pour cela désactivez le code ci-dessous toujours dans le meme fichier en placant deux // (anti slash) devant chaques lignes :

// --- EXTENDER
if (file_exists("modules/sform/extend-user/extender/formulaire.php")) {
$m->add_extra("< tr >< td colspan=2 > < /td >< /tr >");
!include!("modules/sform/extend-user/extender/formulaire.php");
}
// --- EXTENDER


Faite ensuite pareil pour le fichier adm_formulaire.php

Maintenant le plus important, on va lire les valeurs C1, C2 .. pour chaques membres.
Pour cela ouvrez le fichier user.php a la racine de votre site et rajoutez le code suivant dans la function userinfo($uname, $bypass=0)

// Apres le global $name, $email, .... etc...
global $C1, $C2, $C3, $C4, $C5, $C6, $C7, $C8;

// Apres le list($name, $femail, $url, ...etc.... rajouter ceci qui permet de faire une requete sql pour récuperer tous les C avec tous les uid

$userinfo=getusrinfo($user);
$result2 = mysql_query("SELECT C1, C2, C3, C4, C5, C6, C7, C8 FROM users_extend WHERE uid='$userinfo[uid]'");
list($C1, $C2, $C3, $C4, $C5, $C6, $C7, $C8) = mysql_fetch_array($result2);

// Apres le $user_journal=stripslashes(removeHack($user_journal));
$C1=stripslashes(removeHack($C1));
$C2=stripslashes(removeHack($C2));
$C3=stripslashes(removeHack($C3));
$C4=stripslashes(removeHack($C4));
$C5=stripslashes(removeHack($C5));
$C6=stripslashes(removeHack($C6));
$C7=stripslashes(removeHack($C7));
$C8=stripslashes(removeHack($C8));

Voila maintenant si vous avez tout bien suivi et codé vous aurez les infos qui s'affichent pour chaques membres dans les bonnes cases :)
Nous allons donc maintenant les afficher dans le forum dans les cases ou il y a l'avatar et le nombre de post de l'user

Ouvrez le fichier viewtopic.php dans la racine de votre site
Note : Il faudra aussi le faire pour le fichier viewtopicH.php pour l'affiche en Arbre...

Recherchez do { a la ligne 188 normalement
Puis entrez directement en dessous ce code

global $C1, $C2, $C3, $C4, $C5, $C6, $C7, $C8;

$posterdata = get_userdata_from_id($myrow[poster_id]);
$result2 = mysql_query("SELECT C1, C2, C3, C4, C5, C6, C7, C8 FROM users_extend WHERE uid='$posterdata[uid]'");
list($C1, $C2, $C3, $C4, $C5, $C6, $C7, $C8) = mysql_fetch_array($result2);

$C1=stripslashes(removeHack($C1));
$C2=stripslashes(removeHack($C2));
$C3=stripslashes(removeHack($C3));
$C4=stripslashes(removeHack($C4));
$C5=stripslashes(removeHack($C5));
$C6=stripslashes(removeHack($C6));
$C7=stripslashes(removeHack($C7));
$C8=stripslashes(removeHack($C8));


Un peu plus loin dans le code vous devriez retrouver $posterdata = get_userdata_from_id($myrow[poster_id]); Supprimez le sans crainte, nous l'avons deja placé plus haut

Maintenant nous allons gérer l'affichage dans le forum, c'est du html noyé dans le php dc a la limite vous en faite ce que vous voulez

// Apres echo "
Posts : $posts";


if ($C1) {
echo "< hr >";

echo "< b >Nom :< /b > $C1";
echo "< BR >< b >Race :< /b >$C2";
echo "< BR >Classe :< /b > $C3";
echo "< BR >< b >Métier :< /b > $C5";
echo "< BR >< b >Magie : < /b > $C7";
echo "< BR >< b >Dieu :< /b > $C8";

echo "< hr >";
}

Ensuite laissez donc le code de l'avatar et vous obtiendrez quelque chose comme ca & ca
Et la personne anonyme n'aura aucune infos affichées :p

Ca peut sembler dur ou long mais a la fin on peut vraiment se faire un bon site bien perso.
Imaginez le site traitant des Systemes d'exploitation, il peut mettre un combo a la création du compte ou l'on choisi sont Systeme d'exploitation et l'afficher dans le forum, ca évite de poser la question....

Bon codage a tous
Developpeur je crois que je te déteste parce que je n'ai plus de mains :D

Note : "Qui moi ? .... Merci beaucoup Tyr !"

Vendredi 21 mai 2004 @ 23:07:29    Page Spéciale pour impression Envoyer cet Article à un ami    Précédent |  Suivant

Pomme
7540       
 

Pomme
  Posté : 22-05-2004 01:27

EXCELLENT ! Faudrait convertir cet article merveilleux en tuto exemple comment ajouter des chamsp et les exploiter ds le forum !

  Profil
waloukern
612      
 

waloukern
  Posté : 22-05-2004 10:30

Vais essayer,en fonction du résultat je ferai un tutorial avec wink (suis pas encore au point) et vous l'expédie en pdf, html, et flash.

  Profil  www
Tyr62
387      
 

Tyr62
  Posté : 22-05-2004 12:08

Pas contre je crois avoir trouvé un ptit bug dedans au niveau de la visualisation de la fiche quand c'est pas ton compte mais bon ca doit vite se regler :)
Et puis j'pense que ca peut etre optimiser aussi

  Profil  www
Agnes
141     

Agnes
  Posté : 22-05-2004 12:24

Vraiment excellent!
ça me donne envie de me lancer... ms pourrons-nous trouver un support d'aide en cas de pb? ( pour les noob comme moi :-p )

MERCI TYR !

  Profil  www
Tyr62
387      
 

Tyr62
  Posté : 22-05-2004 13:08

Bah j'débute aussi Agnes mais si j'pe t'aider bien sur que je le ferais :)

Mais de rien :)

  Profil  www
Aller à la page : [ 1 | 2 ]
Les Commentaires sont la propriété de leurs auteurs. Nous ne sommes pas responsables de leur contenu.

Temps : 0.0504 seconde(s)