====== Résolution d'une issue 1 : #125======
===== Description de l'issue =====
==== Lien ====
https://framagit.org/framasoft/framadate/issues/125
==== Texte ====
Choose between "," and ";" as field seperator in the CSV-export.
Please use ";" as field seperator when using CSV-export instead of ",". That makes opening these files in Microsoft Excel a lot easier.
Après discussion la modification consistera en un choix, à l'aide d'un menu déroulant afin de sélectionner le séparateur.
==== Justification du choix ====
C'est une issue plus complexe que l'issue [[https://wiki.picasoft.net/doku.php?id=txs:framadate-p18:resolution_de_l_issue_237|237]] cependant elle peut être fragmentée en plusieurs morceaux de difficulté plus simple .
Voici une copie d'écran après les modifications :
{{:txs:framadate-p18:capture_d_ecran_2018-05-09_00-33-03.png?400|100}}
===== Informations utiles =====
===exportcsv.php ===
Une page PHP //framadate/exportscsv.php// crée un fichier d'export de tout le tableau des participants avec leurs réponses dans un tableau, actuellement au format CSV.
===implode ===
La fonction PHP //implode// rassemble les éléments d'un tableau en une chaîne.
Cela nous permet ensuite de travailler sur ces éléments avec une variable.
Elle est souvent utilisé avec la fonction explode
===explode ===
La fonction PHP //explode// Coupe une chaîne en segments
L'utilisation de explode et implode permet de découper nos chaines et de les retravailler pour les remettre ensuite dans nos tableaux
===bootstrap ===
La plupart du CSS est déjà créé grâce à du //bootstrap//. Avant de créer quoi que ce soit, il faut vérifier si cela n'existe pas déjà. Toute la documentation concernant le //bootstrap// est ici :
[[https://getbootstrap.com/docs/4.1/getting-started/introduction/|{{txs:framadate-p18:600600p3764ednmainbootstrap-social-logo.png?100}}]]
==== Démarche des recherches ====
=== Itération 1 : transformer , en ; ===
Pour cette première étape, le principe est très simple on remplace chaque "," rencontré par un ";".
Il a été cependant intéressant de chercher à comprendre le fonctionnement en modifiant petit à petit chaque caractère.
$moment=explode(',',$slot->moments);
devient
$moment=explode(';',$slot->moments);
=== Itération 2 : créer une variable contrôlant le séparateur ===
On sait maintenant comment contrôler manuellement le changement du séparateur, créons une variable à changer sur la page.
if ($exportchoice=='CSV'){
$delimiter=',' ;
}
else{
$delimiter=';' ;
}
Et on modifie , ou ; en $delimiter
$moment=explode($delimiter,$slot->moments);
=== Itération 3 : créer un formulaire html===
On se situe maintenant dans un fichier template : ''tpl/part/poll_info.tpl''.
Les spécificités de ces fichiers sont expliqués [[https://wiki.picasoft.net/doku.php?id=txs:framadate-p18:etude_de_l_architecture_globale_du_projet_framadate|ici ]].
En observant la page du côté client on observe qu'il y a 3 boutons :
*export
*menu déroulant : icône poubelle
*print
Le menu déroulant (le petit logo poubelle) est similaire à la fonctionnalité que l'on désire créer. Le code est donc similaire en de nombreux points, au niveau des classes //dropdown-menu// (codé sur plus de 3 pages CSS et JS ''css/bootstrap-theme.CSS''''css/bootstrap-theme.css.map''''js/bootstrap.js'' : ), et des balises //li// et// ul//
Une balise "div" a été ajoutée afin d'éviter que les menus déroulants ne soient les mêmes. En effet, s'ils partageaient la même div le CSS ne ferait pas la distinction entre les deux.
=== Itération 4 : envoyer le choix html à $exportchoice ===
Je me suis reporté au tutoriel de [[https://openclassrooms.com/courses/concevez-votre-site-web-avec-php-et-mysql/transmettre-des-donnees-avec-les-formulaires|openclassrom ]]\\ j'ai tout d'abord testé à envoyer les données en post, après de multiples essais je n'ai pas réussi j'ai donc essayé en GET en modifiant directement le lien depuis un navigateur.
https://framadate.org/exportcsv.php?admin=H4q3YSmDQbXnx2HLHUjnSm5V&exportchoice=CSV
=== Itération 5 :gérer les traductions ===
Pour gérer les traductions,il faut faire deux choses :
**Modifier le fichier en.json** :
Ajouter dans le dossier /locale/en.json selon ce format (ici avec edit name)'' "Edit the name": "Edit name"'', si la page n'existe pas il faut rajouter le nom de la page avec ''"nomdelapage {"edit the name" : "edit name"}''\\
**Modifier l'HTML** :
Chaque contenu apparaissant à l'écran doit avoir ce format'' {__('nomdelapage', 'motvisible')}''
===== Merge request =====
https://framagit.org/anaellacour/framadate/commit/28f4a2ff95dd67135ce65907c83eb6747d52cd95