Compare commits
327 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| bde583e14e | |||
| d803cb4bdd | |||
| 1a987283b7 | |||
| d72095f615 | |||
| 90be4bfea7 | |||
| de07e5f26c | |||
| 910f9645d8 | |||
| 227fe09a94 | |||
| c660c11879 | |||
| 8899a93ea5 | |||
| 305bf4deb3 | |||
| d564ca1b85 | |||
| b3135e62f5 | |||
| dc2872e178 | |||
| cf057c9c63 | |||
| e5c46b2985 | |||
| 47d571baae | |||
| f5f0c39dd7 | |||
| c83b71853b | |||
| 8bc3165995 | |||
| dffcf66ce3 | |||
| 41c046392e | |||
| e81e2dce9d | |||
| 3ffc3c8d3b | |||
| e35cb0c461 | |||
| db084707bb | |||
| 1a9fff778a | |||
| 90a38edb29 | |||
| fc1b4a3e2a | |||
| 94a946e36d | |||
| f06cbe296f | |||
| e2a98aaed3 | |||
| beee2c5635 | |||
| bca29b9547 | |||
| 823a781d3a | |||
| 2a9e728354 | |||
| 074c125f8c | |||
| 0b2898d170 | |||
| 12525dbf16 | |||
| 4a17adf687 | |||
| f4e412d792 | |||
| 61786797c8 | |||
| 57587a4a97 | |||
| fd048d5a0e | |||
| 229893dc95 | |||
| 26c6e2103d | |||
| 8830b5ccde | |||
| 2bc2d87b8c | |||
| 278c558c9e | |||
| 98545707b3 | |||
| 52d105efb4 | |||
| 027c3fd2d1 | |||
| 824ff9f1ec | |||
| 606e29280b | |||
| 3a29c647dd | |||
| 57dd053693 | |||
| e57173f835 | |||
| 8f4ef35ddf | |||
| 346b788f83 | |||
| edf35c74e8 | |||
| 75f2bbf6a7 | |||
| 0cbe670c90 | |||
| 2d595c1c3a | |||
| 98ebde7e72 | |||
| d607962523 | |||
| b4ae35f4a6 | |||
| be37e97a19 | |||
| d21febaaa1 | |||
| 6acba9c082 | |||
| 65147a9ac6 | |||
| a366ed749e | |||
| 87f6956958 | |||
| 3a78ac68f2 | |||
| 39774c1ed9 | |||
| bd477b3354 | |||
| 86e33a5e0a | |||
| 365c71751d | |||
| 46399bd8ed | |||
| c3a8fa73cd | |||
| fe7c9992a5 | |||
| 1922ab328b | |||
| a91f2df040 | |||
| 1a4e81963e | |||
| 5ae61ff2c7 | |||
| 995bb0b43e | |||
| 4c841aaafa | |||
| 49abf8d86f | |||
| e3ca74f09b | |||
| 6818e82c92 | |||
| 2ea95f529e | |||
| 6cec286886 | |||
| f38d22d70d | |||
| b5791997d8 | |||
| d51add8f1d | |||
| 579c800dc9 | |||
| 24897eab5e | |||
| bde2c84cde | |||
| eee791b08f | |||
| 874027d494 | |||
| 328a3821b8 | |||
| 807a9351ea | |||
| 21f5912384 | |||
| 2d35cd41f1 | |||
| 04a3a0d9c7 | |||
| be7e738839 | |||
| 67825d024d | |||
| 85ba5dcbae | |||
| b914b0ea96 | |||
| 48240d5cab | |||
| c1dc54d036 | |||
| c801856bfc | |||
| e8c9052e35 | |||
| b86aa8960b | |||
| c770fd16c2 | |||
| 36fa91f2b3 | |||
| ff55b409e0 | |||
| ee57f4ebaf | |||
| cd3b2986a5 | |||
| 79a075a034 | |||
| ad8581d9e7 | |||
| 371493e01f | |||
| 64210c330b | |||
| 088f7f2edc | |||
| d01afc28aa | |||
| d831ffaff5 | |||
| f540542aa0 | |||
| dd9d6f7901 | |||
| 714bd5ff87 | |||
| 9cb079cbba | |||
| 8003feec05 | |||
| 4616dbd65a | |||
| 1ef4a57848 | |||
| 8bae304f0d | |||
| acacaae6de | |||
| fb8239e987 | |||
| 088e680230 | |||
| 2fdc095c31 | |||
| 4ca1962829 | |||
| 19e3b11066 | |||
| ef2550568f | |||
| 9845e11954 | |||
| 0447b333ec | |||
| fb58eaec0f | |||
| b145eb1628 | |||
| d29cb07d46 | |||
| b50ad1de77 | |||
| 4cad444833 | |||
| 94885d96bc | |||
| 6902b005b4 | |||
| 2b9abe5bec | |||
| 8fa429e35a | |||
| 81eb21d84b | |||
| 097dd88b5e | |||
| 527ab850db | |||
| fbc2e414ea | |||
| c81b5e9c51 | |||
| 57e5c2eff6 | |||
| 6e29500a1b | |||
| 23423cd831 | |||
| 3e2827d624 | |||
| 08bb1ea10e | |||
| f1e23410d4 | |||
| 922f526ddd | |||
| 9a4de2f6ca | |||
| a4995ac616 | |||
| 8f70911b2e | |||
| 54c255cf33 | |||
| 553727cbe1 | |||
| 783485b96e | |||
| f01215b074 | |||
| e65afe3b24 | |||
| c3696934e9 | |||
| 12cc628f14 | |||
| c63302acbf | |||
| 6aa736a4a2 | |||
| 05ceeb440e | |||
| 539878e73b | |||
| 1c7a1732a6 | |||
| ac975c7604 | |||
| 56d2f199b5 | |||
| 1a3955a605 | |||
| e69b5d80cd | |||
| 8706d63867 | |||
| 8c0c1f7720 | |||
| 2628883568 | |||
| 8918b3708b | |||
| f75989129e | |||
| 0b563e9658 | |||
| 9e70ee745b | |||
| 3bdc496c03 | |||
| 1cccee38b8 | |||
| e613fa78fb | |||
| a552221f60 | |||
| 0b7db51bfb | |||
| a97a794dec | |||
| 1c2a944ca5 | |||
| 08555463fd | |||
| a8c04f48b0 | |||
| 0c86cd00ac | |||
| 60365023ac | |||
| 2c40323718 | |||
| 76a028cd88 | |||
| 52ad0cf32e | |||
| 7e94b1e104 | |||
| 54e971d918 | |||
| 3a82158fe3 | |||
| 34b3e260bc | |||
| 362006818e | |||
| 4faedfa9b9 | |||
| 77989ab3d8 | |||
| 8b0b253f4a | |||
| 560669f316 | |||
| 0d0c725aaf | |||
| ea11a42efd | |||
| 0be29b5255 | |||
| 6f539f0605 | |||
| e91582f846 | |||
| e72b86c95a | |||
| 58feccb9d0 | |||
| 09484f45ca | |||
| 39bf55c815 | |||
| e8f7cce07b | |||
| d56dc27fe1 | |||
| 2ee49175ef | |||
| 6fc93372a7 | |||
| 6f0379c7aa | |||
| 2491b253c6 | |||
| df3bb979e9 | |||
| bc75bb7afc | |||
| ef5f0e81da | |||
| 88ceb319af | |||
| f314a614fe | |||
| b19498ef46 | |||
| 6313039500 | |||
| f098e4b6b8 | |||
| ed70e8c940 | |||
| 9762aee7ae | |||
| d0fd19d760 | |||
| 3ccf2b9604 | |||
| babfa473fb | |||
| 0bcd46fde8 | |||
| c976bb6d21 | |||
| d301c3b029 | |||
| c5a1aebecc | |||
| e516e45cb0 | |||
| 441304c363 | |||
| 3399a82379 | |||
| 4e111ae3cd | |||
| ed669974a1 | |||
| a5742f2c1e | |||
| 02c68a48c9 | |||
| cce45d834f | |||
| 0373f01013 | |||
| cbcf51f93d | |||
| dffb439bb3 | |||
| 4b2c5fc222 | |||
| 13073d59e4 | |||
| 8e995cef82 | |||
| 57b7db7f43 | |||
| 349bc309bd | |||
| 492d2687c5 | |||
| 2fa50e3d5b | |||
| e6e00c1659 | |||
| db7cc56e3a | |||
| 7b5e7bc53a | |||
| db07bc80c8 | |||
| 0d7c6466ec | |||
| 27ecf6f81c | |||
| 1e03451b37 | |||
| 55eb1ed363 | |||
| 6ddf703f9e | |||
| 6f8671bc8f | |||
| b1185018de | |||
| 5d8357231c | |||
| aeb4328e23 | |||
| 68802a2a4d | |||
| ceb2f7f7ce | |||
| 4da427bac0 | |||
| 766e57e849 | |||
| 3c3b8c8428 | |||
| 49d47b70f6 | |||
| 49cc496661 | |||
| 717e57dc81 | |||
| 56444f6363 | |||
| 9e7ef88bea | |||
| a46d69f190 | |||
| 3f7c0803f1 | |||
| c99b3d2236 | |||
| 580bf6ecb4 | |||
| 26a41d4eb6 | |||
| 82bf5fa76f | |||
| 3fb8262649 | |||
| feca14ae4d | |||
| 33c1221cb2 | |||
| f4f9191bd1 | |||
| 9709b69125 | |||
| 6f19c7df97 | |||
| ff33129d80 | |||
| 1b76548c91 | |||
| 9578eb96c9 | |||
| c4af665c26 | |||
| 7779cdbf66 | |||
| 95d58a14e0 | |||
| f8db5a4b1c | |||
| ca23af2623 | |||
| b13ebb9d0f | |||
| dbb06990d5 | |||
| f8c0b75ec2 | |||
| b54d162032 | |||
| 78c15596cd | |||
| 76f557501e | |||
| dca95338a9 | |||
| 5bb76aa419 | |||
| d5532926aa | |||
| 1707d28fc7 | |||
| 39143908af | |||
| b2b075ffe7 | |||
| 91c7ebb145 | |||
| 66e5fd4c6c | |||
| 80f8ad7043 | |||
| e1c3f77e68 | |||
| 14cc09b25f | |||
| bdbe45e1a2 | |||
| 66af01c050 | |||
| a38b63f87f | |||
| 2a2ef6673d | |||
| f3d618b640 |
@@ -10,3 +10,9 @@
|
||||
volume/www/website/.idea
|
||||
/volume/www/website/store/themes/talentstube-20170413/cache/*
|
||||
/volume/www/website/store/img/tmp/*
|
||||
volume/www/website/www/app/Resources/views/default/index.html.twig
|
||||
|
||||
volume/www/website/www/.vscode/settings.json
|
||||
volume/www/website/www/app/config/jwt/private.pem
|
||||
volume/www/website/www/app/config/jwt/public.pem
|
||||
volume/www/website/www/web/sql/upload.pgsql
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -2,7 +2,7 @@
|
||||
CLIENT=tt-website
|
||||
|
||||
DOCKERCOMPOSE := $(shell command -v docker-compose 2> /dev/null)
|
||||
USAGE := Usage: make ENV={prod|preprod|dev} {docker-build|docker-start|docker-stop|docker-restart}
|
||||
USAGE := Usage: make ENV={prod|preprod|dev} {SYS=windows|linux} {docker-build|docker-start|docker-stop|docker-restart}
|
||||
|
||||
ifndef DOCKERCOMPOSE
|
||||
$(error docker-compose is not available)
|
||||
@@ -14,16 +14,23 @@ $(info $(USAGE))
|
||||
$(error Exiting)
|
||||
endif
|
||||
|
||||
SYS=linux
|
||||
|
||||
DC_OVERRIDE := $(shell test -e conf/docker-compose.override.yml && echo "--file conf/docker-compose.override.yml")
|
||||
DC_OVERRIDE_ENV := $(shell test -e conf/docker-compose.$(ENV).yml && echo "--file conf/docker-compose.$(ENV).yml")
|
||||
|
||||
ifeq ($(SYS),linux)
|
||||
DC=ENV=$(ENV) CLIENT=$(CLIENT) "$(DOCKERCOMPOSE)" --project-name "$(CLIENT)_$(ENV)" --file conf/docker-compose.yml $(DC_OVERRIDE) $(DC_OVERRIDE_ENV)
|
||||
else
|
||||
DC=ENV=$(ENV) CLIENT=$(CLIENT) "$(DOCKERCOMPOSE)" --project-name "$(CLIENT)_$(ENV)" --file conf/docker-compose.win.yml $(DC_OVERRIDE) $(DC_OVERRIDE_ENV)
|
||||
endif
|
||||
|
||||
default:
|
||||
$(info $(USAGE))
|
||||
$(error Exiting)
|
||||
|
||||
docker-build:
|
||||
$(DC) pull
|
||||
$(DC) build
|
||||
$(DC) up -d
|
||||
|
||||
@@ -57,8 +64,8 @@ config:
|
||||
|
||||
@echo " --> Generating mysql auth file"
|
||||
@cat conf/env/store-mysql.env \
|
||||
| python -c "import sys; import string; v=sys.stdin.readline().split('MYSQL_ROOT_PASSWORD=')[1]; print(string.Template(open('conf/build/mysql/my.cnf').read()).substitute({'PASSWORD':v}))" \
|
||||
| docker exec -i $(CLIENT).store-mysql.$(ENV) sh -c 'cat > /root/.my.cnf'
|
||||
| python -c "import sys; import string; v=sys.stdin.readline().split('MYSQL_ROOT_PASSWORD=')[1]; print(string.Template(open('conf/build/mysql/my.cnf').read()).substitute({'PASSWORD':v}))" \
|
||||
| docker exec -i $(CLIENT).store-mysql.$(ENV) sh -c 'cat > /root/.my.cnf'
|
||||
|
||||
db-backup-all: db-backup-website db-backup-store
|
||||
|
||||
@@ -76,9 +83,14 @@ db-backup-store:
|
||||
|
||||
db-restore-all: db-restore-website db-restore-store
|
||||
|
||||
db-backup-script:
|
||||
@mkdir -p backup/
|
||||
@docker exec $(CLIENT).postgres.$(ENV) pg_dumpall --database database -c -U postgres > backup/postgres_$(ENV)_`date +%d-%m-%Y"_"%H_%M_%S`.sql
|
||||
@docker exec $(CLIENT).store-mysql.$(ENV) mysqldump -uroot database > backup/store-mysql_$(ENV)_`date +%d-%m-%Y"_"%H_%M_%S`.sql
|
||||
|
||||
db-restore-website:
|
||||
@echo "Restoring file to database (backup/store-mysql.sql)"
|
||||
@cat backup/postgres.sql | docker exec -i $(CLIENT).postgres.$(ENV) psql --dbname database -U postgres
|
||||
@echo "Restoring file to database (backup/postgres.sql)"
|
||||
@cat backup/postgres.sql | docker exec -i $(CLIENT).postgres.$(ENV) psql --dbname database -U user
|
||||
@docker cp backup/mongo $(CLIENT).mongo.$(ENV):/
|
||||
@docker exec -t $(CLIENT).mongo.$(ENV) mongorestore --drop --gzip --db=tt_history /mongo/tt_history
|
||||
|
||||
@@ -95,7 +107,7 @@ entities:
|
||||
@docker exec -i $(CLIENT).php.$(ENV) su www-data --shell=/bin/bash -c "/home/www/website/www/bin/console doctrine:generate:entities AppBundle"
|
||||
|
||||
db-diff:
|
||||
@docker exec -i $(CLIENT).php.$(ENV) su www-data --shell=/bin/bash -c "/home/www/website/www/bin/console doctrine:migrations:diff"
|
||||
@docker exec -i $(CLIENT).php.$(ENV) su www-data -c "/home/www/website/www/bin/console doctrine:migrations:diff"
|
||||
|
||||
db-migrate:
|
||||
@docker exec -i $(CLIENT).php.$(ENV) su www-data --shell=/bin/bash -c "/home/www/website/www/bin/console doctrine:migrations:migrate"
|
||||
@@ -104,3 +116,7 @@ db-deploy: db-diff db-migrate
|
||||
|
||||
es-populate:
|
||||
@docker exec -i $(CLIENT).php.$(ENV) su www-data --shell=/bin/bash -c "/home/www/website/www/bin/console fos:elastica:populate"
|
||||
|
||||
sys:
|
||||
@echo $(SYS)
|
||||
@echo $(DC)
|
||||
|
||||
+31
-24
@@ -1,47 +1,54 @@
|
||||
FROM php:7.1-fpm
|
||||
FROM php:7.1-fpm-buster
|
||||
|
||||
ENV TERM=xterm
|
||||
|
||||
RUN echo 'deb http://ftp.debian.org/debian jessie-backports main' > /etc/apt/sources.list.d/debian-backports.list
|
||||
#RUN printf "deb http://archive.debian.org/debian/ jessie main\ndeb-src http://archive.debian.org/debian/ jessie main\ndeb http://security.debian.org jessie/updates main\ndeb-src http://security.debian.org jessie/updates main\ndeb http://archive.debian.org/debian/ jessie-backports main" > /etc/apt/sources.list.d/debian-backports.list
|
||||
|
||||
RUN apt-get clean \
|
||||
&& apt-get update \
|
||||
&& apt-get install -y lsof nano less git locales
|
||||
&& apt-get update \
|
||||
&& apt-get install -y lsof nano less git locales
|
||||
|
||||
RUN echo 'fr_FR.UTF-8 UTF-8' > /etc/locale.gen \
|
||||
&& /usr/sbin/locale-gen
|
||||
&& /usr/sbin/locale-gen
|
||||
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y ffmpeg exiftool graphviz libfreetype6-dev libjpeg62-turbo-dev libpng12-dev libmcrypt-dev libxslt-dev libicu-dev libxml2-dev libpq-dev libgeoip-dev libedit-dev mysql-client nodejs npm \
|
||||
&& apt-get install -y --no-install-recommends libmagickwand-dev \
|
||||
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
|
||||
&& docker-php-ext-install -j4 gd mcrypt xsl zip intl gettext soap pdo_pgsql pdo_mysql mysqli pgsql json readline opcache \
|
||||
&& pecl install geoip-1.1.1 redis imagick mongodb \
|
||||
&& docker-php-ext-enable geoip redis imagick mongodb
|
||||
&& apt-get -y install libgmp-dev \
|
||||
&& ln -s /usr/include/x86_64-linux-gnu/gmp.h /usr/local/include/gmp.h \
|
||||
&& docker-php-ext-install gmp \
|
||||
&& docker-php-ext-configure gmp
|
||||
|
||||
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y ffmpeg exiftool graphviz libfreetype6-dev libjpeg62-turbo-dev libpng-dev libmcrypt-dev libxslt-dev libicu-dev libxml2-dev libpq-dev libgeoip-dev libedit-dev mariadb-client nodejs npm \
|
||||
&& apt-get install -y --no-install-recommends libmagickwand-dev \
|
||||
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
|
||||
&& docker-php-ext-install -j4 gd mcrypt xsl zip intl gettext soap pdo_pgsql pdo_mysql mysqli pgsql json readline opcache \
|
||||
&& pecl install geoip-1.1.1 redis imagick mongodb \
|
||||
&& docker-php-ext-enable geoip redis imagick mongodb
|
||||
|
||||
RUN { \
|
||||
echo 'opcache.memory_consumption=128'; \
|
||||
echo 'opcache.interned_strings_buffer=8'; \
|
||||
echo 'opcache.max_accelerated_files=4000'; \
|
||||
echo 'opcache.revalidate_freq=60'; \
|
||||
echo 'opcache.fast_shutdown=1'; \
|
||||
echo 'opcache.enable_cli=1'; \
|
||||
} >> /usr/local/etc/php/conf.d/docker-php-ext-opcache.ini
|
||||
echo 'opcache.memory_consumption=128'; \
|
||||
echo 'opcache.interned_strings_buffer=8'; \
|
||||
echo 'opcache.max_accelerated_files=4000'; \
|
||||
echo 'opcache.revalidate_freq=60'; \
|
||||
echo 'opcache.fast_shutdown=1'; \
|
||||
echo 'opcache.enable_cli=1'; \
|
||||
} >> /usr/local/etc/php/conf.d/docker-php-ext-opcache.ini
|
||||
|
||||
COPY zz-logformat.conf /usr/local/etc/php-fpm.d/
|
||||
COPY php.ini /usr/local/etc/php/conf.d/
|
||||
|
||||
RUN (curl --silent --show-error https://getcomposer.org/installer | php) \
|
||||
&& mv composer.phar /usr/local/bin/composer
|
||||
&& mv composer.phar /usr/local/bin/composer
|
||||
|
||||
RUN curl --location --silent --show-error https://symfony.com/installer -o /usr/local/bin/symfony \
|
||||
&& chmod a+x /usr/local/bin/symfony
|
||||
&& chmod a+x /usr/local/bin/symfony
|
||||
|
||||
RUN curl --location --silent --show-error https://s3.amazonaws.com/files.drush.org/drush.phar -o /usr/local/bin/drush \
|
||||
&& chmod a+x /usr/local/bin/drush
|
||||
&& chmod a+x /usr/local/bin/drush
|
||||
|
||||
RUN (npm install -g uglify-js) \
|
||||
&& ln -s /usr/bin/nodejs /usr/local/bin/node
|
||||
RUN (npm install -g uglify-es) \
|
||||
&& ln -s /usr/bin/nodejs /usr/local/bin/node
|
||||
|
||||
RUN apt-get clean \
|
||||
&& rm -rf /var/lib/apt/lists/
|
||||
&& rm -rf /var/lib/apt/lists/
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
FROM php:7.1-fpm
|
||||
FROM php:7.1-fpm-buster
|
||||
|
||||
ENV TERM=xterm
|
||||
|
||||
@@ -10,7 +10,7 @@ RUN echo 'fr_FR.UTF-8 UTF-8' > /etc/locale.gen \
|
||||
&& /usr/sbin/locale-gen
|
||||
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y libfreetype6-dev libjpeg62-turbo-dev libpng12-dev libmcrypt-dev libxslt-dev libicu-dev libxml2-dev libpq-dev libgeoip-dev libedit-dev mysql-client \
|
||||
&& apt-get install -y libfreetype6-dev libjpeg62-turbo-dev libpng-dev libmcrypt-dev libxslt-dev libicu-dev libxml2-dev libpq-dev libgeoip-dev libedit-dev mariadb-client \
|
||||
&& apt-get install -y --no-install-recommends libmagickwand-dev \
|
||||
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
|
||||
&& docker-php-ext-install -j4 gd mcrypt xsl zip intl gettext soap pdo_pgsql pdo_mysql mysqli pgsql json readline opcache \
|
||||
@@ -33,4 +33,4 @@ RUN (curl --silent --show-error https://getcomposer.org/installer | php) \
|
||||
&& mv composer.phar /usr/local/bin/composer
|
||||
|
||||
RUN apt-get clean \
|
||||
&& rm -rf /var/lib/apt/lists/
|
||||
&& rm -rf /var/lib/apt/lists/
|
||||
@@ -0,0 +1,35 @@
|
||||
FROM php:7.1-fpm
|
||||
|
||||
ENV TERM=xterm
|
||||
|
||||
RUN apt-get clean \
|
||||
&& apt-get update \
|
||||
&& apt-get install -y lsof nano less git locales
|
||||
|
||||
RUN echo 'fr_FR.UTF-8 UTF-8' > /etc/locale.gen \
|
||||
&& /usr/sbin/locale-gen
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y libfreetype6-dev libjpeg62-turbo-dev libpng-dev libmcrypt-dev libxslt-dev libicu-dev libxml2-dev libpq-dev libgeoip-dev libedit-dev mysql-client \
|
||||
&& apt-get install -y --no-install-recommends libmagickwand-dev \
|
||||
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
|
||||
&& docker-php-ext-install -j4 gd mcrypt xsl zip intl gettext soap pdo_pgsql pdo_mysql mysqli pgsql json readline opcache \
|
||||
&& pecl install geoip-1.1.1 redis imagick \
|
||||
&& docker-php-ext-enable geoip redis imagick
|
||||
|
||||
RUN { \
|
||||
echo 'opcache.memory_consumption=128'; \
|
||||
echo 'opcache.interned_strings_buffer=8'; \
|
||||
echo 'opcache.max_accelerated_files=4000'; \
|
||||
echo 'opcache.revalidate_freq=60'; \
|
||||
echo 'opcache.fast_shutdown=1'; \
|
||||
echo 'opcache.enable_cli=1'; \
|
||||
} >> /usr/local/etc/php/conf.d/docker-php-ext-opcache.ini
|
||||
|
||||
COPY zz-logformat.conf /usr/local/etc/php-fpm.d/
|
||||
COPY php.ini /usr/local/etc/php/conf.d/
|
||||
|
||||
RUN (curl --silent --show-error https://getcomposer.org/installer | php) \
|
||||
&& mv composer.phar /usr/local/bin/composer
|
||||
|
||||
RUN apt-get clean \
|
||||
&& rm -rf /var/lib/apt/lists/
|
||||
@@ -0,0 +1,7 @@
|
||||
date.timezone = Europe/Paris
|
||||
display_errors = Off
|
||||
memory_limit = 256M
|
||||
log_errors = On
|
||||
error_reporting = E_ALL
|
||||
error_log = /dev/stdout
|
||||
report_memleaks = On
|
||||
@@ -0,0 +1,2 @@
|
||||
[www]
|
||||
access.format = "%R [%t] \"%m %r%Q%q\" %s %f %{mili}dms %{kilo}MKb %C%%"
|
||||
@@ -0,0 +1,55 @@
|
||||
FROM php:7.1-fpm
|
||||
|
||||
ENV TERM=xterm
|
||||
|
||||
#RUN echo 'deb http://ftp.debian.org/debian jessie-backports main' > /etc/apt/sources.list.d/debian-backports.list
|
||||
|
||||
RUN printf "deb http://archive.debian.org/debian/ jessie main\ndeb-src http://archive.debian.org/debian/ jessie main\ndeb http://security.debian.org jessie/updates main\ndeb-src http://security.debian.org jessie/updates main" > /etc/apt/sources.list.d/debian-backports.list
|
||||
|
||||
RUN apt-get clean \
|
||||
&& apt-get update \
|
||||
&& apt-get install -y lsof nano less git locales
|
||||
|
||||
RUN echo 'fr_FR.UTF-8 UTF-8' > /etc/locale.gen \
|
||||
&& /usr/sbin/locale-gen
|
||||
|
||||
RUN apt-get update && apt-get install -my wget gnupg
|
||||
|
||||
RUN curl -sL https://deb.nodesource.com/setup_9.x | bash - \
|
||||
&& apt-get install -y nodejs
|
||||
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y ffmpeg exiftool graphviz libfreetype6-dev libjpeg62-turbo-dev libpng-dev libmcrypt-dev libxslt-dev libicu-dev libxml2-dev libpq-dev libgeoip-dev libedit-dev mysql-client libgmp-dev nodejs \
|
||||
&& apt-get install -y --no-install-recommends libmagickwand-dev \
|
||||
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
|
||||
&& docker-php-ext-install -j4 gd mcrypt xsl zip intl gettext soap pdo_pgsql pdo_mysql mysqli pgsql json readline opcache gmp \
|
||||
&& docker-php-ext-configure gmp \
|
||||
&& pecl install geoip-1.1.1 redis imagick mongodb \
|
||||
&& docker-php-ext-enable geoip redis imagick mongodb
|
||||
|
||||
RUN { \
|
||||
echo 'opcache.memory_consumption=128'; \
|
||||
echo 'opcache.interned_strings_buffer=8'; \
|
||||
echo 'opcache.max_accelerated_files=4000'; \
|
||||
echo 'opcache.revalidate_freq=60'; \
|
||||
echo 'opcache.fast_shutdown=1'; \
|
||||
echo 'opcache.enable_cli=1'; \
|
||||
} >> /usr/local/etc/php/conf.d/docker-php-ext-opcache.ini
|
||||
|
||||
COPY zz-logformat.conf /usr/local/etc/php-fpm.d/
|
||||
COPY php.ini /usr/local/etc/php/conf.d/
|
||||
|
||||
RUN (curl --silent --show-error https://getcomposer.org/installer | php) \
|
||||
&& mv composer.phar /usr/local/bin/composer
|
||||
|
||||
RUN curl --location --silent --show-error https://symfony.com/installer -o /usr/local/bin/symfony \
|
||||
&& chmod a+x /usr/local/bin/symfony
|
||||
|
||||
RUN curl --location --silent --show-error https://s3.amazonaws.com/files.drush.org/drush.phar -o /usr/local/bin/drush \
|
||||
&& chmod a+x /usr/local/bin/drush
|
||||
|
||||
RUN (npm install -g uglify-es) \
|
||||
&& ln -s /usr/bin/nodejs /usr/local/bin/node
|
||||
|
||||
RUN apt-get clean \
|
||||
&& rm -rf /var/lib/apt/lists/
|
||||
@@ -0,0 +1,9 @@
|
||||
date.timezone = Europe/Paris
|
||||
display_errors = Off
|
||||
memory_limit = 768M
|
||||
log_errors = On
|
||||
error_reporting = E_ALL
|
||||
error_log = /dev/stdout
|
||||
report_memleaks = On
|
||||
upload_max_filesize = 512M
|
||||
post_max_size = 512M
|
||||
@@ -0,0 +1,2 @@
|
||||
[www]
|
||||
access.format = "%R [%t] \"%m %r%Q%q\" %s %f %{mili}dms %{kilo}MKb %C%%"
|
||||
@@ -0,0 +1,75 @@
|
||||
version: "3"
|
||||
|
||||
services:
|
||||
##
|
||||
## WEBSITE RESSOURCES
|
||||
##
|
||||
nginx:
|
||||
build: build/nginx
|
||||
container_name: ${CLIENT}.nginx.${ENV}
|
||||
hostname: nginx
|
||||
volumes:
|
||||
- ../volume/nginx/etc.nginx.sites-enabled:/etc/nginx/sites-enabled
|
||||
- ../volume/www:/home/www
|
||||
restart: always
|
||||
|
||||
php:
|
||||
build: build/php_win
|
||||
container_name: ${CLIENT}.php.${ENV}
|
||||
hostname: php
|
||||
volumes:
|
||||
- ../volume/www:/home/www
|
||||
restart: always
|
||||
|
||||
postgres:
|
||||
image: postgres:9.6
|
||||
container_name: ${CLIENT}.postgres.${ENV}
|
||||
hostname: postgres
|
||||
env_file: env/postgres.env
|
||||
volumes:
|
||||
- tt-postgres:/var/lib/postgresql/data
|
||||
restart: always
|
||||
|
||||
mongo:
|
||||
image: mongo:3.4
|
||||
container_name: ${CLIENT}.mongo.${ENV}
|
||||
hostname: mongo
|
||||
volumes:
|
||||
- tt-mongo:/data/db
|
||||
restart: always
|
||||
|
||||
elasticsearch:
|
||||
build: build/elasticsearch
|
||||
container_name: ${CLIENT}.elasticsearch.${ENV}
|
||||
hostname: elasticsearch
|
||||
volumes:
|
||||
- search_db_data:/usr/share/elasticsearch/data
|
||||
restart: always
|
||||
|
||||
##
|
||||
## STORE RESSOURCES
|
||||
##
|
||||
store-php:
|
||||
build: build/php_light_win
|
||||
container_name: ${CLIENT}.store-php.${ENV}
|
||||
hostname: store-php
|
||||
volumes:
|
||||
- ../volume/www:/home/www
|
||||
restart: always
|
||||
|
||||
store-mysql:
|
||||
build: build/mysql
|
||||
container_name: ${CLIENT}.store-mysql.${ENV}
|
||||
hostname: store-mysql
|
||||
env_file: env/store-mysql.env
|
||||
volumes:
|
||||
- ../volume/store-mysql/var.lib.mysql:/var/lib/mysql
|
||||
restart: always
|
||||
|
||||
# Elastic does not play well with physical volume (folder rights trouble)
|
||||
volumes:
|
||||
? search_db_data
|
||||
tt-postgres:
|
||||
external: true
|
||||
tt-mongo:
|
||||
external: true
|
||||
Vendored
-4
@@ -1,4 +0,0 @@
|
||||
MYSQL_ROOT_PASSWORD=
|
||||
MYSQL_DATABASE=database
|
||||
MYSQL_USER=user
|
||||
MYSQL_PASSWORD=
|
||||
Vendored
-3
@@ -1,3 +0,0 @@
|
||||
POSTGRES_USER=
|
||||
POSTGRES_PASSWORD=
|
||||
POSTGRES_DB=
|
||||
@@ -1 +1,2 @@
|
||||
conf/nginx.conf
|
||||
/vendor/
|
||||
@@ -2,3 +2,52 @@ tt
|
||||
==
|
||||
|
||||
A Symfony project created on February 23, 2017, 1:42 pm.
|
||||
|
||||
## To have a representation of entity's mappings
|
||||
In php container, do php bin/console yuml:mappings
|
||||
To personnalize, see https://github.com/Nono1971/doctrine-yuml-bundle
|
||||
|
||||
## If memory issues when installing bundle
|
||||
Copy this before composer require : COMPOSER_MEMORY_LIMIT=-1
|
||||
|
||||
## To update database schema
|
||||
In php container, root@php:/home/www/website/www# php bin/console doctrine:schema:update --force
|
||||
It'll update database based on entities
|
||||
|
||||
## For Js : use assetic commande inside server container
|
||||
- do a cache-clear to update the assectic.yml file
|
||||
bin/console cache:clear --env=prod --no-debug
|
||||
- then
|
||||
php bin/console assetic:dump --env=prod --no-debug
|
||||
|
||||
## To push notifications
|
||||
- Create new .json file in web/push folder.
|
||||
|
||||
- This file is composed of two arrays : parameters, where you select specific subscribers to receive notifications,
|
||||
and notification, where you write the content.
|
||||
|
||||
- Values for parameters :
|
||||
* "pushType" : define the rule to find subscribers, only one value which fits with next ones. Values : "general", "profil", "users", "tags".
|
||||
* "profilCompletenessPercentage" : define the % of profil completeness. Works with "profil" value of pushType.
|
||||
* "users" : enters subscriber's mail. Works with "users" value of pushType.
|
||||
* "keywords" : enters tags to identify subscribers. Works with "tags" value of pushType.
|
||||
|
||||
- Values for notification :
|
||||
* "title" : the title!
|
||||
* "body" : the content.
|
||||
* "icon" : the website icon.
|
||||
* "image" : to add an image.
|
||||
* "tag" : Used to regroup notifications.
|
||||
* "data" : array where you can add "link" property. Link will redirect to the given URL.
|
||||
* "actions" : array where you can add specific action with "action", "title".
|
||||
* "badge" : to add an image for small device.
|
||||
|
||||
- Open SendPushCommand.php, go to configure(), and change the last line of addOption() for files with your filename.
|
||||
|
||||
## Stacktrace exception API
|
||||
All exceptions catched are written in the dev.log file (for ENV=dev I guess) in the AppBundle/var/logs folder.
|
||||
To have an exception that can be written in this file, create or use an already existing Exception (in AppBundle/Exception) in your Controller.
|
||||
|
||||
## Question to ask to Corentin
|
||||
* Is there a validation from Talents Tube operator to set the answer status to published?
|
||||
* Is there a comment to be written when post an answer ? (not here in mock-up)
|
||||
@@ -49,6 +49,8 @@ class AppKernel extends Kernel
|
||||
new Http\HttplugBundle\HttplugBundle(),
|
||||
new HWI\Bundle\OAuthBundle\HWIOAuthBundle(),
|
||||
|
||||
//bentools push
|
||||
new BenTools\WebPushBundle\WebPushBundle(),
|
||||
//CookieBar
|
||||
new Fairlane\CookieConsentBundle\FairlaneCookieConsentBundle(),
|
||||
|
||||
@@ -58,6 +60,9 @@ class AppKernel extends Kernel
|
||||
new WhiteOctober\PagerfantaBundle\WhiteOctoberPagerfantaBundle(),
|
||||
new Bazinga\Bundle\HateoasBundle\BazingaHateoasBundle(),
|
||||
new Lexik\Bundle\JWTAuthenticationBundle\LexikJWTAuthenticationBundle(),
|
||||
|
||||
//CORS
|
||||
new Nelmio\CorsBundle\NelmioCorsBundle(),
|
||||
];
|
||||
|
||||
if (in_array($this->getEnvironment(), ['dev', 'test'], true)) {
|
||||
@@ -66,6 +71,7 @@ class AppKernel extends Kernel
|
||||
$bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle();
|
||||
$bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle();
|
||||
$bundles[] = new Alex\DoctrineExtraBundle\AlexDoctrineExtraBundle();
|
||||
$bundles[] = new Onurb\Bundle\YumlBundle\OnurbYumlBundle();
|
||||
}
|
||||
|
||||
return $bundles;
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
<?php declare(strict_types=1);
|
||||
|
||||
namespace Application\Migrations;
|
||||
|
||||
use Doctrine\DBAL\Schema\Schema;
|
||||
use Doctrine\Migrations\AbstractMigration;
|
||||
|
||||
/**
|
||||
* Auto-generated Migration: Please modify to your needs!
|
||||
*/
|
||||
final class Version20200715123752 extends AbstractMigration
|
||||
{
|
||||
public function up(Schema $schema) : void
|
||||
{
|
||||
// this up() migration is auto-generated, please modify it to your needs
|
||||
$this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'postgresql', 'Migration can only be executed safely on \'postgresql\'.');
|
||||
|
||||
$this->addSql('ALTER TABLE company ADD cv VARCHAR(255) DEFAULT NULL');
|
||||
}
|
||||
|
||||
public function down(Schema $schema) : void
|
||||
{
|
||||
// this down() migration is auto-generated, please modify it to your needs
|
||||
$this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'postgresql', 'Migration can only be executed safely on \'postgresql\'.');
|
||||
|
||||
$this->addSql('CREATE SCHEMA public');
|
||||
$this->addSql('ALTER TABLE company DROP cv');
|
||||
}
|
||||
}
|
||||
+198
@@ -0,0 +1,198 @@
|
||||
<div>
|
||||
{% if is_granted("IS_AUTHENTICATED_REMEMBERED") %}
|
||||
{{ 'layout.logged_in_as'|trans({'%username%': app.user.username}, 'FOSUserBundle') }} |
|
||||
<a href="{{ path('fos_user_security_logout') }}">
|
||||
{{ 'layout.logout'|trans({}, 'FOSUserBundle') }}
|
||||
</a>
|
||||
{% else %}
|
||||
<a href="{{ path('fos_user_security_login') }}">{{ 'layout.login'|trans({}, 'FOSUserBundle') }}</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% for type, messages in app.session.flashBag.all %}
|
||||
{% for message in messages %}
|
||||
<div class="{{ type }}">
|
||||
{{ message|trans({}, 'FOSUserBundle') }}
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
{% block fos_user_content %}
|
||||
<div>
|
||||
{{ form_start(register_form, {'method': 'post', 'action': path('fos_user_registration_register'), 'attr': {'class': 'fos_user_registration_register'}})
|
||||
}}
|
||||
{{ form_errors(register_form) }}
|
||||
<!-- Signup -->
|
||||
<div id="signup" style="display: none; opacity: 0;" data-target-group="idForm">
|
||||
<!-- Title -->
|
||||
<header class="text-center mb-5">
|
||||
<h2 class="h4 mb-0">Créer un compte entreprise</h2>
|
||||
<p>Remplissez tous les champs.</p>
|
||||
</header>
|
||||
<!-- End Title -->
|
||||
|
||||
<!-- Input -->
|
||||
<div class="js-form-message mb-3">
|
||||
<div class="js-focus-state input-group form">
|
||||
<div class="input-group-prepend form__prepend">
|
||||
<span class="input-group-text form__text">
|
||||
<i class="fa fa-user form__text-inner"></i>
|
||||
</span>
|
||||
</div>
|
||||
{# {{ form_row(register_form.firstname, {'label': 'Prénom'}) }} #}
|
||||
{{ form_widget(register_form.firstname, { 'attr': {'class': "form-control form__input",
|
||||
'placeholder': 'Prénom' , 'aria-label':'Prénom', 'data-error-class' : 'u-has-error', 'data-success-class' : 'u-has-success', 'data-msg' : 'Entrez un prénom valide'} }) }}
|
||||
{# <input type="email" class="form-control form__input" name="email" required placeholder="Email"
|
||||
aria-label="Email" data-msg="Please enter a valid email address." data-error-class="u-has-error"
|
||||
data-success-class="u-has-success"> #}
|
||||
</div>
|
||||
</div>
|
||||
<!-- End Input -->
|
||||
|
||||
|
||||
<!-- Input -->
|
||||
<div class="js-form-message mb-3">
|
||||
<div class="js-focus-state input-group form">
|
||||
<div class="input-group-prepend form__prepend">
|
||||
<span class="input-group-text form__text">
|
||||
<i class="fa fa-user form__text-inner"></i>
|
||||
</span>
|
||||
</div>
|
||||
{# {{ form_row(register_form.lastname, {'label': 'Nom'}) }} #}
|
||||
{{ form_widget(register_form.lastname, { 'attr': {'class': "form-control form__input",
|
||||
'placeholder': 'Nom' , 'aria-label':'Nom', 'data-error-class' : 'u-has-error', 'data-success-class' : 'u-has-success', 'data-msg' : 'Entrez un nom valide'} }) }}
|
||||
{# <input type="email" class="form-control form__input" name="email" required placeholder="Email"
|
||||
aria-label="Email" data-msg="Please enter a valid email address." data-error-class="u-has-error"
|
||||
data-success-class="u-has-success"> #}
|
||||
</div>
|
||||
</div>
|
||||
<!-- End Input -->
|
||||
|
||||
|
||||
<!-- Input -->
|
||||
<div class="js-form-message mb-3">
|
||||
<div class="js-focus-state input-group form">
|
||||
<div class="input-group-prepend form__prepend">
|
||||
<span class="input-group-text form__text">
|
||||
<i class="fa fa-envelope form__text-inner"></i>
|
||||
</span>
|
||||
</div>
|
||||
{# {{ form_row(register_form.email, {'label': 'E-mail'}) }} #}
|
||||
{{ form_widget(register_form.email, { 'attr': {'class': "form-control form__input",
|
||||
'placeholder': 'Email' , 'aria-label':'Email', 'data-error-class' : 'u-has-error', 'data-success-class' : 'u-has-success', 'data-msg' : 'Entrez un email valide'} }) }}
|
||||
{# <input type="email" class="form-control form__input" name="email" required placeholder="Email"
|
||||
aria-label="Email" data-msg="Please enter a valid email address." data-error-class="u-has-error"
|
||||
data-success-class="u-has-success"> #}
|
||||
</div>
|
||||
</div>
|
||||
<!-- End Input -->
|
||||
|
||||
<!-- Input -->
|
||||
<div class="js-form-message mb-3">
|
||||
<div class="js-focus-state input-group form">
|
||||
<div class="input-group-prepend form__prepend">
|
||||
<span class="input-group-text form__text">
|
||||
|
||||
<i class="fa fa-star form__text-inner"></i>
|
||||
</span>
|
||||
</div>
|
||||
{# {{ form_row(register_form.username, {'label': 'Username'}) }} #}
|
||||
{{ form_widget(register_form.username, { 'attr': {'class': "form-control form__input",
|
||||
'placeholder': 'Identifiant' , 'aria-label':'username', 'data-error-class' : 'u-has-error', 'data-success-class' : 'u-has-success', 'data-msg' : 'Entrez un email valide'} }) }}
|
||||
{# <input type="email" class="form-control form__input" name="email" required placeholder="Email"
|
||||
aria-label="Email" data-msg="Please enter a valid email address." data-error-class="u-has-error"
|
||||
data-success-class="u-has-success"> #}
|
||||
</div>
|
||||
</div>
|
||||
<!-- End Input -->
|
||||
|
||||
<!-- Input -->
|
||||
<div class="js-form-message mb-3">
|
||||
<div class="js-focus-state input-group form">
|
||||
<div class="input-group-prepend form__prepend">
|
||||
<span class="input-group-text form__text">
|
||||
<i class="fa fa-lock form__text-inner"></i>
|
||||
</span>
|
||||
</div>
|
||||
{# {{ form_row(register_form.plainPassword.first, {'label': 'Mot de passe'}) }} #}
|
||||
{{ form_widget(register_form.plainPassword.first, { 'attr': {'class': "form-control form__input",
|
||||
'placeholder': 'Mot de passe' , 'aria-label':'Mot de passe', 'data-error-class' : 'u-has-error', 'data-success-class' : 'u-has-success', 'data-msg' : 'Mot de passe invalide'} }) }}
|
||||
</div>
|
||||
</div>
|
||||
<!-- End Input -->
|
||||
|
||||
<!-- Input -->
|
||||
<div class="js-form-message mb-3">
|
||||
<div class="js-focus-state input-group form">
|
||||
<div class="input-group-prepend form__prepend">
|
||||
<span class="input-group-text form__text">
|
||||
<i class="fa fa-key form__text-inner"></i>
|
||||
</span>
|
||||
</div>
|
||||
{# {{ form_row(register_form.plainPassword.second, {'label': 'Répéter le mot de passe'}) }} #}
|
||||
{{ form_widget(register_form.plainPassword.second, { 'attr': {'class': "form-control form__input",
|
||||
'placeholder': 'Répéter le mot de passe' , 'aria-label':'Répéter le mot de passe', 'data-error-class' : 'u-has-error', 'data-success-class' : 'u-has-success', 'data-msg' : 'Mot de passe invalide'} }) }}
|
||||
</div>
|
||||
</div>
|
||||
{% if destination_login is defined %}
|
||||
<input type="hidden" name="_target_path" value="{{ destination_login }}" />
|
||||
{% endif %}
|
||||
<!-- End Input -->
|
||||
<div class="mb-3">
|
||||
{% set label = 'user.cgu.label'|trans({'%link_start%' : '<a style="margin-bottom:25px;" target="_blank" href="'~path('service_cgu')~'">', '%link_end%' : '</a>'}, 'messages') | raw %}
|
||||
{{ form_errors(register_form.cgu) }}
|
||||
{{ form_widget(register_form.cgu) }}
|
||||
{% block form_label %}
|
||||
{% spaceless %}
|
||||
<label for="fos_user_registration_form_cgu">
|
||||
Je déclare avoir pris connaissance et accepté les termes et les <a target="_blank"
|
||||
href="{{ path("service_cgu") }}">conditions générales d’utilisation</a>
|
||||
</label>
|
||||
{% endspaceless %}
|
||||
{% endblock %}
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
{{ form_row(register_form._token) }}
|
||||
token {{ csrf_token }}
|
||||
{% if csrf_token %}
|
||||
<input type="hidden" name="_csrf_token" ID="_csrf_token" value="{{ csrf_token }}" />
|
||||
{% endif %}
|
||||
<input type="hidden" name="_csrf_token" value="{{ csrf_token('authenticate') }}">
|
||||
<input class="btn btn-default btn-round" type="submit" id="_submit_register" name="_submit_register"
|
||||
value="Créer un compte!" />
|
||||
<button type="submit" class="btn btn-block btn-primary">S'inscrire</button>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="text-center mb-3">
|
||||
<p class="text-muted">
|
||||
Vous avez déjà un compte? {{ csrf_token }}!!
|
||||
<a class="js-animation-link" href="javascript:;" data-target="#signin" data-link-group="idForm"
|
||||
data-animation-in="fadeIn">Connexion Recruteur
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<!-- Divider -->
|
||||
<div class="text-center u-divider-wrapper my-3">
|
||||
|
||||
</div>
|
||||
<div class="text-center mb-3">
|
||||
<p class="text-muted">
|
||||
<!-- End Divider -->
|
||||
|
||||
|
||||
{% if destination_login is defined %}
|
||||
<input type="hidden" name="_target_path" value="{{ destination_login }}" />
|
||||
|
||||
|
||||
{% endif %}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<!-- End Signup -->
|
||||
{{ form_rest(register_form) }}
|
||||
{{ form_end(register_form) }}
|
||||
|
||||
</div>
|
||||
{% endblock fos_user_content %}
|
||||
@@ -166,9 +166,17 @@
|
||||
<source>company.account.password.modify.label</source>
|
||||
<target>Modifier le mot de passe</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="company.account.notifications.title">
|
||||
<source>company.account.notifications.title</source>
|
||||
<target>Notifications</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="profile.edit.submit">
|
||||
<source>profile.edit.submit</source>
|
||||
<target>Sauvegarder mon profil</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="profile.edit.save">
|
||||
<source>profile.edit.save</source>
|
||||
<target>Enregistrer</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="profile.company.title">
|
||||
<source>profile.company.title</source>
|
||||
@@ -226,6 +234,30 @@
|
||||
<source>profile.company.logo</source>
|
||||
<target>Logo de l'entreprise</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.title.label">
|
||||
<source>talent.profile.title.label</source>
|
||||
<target>Titre de votre profil</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.situation.label">
|
||||
<source>talent.profile.situation.label</source>
|
||||
<target>Votre situation</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.description.label">
|
||||
<source>talent.profile.description.label</source>
|
||||
<target>Quelques mots sur vous</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="profile.talent.tags">
|
||||
<source>profile.talent.tags</source>
|
||||
<target>Vos compétences.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="profile.talent.under.tags">
|
||||
<source>profile.talent.under.tags</source>
|
||||
<target>Définissez vos clés dans l’ordre d’importance. Vous pouvez indiquer jusqu’à 50 compétences.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.menu.dashboard.label">
|
||||
<source>talent.menu.dashboard.label</source>
|
||||
<target>Mon profil</target>
|
||||
</trans-unit>
|
||||
<!-- ANNONCE-->
|
||||
<trans-unit id="ad.company.add.label">
|
||||
<source>ad.company.add.label</source>
|
||||
@@ -305,6 +337,82 @@
|
||||
<source>talent.menu.recommandations.label</source>
|
||||
<target>Mes recommandations</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.career.company.label">
|
||||
<source>talent.profile.career.company.label</source>
|
||||
<target>Entreprise</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.career.job.label">
|
||||
<source>talent.profile.career.job.label</source>
|
||||
<target>Intitulé du poste</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.career.begin.label">
|
||||
<source>talent.profile.career.begin.label</source>
|
||||
<target>Début</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.career.end.label">
|
||||
<source>talent.profile.career.end.label</source>
|
||||
<target>Fin</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.career.skills.label">
|
||||
<source>talent.profile.career.skills.label</source>
|
||||
<target>Vos compétences</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.career.actualJob.label">
|
||||
<source>talent.profile.career.actualJob.label</source>
|
||||
<target>Toujours en poste</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.career.place.label">
|
||||
<source>talent.profile.career.place.label</source>
|
||||
<target>Lieux</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.formation.name.label">
|
||||
<source>talent.profile.formation.name.label</source>
|
||||
<target>Diplome</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.formation.school.label">
|
||||
<source>talent.profile.formation.school.label</source>
|
||||
<target>Ecole</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.formation.actual.label">
|
||||
<source>talent.profile.formation.actual.label</source>
|
||||
<target>Toujours en cours</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.formation.obtention.label">
|
||||
<source>talent.profile.formation.obtention.label</source>
|
||||
<target>Année d'obtention</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.language.skill.1.label">
|
||||
<source>talent.profile.language.skill.1.label</source>
|
||||
<target>Notions</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.language.skill.2.label">
|
||||
<source>talent.profile.language.skill.2.label</source>
|
||||
<target>Compétence professionnelle limitée</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.language.skill.3.label">
|
||||
<source>talent.profile.language.skill.3.label</source>
|
||||
<target>Compétence professionnelle complète</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.language.skill.4.label">
|
||||
<source>talent.profile.language.skill.4.label</source>
|
||||
<target>Bilingue ou natif</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.language.name.label">
|
||||
<source>talent.profile.language.name.label</source>
|
||||
<target>Langue</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.situation.1.label">
|
||||
<source>talent.profile.situation.1.label</source>
|
||||
<target>En recherche d’emploi</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.situation.2.label">
|
||||
<source>talent.profile.situation.2.label</source>
|
||||
<target>À l’écoute d’opportunités</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="talent.profile.situation.3.label">
|
||||
<source>talent.profile.situation.3.label</source>
|
||||
<target>En poste</target>
|
||||
</trans-unit>
|
||||
<!-- TALENT -->
|
||||
<trans-unit id="ad.talent.answer.label">
|
||||
<source>ad.talent.answer.label</source>
|
||||
@@ -552,8 +660,20 @@
|
||||
<source>label.answer.history.title</source>
|
||||
<target>Historique des messages envoyés</target>
|
||||
</trans-unit>
|
||||
|
||||
|
||||
|
||||
<!-- Territoires -->
|
||||
<trans-unit id="message.territory.list.ads">
|
||||
<source>message.territory.list.ads</source>
|
||||
<target>offres d'emploi en cours sur ce territoire</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="message.territory.list.ad">
|
||||
<source>message.territory.list.ad</source>
|
||||
<target>offre d'emploi en cours sur ce territoire</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="message.territory.list.noads">
|
||||
<source>message.territory.list.noads</source>
|
||||
<target>Découvrez les entreprises qui recrutent sur ce territoire</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
+134
@@ -0,0 +1,134 @@
|
||||
{% extends 'admin/base_admin.html.twig' %}
|
||||
|
||||
|
||||
{% block contentHeader %}
|
||||
<h1>
|
||||
Liste des Candidatures
|
||||
</h1>
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="{{ path('admin_dashboard') }}"><i class="fa fa-dashboard"></i> Dashboard</a></li>
|
||||
<li class="active">Annonces</li>
|
||||
</ol>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<div class="box box-primary">
|
||||
<div class="box-body">
|
||||
<table id="answer_list_table" class="table table-hover table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="col-xs-2">Date d'envoi</th>
|
||||
<th>Utilisateur</th>
|
||||
<th>Annonce / Entreprise</th>
|
||||
<th>video</th>
|
||||
<th>Status</th>
|
||||
<th>action</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
{% for answer in answers if answer.status != "DRAFT" %}
|
||||
<tr>
|
||||
<td data-order="{{ answer.sendTime|date('U') }}">{{ answer.sendTime|date('d/m/Y') }}</td>
|
||||
<td>{{ answer.user.firstname }} {{ answer.user.lastname }}</td>
|
||||
{% if answer.ad %}
|
||||
<td>{{ answer.ad.company.brandname }} - {{ answer.ad.title }}</td>
|
||||
{% else %}
|
||||
<td>{{ answer.company.brandname }}</td>
|
||||
{% endif %}
|
||||
<td>
|
||||
|
||||
ID Candidature : {{ answer.id }}<br />
|
||||
{% if answer.video.cdnUrl is defined %}
|
||||
<iframe src="https://player.vimeo.com/video/{{ answer.video.cdnUrl|replace({ "/videos/": ""}) }}"
|
||||
width="auto" height="auto" frameborder="0" webkitallowfullscreen mozallowfullscreen
|
||||
allowfullscreen></iframe>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td class="status">{{ answer.status }}</td>
|
||||
<td>
|
||||
Actions :
|
||||
<select class="changeStatus" name="changeStatus" data-id="{{ answer.id }}">
|
||||
<option value="null">choisir</option>
|
||||
<option value="SENDED">Envoyé</option>
|
||||
<option value="DRAFT">Brouillon</option>
|
||||
<option value="REFUSED">Refuser</option>
|
||||
</select>
|
||||
<br />
|
||||
<a class="delete-answer" href='{{ path("admin_answer_delete",{'id':answer.id }) }}' data-toggle="tooltip" title="Supprimer">
|
||||
Supprimer <i class="fa fa-trash"></i>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block javascripts %}
|
||||
<script>
|
||||
$(function () {
|
||||
$('.changeStatus').change(function(e){
|
||||
e.preventDefault();
|
||||
var idAnswer = $(this).data('id');
|
||||
var value = $(this).val();
|
||||
var route = '/app_dev.php/admin/config/answer/' + idAnswer + '/status/' + value;
|
||||
var select = $(this);
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: route,
|
||||
dataType: "json",
|
||||
success: function (msg) {
|
||||
console.log("ok");
|
||||
select.parent().prev('.status').html(value);
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
$('#answer_list_table').DataTable({
|
||||
"paging": true,
|
||||
"lengthChange": true,
|
||||
"searching": true,
|
||||
"ordering": true,
|
||||
"info": true,
|
||||
"autoWidth": false,
|
||||
"language": {
|
||||
"url": "http://cdn.datatables.net/plug-ins/1.10.11/i18n/French.json"
|
||||
},
|
||||
"columnDefs": [
|
||||
{"targets": 1, "searchable": true, "orderable": true},
|
||||
{"targets": 2, "searchable": true, "orderable": true},
|
||||
{"targets": 4, "searchable": true, "orderable": true, "className": "text-center"},
|
||||
],
|
||||
"order": [[ 0, "desc" ]]
|
||||
});
|
||||
|
||||
$(".delete-answer").confirm({
|
||||
title: "Êtes vous sûr de supprimer cette candidature ?",
|
||||
content: "Supprimer cette candidature supprimera le média associé",
|
||||
type: 'red',
|
||||
boxWidth: '30%',
|
||||
useBootstrap: false,
|
||||
buttons: {
|
||||
confirm: {
|
||||
text: 'Confirmer',
|
||||
action: function () {
|
||||
console.log(this.$target);
|
||||
location.href = this.$target.attr('href');
|
||||
return true;
|
||||
}
|
||||
},
|
||||
cancel: {
|
||||
text: 'Annuler'
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
{% endblock %}
|
||||
Executable → Regular
+52
-2
@@ -14,7 +14,28 @@
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
{{ form_start(formUser, {'id': 'formUser'}) }}
|
||||
<div class="row">
|
||||
<div class="col-xs-8">
|
||||
<div class="box box-primary">
|
||||
<div class="box-header">
|
||||
<h3 class="box-title">Compte utilisateur</h3>
|
||||
</div>
|
||||
<div class="box-body">
|
||||
{{ form_errors(formUser) }}
|
||||
{{ form_label(formUser.email, 'Email') }}
|
||||
{{ form_widget(formUser.email, {'attr': {'class': 'form-control'}}) }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-6">
|
||||
<button class="btn btn-success edit-email-user" data-toggle="tooltip" type="submit">Enregistrer</button>
|
||||
</div>
|
||||
</div>
|
||||
{{ form_end(formUser) }}
|
||||
<br/>
|
||||
{{ form_start(form) }}
|
||||
<div class="row">
|
||||
<div class="col-xs-8">
|
||||
@@ -37,7 +58,6 @@
|
||||
{{ form_row(form.website) }}
|
||||
{{ form_row(form.tagsComma) }}
|
||||
{{ form_row(form.file) }}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -66,3 +86,33 @@
|
||||
{{ form_end(form) }}
|
||||
|
||||
{% endblock %}
|
||||
|
||||
|
||||
{% block javascripts %}
|
||||
<script>
|
||||
$(document).ready(function () {
|
||||
$('[data-toggle="popover"]').popover();
|
||||
|
||||
$(".edit-email-user").confirm({
|
||||
title: "Êtes vous sûr de modifier l'adresse mail de cet utilisateur ?",
|
||||
content: "Si une erreur de saisie est présente, l'utilisateur ne pourra plus recevoir vos mails.",
|
||||
type: 'ored',
|
||||
boxWidth: '30%',
|
||||
useBootstrap: false,
|
||||
buttons: {
|
||||
confirm: {
|
||||
text: 'Confirmer',
|
||||
action: function() {
|
||||
$("[name='user_company']").submit();
|
||||
return true;
|
||||
}
|
||||
},
|
||||
cancel: {
|
||||
text: 'Annuler'
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
{% endblock %}
|
||||
@@ -28,6 +28,11 @@
|
||||
<i class="fa fa-file-video-o" aria-hidden="true"></i> <span>Vidéos Talent</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{ path('admin_anwser_moderation_list') }}">
|
||||
<i class="fa fa-file-video-o" aria-hidden="true"></i> <span>Candidatures</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="sidebar-menu">
|
||||
<li class="header">ENTITEES</li>
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
<i class="fa fa-star color-gold" aria-hidden="true"></i>
|
||||
</span>
|
||||
{% endif %}
|
||||
<br/><i class="fa fa-link"></i>Url :<br /> https://www.talentstube.com{{ path("talent_show",{'alias':user.company.alias})}}<br />
|
||||
</h3>
|
||||
<br>
|
||||
<span><a href="mailto:{{ user.email }}">{{ user.email }}</a></span>
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
<div class="col-content bg-arrow z-depth-2 p-20">
|
||||
<div class="row">
|
||||
<div class="col s12">
|
||||
<h4 class="color-blue1 p-0"><span class="title-bubble">1</span> Enregistrez votre cv vidéo</h4>
|
||||
<h4 class="color-blue1 p-0"><span class="title-bubble">1/3</span> Enregistrez votre cv vidéo</h4>
|
||||
</div>
|
||||
<div class="col m4 offset-m1 s12">
|
||||
<video id="myCvVideo" class="video-js vjs-default-skin"></video>
|
||||
@@ -60,7 +60,7 @@
|
||||
<div class="col-content bg-arrow z-depth-2 p-20">
|
||||
<div class="row">
|
||||
<div class="col s12">
|
||||
<h4 class="color-blue1 p-0"><span class="title-bubble">2</span> Importez votre CV Vidéo</h4>
|
||||
<h4 class="color-blue1 p-0"><span class="title-bubble">2/3</span> Importez votre CV Vidéo</h4>
|
||||
</div>
|
||||
<div class="col s10 offset-s1 answer-dropzone">
|
||||
{% include 'media/dropzone.html.twig' with {'deleting': true } %}
|
||||
@@ -72,7 +72,7 @@
|
||||
{{ form_row(form.status) }}
|
||||
<div class="row">
|
||||
<div class="col s12">
|
||||
<h4 class="color-blue1 p-0"><span class="title-bubble">3</span> Ajoutez votre commentaire</h4>
|
||||
<h4 class="color-blue1 p-0"><span class="title-bubble">3/3</span> Ajoutez votre commentaire</h4>
|
||||
</div>
|
||||
<div class="col s10 offset-s1">
|
||||
<div class="row">
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
<div id="modal-tuto" class="modal">
|
||||
<div id="modal-tuto" class="modal modal-fixed-footer">
|
||||
<div class="modal-content">
|
||||
<div class="row">
|
||||
<div class="col s12">
|
||||
<h3 class="color-blue1 center-align title-tuto">Les conseils de Talents Tube</h3>
|
||||
<div class="col-content">
|
||||
<h3 class="color-blue1 center-align">Les conseils de Talents Tube</h3>
|
||||
<div class="owl-carousel tuto-carousel">
|
||||
<div class="item-tuto-webcam carousel-item">
|
||||
<div class="row">
|
||||
<div class="col s4 offset-s1 hide-on-med-and-down">
|
||||
<div class="col s3 offset-s1 hide-on-med-and-down">
|
||||
<img class="responsive-img" src="{{ asset('img/img_popupcv/cv_video_step_1.svg')}}" alt="">
|
||||
</div>
|
||||
<div class="col s11 m11 l6 offset-s1 left-align">
|
||||
@@ -31,7 +31,7 @@
|
||||
</div>
|
||||
<div class="item-tuto-webcam carousel-item">
|
||||
<div class="row">
|
||||
<div class="col s4 offset-s1 hide-on-med-and-down">
|
||||
<div class="col s3 offset-s1 hide-on-med-and-down">
|
||||
<img class="responsive-img" src="{{ asset('img/img_popupcv/cv_video_step_2.svg')}}" alt="">
|
||||
</div>
|
||||
<div class="col s11 m11 l6 offset-s1 left-align">
|
||||
@@ -51,7 +51,7 @@
|
||||
</div>
|
||||
<div class="item-tuto-webcam carousel-item">
|
||||
<div class="row">
|
||||
<div class="col s4 offset-s1 hide-on-med-and-down">
|
||||
<div class="col s3 offset-s1 hide-on-med-and-down">
|
||||
<img class="responsive-img" src="{{ asset('img/img_popupcv/cv_video_step_3.svg')}}" alt="">
|
||||
</div>
|
||||
<div class="col s11 m11 l6 offset-s1 left-align">
|
||||
@@ -73,12 +73,15 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="carousel-fixed-item right">
|
||||
<a class="text close-tuto">Passer l'intro</a>
|
||||
<a class="btn btn-default next-slide">suivant</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<div id="customDots" class="owl-dots"></div>
|
||||
<div class="carousel-fixed-item right">
|
||||
<a class="text close-tuto">Passer l'intro</a>
|
||||
<a class="btn btn-default next-slide">suivant</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -3,20 +3,11 @@
|
||||
<head>
|
||||
|
||||
<!-- Google Tag Manager -->
|
||||
<script>
|
||||
(function (w, d, s, l, i) {
|
||||
w[l] = w[l] || [];
|
||||
w[l].push({
|
||||
'gtm.start': new Date().getTime(), event: 'gtm.js'
|
||||
});
|
||||
var f = d.getElementsByTagName(s)[0],
|
||||
j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : '';
|
||||
j.async = true;
|
||||
j.src =
|
||||
'https://www.googletagmanager.com/gtm.js?id=' + i + dl;
|
||||
f.parentNode.insertBefore(j, f);
|
||||
})(window, document, 'script', 'dataLayer', 'GTM-P4G65WJ');
|
||||
</script>
|
||||
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
|
||||
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
|
||||
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
|
||||
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
|
||||
})(window,document,'script','dataLayer','GTM-P4G65WJ');</script>
|
||||
<!-- End Google Tag Manager -->
|
||||
<script type="text/javascript" defer="defer" src="https://extend.vimeocdn.com/ga/64189815.js"></script>
|
||||
|
||||
@@ -70,6 +61,7 @@
|
||||
{#{% include 'default/alert.html.twig' %}#}
|
||||
{% include 'default/user_switch.html.twig' %}
|
||||
{% include 'default/header.html.twig' %}
|
||||
{% include 'default/props_settings.html.twig' %}
|
||||
{% block content %}
|
||||
{% endblock %}
|
||||
{% include 'default/footer.html.twig' %}
|
||||
@@ -79,6 +71,7 @@
|
||||
'@global'
|
||||
output='assetic/main.js' filter='?uglifyjs2' %}
|
||||
<script src="{{ asset_url }}"></script>
|
||||
|
||||
{% endjavascripts %}
|
||||
{% endblock %}
|
||||
{{ include('FairlaneCookieConsentBundle::cookie-info.html.twig') }}
|
||||
|
||||
@@ -3,20 +3,11 @@
|
||||
<head>
|
||||
|
||||
<!-- Google Tag Manager -->
|
||||
<script>
|
||||
(function (w, d, s, l, i) {
|
||||
w[l] = w[l] || [];
|
||||
w[l].push({
|
||||
'gtm.start': new Date().getTime(), event: 'gtm.js'
|
||||
});
|
||||
var f = d.getElementsByTagName(s)[0],
|
||||
j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : '';
|
||||
j.async = true;
|
||||
j.src =
|
||||
'https://www.googletagmanager.com/gtm.js?id=' + i + dl;
|
||||
f.parentNode.insertBefore(j, f);
|
||||
})(window, document, 'script', 'dataLayer', 'GTM-P4G65WJ');
|
||||
</script>
|
||||
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
|
||||
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
|
||||
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
|
||||
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
|
||||
})(window,document,'script','dataLayer','GTM-P4G65WJ');</script>
|
||||
<!-- End Google Tag Manager -->
|
||||
<script type="text/javascript" defer="defer" src="https://extend.vimeocdn.com/ga/64189815.js"></script>
|
||||
|
||||
@@ -65,6 +56,7 @@
|
||||
'@global'
|
||||
output='assetic/main.base.dash.js' filter='?uglifyjs2' %}
|
||||
<script src="{{ asset_url }}"></script>
|
||||
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDYV8IJGtIoWLfXJQQvIuDQ88n2aEuRgpg&libraries=places"></script>
|
||||
{% endjavascripts %}
|
||||
{% endblock %}
|
||||
</body>
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="fr">
|
||||
<head>
|
||||
<!-- Title -->
|
||||
<title>Talents Tube : Le 1er job board 100% vidéo</title>
|
||||
|
||||
<!-- Required Meta Tags Always Come First -->
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<!-- Google Fonts -->
|
||||
<link href="//fonts.googleapis.com/css?family=Roboto:300,400,500,700" rel="stylesheet">
|
||||
|
||||
<!-- CSS Implementing Plugins -->
|
||||
<link rel="stylesheet" href="{{ asset('v2/vendor/font-awesome/css/all.min.css') }}">
|
||||
<link rel="stylesheet" href="{{ asset('v2/vendor/hs-megamenu/src/hs.megamenu.css') }}">
|
||||
<link rel="stylesheet" href="{{ asset('v2/vendor/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.css') }}">
|
||||
<link rel="stylesheet" href="{{ asset('v2/vendor/custombox/dist/custombox.min.css') }}">
|
||||
<link rel="stylesheet" href="{{ asset('v2/vendor/animate.css/animate.min.css') }}">
|
||||
<link rel="stylesheet" href="{{ asset('v2/vendor/slick-carousel/slick/slick.css') }}">
|
||||
<link rel="stylesheet" href="{{ asset('v2/vendor/cubeportfolio/css/cubeportfolio.min.css') }}">
|
||||
<link rel="stylesheet" href="{{ asset('v2/vendor/fancybox/jquery.fancybox.css') }}">
|
||||
|
||||
<!-- CSS Space Template -->
|
||||
<link rel="stylesheet" href="{{ asset('v2/css/theme.css') }}">
|
||||
<script type="text/javascript"> window.$crisp=[];window.CRISP_WEBSITE_ID="78ec5756-1cd5-4f3f-b0db-cb408c8171da";(function(){ d=document;s=d.createElement("script"); s.src="https://client.crisp.chat/l.js"; s.async=1;d.getElementsByTagName("head")[0].appendChild(s);})(); </script>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Google Tag Manager (noscript) -->
|
||||
<noscript>
|
||||
<iframe src="https://www.googletagmanager.com/ns.html?id=GTM-P4G65WJ"
|
||||
height="0" width="0" style="display:none;visibility:hidden"></iframe>
|
||||
</noscript>
|
||||
<!-- End Google Tag Manager (noscript) -->
|
||||
{#{% include 'default/alert.html.twig' %}#}
|
||||
{# {% include 'defaultv2/user_switch.html.twig' %}#}
|
||||
{% include 'defaultv2/header.html.twig' %}
|
||||
{#{% include 'defaultv2/props_settings.html.twig' %} #}
|
||||
{% block content %}
|
||||
{% endblock %}
|
||||
{# {% include 'defaultv2/footer.html.twig' %} #}
|
||||
{{ include('FairlaneCookieConsentBundle::cookie-info.html.twig') }}
|
||||
</body>
|
||||
</html>
|
||||
@@ -15,11 +15,18 @@
|
||||
{% include 'company/ad_breadcrumb.html.twig' with {'step': 3,'ad': answer.ad,'firstname':answer.user.firstname ,'lastname':answer.user.lastname} %}
|
||||
<div class="col s12 m6">
|
||||
<div id="mini-profil-block">
|
||||
<a target="_blank" href="{{ path('talent_show',{'alias':answer.user.company.alias} ) }}">
|
||||
{% include 'talent/talent_picture.html.twig' with {
|
||||
'user' : answer.user
|
||||
} %}
|
||||
</a>
|
||||
<div>
|
||||
<div class="mini-profil-picture-name">{{ answer.user.firstname }} {{ answer.user.lastname }}</div>
|
||||
<div class="mini-profil-picture-name">
|
||||
<a target="_blank" href="{{ path('talent_show',{'alias':answer.user.company.alias} ) }}">
|
||||
{{ answer.user.firstname }} {{ answer.user.lastname }}
|
||||
<i class="fa fa-user-circle"></i>
|
||||
</a>
|
||||
</div>
|
||||
<div>Recu le {{ answer.sendTime|date('d/m/Y') }}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -68,11 +68,11 @@
|
||||
- {{ company.addresses.billing.country|country }}</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="col s12 profil-links">
|
||||
<div class="col s12 profil-links center-align">
|
||||
{% if company.website %}
|
||||
<a target="_blank" href="{{ company.website }}" class="td-none">
|
||||
<span class="fa-stack fa-lg">
|
||||
<i class="fa fa-circle fa-stack-2x z-depth-2"></i>
|
||||
<i class="fa fa-circle fa-stack-2x"></i>
|
||||
<i class="fa fa-link fa-stack-1x fa-inverse"></i>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
@@ -46,9 +46,9 @@
|
||||
<span class="clearfix"></span>
|
||||
<div class="keywords">
|
||||
{% if a.publicTag %}
|
||||
{% for keyword in a.publicTag %}
|
||||
{% for tag in a.publicTag %}
|
||||
<div class="chip">
|
||||
{{ keyword }}
|
||||
<a href="{{ path('ad_search_result',{'tag':tag }) }}">{{ tag }}</a>
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
@@ -52,7 +52,9 @@
|
||||
<div class="col s11 col-noPadding" style="position:relative;">
|
||||
<div class="frame" id="basic">
|
||||
<ul class="slidee">{% for tag in a.publicTag %}
|
||||
<li class="chip">{{ tag }}</li>{% endfor %}</ul>
|
||||
<li class="chip">
|
||||
<a href="{{ path('ad_search_result',{'tag':tag }) }}" class="hover-blue2">{{ tag }}</a>
|
||||
</li>{% endfor %}</ul>
|
||||
</div>
|
||||
<div class="controls center">
|
||||
<a class="prev"><i class="fa fa-arrow-circle-left" aria-hidden="true"></i></a>
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
{% else %}#}
|
||||
<div class="embed-responsive embed-responsive-16by9">
|
||||
<div class="col s12">
|
||||
<iframe src="https://player.vimeo.com/video/{{ ad.video.cdnUrl|replace({ "/videos/": ""}) }}"
|
||||
<iframe src="https://player.vimeo.com/video/{{ ad.video.cdnUrl|replace({ "/videos/": ""}) }}?texttrack=fr"
|
||||
width="100%" height="640" frameborder="0" webkitallowfullscreen mozallowfullscreen
|
||||
allowfullscreen></iframe>
|
||||
</div>
|
||||
@@ -51,6 +51,11 @@
|
||||
OFFRE POURVUE
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if ad.id == 53 %}
|
||||
<div class="isPromoted">
|
||||
Traitement des candidatures vidéos
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
@@ -76,9 +81,8 @@
|
||||
</div>
|
||||
<div class="col s12">
|
||||
{% for tag in ad.publicTag %}
|
||||
<p class="chip">{{ tag }}</p>
|
||||
<p class="chip"><a href="{{ path('ad_search_result',{'tag':tag }) }}" class="hover-blue2">{{ tag }}</a></p>
|
||||
{% endfor %}
|
||||
|
||||
<div class="item-detail-description">
|
||||
<h3 class="blue-text">Détails de l'offre d'emploi</h3>
|
||||
<p>{{ ad.description|nl2br }}</p>
|
||||
@@ -99,12 +103,14 @@
|
||||
</div>
|
||||
{% elseif not is_granted('ROLE_COMPANY') %}
|
||||
{% if not ad.isPromoted %}
|
||||
{% if ad.id != 53 %}
|
||||
<p class="item-detail-reply">
|
||||
<a title="postuler-bottom" href="{{ path('talent_answer_create',{'id': ad.getId()}) }}"
|
||||
class="btn btn-default">
|
||||
Postuler
|
||||
</a>
|
||||
</p>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
@@ -188,6 +194,10 @@
|
||||
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDYV8IJGtIoWLfXJQQvIuDQ88n2aEuRgpg&libraries=places"></script>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function(){
|
||||
//asking for push
|
||||
EdeclicLib = window.EdeclicLib || {};
|
||||
EdeclicLib.delayedAsk();
|
||||
//
|
||||
$('.tooltipped').tooltip();
|
||||
$.get( "{{ path('ad_ajaxRecStat',{'id': ad.id }) }}", function( data ) {});
|
||||
if ($('#modal-answer').length > 0) {
|
||||
|
||||
@@ -57,12 +57,14 @@
|
||||
</div>
|
||||
{% elseif not is_granted('ROLE_COMPANY') %}
|
||||
{% if not ad.isPromoted %}
|
||||
{% if ad.id != 53 %}
|
||||
<p class="item-detail-reply">
|
||||
<a title="postuler-side" href="{{ path('talent_answer_create',{'id': ad.getId()}) }}"
|
||||
class="btn btn-default">
|
||||
Postuler
|
||||
</a>
|
||||
</p>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
<div class="item-detail-ispromoted">
|
||||
Offre pourvue
|
||||
|
||||
@@ -13,15 +13,17 @@
|
||||
{% else %}
|
||||
<div class="header-link header-link-signin right-align">
|
||||
{% if is_granted('ROLE_TALENT') %}
|
||||
{% set path = path('talent_dashboard') %}
|
||||
{% set pathDash = path('talent_dashboard') %}
|
||||
{% elseif is_granted('ROLE_COMPANY') %}
|
||||
{% set path = path('company_dashboard') %}
|
||||
{% set pathDash = path('company_dashboard') %}
|
||||
{% elseif is_granted('ROLE_TERRITORY') %}
|
||||
{% set path = path('territory_dashboard') %}
|
||||
{% set pathDash = path('territory_dashboard') %}
|
||||
{% elseif is_granted('ROLE_ADMIN') %}
|
||||
{% set path = path('admin_dashboard') %}
|
||||
{% set pathDash = path('admin_dashboard') %}
|
||||
{% else %}
|
||||
{% set pathDash = path('talent_dashboard') %}
|
||||
{% endif %}
|
||||
<a class="btn button-round-small" href="{{ path }}">
|
||||
<a class="btn button-round-small" href="{{ pathDash }}">
|
||||
<i class="material-icons">perm_identity</i>
|
||||
<span>Mon compte</span>
|
||||
</a>
|
||||
|
||||
@@ -32,15 +32,22 @@
|
||||
<div class="row row-tags row-noMargin">
|
||||
<div class="col s11 col-noPadding" style="position:relative;">
|
||||
<div class="chip center-align">
|
||||
{% set nbAds = c.getPublishedAds|length %}
|
||||
{% set fragment = "" %}
|
||||
{% if nbAds > 0 %}
|
||||
{% set fragment = "offers" %}
|
||||
{% endif %}
|
||||
<a class="td-none color-grey3"
|
||||
href="{{ path('company_show',{'alias': c.alias, '_fragment':'offers' }) }}">
|
||||
href="{{ path('company_show',{'alias': c.alias, '_fragment': fragment }) }}">
|
||||
{% set nbAds = c.getPublishedAds|length %}
|
||||
{% if nbAds > 1 %}
|
||||
<strong>{{ c.getPublishedAds|length }} offres d'emploi en
|
||||
cours</strong>
|
||||
{% else %}
|
||||
{% elseif nbAds == 1 %}
|
||||
<strong>{{ c.getPublishedAds|length }} offre d'emploi en
|
||||
cours</strong>
|
||||
{% else %}
|
||||
<strong>candidature spontanée</strong>
|
||||
{% endif %}
|
||||
</a>
|
||||
</div>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
{% set destination = path('redirect_dashboard') %}
|
||||
{% endif %}
|
||||
<a class="btn btn-default btn-facebook z-depth-2" href="{{ url("hwi_oauth_service_redirect", {service: "facebook"}) }}?_destination={{ destination }}">Connexion avec Facebook</a>
|
||||
<a class="btn btn-default btn-linkedin z-depth-2" href="{{ url("hwi_oauth_service_redirect", {service: "linkedin"}) }}?_destination={{ destination }}">Connexion avec Linkedin</a>
|
||||
{# <a class="btn btn-default btn-linkedin z-depth-2" href="{{ url("hwi_oauth_service_redirect", {service: "linkedin"}) }}?_destination={{ destination }}">Connexion avec Linkedin</a> #}
|
||||
<div class="row">
|
||||
<div class="col s12">
|
||||
<div class="separator-with-label">
|
||||
|
||||
@@ -3,23 +3,49 @@
|
||||
<div class="row">
|
||||
<div class="col s12 m12 l10">
|
||||
<ul id='dropdown_talents' class='dropdown-content'>
|
||||
<li><a href="{{ path('ad_search_result') }}" title="Offres d'emploi vidéos">Offres d'emploi</a></li>
|
||||
<li><a href="{{ path('page_cvVideo') }}" title="Le Cv vidéo">Le CV vidéo</a></li>
|
||||
<li><a href="{{ path('page_reussirCVvideo') }}" title="Comment faire son CV Vidéo ?">Comment faire son CV Vidéo ?</a></li>
|
||||
<li><a href="{{ path('page_accompagnementTalent') }}" title="Accompagnement talent">Accompagnement</a></li>
|
||||
<li><a href="{{ path('talent_cv_import') }}" title="Créer mon CV vidéo">Créer mon CV vidéo</a></li>
|
||||
<li>
|
||||
<a href="{{ path('ad_search_result') }}" title="Offres d'emploi vidéos">Offres d'emploi</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{ path('page_cvVideo') }}" title="Le Cv vidéo">Le CV vidéo</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{ path('page_reussirCVvideo') }}" title="Comment faire son CV Vidéo ?">Comment faire son CV Vidéo ?</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{ path('page_accompagnementTalent') }}" title="Accompagnement talent">Accompagnement</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{ path('talent_cv_import') }}" title="Créer mon CV vidéo">Créer mon CV vidéo</a>
|
||||
</li>
|
||||
</ul>
|
||||
<ul id='dropdown_company' class='dropdown-content'>
|
||||
<li><a href="{{ path('company_list') }}" title="Les entreprises qui recrutent">Les entreprises qui recrutent</a></li>
|
||||
<li><a href="{{ path('page_OffreEmploi') }}" title="L'offre d'emploi en vidéo">L'offre d'emploi en vidéo</a></li>
|
||||
<li><a href="{{ path('page_reussirOffrevideo') }}" title="Comment faire une offre en vidéo">Comment faire une offre en vidéo</a></li>
|
||||
<li><a href="{{ path('page_MarqueEmployeur') }}" title="Vidéo Marque Employeur">Vidéo Marque Employeur</a></li>
|
||||
<li><a href="{{ path('page_accompagnementEntreprise') }}" title="Conseils & accompagnement">Conseils & accompagnement</a></li>
|
||||
<li>
|
||||
<a href="{{ path('company_list') }}" title="Les entreprises qui recrutent">Les entreprises qui recrutent</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{ path('page_OffreEmploi') }}" title="L'offre d'emploi en vidéo">L'offre d'emploi en vidéo</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{ path('page_reussirOffrevideo') }}" title="Comment faire une offre en vidéo">Comment faire une offre en vidéo</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{ path('page_MarqueEmployeur') }}" title="Vidéo Marque Employeur">Vidéo Marque Employeur</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{ path('page_accompagnementEntreprise') }}" title="Conseils & accompagnement">Conseils & accompagnement</a>
|
||||
</li>
|
||||
</ul>
|
||||
<ul id='dropdown_territoire' class='dropdown-content'>
|
||||
<li><a href="{{ path('territory_list') }}">Liste des territoires</a></li>
|
||||
<li><a href="{{ path('page_VideoTerritory') }}">La vidéo territoire</a></li>
|
||||
<li><a href="{{ path('page_AccompagnementTerritory') }}">Conseils et accompagnement</a></li>
|
||||
<li>
|
||||
<a href="{{ path('territory_list') }}">Liste des territoires</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{ path('page_VideoTerritory') }}">La vidéo territoire</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{ path('page_AccompagnementTerritory') }}">Conseils et accompagnement</a>
|
||||
</li>
|
||||
</ul>
|
||||
<nav>
|
||||
<div class="nav-wrapper">
|
||||
@@ -28,16 +54,25 @@
|
||||
<img src="{{ asset('img/Logo-header.png') }}" alt="Talents Tube"/>
|
||||
</a>
|
||||
</div>
|
||||
<a href="#" data-activates="mobile-demo" class="button-collapse"><i class="material-icons">menu</i></a>
|
||||
<a href="#" data-activates="mobile-demo" class="button-collapse">
|
||||
<i class="material-icons">menu</i>
|
||||
</a>
|
||||
<ul class="right hide-on-med-and-down">
|
||||
<li><a class="dropdown-button" data-activates="dropdown_talents" href="{{ path('page_cvVideo') }}"
|
||||
title="Talents">Talents</a></li>
|
||||
<li><a href="{{ path('ad_search_result') }}" title="Offres d'emploi vidéos">Offres d'emploi</a></li>
|
||||
<li><a class="dropdown-button" data-activates="dropdown_company" href="{{ path('company_list') }}"
|
||||
title="Les entreprises de talents">Entreprises</a></li>
|
||||
<li><a class="dropdown-button" data-activates="dropdown_territoire" href="{{ path('territory_list') }}"
|
||||
title="Les territoires">Territoires</a></li>
|
||||
<li><a href="https://blog.talentstube.com" title="Blog Talents Tube">Blog</a></li>
|
||||
<li>
|
||||
<a class="dropdown-button" data-activates="dropdown_talents" href="{{ path('page_cvVideo') }}" title="Talents">Talents</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{ path('ad_search_result') }}" title="Offres d'emploi vidéos">Offres d'emploi</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="dropdown-button" data-activates="dropdown_company" href="{{ path('company_list') }}" title="Les entreprises de talents">Entreprises</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="dropdown-button" data-activates="dropdown_territoire" href="{{ path('territory_list') }}" title="Les territoires">Territoires</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://blog.talentstube.com" title="Blog Talents Tube">Blog</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
@@ -48,6 +83,13 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="newApp" class="container-fluid">
|
||||
<div class="row">
|
||||
<div class="col s12 m12">
|
||||
<p>"Nouveau ! Trouvez un job plus facilement avec notre <a href="http://app.talentstube.com">web application</a>.📲"</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="nav-wrapper">
|
||||
<ul class="side-nav collapsible" data-collapsible="accordion" id="mobile-demo">
|
||||
@@ -94,4 +136,4 @@
|
||||
<a class="collapsible-header" href="https://blog.talentstube.com" title="Blog Talents Tube">Blog</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
</div>
|
||||
<div class="header-video-inner">
|
||||
<video loop="" preload="metadata" autoplay="" id="vid" muted="muted">
|
||||
<source src="/img/home_video.mp4" type="video/mp4">
|
||||
<source src="/img/home_video.mp4" type="video/mp4">
|
||||
</video>
|
||||
</div>
|
||||
|
||||
@@ -98,9 +98,9 @@
|
||||
<div class="container">
|
||||
<div class="row center-align">
|
||||
<div class="col s12">
|
||||
<h2 class="blue-text no-margin-top">Les talents</h2>
|
||||
<h2 class="blue-text no-margin-top">Les talents à la une</h2>
|
||||
</div>
|
||||
<h3 class="subtitles-homepage">Découvrez leurs CV vidéo et vidéo de motivation.</h3>
|
||||
<h3 class="subtitles-homepage">Découvrez leur CV vidéo et vidéo de motivation.</h3>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="owl-carousel owl-carousel-home home-talent-carousel">
|
||||
@@ -111,6 +111,12 @@
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="row center-align">
|
||||
<h2>Rejoignez une communauté de plus de <strong>1000</strong> candidats</h2>
|
||||
<div class="col s12 m-t-50">
|
||||
<a href="#!" title="Créer Mon profil" class="btn btn-default btn-round btn-create-account">Créer mon profil</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{# TERRITOIRE #}
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
|
||||
<!-- props_settings.html.twig Parameters used in EdeclicPushAndNotificationClient.js -->
|
||||
<div id="pushParams"
|
||||
data-service-worker-url="{{ app.request.uriForPath('/Edeclic-service-worker.js') | replace({'/app_dev.php': ''}) }}"
|
||||
data-analytics-helper-url="{{ app.request.uriForPath('js/analytics-helper.js') | replace({'/app_dev.php': ''}) }}"
|
||||
data-delete-subscription-url="{{ url('delete-subscription') }}"
|
||||
data-save-subscription-url="{{ url('save-subscription') }}"
|
||||
data-push-public-key="{{ push_public_key }}"
|
||||
>
|
||||
</div>
|
||||
@@ -19,13 +19,13 @@
|
||||
{{ user.firstname }} {{ user.lastname }}
|
||||
</a>
|
||||
</p>
|
||||
{% if talent.publicTag %}
|
||||
{#{% if talent.publicTag %}
|
||||
{% for keyword in talent.publicTag %}
|
||||
{% if keyword != "" %}
|
||||
<div class="chip">{{ keyword }}</div>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% endif %}#}
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
@@ -0,0 +1,31 @@
|
||||
<!-- Candidat DEBUT -->
|
||||
<div class="space-1-bottom accueilFondNoir">
|
||||
<div class="container space-2 ">
|
||||
<div class="row justify-content-lg-end">
|
||||
<div class="col-md-6 order-md-2 mb-5 mb-md-0">
|
||||
<!-- Title -->
|
||||
<div class="mb-4">
|
||||
<h2 class="h3"> Recevez les candidatures en vidéo</h2>
|
||||
<p> Depuis leur webcam, smartphone ou tablette, les candidats postulent aux vidéos de votre entreprise, en
|
||||
toute confidentialité, grâce à notre outil d’enregistrement vidéo simple, rapide et gratuit.
|
||||
|
||||
Vous recevez des vidéos de motivation, c’est-à-dire des candidatures qui répondent à votre vidéo de
|
||||
recrutement. Le candidat expose son parcours en illustrant ses expériences. Il met en avant ses
|
||||
motivations à vous rejoindre et les compétences qu’il peut apporter à votre entreprise.
|
||||
|
||||
<strong>Découvrez la personnalité du candidat et son projet professionnel en quelques instants.</strong>
|
||||
</p>
|
||||
<a class="btn btn-sm btn-primary btn-wide" href="candidatures-cv-video">En savoir plus</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 order-md-1">
|
||||
<div class="pr-lg-4">
|
||||
<a href="candidatures-cv-video"><img class="img-fluid" src="{{ asset('v2/png/candidature-en-video.png') }}" alt="Candidature en vidéo"></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Candidat FIN -->
|
||||
@@ -0,0 +1,40 @@
|
||||
<!-- Ils nous font confiance DEBUT -->
|
||||
<div class="container space-2 space-3--lg accueilFondBlanc">
|
||||
<div class=" text-center mx-md-auto mb-12">
|
||||
<!-- Title -->
|
||||
<h2 class="h1"> Ils nous font confiance</h2>
|
||||
<!-- Slick Carousel -->
|
||||
<div class="js-slick-carousel u-slick" data-autoplay="true" data-speed="5000" data-infinite="true"
|
||||
data-slides-show="5">
|
||||
<div class="js-slide">
|
||||
<img src="{{ asset('v2/logos/Albea-logo.png') }}" alt="Image Description">
|
||||
</div>
|
||||
<div class="js-slide">
|
||||
<img src="{{ asset('v2/logos/Bouyer-leroux-logo.png') }}" alt="Image Description">
|
||||
</div>
|
||||
<div class="js-slide">
|
||||
<img src="{{ asset('v2/logos/Eiffage-logo.png') }}" alt="Image Description">
|
||||
</div>
|
||||
<div class="js-slide">
|
||||
<img src="{{ asset('v2/logos/groupe-mousset-logo.png') }}" alt="Image Description">
|
||||
</div>
|
||||
<div class="js-slide">
|
||||
<img src="{{ asset('v2/logos/Groupe-rocher-logo.png') }}" alt="Image Description">
|
||||
</div>
|
||||
<div class="js-slide">
|
||||
<img src="{{ asset('v2/logos/intermarche.png') }}" alt="Image Description">
|
||||
</div>
|
||||
<div class="js-slide">
|
||||
<img src="{{ asset('v2/logos/Mazars-logo.png') }}" alt="Image Description">
|
||||
</div>
|
||||
<div class="js-slide">
|
||||
<img src="{{ asset('v2/logos/Mma-logo.png') }}" alt="Image Description">
|
||||
</div>
|
||||
<div class="js-slide">
|
||||
<img src="{{ asset('v2/logos/Square-habitat-logo.png') }}" alt="Image Description">
|
||||
</div>
|
||||
</div>
|
||||
<!-- End Slick Carousel -->
|
||||
</div>
|
||||
</div>
|
||||
<!-- Ils nous font confiance FIN -->
|
||||
@@ -0,0 +1,87 @@
|
||||
<!-- Degradé avec Stats Section -->
|
||||
<div class="gradient-overlay-half-primary-v1">
|
||||
<div class="bg-img-hero" style="background-image: url({{ asset('v2/img/bg/bg2.png')}} ">
|
||||
<div class="container space-2 ">
|
||||
<div class="container z-index-2 containerStat">
|
||||
<div class=" shadow-lg rounded mt-n9">
|
||||
<div class="card-deck d-block d-lg-flex">
|
||||
<div class="card card-frame mb-4 mb-lg-0">
|
||||
<!-- Listing -->
|
||||
<div class="card-body p-4">
|
||||
<div class="media">
|
||||
|
||||
<div class="media-body px-4">
|
||||
<h2 class="statChiffre">1500+</h2>
|
||||
<p class="statTexte">Talents connectés</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- End Listing -->
|
||||
</div>
|
||||
|
||||
<div class="card card-frame mb-4 mb-lg-0">
|
||||
<!-- Listing -->
|
||||
<div class="card-body p-4">
|
||||
<div class="media">
|
||||
<div class="media-body px-4">
|
||||
<h2 class="statChiffre">900+</h2>
|
||||
<p class="statTexte">Vues par vidéo</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- End Listing -->
|
||||
</div>
|
||||
|
||||
<div class="card card-frame mb-4 mb-lg-0">
|
||||
<!-- Listing -->
|
||||
<div class="card-body p-4">
|
||||
<div class="media">
|
||||
|
||||
<div class="media-body px-4">
|
||||
<h2 class="statChiffre">350</h2>
|
||||
<p class="statTexte">Candidatures vidéo</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- End Listing -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Icon Blocks Section -->
|
||||
<div class="container ">
|
||||
<div class="row space-1">
|
||||
<div class="col-md-4 mb-7 mb-md-0">
|
||||
<!-- Icon Blocks -->
|
||||
<div class="text-center px-lg-3">
|
||||
<img src="{{ asset('v2/svg/components/Diffusion-offres-emploi-video-marque-employeur.svg') }}" alt="Logo">
|
||||
<h3 class="h4 text-white">Diffusez vos offres d'emploi et marque employeur en <a href="#">vidéo</a></h3>
|
||||
</div>
|
||||
<!-- End Icon Blocks -->
|
||||
</div>
|
||||
|
||||
<div class="col-md-4 mb-7 mb-md-0">
|
||||
<!-- Icon Blocks -->
|
||||
<div class="text-center px-lg-3">
|
||||
<img src="{{ asset('v2/svg/components/candidature-en-video.svg') }}" alt="Logo">
|
||||
<h3 class="h4 text-white">Recevez les candidatures en <a href="#">vidéo</a></h3>
|
||||
</div>
|
||||
<!-- End Icon Blocks -->
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
<!-- Icon Blocks -->
|
||||
<div class="text-center px-lg-3">
|
||||
<img src="{{ asset('v2/svg/components/Gestion-des-candidatures-video.svg') }}" alt="Logo">
|
||||
<h3 class="h4 text-white">Gérez vos candidatures en <a href="#">vidéo</a></h3>
|
||||
</div>
|
||||
<!-- End Icon Blocks -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- End Icon Blocks Section -->
|
||||
</div>
|
||||
</div>
|
||||
<!-- Degradé avec Stats FIN-->
|
||||
@@ -0,0 +1,32 @@
|
||||
<!-- Marque employeur DEBUT -->
|
||||
<div class="space-1-bottom accueilFondBlanc">
|
||||
<div class="container space-2 ">
|
||||
<div class="row align-items-lg-center">
|
||||
<div class="col-md-6 order-md-2 mb-5 mb-md-0">
|
||||
<!-- Title -->
|
||||
<div class="mb-4">
|
||||
<h2 class="h3"> Révélez votre Marque Employeur en vidéo</h2>
|
||||
<p> Talents Tube offre une visibilité essentielle à votre marque employeur.
|
||||
|
||||
Grâce à la vidéo, votre entreprise replace l’humain au cœur du recrutement. Vous disposez d’un levier
|
||||
concret et efficace pour parfaire votre réputation. Développez l’attractivité de votre entreprise pour
|
||||
séduire de nouveaux talents.
|
||||
|
||||
<strong>Donnez vie à votre marque employeur en plaçant la vidéo au coeur de votre stratégie de
|
||||
communication
|
||||
et de votre gestion des ressources humaines.</strong>
|
||||
</p>
|
||||
<a class="btn btn-sm btn-primary btn-wide" href="marque-employeur-en-video">En savoir plus</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 order-md-1">
|
||||
<div class="pr-lg-4">
|
||||
<a href="marque-employeur-en-video"><img class="img-fluid" src="{{ asset('v2/png/marque-employeur-en-video.png') }}" alt="Marque employeur vidéo"></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Marque employeur FIN -->
|
||||
@@ -0,0 +1,147 @@
|
||||
{% trans_default_domain 'FOSUserBundle' %}
|
||||
<!-- Signup Modal Window -->
|
||||
<div id="signupModal" class="js-signup-modal u-modal-window" style="width: 500px;">
|
||||
<!-- Modal Close Button -->
|
||||
<button class="btn btn-sm btn-icon btn-text-secondary u-modal-window__close" type="button"
|
||||
onclick="Custombox.modal.close();">
|
||||
<i class="fas fa-times"></i>
|
||||
</button>
|
||||
<!-- End Modal Close Button -->
|
||||
|
||||
<!-- Content -->
|
||||
<div class="p-5 bg-white rounded">
|
||||
<form action="{{ path("fos_user_security_check") }}" method="post">
|
||||
{% if csrf_token %}
|
||||
<input type="hidden" name="_csrf_token" value="{{ csrf_token }}" />
|
||||
{% endif %}
|
||||
<!-- Signin -->
|
||||
<div id="signin" data-target-group="idForm">
|
||||
<!-- Title -->
|
||||
<header class="text-center mb-5">
|
||||
<h2 class="h4 mb-0">Connexion</h2>
|
||||
<p>Connecter vous pour gérer votre compte</p>
|
||||
</header>
|
||||
|
||||
|
||||
<!-- Input -->
|
||||
<div class="js-form-message mb-3">
|
||||
<div class="js-focus-state input-group form">
|
||||
<div class="input-group-prepend form__prepend">
|
||||
<span class="input-group-text form__text">
|
||||
<i class="fa fa-user form__text-inner"></i>
|
||||
</span>
|
||||
</div>
|
||||
{# <input type="email" class="form-control form__input" name="email" required placeholder="Email"
|
||||
aria-label="Email" data-msg="Please enter a valid email address." data-error-class="u-has-error"
|
||||
data-success-class="u-has-success"> #}
|
||||
|
||||
<input type="text" id="username" name="_username" value="{{ last_username }}" required="required" />
|
||||
</div>
|
||||
</div>
|
||||
<!-- End Input -->
|
||||
|
||||
<!-- Input -->
|
||||
<div class="js-form-message mb-3">
|
||||
<div class="js-focus-state input-group form">
|
||||
<div class="input-group-prepend form__prepend">
|
||||
<span class="input-group-text form__text">
|
||||
<i class="fa fa-lock form__text-inner"></i>
|
||||
</span>
|
||||
</div>
|
||||
{# <input type="password" class="form-control form__input" name="password" required placeholder="Password"
|
||||
aria-label="Password" data-msg="Your password is invalid. Please try again."
|
||||
data-error-class="u-has-error" data-success-class="u-has-success"> #}
|
||||
<input type="password" id="password" name="_password" required="required" />
|
||||
</div>
|
||||
</div>
|
||||
<!-- End Input -->
|
||||
|
||||
<div class="row mb-3">
|
||||
<div class="col-6">
|
||||
<!-- Checkbox -->
|
||||
<div class="custom-control custom-checkbox d-flex align-items-center text-muted">
|
||||
<input type="checkbox" id="remember_me" name="_remember_me" value="on" />
|
||||
<label class="custom-control-label" for="rememberMeCheckbox">
|
||||
Se souvenir de moi
|
||||
</label>
|
||||
</div>
|
||||
<!-- End Checkbox -->
|
||||
</div>
|
||||
|
||||
<div class="col-6 text-right">
|
||||
<a class="js-animation-link float-right" href="javascript:;" data-target="#forgotPassword"
|
||||
data-link-group="idForm" data-animation-in="fadeIn">Mot de passe oublié?</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
|
||||
<input type="hidden" name="_target_path" value="redirect_dashboard" />
|
||||
|
||||
<input type="submit" id="_submit" name="_submit" class="btn btn-block btn-primary"/>
|
||||
</div>
|
||||
|
||||
<div class="text-center mb-3">
|
||||
<p class="text-muted">
|
||||
Do not have an account?
|
||||
<a class="js-animation-link" href="javascript:;" data-target="#signup" data-link-group="idForm"
|
||||
data-animation-in="fadeIn">S'inscrire
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
{% if app.request.get('_route') != "fos_user_security_login" %}
|
||||
{{ render(controller('AppBundle:SecurityModal:loginModalV2')) }}
|
||||
{% endif %}
|
||||
<!-- Forgot Password -->
|
||||
<div id="forgotPassword" style="display: none; opacity: 0;" data-target-group="idForm">
|
||||
<!-- Title -->
|
||||
<header class="text-center mb-5">
|
||||
<h2 class="h4 mb-0">Recover account</h2>
|
||||
<p>Enter your email address and an email with instructions will be sent to you.</p>
|
||||
</header>
|
||||
<!-- End Title -->
|
||||
|
||||
<!-- Input -->
|
||||
<div class="js-form-message mb-3">
|
||||
<div class="js-focus-state input-group form">
|
||||
<div class="input-group-prepend form__prepend">
|
||||
<span class="input-group-text form__text">
|
||||
<i class="fa fa-user form__text-inner"></i>
|
||||
</span>
|
||||
</div>
|
||||
<input type="email" class="form-control form__input" name="email" required placeholder="Email"
|
||||
aria-label="Email" data-msg="Please enter a valid email address." data-error-class="u-has-error"
|
||||
data-success-class="u-has-success">
|
||||
</div>
|
||||
</div>
|
||||
<!-- End Input -->
|
||||
|
||||
<div class="mb-3">
|
||||
<button type="submit" class="btn btn-block btn-primary">Recover Account</button>
|
||||
</div>
|
||||
<div class="text-center mb-3">
|
||||
<p class="text-muted">
|
||||
Have an account?
|
||||
<a class="js-animation-link" href="javascript:;" data-target="#signin" data-link-group="idForm"
|
||||
data-animation-in="fadeIn">Contactez nous
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
<div class="text-center mb-3">
|
||||
<p class="text-muted">
|
||||
Have an account?
|
||||
<a class="js-animation-link" href="javascript:;" data-target="#signin" data-link-group="idForm"
|
||||
data-animation-in="fadeIn">Connexion Recruteur
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<!-- End Forgot Password -->
|
||||
</div>
|
||||
<!-- End Content -->
|
||||
</div>
|
||||
<!-- End Signup Modal Window -->
|
||||
<!-- ========== END SECONDARY CONTENTS ========== -->
|
||||
@@ -0,0 +1,20 @@
|
||||
<!-- Accueil Photo Haut Section -->
|
||||
<div class="bg-img-hero-center" style="background-image: url({{ asset(urlImage)}} ">
|
||||
<div class="container space-2 space-5-top--lg space-4-bottom--lg">
|
||||
<div class="w-md-75">
|
||||
<!-- Title -->
|
||||
<div class="mb-7">
|
||||
<span class="d-block text-white text-uppercase mb-2">Talents tube</span>
|
||||
<h1 class="display-4 font-size-48--md-down text-white mb-4">
|
||||
<strong class="u-text-animation u-text-animation--typing">{{textParDefaut}}</strong>
|
||||
<br>{{textVideo}}
|
||||
</h1>
|
||||
|
||||
</div>
|
||||
<!-- End Title -->
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<!-- End Accueil Photo Haut Section -->
|
||||
@@ -0,0 +1,33 @@
|
||||
<!-- Plateforme DEBUT -->
|
||||
<div class=" accueilFondBleute">
|
||||
<div class="container space-2 ">
|
||||
<div class="row row justify-content-lg-end ">
|
||||
<div class="col-md-6 ">
|
||||
<!-- Title <div class="col-md-6 order-md-2 mb-5 mb-md-0">-->
|
||||
<div class="mb-6">
|
||||
<h2 class="h3"> Plateforme pour l’emploi 100% vidéo</h2>
|
||||
<p> Talents Tube met à votre disposition un outil de diffusion de vos vidéos d’offres d’emploi & marque
|
||||
employeur pour attirer les meilleurs talents en vidéo.
|
||||
|
||||
Notre plateforme rassemble l’entreprise et les talents qui se présentent en vidéo pour un recrutement
|
||||
réussi.
|
||||
|
||||
Si vous ne possédez pas de vidéos, nous pouvons vous accompagner dans la réalisation.
|
||||
|
||||
<strong>Diffusez vos vidéos de recrutement et augmentez votre visibilité.</strong>
|
||||
</p>
|
||||
<a class="btn btn-sm btn-primary btn-wide" href="{{ url_plateforme }}">Voir la plateforme</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 align-right paddintRight">
|
||||
<div class="mb-6">
|
||||
<a href="{{ url_plateforme }}"><img class="img-fluid" src="{{ asset('v2/png/plateforme-de-recrutement-en-video.png') }}"
|
||||
alt="Recrutement video"></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Plateforme FIN -->
|
||||
@@ -0,0 +1,32 @@
|
||||
<!-- Recrutez DEBUT -->
|
||||
<div class="space1-bottom accueilFondBleute">
|
||||
<div class="container space-2 ">
|
||||
<div class="row justify-content-lg-end ">
|
||||
<div class="col-md-6 ">
|
||||
<!-- Title <div class="col-md-6 order-md-2 mb-5 mb-md-0">-->
|
||||
<div class="mb-6">
|
||||
<h2 class="h3"> Recrutez avec des offres d’emploi vidéo</h2>
|
||||
<p> Talents Tube peut vous accompagner dans la réalisation de vidéos d’offres d’emploi captivantes et à votre
|
||||
image.
|
||||
|
||||
L’offre d’emploi en vidéo, média engageant, vous donne l’opportunité de recruter les meilleurs talents. Le
|
||||
principe est de donner une image moderne et innovante en présentant votre entreprise, votre équipe,
|
||||
l’environnement de travail et le poste à pourvoir en quelques minutes.
|
||||
|
||||
<strong>Faites place à l’innovation pour capter l’attention des candidats et recruter le talent qu’il vous
|
||||
faut.</strong>
|
||||
</p>
|
||||
<a class="btn btn-sm btn-primary btn-wide" href="offre-emploi-video">En savoir plus</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 order-md-1">
|
||||
<div class="mb-6">
|
||||
<a href="offre-emploi-video"><img class="img-fluid" src="{{ asset('v2/png/offres-emploi-en-video.png') }}" alt="Offres d'emploi en vidéo"></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Recrutez FIN -->
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user