| |
— | agora_project [2024/02/09 17:10] (Version actuelle) – créée - modification externe 127.0.0.1 |
---|
| 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érent-es à 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>"; |
| |