====== Issue 1 : #38 ====== ===== Description de l'issue ===== ==== Lien ==== https://framagit.org/framasoft/framadate/issues/38 ==== Texte ==== //Je trouverai interessant d'avoir la possibilité pour l'administrateur d'un sondage de collecter les adresses mail des sondés (visibles uniquement sur le formulaire admin). Un peu comme le nom/pseudo, mais cachés au sondés, donc. Afin de faciliter la vie de l'administrateur en cloture de sondage : parfois, on envoie un sondage à 200 personnes. Et on ne souhaite recontacter que les 20 qui ont répondu "OK". \\ C'était à la base une demande de Mozilla.// ==== Justification du choix ==== Il s'agit d'abord d'une demande fréquente au sein des utilisateurs de Framadate. Par ailleurs, cette modification ferait de Framadate un concurrent de taille face à Doodle où cette fonctionnalité est payante. ===== Solution apportée ===== ==== Itération 1 : Ajout de la collecte du mail dans le formulaire de sondage ==== === Modification de la BDD === * Ajout d'un fichier de migration dans le répertoire ''framadate/app/classes/Framadate/Migration'' pour ajouter le nouvel attribut ''mail'' à la table ''vote(poll_id, name, choices, uniqId)'' dans la base de données * Ajout d'un appel à ce fichier de migration dans ''/framadate/admin/migration.php'' === Modification de la classe VoteRepository === * MAJ de la méthode ''insert($poll_id, $name, $choices, $token)'' * MAJ de la méthode ''update($poll_id, $vote_id, $name, $choices)'' === Modification de la classe PollService === * MAJ de la méthode ''updateVote($poll_id, $vote_id, $name, $choices, $slot_hash)'' * MAJ de la méthode ''addVote($poll_id, $name, $choices, $slot_hash)'' * MAJ de la méthode ''splitVote($votes)'' === Modification des fichiers studs.php et adminstuds.php === * MAJ des appels à ''updateVote'' et ''addVote'' === Modification des templates ''vote_table_date.tpl'' et ''vote_table_classic.tpl'' === * Création du nouveau champ === Visualisation de l'itération 1 === * Pour un sondage de type //date// (côté //admin// et côté //user//) {{ :txs:framadate-p18:justineissue1:table_vote_date_admin.png?530 | Table des vote côté admin (date)}} {{ :txs:framadate-p18:justineissue1:table_vote_date_user.png?530 | Table des vote côté user (date)}} * Pour un sondage de type //classic// (côté //admin// et côté //user//) {{ :txs:framadate-p18:justineissue1:table_vote_classic_admin.png?530 |Table des vote côté admin (classic)}} {{ :txs:framadate-p18:justineissue1:table_vote_classic_user.png?530 | Table des vote côté user (classic)}} ==== Itération 2 : Implémentation d'une fonctionnalité admin permettant la collecte des mails ==== === Modification des templates ''vote_table_date.tpl'' et ''vote_table_classic.tpl'' === * Ajout d'un bouton //enveloppe// associé à chaque colonne === Modification du fichier adminstuds.tpl === * Ajout d'un traitement lorsqu'on clique sur le bouton //enveloppe// d'une colonne : récupération des adresses mails renseignées dans des tableaux de chaînes de caractères * Transmission de ces tableaux à ''$smarty'' et appel du nouveau fichier ''display_mails.tpl'' === Ajout d'un template display_mails.tpl === * Affichage des adresses mails transmises === Visualisation de l'itération 2 === * Icône //enveloppe// pour un sondage de type //date// et pour un sondage de type //classic// {{ :txs:framadate-p18:justineissue1:collect_mail_date.png?530 | Table des vote côté admin (date)}} {{ :txs:framadate-p18:justineissue1:collect_mail_classic.png?530 | Table des vote côté admin (classic)}} * Exemple d'affichage de collecte de mails pour un sondage {{ :txs:framadate-p18:justineissue1:collect_mail_classic_ej.png?530 | Exemple d'affichage de collecte de mails}} ===== Merge request ===== https://framagit.org/framasoft/framadate/merge_requests/266