Outils pour utilisateurs

Outils du site


agora_project

Les adhérents sont entrés en tant que contact (module contact) dans un dossier particulier. Ici, nous avons créé un dossier “Adhérents” qui a l'identifiant 4.

ajout de la date d'adhésion

Un champ date est ajouté à la fiche du contact :

modification de la base de donnée

Soit un champ est ajouté à la base manuellement (ou par une interface type PhpMyAdmin), soit il est possible d'utiliser un fichier includes/mise_a_jour.inc.php. C'est cette dernière solution qui a été choisie.

Ajout à la ligne 31, après AJOUT DU CHAMP “COMPETENCES” ET “HOBBIES” DANS LA TABLE “gt_utilisateur” & “gt_contact” :

// AJOUT DU CHAMP "ADHESION" DANS LA TABLE "gt_contact"
     db_test_champ_exist("gt_contact", "adhesion", "ALTER TABLE gt_contact ADD adhesion DATE AFTER siteweb");

Modification de la fiche contact

Dans le fichier module_contact/contact.php, ajout l.54 :

if($contact_tmp["adhesion"]!="")
  echo "<tr><td class=\"lib_user\"><img src=\"".path_templates."module_utilisateurs/user_fonction.png\" /> ".$trad["divers"]["adhesion"]." </td><td>".strftime("%e %b %Y",strtotime($contact_tmp["adhesion"]))."</td></tr>";

Modification de l'édition du contact

Dans le fichier module_contact/contact_edit.php, insertion l.21 de

adhesion=".db_insert($_POST["adhesion"]).",'' :
$corps_sql = " civilite=".db_insert($_POST["civilite"]).",
nom=".db_insert($_POST["nom"]).",
prenom=".db_insert($_POST["prenom"]).",
adresse=".db_insert($_POST["adresse"]).",
codepostal=".db_insert($_POST["codepostal"]).",
ville=".db_insert($_POST["ville"]).",
pays=".db_insert($_POST["pays"]).",
telephone=".db_insert($_POST["telephone"]).",
telmobile=".db_insert($_POST["telmobile"]).",
fax=".db_insert($_POST["fax"]).",
mail=".db_insert($_POST["mail"]).",
siteweb=".db_insert($_POST["siteweb"]).",
adhesion=".db_insert($_POST["adhesion"]).",
competences=".db_insert($_POST["competences"]).",
hobbies=".db_insert($_POST["hobbies"]).",
fonction=".db_insert($_POST["fonction"]).",
societe_organisme=".db_insert($_POST["societe_organisme"]).",
commentaire=".db_insert($_POST["commentaire"]).", raccourci=".db_insert(@$_POST["raccourci"],"bool")." ";

Ajout l.101 :

aff_champ(@$contact_tmp, "adhesion");

Affichage de la date d'adhésion

On choisit de faire afficher la date d'adhésion sur l'affichage par liste et par bloc. De plus, les adhérents non à jour de cotisation sont indiqués en rouge, et ceux dont l'adhésion expire dans les 10 jours sont en orange.

Dans le fichier module_contact/index.php, insertion l.24 de , adhesion=“.db_insert($contact_tmp[“adhesion”]).” :

db_query("UPDATE  gt_utilisateur  SET  civilite=".db_insert($contact_tmp["civilite"]).",
photo=".db_insert($photo_tmp).",
societe_organisme=".db_insert($contact_tmp["societe_organisme"]).",
fonction=".db_insert($contact_tmp["fonction"]).",
adresse=".db_insert($contact_tmp["adresse"]).",
codepostal=".db_insert($contact_tmp["codepostal"]).",
ville=".db_insert($contact_tmp["ville"]).",
pays=".db_insert($contact_tmp["pays"]).",
telephone=".db_insert($contact_tmp["telephone"]).",
telmobile=".db_insert($contact_tmp["telmobile"]).",
fax=".db_insert($contact_tmp["fax"]).",
siteweb=".db_insert($contact_tmp["siteweb"]).",
adhesion=".db_insert($contact_tmp["adhesion"]).",
competences=".db_insert($contact_tmp["competences"]).",
hobbies=".db_insert($contact_tmp["hobbies"]).",
commentaire=".db_insert($contact_tmp["commentaire"])."  WHERE  id_utilisateur=".db_insert($id_user_tmp));

Ajout l.93 :

/// CONTACT A JOUR DE COTISATION ?
if ($contact_tmp["adhesion"] < date("Y-m-j", mktime(0,0,0,date("m"),date("d"),date("Y")-1))) {
   $style = "color:red;";
} elseif ($contact_tmp["adhesion"] < date("Y-m-j", mktime(0,0,0,date("m"),date("d")+10,date("Y")-1))) {
   $style = "color:orange;";
} else {
  $style = "";
}

Ajout l.113 :

if($contact_tmp["adhesion"]!="")
   echo strftime("%e %b %Y",strtotime($contact_tmp["adhesion"]))."<br />";

Ajout l.138 :

if($contact_tmp["adhesion"]!="")
  echo strftime("%e %b %Y",strtotime($contact_tmp["adhesion"]))."<img src=\"".path_templates."divers/separateur.gif\" />";

Ajout d'un critère de tri

Pour trier les contacts par date d'adhésion, modification du fichier module_contact/commun.inc.php.

Insertion l.7 de ,“adhesion@@asc”,“adhesion@@desc” :

$config["tri_contact"] =
 modif_tri_defaut_personnes(array(
"nom@@asc","nom@@desc", "prenom@@asc","prenom@@desc", "civilite@@asc","civilite@@desc",
"date@@desc","date@@asc","codepostal@@asc","codepostal@@desc","ville@@asc","ville@@desc","pays@@asc","pays@@desc",
"fonction@@asc","fonction@@desc","societe_organisme@@asc","societe_organisme@@desc","id_utilisateur@@asc","id_utilisateur@@desc","adhesion@@asc","adhesion@@desc"));

fonction d'affichage d'un calendrier

Pour être certain que la date soit au bon format, un calendrier s'affiche quand on clique sur l'édition du champ adhésion. Dans le fichier fonctions/utilisateur.inc.php, insertion l.255, après :

if ($cle_champ=="pass" or $cle_champ=="pass2") {
  $type_input = "password";
  $autocomplete = "Autocomplete=\"off\"";
}

De :

elseif ($cle_champ =="adhesion") {
  $type_input = "text";
  $value = @$user_tmp[$cle_champ];
  $debut_unix = (@$user_tmp["adhesion"]!="")  ?  strtotime($user_tmp["adhesion"])  :  time();
  $calend = " <iframe id=\"calendrier_date_adhesion\" class=\"menu_flottant calendrier_flottant\"
             src=\"".path_includes."calendrier.inc.php?date_affiche=".$debut_unix."&date_selection=".$debut_unix."&champ_modif=adhesion\"
             frameborder=\"0\" scrolling=\"auto\"></iframe>";
   $calendrier = "cursor:pointer;\" onClick=\"afficher('calendrier_date_adhesion','bascule');\" readonly ";
}

Affichage du nombre d'adhérents à jour de cotisation

Modification de la fonction qui affiche le nombre d'éléments d'un dossier pour compter le nombre d'adhérents à jour, seulement pour le dossier dont l'identifiant est 4.

Dans fonctions/objet.inc.php, Ajout l.467, après :

$nb_elems_tmp    = db_valeur("SELECT count(*) FROM ".$objet_enfant["table_objet"]." WHERE id_dossier=".$id_objet." ".sql_affichage($objet_enfant,$id_objet));

De :

if ($id_objet==4) {
    $nb_adh_ajour = db_valeur("SELECT count(*) FROM ".$objet_enfant["table_objet"]."
    WHERE id_dossier=".$id_objet."
    AND TO_DAYS(NOW()) - TO_DAYS(adhesion) < 365 ".sql_affichage($objet_enfant,$id_objet));
}

Remplacer l.470 :

 $contenu_dossier = $nb_elems_tmp." ".(($nb_elems_tmp>1)?$trad["divers"]["elements"]:$trad["divers"]["element"]);

Par :

if ($id_objet==4) {
  $contenu_dossier = $nb_elems_tmp." ".(($nb_elems_tmp>1)?$trad["divers"]["elements"]:$trad["divers"]["element"])."<br>".$nb_adh_ajour." adh&eacute;rent-es &agrave; jour de cotisation" ;
} else {
  $contenu_dossier = $nb_elems_tmp." ".(($nb_elems_tmp>1)?$trad["divers"]["elements"]:$trad["divers"]["element"]);
}

ajout de l'option bénévole

Un nouveau champ booléan benevole est créé dans la table gt_contact. Si le type BOOL n'est pas pris en compte (comme c'était le cas pour ma base de donnée mysql), il faut créer un champ TINYINT de longueur 1 (0 pour FAUX, 1 pour VRAI).

Modification de la fiche contact

Dans module_contact/contact.php, ajout l.56 :

if($contact_tmp["benevole"]==0) {
    echo "<tr><td class=\"lib_user\"><img src=\"".path_templates."module_utilisateurs/user_fonction.png\" /> ".$trad["divers"]["benevole"]." </td><td>Non</td></tr>";
} else {
    echo "<tr><td class=\"lib_user\"><img src=\"".path_templates."module_utilisateurs/user_fonction.png\" /> ".$trad["divers"]["benevole"]." </td><td>Oui</td></tr>";
}

Modification de l'édition de la fiche contact

Dans module_contact/contact_edit.php, ajout l.20 :

if ($_POST["benevole"]) {$valeur_benevole = "1";} else {$valeur_benevole = "0";}

Insertion de , benevole=“.db_insert($valeur_benevole).” l.21 :

$corps_sql = " civilite=".db_insert($_POST["civilite"]).", nom=".db_insert($_POST["nom"]).", prenom=".db_insert($_POST["prenom"]).",
adresse=".db_insert($_POST["adresse"]).", codepostal=".db_insert($_POST["codepostal"]).", ville=".db_insert($_POST["ville"]).", pays=".db_insert($_POST["pays"]).",
telephone=".db_insert($_POST["telephone"]).", telmobile=".db_insert($_POST["telmobile"]).", fax=".db_insert($_POST["fax"]).", mail=".db_insert($_POST["mail"]).", siteweb=".db_insert($_POST["siteweb"]).",
adhesion=".db_insert($_POST["adhesion"]).", benevole=".db_insert($valeur_benevole).", competences=".db_insert($_POST["competences"]).", hobbies=".db_insert($_POST["hobbies"]).",
fonction=".db_insert($_POST["fonction"]).", societe_organisme=".db_insert($_POST["societe_organisme"]).", commentaire=".db_insert($_POST["commentaire"]).", raccourci=".db_insert(@$_POST["raccourci"],"bool")." ";

Ajout l.102 :

aff_champ(@$contact_tmp, "benevole");

Modification de la fonction aff_champ dans fonctions/utilisateur.inc.php. Remplacer l.268 :

echo "<td class=\"".$style_txt."\" style=\"width:40%;\">".$trad["divers"][$cle_champ]."</td>";
echo "<td>".$calend."<input type=\"".$type_input."\" name=\"".$cle_champ."\" value=\"".$value."\" ".$autocomplete." style=\"width:100%; \" ".$calendrier." /></td>";

par :

if ($cle_champ =="benevole") {
              echo "<td class=\"".$style_txt."\" style=\"width:40%;\">".$trad["divers"][$cle_champ]."</td>";
              if ($value == "1") {
                      echo "<td><input type=\"checkbox\" name=\"benevole[]\" value=\"".$value." \"style=\"width:100%;\" checked=\"checked\" ; /></td>";
              } else {
                      echo "<td><input type=\"checkbox\" name=\"benevole[]\" value=\"".$value." \"style=\"width:100%;\" /></td>";
              }
      } else {
              echo "<td class=\"".$style_txt."\" style=\"width:40%;\">".$trad["divers"][$cle_champ]."</td>";
              echo "<td>".$calend."<input type=\"".$type_input."\" name=\"".$cle_champ."\" value=\"".$value."\" ".$autocomplete." style=\"width:100%; \" ".$calendrier." /></td>";
}

Ajout d'un critère de tri

Les bénévoles sont en premier sur la liste. Dans le fichier module_contact/commun.inc.php

Insertion l.7 de ,“benevole@@desc” :

$config["tri_contact"] =
modif_tri_defaut_personnes(array(
"nom@@asc","nom@@desc", "prenom@@asc","prenom@@desc", "civilite@@asc","civilite@@desc",
"date@@desc","date@@asc","codepostal@@asc","codepostal@@desc","ville@@asc","ville@@desc","pays@@asc","pays@@desc",
"fonction@@asc","fonction@@desc","societe_organisme@@asc","societe_organisme@@desc","id_utilisateur@@asc","id_utilisateur@@desc",
"benevole@@desc","adhesion@@asc","adhesion@@desc"));

Envoi de mail

Pour l'envoi de mail, la sélection des adhérents à jour de cotisation se fait sur la base de la couleur du nom (rouge si l'adhérent est à jour, orange si l'adhésion est bientôt expirée). L'affichage doit donc être modifié dans le fichier module_mail/index.php.

Ajout l.185 :

if ($contact_tmp["adhesion"] < date("Y-m-j", mktime(0,0,0,date("m"),date("d"),date("Y")-1))) {
  $style = "\"color:red;\"";
} elseif ($contact_tmp["adhesion"] < date("Y-m-j", mktime(0,0,0,date("m"),date("d")+10,date("Y")-1))) {
  $style = "\"color:orange;\"";
} else {
  $style = "\"\"";
}

aux adhérents à jour de cotisation

Ajout de la fonction de sélection des adhésions à jour après la fonction function select_ensemble_users :

//    SELECTIONNER TOUS LES CONTACTS A JOUR DE COTISATION
function select_users_a_jour(id_espace_dossier)
{
      for(var i=0; i < tab_ensembles_users[id_espace_dossier].length; i++)
      {
              id_tmp = tab_ensembles_users[id_espace_dossier][i];
              if(element("txt_"+id_tmp).getAttribute("style") != "color:red;") {
                      if(element("box_"+id_tmp).checked==false)       { element("box_"+id_tmp).checked = true;        element("txt_"+id_tmp).className = "lien_select"; }
                      else                                            { element("box_"+id_tmp).checked = false;       element("txt_"+id_tmp).className = "lien"; }
              }
      }
}

Ajout de l'icone permettant cette sélection, l.175 après : echo “<img src=\”“.path_templates.”divers/inverser_selection.png\“

class=\"lien\" onclick=\"select_ensemble_users('".$id_dossier_tmp."');afficher_dynamic('".$id_dossier_tmp."',null,true);\" ".infobulle($trad["divers"]["inverser_selection"])." />";

De :

if ($id_dossier_tmp == "D4") {
  echo "<img src=\"".path_templates."divers/selection_ajour.png\"
 class=\"lien\" onclick=\"select_users_a_jour('".$id_dossier_tmp."');afficher_dynamic('".$id_dossier_tmp."',null,true);\" ".infobulle("adhésino |  jour")." />";

dont l'adhésion expire dans les 10 jours

Ajout de la fonction de sélection des adhésions dont l'expiration arrive à terme après la fonction function select_users_a_jour :

//    SELECTIONNER TOUS LES CONTACTS NON A JOUR DE COTISATION DANS 10 JOURS
function select_users_bientot_non_a_jour(id_espace_dossier)
{
      for(var i=0; i < tab_ensembles_users[id_espace_dossier].length; i++)
      {
              id_tmp = tab_ensembles_users[id_espace_dossier][i];
              if(element("txt_"+id_tmp).getAttribute("style") == "color:orange;") {
                      if(element("box_"+id_tmp).checked==false)       { element("box_"+id_tmp).checked = true;        element("txt_"+id_tmp).className = "lien_select"; }
                      else                                            { element("box_"+id_tmp).checked = false;       element("txt_"+id_tmp).className = "lien"; }
              }
      }
}

Ajout de l'icone permettant cette sélection, l.174 après :

if ($id_dossier_tmp == "D4") {

De :

echo "<img src=\"".path_templates."divers/selection_bientot_nonajour.png\"
 class=\"lien\" onclick=\"select_users_bientot_non_a_jour('".$id_dossier_tmp."');afficher_dynamic('".$id_dossier_tmp."',null,true);\" ".infobulle("expiration de l'adhésion dans 10 jours")." />";

aux bénévoles

De même, on ajoute une icone après les adhérents bénévoles.

Ajout de la fonction de sélection des bénévoles l.60 :

//    SELECTIONNER TOUS LES CONTACTS BENEVOLES
function select_users_benevoles(id_espace_dossier)
{
      for(var i=0; i < tab_ensembles_users[id_espace_dossier].length; i++){
              id_tmp = tab_ensembles_users[id_espace_dossier][i];
              if(element("txt_"+id_tmp).firstChild.nextSibling) {
                      if(element("txt_"+id_tmp).firstChild.nextSibling.nodeName == "IMG") {
                              if(element("box_"+id_tmp).checked==false){
                                      element("box_"+id_tmp).checked = true;
                                      element("txt_"+id_tmp).className = "lien_select";
                              } else {
                                      element("box_"+id_tmp).checked = false;
                                      element("txt_"+id_tmp).className = "lien"; 
                              }
                      }
              }
      }
}

Dans le fichier module_mail/index.php, ajout l.176 :

echo "<img src=\"".path_templates."divers/benevolat-icon.png\"
class=\"lien\" onclick=\"select_users_benevoles('".$id_dossier_tmp."');afficher_dynamic('".$id_dossier_tmp."',null,true);\" ".infobulle("bénévoles")." />";

Ajout l.186 :

if ($contact_tmp["benevole"] == 1) {$benev = "<img src=\"".path_templates."divers/benevolat-icon.png\"/>";} else {$benev = "";}

Ajout l.189 :

echo "<span class=\"lien\" id=\"txt_".$id_contact_tmp."\" onClick=\"check_txt_box(this.id,'".$id_contact_tmp."');\"
style=".$style.">".$contact_tmp["prenom"]." ".$contact_tmp["nom"]." ".$benev." "."</span>";
agora_project.txt · Dernière modification: 2017/04/11 15:13 (modification externe)