Commit a722d40d authored by arnaudbey's avatar arnaudbey
Browse files

add app

parent b93fb98a
Contributions (since 2014)
------------
### Code
* Arnaud Bey
* Pauline Rebourgeon
* Giacomo Mambelli
* David Graceffa
* Maryam Nejat
* Christine Lutian
* Joris Bouderbala
* Mathieu Loiseau
* Benjamin Abrial
* Judith Chambre
### Design and experiments
* Mathieu Loiseau
* Virginie Zampa
* Racha Hallal
* Pauline Ballot
* Arnaud Bey
* Francesca Bianco
* Richard Boualavong
* Joris Bouderbala
* Cristiana Cervini
* Christine Lutian
* Agnès Montaufier
* Pauline Rebourgeon
* Haydée Silva
### Graphic Design
* [David Fraisse](http://www.davidfraisse.com)
module.exports = function(grunt) {
require('load-grunt-tasks')(grunt);
grunt.initConfig({
watch: {
files: [
'Gruntfile.js',
'src/MagicWordBundle/Resources/public/js/**',
'src/MagicWordBundle/Resources/public/css/**'
],
tasks: ['uglify', 'less'],
},
less: {
dist: {
options: {
compress: true,
yuicompress: true,
optimization: 2
},
files: {
"web/css/main.css": [
"bower_components/bootstrap/dist/css/bootstrap.css",
"bower_components/font-awesome/css/font-awesome.css",
'src/MagicWordBundle/Resources/public/css/main.css',
"bower_components/FlipClock/compiled/flipclock.css",
'src/MagicWordBundle/Resources/public/css/play.css',
'src/MagicWordBundle/Resources/public/css/end.css',
'src/MagicWordBundle/Resources/public/css/editor.css',
"bower_components/animate.css/animate.min.css",
"bower_components/intro.js/introjs.css",
],
}
}
},
uglify: {
options: {
mangle: false,
sourceMap: true
},
dist: {
files: {
'web/js/main.js': [
"bower_components/jquery/dist/jquery.min.js",
"bower_components/bootstrap/dist/js/bootstrap.min.js",
'web/bundles/fosjsrouting/js/router.js',
'src/MagicWordBundle/Resources/public/js/wordbox.js',
'src/MagicWordBundle/Resources/public/js/wait.js',
'src/MagicWordBundle/Resources/public/js/info.js',
'src/MagicWordBundle/Resources/public/js/main.js',
'src/MagicWordBundle/Resources/public/js/wiktionnary.js',
'src/MagicWordBundle/Resources/public/js/builder.js',
'src/MagicWordBundle/Resources/public/js/modal.js',
'node_modules/screenfull/dist/screenfull.js'
],
'web/js/edit_round.js': [
"src/MagicWordBundle/Resources/public/js/edit/bologne.js",
"src/MagicWordBundle/Resources/public/js/edit/grid.js",
"src/MagicWordBundle/Resources/public/js/edit/rush.js",
"src/MagicWordBundle/Resources/public/js/edit/objectives.js",
"src/MagicWordBundle/Resources/public/js/edit/constraint.js",
"src/MagicWordBundle/Resources/public/js/edit/combo.js",
"src/MagicWordBundle/Resources/public/js/edit/findword.js",
"src/MagicWordBundle/Resources/public/js/edit/common.js",
'src/MagicWordBundle/Resources/public/js/edit/gridpattern.js',
],
'web/js/round.js': [
"src/MagicWordBundle/Resources/public/js/round/details.js",
"src/MagicWordBundle/Resources/public/js/round.js",
],
'web/js/play.js': [
"bower_components/jquery-ui/jquery-ui.min.js",
"bower_components/FlipClock/compiled/flipclock.min.js",
"bower_components/howler.js/dist/howler.min.js",
"src/MagicWordBundle/Resources/public/js/play/activity.js",
"src/MagicWordBundle/Resources/public/js/play/clock.js",
"src/MagicWordBundle/Resources/public/js/play/objective-combo.js",
"src/MagicWordBundle/Resources/public/js/play/objective-findword.js",
"src/MagicWordBundle/Resources/public/js/play/objective-constraint.js",
"src/MagicWordBundle/Resources/public/js/play/word.js",
"src/MagicWordBundle/Resources/public/js/play/combo.js",
"src/MagicWordBundle/Resources/public/js/play/grid.js",
"src/MagicWordBundle/Resources/public/js/play/play.js",
"src/MagicWordBundle/Resources/public/js/play/score.js",
"src/MagicWordBundle/Resources/public/js/play/objectives.js",
"src/MagicWordBundle/Resources/public/js/play/sound.js",
"bower_components/jquery-nearest/src/jquery.nearest.min.js",
"bower_components/FitText.js/jquery.fittext.js"
],
'web/js/tutorial.js': [
"bower_components/jquery-ui/jquery-ui.min.js",
"bower_components/FlipClock/compiled/flipclock.min.js",
"bower_components/howler.js/dist/howler.min.js",
"src/MagicWordBundle/Resources/public/js/play/activity.js",
"src/MagicWordBundle/Resources/public/js/play/clock.js",
"src/MagicWordBundle/Resources/public/js/play/objective-combo.js",
"src/MagicWordBundle/Resources/public/js/play/objective-findword.js",
"src/MagicWordBundle/Resources/public/js/play/objective-constraint.js",
"src/MagicWordBundle/Resources/public/js/play/word.js",
"src/MagicWordBundle/Resources/public/js/play/combo.js",
"src/MagicWordBundle/Resources/public/js/play/grid.js",
"src/MagicWordBundle/Resources/public/js/play/score.js",
"src/MagicWordBundle/Resources/public/js/play/objectives.js",
"src/MagicWordBundle/Resources/public/js/play/sound.js",
"src/MagicWordBundle/Resources/public/js/play/tutorial.js",
"bower_components/jquery-nearest/src/jquery.nearest.min.js",
"bower_components/FitText.js/jquery.fittext.js",
"bower_components/intro.js/intro.js"
],
'web/js/translations.js': [
"web/bundles/bazingajstranslation/js/translator.min.js",
"web/js/translations/config.js",
"web/js/translations/*/en.js",
"web/js/translations/*/fr.js"
]
}
}
},
copy: {
// customisation to add font files from CSS libraries:
fonts: {
expand: true,
flatten: true,
cwd: '',
dest: 'web/fonts/',
src: ['bower_components/font-awesome/fonts/*']
},
files: {
src: ['CONTRIBUTORS.md'],
dest: 'web/files/'
}
},
});
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-contrib-copy');
grunt.registerTask('default', ["less", "uglify", "copy:fonts", "copy:files"]);
};
install:
setfacl -dR -m u:www-data:rwx -m u:`whoami`:rwx var
setfacl -R -m u:www-data:rwx -m u:`whoami`:rwx var
composer install -o
npm install -g bower grunt
php bin/console doctrine:database:create --if-not-exists
php bin/console doctrine:database:create --connection=lexicon --if-not-exists
mysql -u root -p$(PWD) -h db mw < mw_fixtures.sql
mysql -u root -p$(PWD) -h db lexicon < lexicon.sql
php bin/console doctrine:schema:update --force
npm install
bower install --allow-root
php bin/console bazinga:js-translation:dump
php bin/console assets:install --env=prod --symlink
grunt
php bin/console cache:clear --env=prod
php bin/console cache:clear --env=dev
setfacl -dR -m u:www-data:rwx -m u:`whoami`:rwx var
setfacl -R -m u:www-data:rwx -m u:`whoami`:rwx var
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
Order deny,allow
Deny from all
</IfModule>
<?php
use Symfony\Bundle\FrameworkBundle\HttpCache\HttpCache;
class AppCache extends HttpCache
{
}
<?php
use Symfony\Component\HttpKernel\Kernel;
use Symfony\Component\Config\Loader\LoaderInterface;
class AppKernel extends Kernel
{
public function registerBundles()
{
$bundles = [
new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
new Symfony\Bundle\SecurityBundle\SecurityBundle(),
new Symfony\Bundle\TwigBundle\TwigBundle(),
new Symfony\Bundle\MonologBundle\MonologBundle(),
new Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle(),
new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(),
new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(),
new MagicWordBundle\MagicWordBundle(),
new FOS\UserBundle\FOSUserBundle(),
new JMS\DiExtraBundle\JMSDiExtraBundle($this),
new JMS\AopBundle\JMSAopBundle(),
new FOS\JsRoutingBundle\FOSJsRoutingBundle(),
new Innova\WiktionaryBundle\InnovaWiktionaryBundle(),
new Innova\LexiconBundle\InnovaLexiconBundle(),
new Bazinga\Bundle\JsTranslationBundle\BazingaJsTranslationBundle(),
];
if (in_array($this->getEnvironment(), ['dev', 'test'], true)) {
$bundles[] = new Symfony\Bundle\DebugBundle\DebugBundle();
$bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle();
$bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle();
$bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle();
}
return $bundles;
}
public function getRootDir()
{
return __DIR__;
}
public function getCacheDir()
{
return dirname(__DIR__).'/var/cache/'.$this->getEnvironment();
}
public function getLogDir()
{
return dirname(__DIR__).'/var/logs';
}
public function registerContainerConfiguration(LoaderInterface $loader)
{
$loader->load($this->getRootDir().'/config/config_'.$this->getEnvironment().'.yml');
}
}
{% extends "FOSUserBundle::layout.html.twig" %}
{% block fos_user_content %}
<div class="panel panel-default">
<div class="panel-heading">
<h4>
{{ "edit_password" | trans}}
<span class="pull-right">
{% include "MagicWordBundle:Common:backtohome.html.twig" %}
</span>
</h4>
</div>
<div class="panel-body">
{% include "FOSUserBundle:ChangePassword:change_password_content.html.twig" %}
</div>
</div>
{% endblock fos_user_content %}
{% trans_default_domain 'FOSUserBundle' %}
{{ form_start(form, { 'action': path('fos_user_change_password'), 'attr': { 'class': 'fos_user_change_password' } }) }}
{{ form_widget(form) }}
<div>
<input type="submit" value="{{ 'change_password.submit'|trans }}" />
</div>
{{ form_end(form) }}
{% extends "FOSUserBundle::layout.html.twig" %}
{% trans_default_domain 'FOSUserBundle' %}
{% block fos_user_content %}
<div class="row">
<div class="col-md-12">
<div class="alert alert-success">{{ 'registration.confirmed'|trans({'%username%': user.username}) }}</div>
<a href="{{ path('home') }}" class="btn btn-primary">{{ 'go' | trans }}</a>
</div>
</div>
{% endblock fos_user_content %}
{% block page_title %}Confirmation de l'inscription{% endblock %}
<div class="panel panel-default">
<div class="panel-heading">
<h4>Inscription</h4>
</div>
<div class="panel-body">
{% if getGeneralParameters().selfRegistration %}
<form action="{{ path('fos_user_registration_register') }}" method="post" class="form-horizontal fos_user_registration_register" autocomplete="off">
<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">
{{ '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>
</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">
{{ '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>
</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">
{{ '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>
</div>
<div class="form-group">
<label class="col-md-3 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>
</div>
<div class="form-group">
{{ form_widget(form._token) }}
<div class="col-md-offset-4 col-md-8">
<input type="submit" id="_submit" name="_submit" value="{{ 'create_account' | trans({}, 'messages') }}" class="btn btn-primary"/>
</div>
</div>
</div>
</form>
{% else %}
{{ "self_registration_disabled" |trans}}
{% endif %}
</div>
</div>
{% extends "FOSUserBundle::layout.html.twig" %}
{% trans_default_domain 'FOSUserBundle' %}
{% block fos_user_content %}
<div class="panel panel-default">
<div class="panel-heading">
<h4>Connexion</h4>
</div>
<div class="panel-body">
<form action="{{ path('fos_user_security_check') }}" class="form-horizontal" method="post" autocomplete="off">
<fieldset>
<input type="hidden" name="_csrf_token" value="{{ csrf_token }}" />
{% if error %}
<div class="alert alert-warning">{{ error.messageKey|trans(error.messageData, 'security') }}</div>
{% endif %}
<div class="form-group">
<label for="username" class="col-lg-2 control-label">{{ 'security.login.username'|trans }}</label>
<div class="col-lg-10">
<input type="text" class="form-control" id="username" name="_username">
</div>
</div>
<div class="form-group">
<label for="password" class="col-lg-2 control-label">{{ 'security.login.password'|trans }}</label>
<div class="col-lg-10">
<input type="password" class="form-control" id="password" name="_password">
</div>
</div>
<div class="form-group">
<label class="col-lg-2 control-label" for="remember_me">Keep me logged in</label>
<input style="margin-left:10px" type="checkbox" id="remember_me" name="_remember_me" />
</div>
<div class="form-group">
<div class="col-lg-offset-2 col-lg-10">
<input type="submit" id="_submit" name="_submit" value="{{ 'security.login.submit'|trans }}" class="btn btn-primary"/>
<a class="btn btn-default" href="{{ path('fos_user_resetting_request') }}">Mot de passe oublié ?</a>
</div>
</div>
</fieldset>
</form>
</div>
</div>
{% endblock fos_user_content %}
{% block page_title %}Connexion{% endblock %}
{% extends '::base.html.twig' %}
{% block body %}
{% block fos_user_content %}
{% endblock fos_user_content %}
{% endblock %}
er 69097 27,4954 27
nt 52678 20,9619 21
on 51943 20,6694 21
es 51710 20,5767 21
ra 50857 20,2372 20
en 49950 19,8763 20
re 46920 18,6706 19
ai 45149 17,9659 18
is 39205 15,6006 16
ie 37578 14,9532 15
ss 37305 14,8446 15
se 36767 14,6305 15
as 36582 14,5569 15
te 34440 13,7045 14
de 30601 12,1769 12
ns 30441 12,1132 12
ri 28989 11,5354 12
an 24594 9,78655 10
le 23663 9,41609 9
ro 23179 9,22349 9
at 23134 9,20558 9
ti 23113 9,19723 9
in 22787 9,0675 9
ez 22657 9,01577 9
io 22296 8,87212 9
it 21189 8,43162 8
ou 20509 8,16103 8
la 20323 8,08702 8
me 20174 8,02773 8
co 19498 7,75873 8
ta 18900 7,52077 8
si 18835 7,49491 7
sa 17873 7,1121 7
ne 17731 7,0556 7
li 17452 6,94458 7
ar 16479 6,5574 7
ur 16102 6,40738 6
tr 15812 6,29198 6
ch 15446 6,14634 6
il 15030 5,9808 6
al 14586 5,80413 6
na 14393 5,72733 6
ll 14313 5,69549 6
ec 14209 5,65411 6
et 13363 5,31746 5
em 13278 5,28364 5
ue 12889 5,12885 5
or 12632 5,02658 5
qu 12359 4,91795 5
ca 11968 4,76236 5
nn 11832 4,70824 5
ge 11677 4,64656 5
ma 11494 4,57374 5
st 11284 4,49018 4
ir 10915 4,34335 4
di 10547 4,19691 4
pa 10382 4,13125 4
pe 10305 4,10061 4
am 10185 4,05286 4
el 10094 4,01665 4
ni 9785 3,89369 4
nc 9390 3,73651 4
lo 9359 3,72417 4
ac 8953 3,56262 4
ee 8908 3,54471 4
eu 8736 3,47627 3
ha 8544 3,39987 3
us 8525 3,39231 3
ce 8510 3,38634 3
ve 8406 3,34495 3
pr 8096 3,2216 3
nd 8065 3,20926 3
ui 8052 3,20409 3
ul 8015 3,18936 3
so 7939 3,15912 3
he 7917 3,15037 3
ol 7828 3,11495 3
ag 7818 3,11097 3
po 7760 3,08789 3
om 7753 3,08511 3
to 7614 3,0298 3
mi 7296 2,90326 3
ep 7159 2,84874 3
ap 6890 2,7417 3
fi 6838 2,72101 3
ut 6808 2,70907 3
ci 6783 2,69912 3
au 6690 2,66211 3
ba 6571 2,61476 3
ia 6569 2,61397 3
ot 6559 2,60999 3
bo 6370 2,53478 3
im 6357 2,52961 3
mo 6355 2,52881 3
ic 6330 2,51886 3
mp 6309 2,51051 3
vi 6300 2,50692 3
pi 6268 2,49419 2
ua 6178 2,45838 2
su 6074 2,41699 2
tt 6040 2,40346 2
ab 5987 2,38237 2
ig 5971 2,37601 2
gr 5940 2,36367 2
va 5899 2,34736 2
oi 5670 2,25623 2
if 5613 2,23355 2
da 5580 2,22042 2
cr 5511 2,19296 2
no 5263 2,09428 2
pl 5212 2,07398 2
ev 5154 2,0509 2
br 5149 2,04891 2
iq 5049 2,00912 2
os 5037 2,00435 2
ct 5034 2,00315 2
rt 4998 1,98883 2
eg 4955 1,97172 2
tu 4923 1,95898 2
ng 4814 1,91561 2
gu 4785 1,90407 2
bl 4746 1,88855 2
rr 4630 1,84239 2
cu 4538 1,80578 2
ff 4520 1,79862 2
iv 4474 1,78031 2
rd 4411 1,75524 2
ga 4319 1,71864 2
fe 4256 1,69357 2
mb 4255 1,69317 2
oc 4224 1,68083 2
bi 4221 1,67964 2
fo 4180 1,66332 2
ea 4165 1,65736 2
hi 4146 1,64979 2
rs 4096 1,6299 2
ad 4094 1,6291 2
sc 4014 1,59727 2
rc 3950 1,5718 2
ex 3927 1,56265 2
ho 3905 1,55389 2
id 3868 1,53917 2
do 3829 1,52365 2
cl 3763 1,49739 1
av 3737 1,48704 1
ed 3703 1,47351 1
ef 3688 1,46755 1
fa 3659 1,45601 1
op 3650 1,45242 1
gn 3648 1,45163 1
lu 3630 1,44447 1
fr 3617 1,43929 1
uc 3518 1,3999 1
go 3454 1,37443 1
rm 3416 1,35931 1
dr 3389 1,34857 1
gi 3360 1,33703 1
pp 3327 1,32389 1
ph 3292 1,30997 1
og 3259 1,29684 1
ru 3250 1,29325 1
be 3237 1,28808 1
ei 3155 1,25545 1
um 3102 1,23436 1
eb 3089 1,22919 1
vo 3067 1,22043 1