Commit 7781e0d0 authored by Arnaud Bey's avatar Arnaud Bey
Browse files

user data control fix #82

parent 6ead07d5
......@@ -8,49 +8,72 @@
<div class="tab-pane fade active in" id="step1">
<div class="form-group">
<span class="form-error">{{ form_errors(form.email) }}</span>
<label class="col-md-3 control-label required" for="fos_user_registration_form_email">
<label class="col-md-5 control-label required" for="fos_user_registration_form_email">
{{ 'user.email' | trans({}, 'messages') }}
</label>
<div class="col-md-4">
<input value="{{ form.vars.value.email }}" class="form-control" id="fos_user_registration_form_email" type="email" required="required" name="fos_user_registration_form[email]">
</div>
<div class="col-md-offset-5">
<div class="col-md-offset-3">
</div>
</div>
<div class="form-group">
<span class="form-error">{{ form_errors(form.username) }}</span>
<label class="col-md-3 control-label required" for="fos_user_registration_form_username">
<label class="col-md-5 control-label required" for="fos_user_registration_form_username">
{{ 'registration.username' | trans({}, 'messages') }}
</label>
<div class="col-md-4">
<input value="{{ form.vars.value.username }}" class="form-control" id="fos_user_registration_form_username" type="text" maxlength="255" required="required" name="fos_user_registration_form[username]">
</div>
<div class="col-md-offset-5">
<div class="col-md-offset-3">
</div>
</div>
<div class="form-group">
<span class="form-error">{{ form_errors(form.plainPassword.first) }}</span>
<label class="col-md-3 control-label required" for="fos_user_registration_form_plainPassword_first">
<label class="col-md-5 control-label required" for="fos_user_registration_form_plainPassword_first">
{{ 'registration.password' | trans({}, 'messages') }}
</label>
<div class="col-md-4">
<input class="form-control" id="fos_user_registration_form_plainPassword_first" type="password" required="required" name="fos_user_registration_form[plainPassword][first]">
</div>
<div class="col-md-offset-5">
<div class="col-md-offset-3">
</div>
</div>
<div class="form-group">
<label class="col-md-3 control-label required" for="fos_user_registration_form_plainPassword_second">
<label class="col-md-5 control-label required" for="fos_user_registration_form_plainPassword_second">
{{ 'registration.password_confirmation' | trans({}, 'messages') }}
</label>
<div class="col-md-4">
<input class="form-control" id="fos_user_registration_form_plainPassword_second" type="password" required="required" name="fos_user_registration_form[plainPassword][second]">
</div>
<div class="col-md-offset-5">
<div class="col-md-offset-3">
</div>
</div>
<div class="form-group">
<label class="col-md-8 control-label" for="fos_user_registration_solicitation">
{{ form_label(form.solicitation) }}
</label>
<div class="col-md-2">
{{ form_widget(form.solicitation) }}
</div>
<div class="col-md-offset-2">
</div>
</div>
<div class="form-group">
<label class="col-md-8 control-label" for="fos_user_registration_data_use">
{{ form_label(form.dataUse) }}
</label>
<div class="col-md-2">
{{ form_widget(form.dataUse) }}
</div>
<div class="col-md-offset-2">
</div>
</div>
<div class="form-group">
{{ form_widget(form._token) }}
<div class="col-md-offset-4 col-md-8">
......
......@@ -117,6 +117,9 @@ fos_user:
from_email:
address: "%mailer_user%"
sender_name: "%mailer_user%"
registration:
form:
type: MagicWordBundle\Form\Type\RegistrationType
jms_di_extra:
locations:
......
......@@ -54,6 +54,20 @@ class Player extends BaseUser
*/
private $displayMail = false;
/**
* @var bool
*
* @ORM\Column(name="data_use", type="boolean", nullable=true)
*/
private $dataUse = false;
/**
* @var bool
*
* @ORM\Column(name="solicitation", type="boolean", nullable=true)
*/
private $solicitation = false;
/**
* @ORM\ManyToOne(targetEntity="LanguageUI")
*/
......@@ -380,4 +394,52 @@ class Player extends BaseUser
{
return $this->displayMail;
}
/**
* Set dataUse
*
* @param boolean $dataUse
*
* @return Player
*/
public function setDataUse($dataUse)
{
$this->dataUse = $dataUse;
return $this;
}
/**
* Get dataUse
*
* @return boolean
*/
public function getDataUse()
{
return $this->dataUse;
}
/**
* Set solicitation
*
* @param boolean $solicitation
*
* @return Player
*/
public function setSolicitation($solicitation)
{
$this->solicitation = $solicitation;
return $this;
}
/**
* Get solicitation
*
* @return boolean
*/
public function getSolicitation()
{
return $this->solicitation;
}
}
......@@ -2,11 +2,11 @@
namespace MagicWordBundle\Form\Type;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\FormBuilderInterface;
class PlayerType extends AbstractType
{
......@@ -39,6 +39,18 @@ class PlayerType extends AbstractType
'choice_translation_domain' => 'messages',
));
$builder->add('solicitation', CheckboxType::class, array(
'label' => 'profile_solicitation',
'required' => false,
'translation_domain' => 'messages',
));
$builder->add('dataUse', CheckboxType::class, array(
'label' => 'profile_data_used_text',
'required' => false,
'translation_domain' => 'messages',
));
$builder->add('save', SubmitType::class, array(
'attr' => array('class' => 'btn btn-default'),
'label' => 'save',
......
<?php
namespace MagicWordBundle\Form\Type;
use FOS\UserBundle\Util\LegacyFormHelper;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
class RegistrationType extends AbstractType
{
/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('email', LegacyFormHelper::getType('Symfony\Component\Form\Extension\Core\Type\EmailType'), array('label' => 'form.email', 'translation_domain' => 'FOSUserBundle'))
->add('username', null, array('label' => 'form.username', 'translation_domain' => 'FOSUserBundle'))
->add('plainPassword', LegacyFormHelper::getType('Symfony\Component\Form\Extension\Core\Type\RepeatedType'), array(
'type' => LegacyFormHelper::getType('Symfony\Component\Form\Extension\Core\Type\PasswordType'),
'options' => array('translation_domain' => 'FOSUserBundle'),
'first_options' => array('label' => 'form.password'),
'second_options' => array('label' => 'form.password_confirmation'),
'invalid_message' => 'fos_user.password.mismatch',
))
->add('solicitation', CheckboxType::class, array(
'label' => 'profile_solicitation',
'required' => false,
'translation_domain' => 'messages',
'attr' => array('class' => 'form-inline'),
))
->add('dataUse', CheckboxType::class, array(
'label' => 'profile_data_used_text',
'required' => false,
'translation_domain' => 'messages',
));
;
}
/**
* {@inheritdoc}
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'MagicWordBundle\Entity\Player',
'csrf_token_id' => 'registration',
// BC for SF < 2.8
'intention' => 'registration',
));
}
// BC for SF < 3.0
/**
* {@inheritdoc}
*/
public function getName()
{
return $this->getBlockPrefix();
}
/**
* {@inheritdoc}
*/
public function getBlockPrefix()
{
return 'fos_user_registration';
}
}
......@@ -6,6 +6,8 @@
'- tense -': -- Tense --
abandon: Withdrawal
accept_challenge: Acceot challenge
accuracy_text: Your accuracy is %accuracy%% (%totalFound% correct found forms and %totalWrong% wrong ones).
accuracy: Accuracy
add_combo: 'Add a combo'
add_constraint: Add constraint objective
add_existing_form: 'Add existing form'
......@@ -71,6 +73,9 @@ forfeit: Give up game
form: Form
forms_found_count: Found forms count
forms_found: 'Found forms'
found_by_percent: Form found by %percent%% of all players
found_percent: %count% found forms out of %total%, being %percent%%
found: Found forms
foundables: Found forms
french: French
from: 'From'
......@@ -119,6 +124,8 @@ my_profile: My profile
name: Name
neuter: neutral
new_massive: 'New massive game'
no_combo_done: You did not make any combo during this round.
no_massive_create: There's no massive game available but you can create a new one.
number: Number
numeral: numeric
objectives: Objectives
......@@ -135,14 +142,17 @@ points: Points
popularity: popularity
preposition: preposition
present: present
profile_data_used_text: J'accepte que mes données soient utilisées par les concepteurs (LIDILEM/Univ. Grenoble Alpes) à des fins de recherche (analyse de mes usages, de mes résultats) et d'amélioration du jeu
profile_of: 'Profil'
profile_pic: Profile picture
profile_solicitation: J'accepte d'être sollicité⋅e pour participer à des expérimentations précises ou mes traces d'activité seront mises en relation avec d'autres données obtenues soit en présentiel, soit via des tests/questionnaires en ligne 
profile_text: Profile description
pronoun: Pronoun
rank: Rank
ranking: Ranking
rankings_and_stats: Rankings and statistics
remove__from_friends: 'Remove from friends'
round_language: The round is in
round_type: Round type you want to play (1st round)
round_type2: Round type you want to play (2nd round)
round: Round
......@@ -170,24 +180,16 @@ thirdPerson: 3rd person
time: Tense
to: to
total: Total
train_again: Train again
train: 'Train'
training: Training game
tutorial_game_id: Tutorial game id
tutorial_text: Bienvenue dans le tutoriel MagicWord. Vous allez être familiarisé avec les bases du jeu et de l'interface. Vous avez 2 minutes mais, contrairement aux autres parties, vous pourrez recommencez celle-ci si vous le souhaitez.
tutorial: Tutorial
update: 'update'
verb: verb
weight: Weight
wiktionary_def: Définition wiktionary
word_length: form length
wordbox: Wordbox
wordlengthpoints: Form length bonus points
wiktionary_def: Définition wiktionary
no_combo_done: You did not make any combo during this round.
round_language: The round is in
tutorial_game_id: Tutorial game id
tutorial: Tutorial
tutorial_text: Bienvenue dans le tutoriel MagicWord. Vous allez être familiarisé avec les bases du jeu et de l'interface. Vous avez 2 minutes mais, contrairement aux autres parties, vous pourrez recommencez celle-ci si vous le souhaitez.
train_again: Train again
found: Found forms
found_percent: %count% found forms out of %total%, being %percent%%
found_by_percent: Form found by %percent%% of all players
accuracy: Accuracy
accuracy_text: Your accuracy is %accuracy%% (%totalFound% correct found forms and %totalWrong% wrong ones).
no_massive_create: There's no massive game available but you can create a new one.
......@@ -6,23 +6,30 @@
'- tense -': -- Temps --
abandon: Abandon
accept_challenge: Accepter le défi
access_type: Type d'accès
accuracy_text: Votre précision est de %accuracy%% (%totalFound% formes correctes trouvées pour %totalWrong% erronées).
accuracy: Précision
add_combo: 'Ajouter un objectif combo'
add_constraint: Ajouter un objectif contrainte
add_existing_form: 'Ajouter une forme existante'
add_findword: Ajouter un objectif findword
add_form: 'Ajouter une forme'
add_round: 'Ajouter une manche'
add_string: Ajouter une chaîne
add_to_findwords: Ajouter aux objectifs findword
add_to_friends: 'Ajouter aux contacts'
add_to_wordbox_short: wordbox
add_to_wordbox: 'Ajouter à ma wordbox'
add: Ajouter
addword: Ajouter un mot
addwords: Ajouter des mots
adjective: adjectif
adverb: adverbe
author: auteur
autofill_grid: Autofill
back_to_editor: 'Retour à l''éditeur de partie'
back_to_home: Accueil
back_to_patterns_list: Retour aux patterns
bonus_points: Points bonus
cancel: Annuler le défi
category: Catégorie
......@@ -38,6 +45,7 @@ close: Fermer
combo_length: 'Puissance des combos'
combo_number: 'Nombre de combos'
combos__with_length: 'combo(s) de puissance'
combos_done: Combos
combos: Combo
commonNoun: nom commun
conditional: conditionnel
......@@ -63,8 +71,10 @@ edit_game: 'Editer partie'
edit_password: Changer de mot de passe
edit_profile: Editer le profil
edit_round: 'Editer la manche'
edit: Editer
english: Anglais
existing_forms: 'forme(s) présente(s)'
export_game: Exporter la partie
feminine: féminin
find_words: FindWord
firstPerson: 1ère personne
......@@ -72,6 +82,9 @@ forfeit: Abandonner la partie
form: Forme
forms_found_count: Nombre de formes trouvées
forms_found: 'forme(s) trouvée(s)'
found_by_percent: Forme trouvée par %percent%% des joueurs
found_percent: %count% formes trouvées sur %total%, soit %percent%%
found: Formes trouvées
foundables: Formes trouvées
french: Français
from: 'De la part de'
......@@ -82,11 +95,13 @@ games_ended: Parties terminées
games_started: Mes parties en cours
gametype: type de partie
gender: Genre
general_parameters: Paramètres généraux
generate_grid: 'Générer Grille'
give_up: Abandonner
grid: Grille
hidden: 'Masquer sa présence'
hint: Indice
homeText: Texte d'accueil
hour: heure
hours: heures
imperative: impératif
......@@ -97,11 +112,14 @@ inflexion_info: 'Infos sur la flexion'
interjection: interjection
invariable: invariable
Is lemma enough ?: Le lemme suffit ?
json_import: Import JSON
language_ui: 'Langue de l''interface'
language: Langue
lemma_info: 'Infos sur le lemme'
lemma: Lemme
letsgo: "C'est parti !"
letterlanguagepoints: Points par lettre et par langue
link: Accès via le lien uniquement
masculine: masculin
massive_end: 'Récapitulatif partie massive'
massive: 'partie massive'
......@@ -120,6 +138,8 @@ my_profile: Mon profil
name: Nom
neuter: neutre
new_massive: 'Nouvelle partie'
no_combo_done: Vous n'avez pas fait de combo sur cette manche.
no_massive_create: Il n'y a pas de partie massive disponible mais vous pouvez en créer une.
number: Nombre
numeral: numéral
objectives: Objectifs
......@@ -127,8 +147,12 @@ online: 'En ligne'
parameters: Paramètres
participle: participe
past: passé
pattern_create: Créer un pattern
pattern_edit: Edition d'un pattern
patterns_list: Liste des patterns
person: Personne
phonetic: Phonétique
piwikUrl: URL piwik (sans le http(s)://)
play: Jouer
player: Joueur
plural: pluriel
......@@ -136,14 +160,20 @@ points: Points
popularity: popularité
preposition: préposition
present: présent
profile_data_used_text: J'accepte que mes données soient utilisées par les concepteurs (LIDILEM/Univ. Grenoble Alpes) à des fins de recherche (analyse de mes usages, de mes résultats) et d'amélioration du jeu
profile_email: Email
profile_of: 'Profil de'
profile_pic: Image du profil
profile_solicitation: J'accepte d'être sollicité⋅e pour participer à des expérimentations précises ou mes traces d'activité seront mises en relation avec d'autres données obtenues soit en présentiel, soit via des tests/questionnaires en ligne 
profile_text: Description du profil
profile_email: Email
pronoun: pronom
properties: Propriétés
public: Visible publiquement
rank: Rang
ranking: Classement
rankings: Classements
remove__from_friends: 'Retirer des contacts'
round_language: La manche est en
round_type: Type de manche que vous voulez jouer (1ère manche)
round_type2: Type de manche que vous voulez jouer (2ème manche)
round: Manche
......@@ -151,6 +181,7 @@ roundCount: manches
rounds: Manches
rush_rules: 'Manche RUSH : Trouvez des mots dans la grille et faites des combos pour faire un maximum de points dans le temps imparti.'
rush: Rush
save_all: Tout sauvegarder
save_grid: 'Sauvegarder la grille'
save_objectives: 'Sauvegarder les objectifs'
save: Sauvegarder
......@@ -161,6 +192,8 @@ seconds: secondes
see_combos: 'Voir les combos possibles'
see_constraints: Voir les contraintes possibles
see_grid: 'Voir la grille'
self_registration_disabled: Auto-inscription désactivée
selfRegistration: Auto-inscription
simplePast: passé simple
singular: singulier
stats: Statistiques
......@@ -171,48 +204,17 @@ thirdPerson: 3ème personne
time: Temps
to: à
total: Total
train_again: S'entrainer encore
train: 'S''entrainer'
training: Partie d'entrainement
tutorial_game_id: id de la partie tuto
tutorial_text: Bienvenue dans le tutoriel MagicWord. Vous allez être familiarisé avec les bases du jeu et de l'interface. Vous avez 2 minutes mais, contrairement aux autres parties, vous pourrez recommencez celle-ci si vous le souhaitez.
tutorial: Tutoriel
update: 'Mettre à jour'
use_pattern: Utiliser
verb: verbe
weight: Poids
wiktionary_def: Définition wiktionary
word_length: Longueur de la forme
wordbox: Ma wordbox
wordlengthpoints: Points bonus longueur de forme
public: Visible publiquement
link: Accès via le lien uniquement
access_type: Type d'accès
json_import: Import JSON
export_game: Exporter la partie
properties: Propriétés
combos_done: Combos
addwords: Ajouter des mots
addword: Ajouter un mot
general_parameters: Paramètres généraux
selfRegistration: Auto-inscription
homeText: Texte d'accueil
self_registration_disabled: Auto-inscription désactivée
edit: Editer
wiktionary_def: Définition wiktionary
no_combo_done: Vous n'avez pas fait de combo sur cette manche.
letsgo: "C'est parti !"
round_language: La manche est en
tutorial_game_id: id de la partie tuto
tutorial: Tutoriel
tutorial_text: Bienvenue dans le tutoriel MagicWord. Vous allez être familiarisé avec les bases du jeu et de l'interface. Vous avez 2 minutes mais, contrairement aux autres parties, vous pourrez recommencez celle-ci si vous le souhaitez.
train_again: S'entrainer encore
found: Formes trouvées
found_percent: %count% formes trouvées sur %total%, soit %percent%%
found_by_percent: Forme trouvée par %percent%% des joueurs
accuracy: Précision
accuracy_text: Votre précision est de %accuracy%% (%totalFound% formes correctes trouvées pour %totalWrong% erronées).
no_massive_create: Il n'y a pas de partie massive disponible mais vous pouvez en créer une.
save_all: Tout sauvegarder
piwikUrl: URL piwik (sans le http(s)://)
patterns_list: Liste des patterns
back_to_patterns_list: Retour aux patterns
pattern_edit: Edition d'un pattern
use_pattern: Utiliser
add_string: Ajouter une chaîne
pattern_create: Créer un pattern
rankings: Classements
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment