txs:contrib:framadate_p18:resolution_d_une_troisieme_issue

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
txs:framadate_p18:resolution_d_une_troisieme_issue [2020/02/06 15:02] – ↷ Page déplacée de txs:framadate-p18:resolution_d_une_troisieme_issue à txs:framadate_p18:resolution_d_une_troisieme_issue qduchemitxs:contrib:framadate_p18:resolution_d_une_troisieme_issue [2020/09/16 11:24] (Version actuelle) – modification externe 127.0.0.1
Ligne 1: Ligne 1:
 +====== Résolution d'une issue 3 : #208 ======
 +===== Description de l'issue =====
 +==== Lien ====
 +https://framagit.org/framasoft/framadate/issues/208
  
 +==== Texte ====
 +**//Permettre la finalisation d'un sondage par l'administrateur//**\\
 +//Une fois la décision prise, mettre un bouton : Sondage finalisé//
 +  * //Permettre à l'admin de sélectionner le choix retenu//
 +  * //Permettre à l'admin de mettre un texte justifiant ce choix//
 +  * //Eventuellement permettre un lien vers un CALDAV ou un ICS permettant de partager le RDV //
 +
 +==== Justification du choix ====
 +Cette fonctionnalité me paraît d'abord tout à fait pertinente pour Framadate.
 +Ensuite, il s'agit d'un travail de développement à mon sens intéressant (car touche à de nombreux fichiers à différents niveaux du projet) et suffisamment complexe.
 +
 +===== Conseil de Thomas Citharel =====
 +Les deux premiers points sont à traiter, le troisième est encore en réflexion.\\
 +Pour résoudre cette issue (les deux premiers points), il est indispensable de la scinder en plusieurs sous-problèmes.\\
 +La décomposition sera donc la suivante :
 +  * Implémentation d'une option admin "//Close the poll//"
 +  * Implémentation d'une option admin "//Choose an option//" (quand le sondage est terminé)
 +  * Implémentation d'une option admin "//Explain the choice//" (quand le sondage est terminé et qu'un choix a été retenu)
 +
 +===== Solution apportée : itération 1 =====
 +**Ajout d'une fonctionnalité admin "//Close the poll//"**
 +
 +==== Description ====
 +Une fois un sondage fermé, plus aucune modification ne peut lui être apportée, c'est à dire :
 +  * le titre, le nom de l'auteur, la description, la date d'expiration et les paramètres du sondage (mot de passe, visibilité des résultats,...) ne peuvent plus être modifiés côté admin
 +  * aucun choix supplémentaire ne peut être ajouté par l'admin
 +  * aucun choix ne peut être supprimé par l'admin
 +  * aucun vote ne peut être ajouté / modifié / supprimé ni côté admin ni côté public
 +
 +==== Travail réalisé ====
 +  * Modification de la BDD : ajout d'un attribut ''closed'' à la table ''poll'' (attribut booléen (''TINYINT''), par défault à ''FALSE'' (''0''))
 +     * Ajout d'un fichier de migration : ''AddColumn_closed_In_poll.php''
 +     * Appel à ce nouveau fichier dans le fichier ''migration.php''
 +  * MAJ de la méthode ''update($poll)'' de la classe ''PollRepository'' (pour prendre en compte le nouvel attribut)
 +  * Ajout de l'affichage du nouveau paramètre ''closed'' dans ''poll_info.tpl'' (côté admin et public)
 +  * Ajout d'un bouton ''Close the poll'' dans ''poll_info.tpl'' (côté admin)
 +  * Ajout d'un script de confirmation de fermeture de sondage : ''close_poll.tpl'' (si confirmation, passage de la valeur de ''closed'' à ''TRUE'' (''1''))
 +  * MAJ ''poll_info.tpl'', ''vote_table_classic.tpl'' et ''vote_table_date.tpl'' : prise en compte de la valeur de ''closed'' dans l'affichage ou non des fonctionnalités (cf description)
 +  * MAJ du fichier de traduction (''en.json'')
 +
 +===== Solution apportée : itération 2 =====
 +**Ajout de deux fonctionnalités admin "//Select the choice made//" et "//Explain the choice//"**
 +
 +==== Description ====
 +Une fois un sondage fermé, il est possible de sélectionner le choix retenu (ce choix est unique) par l'administrateur du sondage : une icône apparaît au dessus de chacune des colonnes pour la sélection. La valeur de ce choix est accessible dans les informations sur le sondage, côté admin et côté public.
 +
 +==== Travail réalisé ====
 +**Implémentation de "//Select the choice made//"**
 +  * Modification de la BDD : ajout d'un attribut ''admin_choice'' à la table ''poll'' (attribut chaîne de caractères (''VARCHAR''), par défault à ''""'' (la chaîne vide))
 +     * Ajout d'un fichier de migration : ''AddColumn_admin_choice_In_poll.php''
 +     * Appel à ce nouveau fichier dans le fichier ''migration.php''
 +  * MAJ de la méthode ''update($poll)'' de la classe ''PollRepository'' (pour prendre en compte le nouvel attribut)
 +  * Ajout de l'affichage côté admin et côté public de ''admin_choice'' dans ''poll_info.tpl'' (si le sondage est fermé)
 +  * Ajout de l'affichage côté admin de boutons //check// au dessus de chaque colonne pour sélectionner un choix dans ''vote_table_classic.tpl'' et ''vote_table_date.tpl'' (si le sondage est fermé)
 +  * Ajout du traitement du clic sur le bouton //check// pour modifier la valeur de ''admin_choice'' dans ''adminstuds.php''
 +  * MAJ du fichier de traduction (''en.json'')
 +
 +**Implémentation de "//Explain the choice//"**
 +  * Modification de la BDD : ajout d'un attribut ''admin_choice_exp'' à la table ''poll'' (attribut chaîne de caractères (''VARCHAR''), par défault à ''""'' (la chaîne vide))
 +     * Ajout d'un fichier de migration : ''AddColumn_admin_choice_exp_In_poll.php''
 +     * Appel à ce nouveau fichier dans le fichier ''migration.php''
 +  * MAJ de la méthode ''update($poll)'' de la classe ''PollRepository'' (pour prendre en compte le nouvel attribut)
 +  * Ajout de l'affichage côté admin et côté public de ''admin_choice_exp'' dans ''poll_info.tpl'' (si le sondage est fermé)
 +  * Ajout d'un bouton //pencil// pour modifier ''admin_choice_exp'' (si le sondage est fermé)
 +  * Ajout du traitement du clic sur le bouton //pencil// pour modifier la valeur de ''admin_choice_exp'' dynamiquement dans ''adminstuds.js''
 +  * Ajout traitement de la modification de ''admin_choice_exp'' dans ''adminstuds.php''
 +  * MAJ du fichier de traduction (''en.json'')
 +
 +===== Visualisation de la solution =====
 +  * Administration d'un sondage ouvert : informations et bouton
 +{{ :txs:framadate-p18:justineissue3:pollInfo-ouvert.png?530 | Nouveau paramètre et bouton dans les infos d'un sondage}}
 +  * Confirmation de la fermeture du sondage
 +{{ :txs:framadate-p18:justineissue3:fermeture.png?530 | Confirmation de la fermeture du sondage}}
 +  * Administration d'un sondage fermé : informations et sélection d'un choix
 +{{ :txs:framadate-p18:justineissue3:pollInfo-fermé.png?530 | Boutons pour sélectionner un choix au dessus de chaque colonne}}
 +  * Administration d'un sondage fermé : justification du choix
 +{{ :txs:framadate-p18:justineissue3:pollInfo-choix-justifié.png?530 | Champ de texte pour expliquer le choix retenu}}
 +
 +===== Merge request =====
 +https://framagit.org/framasoft/framadate/merge_requests/325
  • txs/contrib/framadate_p18/resolution_d_une_troisieme_issue.txt
  • de 127.0.0.1