47 Commits

Author SHA1 Message Date
0cdb425ad7 correction ninedocker
Some checks failed
Cadoles/nineskeletor/pipeline/head There was a failure building this commit
2024-09-28 17:22:48 +02:00
6a5e14a25e svg
Some checks failed
Cadoles/nineskeletor/pipeline/head There was a failure building this commit
2024-07-27 09:15:34 +02:00
671b37197e svg
Some checks failed
Cadoles/nineskeletor/pipeline/head There was a failure building this commit
2024-07-02 09:09:54 +02:00
f659e27ad6 dockerisation app
Some checks failed
Cadoles/nineskeletor/pipeline/head There was a failure building this commit
2024-06-30 12:06:40 +02:00
a59fe6372b svg
Some checks failed
Cadoles/nineskeletor/pipeline/head There was a failure building this commit
2023-02-16 17:14:33 +01:00
558c70ffd8 svg
Some checks failed
Cadoles/nineskeletor/pipeline/head There was a failure building this commit
2023-02-16 17:11:16 +01:00
9554b9cdd3 ninegate
Some checks failed
Cadoles/nineskeletor/pipeline/head There was a failure building this commit
2023-02-01 09:03:27 +01:00
fb33724d9b ninegate
Some checks failed
Cadoles/nineskeletor/pipeline/head There was a failure building this commit
2023-01-23 12:02:26 +01:00
0702f03c3f ninegate
Some checks failed
Cadoles/nineskeletor/pipeline/head There was a failure building this commit
2023-01-23 11:32:19 +01:00
0dcd6349c0 ninegate
Some checks failed
Cadoles/nineskeletor/pipeline/head There was a failure building this commit
2023-01-23 10:08:43 +01:00
800945e44b ninegate
Some checks failed
Cadoles/nineskeletor/pipeline/head There was a failure building this commit
2023-01-23 09:46:34 +01:00
46c3f9ca12 maj ninegate
Some checks failed
Cadoles/nineskeletor/pipeline/head There was a failure building this commit
2023-01-12 16:52:06 +01:00
cdf7c5a24c ninegate
Some checks failed
Cadoles/nineskeletor/pipeline/head There was a failure building this commit
2023-01-12 16:14:31 +01:00
f5d1995040 maj ninegate
Some checks failed
Cadoles/nineskeletor/pipeline/head There was a failure building this commit
2023-01-10 16:10:52 +01:00
8eaf759f88 maj ninegate
Some checks failed
Cadoles/nineskeletor/pipeline/head There was a failure building this commit
2023-01-10 16:03:08 +01:00
09bd5e9e65 maj ninegate
Some checks failed
Cadoles/nineskeletor/pipeline/head There was a failure building this commit
2023-01-10 11:47:07 +01:00
88cfeae266 v0 ninegate
Some checks failed
Cadoles/nineskeletor/pipeline/head There was a failure building this commit
2023-01-10 11:13:28 +01:00
cedd6bfcec merge
Some checks failed
Cadoles/nineskeletor/pipeline/head There was a failure building this commit
2023-01-05 20:12:59 +01:00
be78875030 fixevalidator
Some checks failed
Cadoles/nineskeletor/pipeline/head Build started...
Cadoles/nineskeletor/pipeline/pr-master There was a failure building this commit
2023-01-05 20:07:17 +01:00
e52fdd9083 fix: validator (#8)
Some checks failed
Cadoles/nineskeletor/pipeline/head There was a failure building this commit
Co-authored-by: Arnaud Fornerot <afornerot@cadoles.com>
Reviewed-on: #8
2022-10-26 09:19:16 +02:00
c6678e8e02 fix: validator
Some checks failed
Cadoles/nineskeletor/pipeline/pr-master There was a failure building this commit
Cadoles/nineskeletor/pipeline/head There was a failure building this commit
2022-10-25 15:42:31 +02:00
19fa75e2eb fix: isActive (#7)
Some checks reported errors
Cadoles/nineskeletor/pipeline/head Something is wrong with the build of this commit
Co-authored-by: Arnaud Fornerot <afornerot@cadoles.com>
Reviewed-on: #7
2022-10-24 13:48:45 +02:00
928109fdf5 fix(fixminio): stream image from minio (#6)
Some checks reported errors
Cadoles/nineskeletor/pipeline/head Something is wrong with the build of this commit
fix load image from minio

Co-authored-by: Arnaud Fornerot <afornerot@cadoles.com>
Reviewed-on: #6
2022-10-24 13:47:43 +02:00
cb766ee2f9 Merge pull request 'fix(fixtureavatar): fixcture auto avatar & timesession & font & menu & redirect' (#5) from fixtureavatar into master
Some checks reported errors
Cadoles/nineskeletor/pipeline/head Something is wrong with the build of this commit
Reviewed-on: #5
2022-10-04 16:53:58 +02:00
7d8ec5d8c5 fix(fixtureavatar): resolution csfixer
All checks were successful
Cadoles/nineskeletor/pipeline/pr-master This commit looks good
2022-10-04 15:58:21 +02:00
3af16b4c8b fix(fixtureavatar): resolution exceptionlistener
All checks were successful
Cadoles/nineskeletor/pipeline/pr-master This commit looks good
2022-10-04 15:33:15 +02:00
35e59f2e51 fix(fixtureavatar): resolution crop
Some checks failed
Cadoles/nineskeletor/pipeline/pr-master There was a failure building this commit
2022-10-04 15:09:08 +02:00
ffe8f2f722 fix(fixtureavatar): fixcture auto avatar & timesession & font & menu & redirect
Some checks failed
Cadoles/nineskeletor/pipeline/head There was a failure building this commit
Cadoles/nineskeletor/pipeline/pr-master There was a failure building this commit
2022-10-04 13:46:14 +02:00
3d1c5a2159 Merge pull request 'manager' (#4) from manager into master
All checks were successful
Cadoles/nineskeletor/pipeline/head This commit looks good
Reviewed-on: #4
2022-10-04 12:04:45 +02:00
6c720ed62a fix(manager): phpstan
All checks were successful
Cadoles/nineskeletor/pipeline/pr-master This commit looks good
2022-10-04 12:00:24 +02:00
681b2f6547 fix(manager): cs fixer
All checks were successful
Cadoles/nineskeletor/pipeline/pr-master This commit looks good
2022-10-04 11:55:50 +02:00
58518ec70d fix(manager): manager access && flag isvisible
All checks were successful
Cadoles/nineskeletor/pipeline/head This commit looks good
Cadoles/nineskeletor/pipeline/pr-master This commit looks good
2022-10-04 11:32:05 +02:00
5fa52efe9f fix(manager): add doctrine fixtures 2022-10-04 09:47:41 +02:00
f29fc43c8a Merge pull request 'activeuser' (#3) from activeuser into master
All checks were successful
Cadoles/nineskeletor/pipeline/head This commit looks good
Reviewed-on: #3
2022-10-02 15:14:32 +02:00
1c644f8dca fix(activeuser): composer update
All checks were successful
Cadoles/nineskeletor/pipeline/pr-master This commit looks good
2022-10-02 15:09:30 +02:00
84230eb347 fix(activeuser): user isactive & adress niveau & route all
Some checks reported warnings
Cadoles/nineskeletor/pipeline/head This commit is unstable
Cadoles/nineskeletor/pipeline/pr-master This commit is unstable
2022-10-02 14:50:48 +02:00
2cad98ca86 fix(activeuser): reset structure bdd
Some checks reported warnings
Cadoles/nineskeletor/pipeline/head This commit is unstable
2022-09-29 16:53:21 +02:00
ca5f9fef2d Merge pull request 'Gestion de niveau 3 & 4' (#2) from morelevel into master
Some checks reported warnings
Cadoles/nineskeletor/pipeline/head This commit is unstable
Reviewed-on: #2
2022-09-29 16:05:30 +02:00
b9bb605ad2 fix(morelevel): level mandatory in proil
Some checks failed
Cadoles/nineskeletor/pipeline/pr-master There was a failure building this commit
Cadoles/nineskeletor/pipeline/head There was a failure building this commit
2022-09-27 16:48:57 +02:00
ea31b7255d fix(morelevel): perte de la conf redis
All checks were successful
Cadoles/nineskeletor/pipeline/head This commit looks good
2022-09-27 11:58:18 +02:00
d1431bcce4 fix(morelevel): ajout de niveau03 et niveau04
All checks were successful
Cadoles/nineskeletor/pipeline/head This commit looks good
2022-09-27 11:52:49 +02:00
89cb0433c0 Merge pull request 'Intégration d'outils de validation de qualité et pipeline Jenkins' (#1) from continuous-integration into master
Some checks failed
Cadoles/nineskeletor/pipeline/head There was a failure building this commit
Reviewed-on: #1
2022-09-26 09:44:29 +02:00
b78f54b76c fix(continuous-integration): correction php-cs-fixer
All checks were successful
Cadoles/nineskeletor/pipeline/pr-master This commit looks good
2022-09-23 16:14:15 +02:00
5f3cc51f5c fix(continuous-integration): correction point phpstan de level 1
All checks were successful
Cadoles/nineskeletor/pipeline/pr-master This commit looks good
2022-09-23 15:34:07 +02:00
86b11372e7 fix(continuous-integration): correction point phpstan
All checks were successful
Cadoles/nineskeletor/pipeline/pr-master This commit looks good
2022-09-23 14:53:47 +02:00
0ddb71006f chore: add jenkins validation pipeline
Some checks failed
Cadoles/nineskeletor/pipeline/head There was a failure building this commit
Cadoles/nineskeletor/pipeline/pr-master This commit looks good
2022-09-21 12:17:13 +02:00
44e6e012fd chore: add code quality tools 2022-09-21 12:16:42 +02:00
867 changed files with 36782 additions and 21103 deletions

159
.env Normal file → Executable file
View File

@ -1,67 +1,110 @@
# Symfony
APP_ENV=prod
APP_ENV=dev
APP_SECRET=changeme
APP_SESSIONTIME=1440
PROTOCOLE=https
# Webpack
APP_PUBLIC_PATH=/nineskeletor/build
APP_MANIFEST_KEY_PREFIX=nineskeletor
# Messenger
MESSENGER_TRANSPORT_DSN=doctrine://default?auto_setup=0
# Database
DATABASE_URL="postgresql://symfony:ChangeMe@127.0.0.1:5432/app?serverVersion=13&charset=utf8"
DATABASE_URL="postgresql://symfony:ChangeMe@postgresql:5432/nineskeletor?serverVersion=13&charset=utf8"
# Redis Session
REDIS_HOST=127.0.0.1
REDIS_HOST=redis
REDIS_PORT=6379
# Mailer
MAILER_METHOD=smtp
MAILER_DSN=smtp://127.0.0.1:1025
MAILER_DSN=smtp://mailer:1025
MAILER_NOREPLY=noreply@noreply.fr
# Basic
APP_WEBURL=127.0.0.1:8000
APP_MASTERIDENTITY=SQL # SQL | SSO | LDAP
APP_AUTH=SQL # SQL | CAS| LDAP | OPENID | à faire SAML
APP_WEBURL=localhost:8005
APP_MASTERIDENTITY=SQL # SQL | SSO | LDAP
APP_AUTH=OPENID # SQL | CAS | LDAP | OPENID
APP_ALIAS=/
APP_NAME=Nineskeletor
APP_MODEREGISTRATION= # null | BYADMIN | BYUSER
APP_MODEREGISTRATION= # null | BYADMIN | BYUSER
APP_ADMINS='["admin"]'
# Module = PORTAL | DOCUMENT
APP_MODULES='["PORTAL"]'
# Structure Organisationnelle
APP_NIVEAUUPDATABLE=0 # Quel degres de niveau est modifiable par les utilisateurs seule les admin et modo via console peuvent outre passer ce param
APP_NIVEAU01LABEL="Niveau 01"
APP_NIVEAU01LABELS="Niveaux 01"
APP_NIVEAU02USE=1
APP_NIVEAU02LABEL="Niveau 02"
APP_NIVEAU02LABELS="Niveaux 02"
APP_NIVEAU02MANDATORY='[""]'
APP_NIVEAU03USE=1
APP_NIVEAU03LABEL="Niveau 03"
APP_NIVEAU03LABELS="Niveaux 03"
APP_NIVEAU03MANDATORY='[""]'
APP_NIVEAU04USE=0
APP_NIVEAU04LABEL="Niveau 04"
APP_NIVEAU04LABELS="Niveaux 04"
APP_NIVEAU04MANDATORY='[""]'
APP_GROUPUSE=1
APP_GROUPSUBMITER='["ALL"]'
APP_ANNUSCOPEADMIN=ALL # ALL or number of niveau view : 1||2||3||4
APP_ANNUSCOPEMODO=ALL # ALL or number of niveau view : 1||2||3||4
APP_ANNUSCOPEMASTER=ALL # ALL or number of niveau view : 1||2||3||4
APP_ANNUSCOPEMANAGER=ALL # ALL or number of niveau view : 1||2||3||4
APP_ANNUSCOPEUSER=ALL # ALL or number of niveau view : 1||2||3||4
APP_USERVIEWISVISIBLE=1 # Profil user with isvisible field
# Synchronisation
APP_SYNCHRO= # Synchronisation null | LDAP2NINE | NINE2LDAP | NINE2NINE
APP_SYNDCHROPURGENIVEAU01=1 # Purger les niveau01s obsolète en cas de synchronisation
APP_SYNDCHROPURGENIVEAU02=1 # Purger les niveau02s obsolète en cas de synchronisation
APP_SYNDCHROPURGEGROUP=1 # Purger les groups obsolète en cas de synchronisation
APP_SYNDCHROPURGEUSER=1 # Purger les users obsolète en cas de synchronisation
APP_SYNCHRO=NINE2LDAP # Synchronisation null | LDAP2NINE | NINE2LDAP | NINE2NINE
APP_SYNDCHROPURGENIVEAU01=1 # Purger les niveau01s obsolète en cas de synchronisation
APP_SYNDCHROPURGENIVEAU02=1 # Purger les niveau02s obsolète en cas de synchronisation
APP_SYNDCHROPURGENIVEAU03=1 # Purger les niveau03s obsolète en cas de synchronisation
APP_SYNDCHROPURGENIVEAU04=1 # Purger les niveau04s obsolète en cas de synchronisation
APP_SYNDCHROPURGEGROUP=1 # Purger les groups obsolète en cas de synchronisation
APP_SYNDCHROPURGEUSER=1 # Purger les users obsolète en cas de synchronisation
# LDAP
LDAP_HOST= # host du serveur ldap
LDAP_PORT= # port du serveur ldap
LDAP_USETLS=0 # connection TLS 0/1
LDAP_USERWRITER=0 # LDAP_USER compte writer ? 0/1
LDAP_USER= # DN compte access ldap
LDAP_PASSWORD= # Password comte access ldap
LDAP_BASEDN= # Base DN ex:o=gouv,c=fr
LDAP_BASEORGANISATION= # Base Organisation ex:ou=nine,o=gouv,c=fr
LDAP_BASENIVEAU01= # Base Niveau01 ex:ou=niveau01,ou=nine,o=gouv,c=fr
LDAP_BASENIVEAU02= # Base Niveau02 ex:ou=niveau02,ou=nine,o=gouv,c=fr
LDAP_BASEGROUP= # Base Group ex:ou=groups,ou=nine,o=gouv,c=fr
LDAP_BASEUSER= # Base User ex:ou=users,ou=nine,o=gouv,c=fr
LDAP_USERNAME=uid # Attribut id d'un user
LDAP_FIRSTNAME=givenname # Attribut firstname d'un user
LDAP_LASTNAME=sn # Attribut lastname d'un user
LDAP_EMAIL=mail # Attribut email d'un user
LDAP_AVATAR= # Attribut avatar d'un user
LDAP_MEMBEROF=memberof # Attribut memberof d'un user
LDAP_GROUPGID=gidnumber # Attribut gid d'un groupe
LDAP_GROUPNAME=cn # Attribut name d'un groupe
LDAP_GROUPMEMBER=memberuid # Attribut stockant les membres d'un groupe
LDAP_GROUPMEMBERISDN=0 # LDAP_GROUPMEMBER stocke un uid ou un dn ? 0/1
LDAP_FILTERGROUP=(cn=*) # requete ldap pour rechercher les groupes
LDAP_FILTERUSER=(uid=*) # requete ldap pour rechercher les users
LDAP_AUTOSUBMIT=1 # if APP_AUTH = LDAP autocréer les users non existant
LDAP_AUTOUPDATE=1 # if APP_AUTH = LDAP automodifier les users existant
LDAP_HOST=openldap # host du serveur ldap ex:openldap
LDAP_PORT=389 # port du serveur ldap ex:389
LDAP_USETLS=0 # connection TLS 0/1
LDAP_USERWRITER=1 # LDAP_USER compte writer ? 0/1
LDAP_USER="cn=admin,dc=nine,dc=fr" # DN compte access ldap
LDAP_PASSWORD=changeme # Password comte access ldap
LDAP_BASEDN= # Base DN ex:dc=nine,dc=fr
LDAP_BASEORGANISATION="ou=nineskeletor,dc=nine,dc=fr" # Base Organisation ex:ou=nineskeletor,dc=nine,dc=fr
LDAP_BASENIVEAU01="ou=niveau01,ou=nineskeletor,dc=nine,dc=fr" # Base Niveau01 ex:ou=niveau01,ou=nineskeletor,dc=nine,dc=fr
LDAP_BASENIVEAU02="ou=niveau02,ou=nineskeletor,dc=nine,dc=fr" # Base Niveau02 ex:ou=niveau02,ou=nineskeletor,dc=nine,dc=fr
LDAP_BASENIVEAU03="ou=niveau03,ou=nineskeletor,dc=nine,dc=fr" # Base Niveau03 ex:ou=niveau03,ou=nineskeletor,dc=nine,dc=fr
LDAP_BASENIVEAU04="ou=niveau04,ou=nineskeletor,dc=nine,dc=fr" # Base Niveau04 ex:ou=niveau04,ou=nineskeletor,dc=nine,dc=fr
LDAP_BASEGROUP="ou=groups,ou=nineskeletor,dc=nine,dc=fr" # Base Group ex:ou=groups,ou=nineskeletor,dc=nine,dc=fr
LDAP_BASEUSER="ou=users,ou=nineskeletor,dc=nine,dc=fr" # Base User ex:ou=users,ou=nineskeletor,dc=nine,dc=fr
LDAP_USERNAME=uid # Attribut id d'un user
LDAP_FIRSTNAME=givenname # Attribut firstname d'un user
LDAP_LASTNAME=sn # Attribut lastname d'un user
LDAP_EMAIL=mail # Attribut email d'un user
LDAP_AVATAR= # Attribut avatar d'un user
LDAP_MEMBEROF=memberof # Attribut memberof d'un user
LDAP_GROUPGID=gidnumber # Attribut gid d'un groupe
LDAP_GROUPNAME=cn # Attribut name d'un groupe
LDAP_GROUPMEMBER=memberuid # Attribut stockant les membres d'un groupe
LDAP_GROUPMEMBERISDN=0 # LDAP_GROUPMEMBER stocke un uid ou un dn ? 0/1
LDAP_FILTERGROUP="(cn=*)" # requete ldap pour rechercher les groupes
LDAP_FILTERUSER="(uid=*)" # requete ldap pour rechercher les users
LDAP_AUTOSUBMIT=1 # if APP_AUTH = LDAP autocréer les users non existant
LDAP_AUTOUPDATE=1 # if APP_AUTH = LDAP automodifier les users existant
# If APP_AUTH = CAS
CAS_HOST=
@ -74,16 +117,16 @@ CAS_FIRSTNAME=firstname
CAS_AVATAR=
CAS_NIVEAU01=
CAS_GROUP=
CAS_AUTOSUBMIT=1 # if APP_AUTH = CAS autocréer les users non existant
CAS_AUTOUPDATE=1 # if APP_AUTH = CAS automodifier les users existant
CAS_AUTOSUBMIT=1 # if APP_AUTH = CAS autocréer les users non existant
CAS_AUTOUPDATE=1 # if APP_AUTH = CAS automodifier les users existant
# If APP_AUTH = OPENID
OAUTH_CLIENTID=
OAUTH_CLIENTSECRET=
OAUTH_LOGINURL=
OAUTH_LOGOUTURL=
OAUTH_TOKENURL=
OAUTH_USERINFO=
OAUTH_CLIENTID=nineskeletor
OAUTH_CLIENTSECRET=changeme
OAUTH_LOGINURL="http://localhost:7080/oauth2/auth"
OAUTH_LOGOUTURL="http://localhost:7080/oauth2/sessions/logout"
OAUTH_TOKENURL="http://hydra:4444/oauth2/token"
OAUTH_USERINFO="http://hydra:4444/userinfo"
OAUTH_USERNAME=username
OAUTH_EMAIL=email
OAUTH_LASTNAME=lastname
@ -91,15 +134,15 @@ OAUTH_FIRSTNAME=firstname
OAUTH_AVATAR=
OAUTH_NIVEAU01=
OAUTH_GROUP=
OAUTH_AUTOSUBMIT=1 # if APP_AUTH = OPENID autocréer les users non existant
OAUTH_AUTOUPDATE=1 # if APP_AUTH = OPENID automodifier les users existant
OAUTH_AUTOSUBMIT=1 # if APP_AUTH = OPENID autocréer les users non existant
OAUTH_AUTOUPDATE=1 # if APP_AUTH = OPENID automodifier les users existant
# IF APP_SYNCHRO=NINE2NINE
NINE_URL=
NINE_SECRET=
# If APP_MODEREGISTRATION != NULL
APP_MODEREGISTRATIONTERM=6 # Temps en heure de la durée de validité de l'inscription
APP_MODEREGISTRATIONTERM=6 # Temps en heure de la durée de validité de l'inscription
# Proxy
PROXY_USE=0
@ -114,27 +157,27 @@ SONDE_USE=0
SONDE_URL=
# Mercure
MERCURE_URL=https://127.0.0.1/.well-known/mercure
MERCURE_URL=https://mercure/.well-known/mercure
MERCURE_PUBLIC_URL=https://127.0.0.1/.well-known/mercure
MERCURE_JWT_SECRET="!changeme!changeme!changeme!changeme!changeme!changeme!"
# Minio
MINIO_URL=http://127.0.0.1:9000
MINIO_URL=http://nginx:9000
MINIO_KEY=minio
MINIO_SECRET=changeme
MINIO_BUCKET=nine
MINIO_BUCKET=nineskeletor
MINIO_ROOT=
MINIO_PATH_STYLE=1
MINIO_SECURE=0
# Hydra apps
HYDRA_LOGINCHALLENGE="http://127.0.0.1:4445/oauth2/auth/requests/login?login_challenge="
HYDRA_LOGINCHALLENGEACCEPT="http://127.0.0.1:4445/oauth2/auth/requests/login/accept?login_challenge="
HYDRA_CONSENTCHALLENGE="http://127.0.0.1:4445/oauth2/auth/requests/consent?consent_challenge="
HYDRA_CONSENTCHALLENGEACCEPT="http://127.0.0.1:4445/oauth2/auth/requests/consent/accept?consent_challenge="
HYDRA_LOGINCHALLENGE="http://hydra:4445/oauth2/auth/requests/login?login_challenge="
HYDRA_LOGINCHALLENGEACCEPT="http://hydra:4445/oauth2/auth/requests/login/accept?login_challenge="
HYDRA_CONSENTCHALLENGE="http://hydra:4445/oauth2/auth/requests/consent?consent_challenge="
HYDRA_CONSENTCHALLENGEACCEPT="http://hydra:4445/oauth2/auth/requests/consent/accept?consent_challenge="
# Lock
LOCK_DSN="postgresql://symfony:ChangeMe@127.0.0.1:5432/app?serverVersion=13&charset=utf8"
LOCK_DSN="postgresql://symfony:ChangeMe@postgresql:5432/nineskeletor?serverVersion=13&charset=utf8"
# Sentry
SENTRY_DSN=

18
.githooks/commit-msg Executable file
View File

@ -0,0 +1,18 @@
#!/bin/bash
set -eo pipefail
DIR="$(cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd)"
export PATH="${PATH}:${DIR}/../node_modules/.bin"
function lint_commit_message {
local commit_message_file="$1"
cat "$commit_message_file" | commitlint
}
function main {
local commit_message_file="$1"
lint_commit_message "$commit_message_file"
}
main $@

5
.gitignore vendored Normal file → Executable file
View File

@ -27,3 +27,8 @@ yarn-error.log
/public/uploads/logo/*
!/public/uploads/logo/logo.png
/public/uploads/ckeditor
.php-cs-fixer.cache
###> phpstan/phpstan ###
phpstan.neon
###< phpstan/phpstan ###

View File

@ -0,0 +1,15 @@
def exec() {
String dockerfile = readFile(file:'Dockerfile')
dockerfile = """
${dockerfile}
RUN apt update && apt install -y php-gd php-curl php-zip curl
RUN curl -fsSL https://deb.nodesource.com/setup_16.x | bash - && apt-get install -y nodejs
RUN npm install -g yarn
""".stripIndent()
writeFile(file:'Dockerfile', text: dockerfile)
}
return this

45
.php-cs-fixer.dist.php Normal file
View File

@ -0,0 +1,45 @@
<?php
$finder = PhpCsFixer\Finder::create()
->in(__DIR__.'/src')
->name('*.php')
;
// TODO: Définir les règles de style communes
// spécifiques au projet
return (new PhpCsFixer\Config())
->setRules([
'@Symfony' => true,
'concat_space' => ['spacing' => 'none'],
'array_syntax' => ['syntax' => 'short'],
'combine_consecutive_issets' => true,
'explicit_indirect_variable' => true,
'no_useless_return' => true,
'ordered_imports' => true,
'no_unused_imports' => true,
'no_spaces_after_function_name' => true,
'no_spaces_inside_parenthesis' => true,
'ternary_operator_spaces' => true,
'class_definition' => ['single_line' => true],
'whitespace_after_comma_in_array' => true,
// phpdoc
'phpdoc_add_missing_param_annotation' => ['only_untyped' => true],
'phpdoc_order' => true,
'phpdoc_types_order' => [
'null_adjustment' => 'always_last',
'sort_algorithm' => 'alpha',
],
'phpdoc_no_empty_return' => false,
'phpdoc_summary' => false,
'general_phpdoc_annotation_remove' => [
'annotations' => [
'expectedExceptionMessageRegExp',
'expectedException',
'expectedExceptionMessage',
'author',
],
],
])
->setFinder($finder)
;

1
.php-version Executable file
View File

@ -0,0 +1 @@
8.1

0
.vscode/settings.json vendored Normal file → Executable file
View File

3
Jenkinsfile vendored Executable file
View File

@ -0,0 +1,3 @@
@Library('cadoles') _
symfonyAppPipeline('ubuntu:22.04')

18
Makefile Executable file
View File

@ -0,0 +1,18 @@
SHELL := /bin/bash
export PATH := $(HOME)/.symfony/bin:$(PATH)
deps:
wget https://get.symfony.com/cli/installer -O - | bash
symfony composer install
symfony composer install --working-dir=tools/php-cs-fixer
symfony composer install --working-dir=tools/phpstan
npm ci
phpstan:
symfony php tools/phpstan/vendor/bin/phpstan analyze ./src -l 1
php-cs-fixer:
tools/php-cs-fixer/symfony-php-cs-fixer.sh fix --verbose --show-progress=dots
install-git-hooks:
git config core.hooksPath .githooks

29
assets/app.js Normal file → Executable file
View File

@ -1,8 +1,11 @@
// JQuery
window.$ = window.jQuery = require('jquery');
// jquery
import $ from 'jquery'
window.jQuery = $;
window.$ = $;
// JQueryui
require('jquery-ui');
// jqueryui
import 'jqueryui'
import 'jqueryui/jquery-ui.min.css';
// Bootstrap
require('bootstrap');
@ -38,6 +41,24 @@ require('spectrum-colorpicker2/dist/spectrum.min.css');
require('crop-select-js/crop-select-js.min.css');
window.CropSelectJs = require('crop-select-js/crop-select-js.min.js');
// iframe-resizer
require('iframe-resizer/js/iframeResizer.min.js');
require('iframe-resizer/js/iframeResizer.contentWindow.min.js');
// Slick
require('slick-carousel/slick/slick.css');
require('slick-carousel/slick/slick-theme.css');
const slick = require('slick-carousel/slick/slick.min.js');
global.slick = slick;
// Imageloaded
const imagesLoaded = require('imagesloaded/imagesloaded.js');
global.imagesLoaded = imagesLoaded;
// Masonry
const masonry = require('masonry-layout/dist/masonry.pkgd.min.js');
global.masonry = masonry;
// Start the Stimulus application
import './bootstrap';

0
assets/bootstrap.js vendored Normal file → Executable file
View File

0
assets/ckplugins/html5video/dialogs/html5video.js Normal file → Executable file
View File

0
assets/ckplugins/html5video/icons/html5video.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

0
assets/ckplugins/html5video/lang/bg.js Normal file → Executable file
View File

0
assets/ckplugins/html5video/lang/ca.js Normal file → Executable file
View File

0
assets/ckplugins/html5video/lang/de.js Normal file → Executable file
View File

0
assets/ckplugins/html5video/lang/en.js Normal file → Executable file
View File

0
assets/ckplugins/html5video/lang/es.js Normal file → Executable file
View File

0
assets/ckplugins/html5video/lang/eu.js Normal file → Executable file
View File

0
assets/ckplugins/html5video/lang/fa.js Normal file → Executable file
View File

0
assets/ckplugins/html5video/lang/fr.js Normal file → Executable file
View File

0
assets/ckplugins/html5video/lang/he.js Normal file → Executable file
View File

0
assets/ckplugins/html5video/lang/ko.js Normal file → Executable file
View File

0
assets/ckplugins/html5video/lang/pl.js Normal file → Executable file
View File

0
assets/ckplugins/html5video/lang/pt-br.js Normal file → Executable file
View File

0
assets/ckplugins/html5video/lang/pt.js Normal file → Executable file
View File

0
assets/ckplugins/html5video/lang/ru.js Normal file → Executable file
View File

0
assets/ckplugins/html5video/lang/uk.js Normal file → Executable file
View File

0
assets/ckplugins/html5video/lang/uz.js Normal file → Executable file
View File

0
assets/ckplugins/html5video/lang/zh-cn.js Normal file → Executable file
View File

0
assets/ckplugins/html5video/plugin.js Normal file → Executable file
View File

0
assets/ckplugins/youtube/images/icon-hdpi.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

0
assets/ckplugins/youtube/images/icon.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

0
assets/ckplugins/youtube/lang/ar.js Normal file → Executable file
View File

0
assets/ckplugins/youtube/lang/bg.js Normal file → Executable file
View File

0
assets/ckplugins/youtube/lang/cs.js Normal file → Executable file
View File

0
assets/ckplugins/youtube/lang/de.js Normal file → Executable file
View File

0
assets/ckplugins/youtube/lang/el.js Normal file → Executable file
View File

0
assets/ckplugins/youtube/lang/en.js Normal file → Executable file
View File

0
assets/ckplugins/youtube/lang/es.js Normal file → Executable file
View File

0
assets/ckplugins/youtube/lang/et.js Normal file → Executable file
View File

0
assets/ckplugins/youtube/lang/eu.js Normal file → Executable file
View File

0
assets/ckplugins/youtube/lang/fi.js Normal file → Executable file
View File

0
assets/ckplugins/youtube/lang/fr.js Normal file → Executable file
View File

0
assets/ckplugins/youtube/lang/he.js Normal file → Executable file
View File

0
assets/ckplugins/youtube/lang/hu.js Normal file → Executable file
View File

0
assets/ckplugins/youtube/lang/it.js Normal file → Executable file
View File

0
assets/ckplugins/youtube/lang/ja.js Normal file → Executable file
View File

0
assets/ckplugins/youtube/lang/ko.js Normal file → Executable file
View File

0
assets/ckplugins/youtube/lang/nb.js Normal file → Executable file
View File

0
assets/ckplugins/youtube/lang/nl.js Normal file → Executable file
View File

0
assets/ckplugins/youtube/lang/nn.js Normal file → Executable file
View File

0
assets/ckplugins/youtube/lang/pl.js Normal file → Executable file
View File

0
assets/ckplugins/youtube/lang/pt-br.js Normal file → Executable file
View File

0
assets/ckplugins/youtube/lang/pt.js Normal file → Executable file
View File

0
assets/ckplugins/youtube/lang/ru.js Normal file → Executable file
View File

0
assets/ckplugins/youtube/lang/sk.js Normal file → Executable file
View File

0
assets/ckplugins/youtube/lang/tr.js Normal file → Executable file
View File

0
assets/ckplugins/youtube/lang/uk.js Normal file → Executable file
View File

0
assets/ckplugins/youtube/lang/vi.js Normal file → Executable file
View File

0
assets/ckplugins/youtube/lang/zh.js Normal file → Executable file
View File

0
assets/ckplugins/youtube/plugin.js Normal file → Executable file
View File

0
assets/controllers.json Normal file → Executable file
View File

0
assets/controllers/hello_controller.js Normal file → Executable file
View File

14
assets/dropzone.js Normal file → Executable file
View File

@ -1,19 +1,21 @@
require('dropzone/dist/dropzone.css');
/*
window.Dropzone = require('dropzone/dist/dropzone.js');
*/
const { Dropzone } = require("dropzone");
document.addEventListener('DOMContentLoaded', function() {
var elt = document.getElementById('mydropzone');
console.log($(elt).data("maxfiles"))
maxFiles=elt.getAttribute("data-maxFiles");
if(maxFiles!=1) maxFiles=null;
var mydropzone = new Dropzone(elt, {
acceptedMimeTypes: $(elt).data("acceptedMimeTypes"),
maxFiles: $(elt).data("maxFiles"),
maxFiles: maxFiles,
init: function() {
dropzoneinit(this);
},
success: function( file, response ){
dropzonesuccess(file,response);
},
});
global.mydropzone=mydropzone;
window.mydropzone=mydropzone;
});

0
assets/fonts/ABeeZee-Regular.ttf Normal file → Executable file
View File

0
assets/fonts/Acme-Regular-webfont.ttf Normal file → Executable file
View File

0
assets/fonts/AlfaSlabOne-Regular.ttf Normal file → Executable file
View File

0
assets/fonts/Anton-Regular.ttf Normal file → Executable file
View File

0
assets/fonts/Baloo-Regular.ttf Normal file → Executable file
View File

0
assets/fonts/Bebas-webfont.ttf Normal file → Executable file
View File

0
assets/fonts/CarterOne-Regular.ttf Normal file → Executable file
View File

0
assets/fonts/Chewy-Regular.ttf Normal file → Executable file
View File

0
assets/fonts/Courgette-Regular.ttf Normal file → Executable file
View File

0
assets/fonts/FredokaOne-Regular.ttf Normal file → Executable file
View File

Binary file not shown.

0
assets/fonts/Grandstander-Black.ttf Normal file → Executable file
View File

0
assets/fonts/Justanotherhand-Regular-webfont.ttf Normal file → Executable file
View File

0
assets/fonts/Lato-Regular.ttf Normal file → Executable file
View File

0
assets/fonts/LexendDeca-Regular.ttf Normal file → Executable file
View File

0
assets/fonts/LuckiestGuy-Regular.ttf Normal file → Executable file
View File

0
assets/fonts/Overpass-Black.ttf Normal file → Executable file
View File

0
assets/fonts/PassionOne-Regular.ttf Normal file → Executable file
View File

0
assets/fonts/Peacesans-webfont.ttf Normal file → Executable file
View File

0
assets/fonts/Redressed-webfont.ttf Normal file → Executable file
View File

0
assets/fonts/Righteous-Regular.ttf Normal file → Executable file
View File

0
assets/fonts/Roboto-Regular-webfont.ttf Normal file → Executable file
View File

0
assets/fonts/RubikMonoOne-Regular.ttf Normal file → Executable file
View File

0
assets/fonts/SigmarOne-Regular.ttf Normal file → Executable file
View File

0
assets/fonts/Signika-Regular.ttf Normal file → Executable file
View File

0
assets/fonts/Snickles-webfont.ttf Normal file → Executable file
View File

0
assets/fonts/Teko-Bold.ttf Normal file → Executable file
View File

0
assets/fonts/Viga-Regular.ttf Normal file → Executable file
View File

0
assets/fonts/theboldfont.ttf Normal file → Executable file
View File

82
assets/js/app.js Normal file → Executable file
View File

@ -2,13 +2,16 @@ $(document).ready(function() {
// Color
$(".pick-a-color").spectrum(
{
type: "text",
showAlpha: false
preferredFormat: "hex",
type: "string",
showPalette: true,
allowEmpty: true,
showAlpha: false,
}
);
$(".pick-a-color").attr("autocomplete","off");
// method confirm
// Method confirm
var doit = true;
$("a[data-method]").on('click',function(){
if($(this).data('confirm')){
@ -30,33 +33,70 @@ $(document).ready(function() {
$("#"+$(this).data("modalid")).modal("show");
});
// Resize
resize();
// Item
$( ".item" ).hover(function() {
$(this).find(".item-action a").show();
});
$( ".item" ).mouseleave(function() {
$(this).find(".item-action a").hide();
});
$( ".item-info" ).click(function() {
parent=$(this).parent().parent().parent().parent().parent();
if(parent.find(".item-description").hasClass("hide")) {
parent.find(".item-description").removeClass("hide");
parent.addClass("w-100");
parent.css("justify-content","flex-start");
}
else {
parent.find(".item-description").addClass("hide");
parent.removeClass("w-100");
if(parent.hasClass("item-large"))
parent.css("justify-content","flex-start");
else
parent.css("justify-content","center");
}
});
// select2-icon
function iformat(icon) {
return $('<span><i class="' + icon.id + '"></i> ' + icon.text + '</span>');
}
$('.select2-icon').select2({
width: "100%",
placeholder: 'choisir un icône',
allowClear: true,
templateSelection: iformat,
templateResult: iformat,
formatResult: iformat,
allowHtml: true,
escapeMarkup: function(m) {
return m;
}
})
// Menu
$(".dropdown-toggle").click(function(){
$(this).parent().find(".dropdown-menu").toggle();
})
$(".nav-toogle").click(function(){
$("#selmenu").modal("toggle");
})
// Forcer le resize des objects
Resize();
// Focus
$("#page").focus();
});
$( window ).resize(function() {
resize();
Resize();
});
function resize() {
if($("#header").is(":visible")){
$(".navbar-logo").hide();
$("#menulink").hide();
$("#header").hide();
}
else {
$(".navbar-logo").show();
$("#menulink").show();
$("#header").show();
}
$("main").css("height",$(window).height()-$(".header").height());
$("#page").css("height",$(window).height()-$(".header").height());
$("#sidebar").css("min-height",$("body").height()-$(".header").height());
}

0
assets/js/datatables.init.js Normal file → Executable file
View File

409
assets/styles/app.css Normal file → Executable file
View File

@ -8,7 +8,7 @@ body {
color: var(--colorfttitledark);
}
.header a, #sidebar a, #sidebar hr{
.header h1, .header a, #sidebar a, #sidebar hr{
color: var(--colorfttitledark);
}
@ -114,52 +114,111 @@ border-width: 1px;
padding: 0 0 0 0.5rem !important;
}
.navbar-logo img{
height:20px;
height:30px;
}
.navbar i {
font-size: 20px;
min-width: 30px;
height:20px;
#menulink {
zoom:150%;
}
/* MENU */
#menu {
height:50px;
min-height:44px;
padding: 0px 0px 0px 10px !important;
justify-content: space-around;
}
#menu .navbar-logo {
margin-right: 10px;
}
#menuapp {
background-color: var(--colorbgbodydark);
}
#menuuser {
min-width: 100px;
display:flex;
justify-content: end;
}
.nav-item {
padding:10px 10px;
}
.nav-item.active {
background-color: var(--colorbgbodydark-darker);
}
.menupage a {
display: flex;
align-items: center;
}
.menupage a i{
margin-right: 5px;
}
.dropdown-menu {
background-color: var(--colorbgbodydark);
margin-top: 15px;
}
.dropdown-item:hover, .dropdown-item:focus {
background-color: var(--colorbgbodydark-darker);
color: var(--colorftbodydark);
}
@media (max-width: 991px) {
#menu {
display:flex !important;
height: auto;
padding: 0px !important;
}
#menuapp {
position: absolute;
top:50px;
left:0px;
width:100%;
overflow-y: auto;
height:500px;
display:none;
}
#menuapp .nav {
flex-direction: column;
}
#menuapp .navbar-nav {
flex-direction: column;
padding:15px;
}
#menu .nav-toogle {
display:block !important;
}
#pagesportal {
display:block !important;
}
#pagesuser {
display:block !important;
}
.navbar-logo {
padding: 10px 5px 10px 10px !important;
}
.navbar-logo img {
height:40px;
}
.navbar i {
font-size: 20px;
min-width: 30px;
height:20px;
}
#switchHeader {
display:none;
}
}
}
/* SIDEBAR */
#sidebar {
@ -219,4 +278,314 @@ border-width: 1px;
#page {
overflow-y: auto;
width:100%;
}
}
.ckeditor-content img {
max-width:100%;
height:auto !important;
}
.hide {
display: none !important;
}
.card-body .form-group:first-child {
margin-top: 0px !important;
}
/* ITEM */
.itemframe {
width: 100%
}
.items-list {
display:flex;
flex-wrap: wrap;
margin-bottom: 5px;
}
.item {
padding:10px;
display:flex;
text-align: center;
justify-content: center;
margin-right:5px;
margin-bottom:5px;
flex-wrap: wrap;
color: var(--colorftbodydark) !important;
}
.item-action {
width: 100%;
color: var(--colorftbodydark) !important;
padding-top:10px;
height:35px;
}
.item-action i {
font-size: 22px;
}
.item-container {
display:flex;
flex-wrap: nowrap;
justify-content: space-around;
}
.item-content {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
flex-direction: column;
}
.item img {
margin:0px auto 10px auto;
}
.item h3 {
margin:0px;
color: var(--colorftbodydark);
}
.item-subtitle {
font-size: 10px;
margin:0px;
color: var(--colorftbodydark);
}
.item-description {
color: var(--colorftbodydark);
text-align: left;
padding: 0px 5px;
}
.item-description img {
max-width: 100% !important;
height: auto !important;
}
.item-description p:last-child {
margin-bottom: 0px;
}
.item-verysmall {
width: 80px;
padding:5px 2px 2px 2px;
}
.item-verysmall .item-link {
width: 76px;
}
.item-verysmall img {
height:40px;
}
.item-verysmall h3{
font-size: 10px;
font-family: var(--fontbody);
text-transform: uppercase;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.item-verysmall .item-subtitle{
display:none;
}
.item-verysmall .item-action {
padding-top:0px;
height:25px;
}
.item-verysmall .item-action i {
font-size: 14px;
}
.item-small {
width: 100px;
padding:10px 5px;
}
.item-small .item-link {
width: 90px;
}
.item-small img {
height:60px;
}
.item-small h3{
font-size: 12px;
font-family: var(--fontbody);
text-transform: uppercase;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.item-small .item-subtitle{
display:none;
}
.item-small .item-action i {
font-size: 16px;
}
.item-medium {
width: 150px;
}
.item-medium .item-link {
width: 130px;
}
.item-medium img {
height:90px;
}
.item-medium h3{
font-size: 18px;
}
.item-large {
width:300px;
justify-content: left;
}
.item-large .item-link {
display: flex;
}
.item-large img {
height:120px;
}
.item-large .item-title {
text-align:left;
padding-left:10px;
}
.item-large h3{
font-size: 25px;
border-bottom: 1px solid var(--colorftbodydark);
}
.item-large .item-container {
flex-direction: column;
}
.item-large .item-action {
text-align: left;
}
.item-large .item-description {
margin-top:15px;
}
.item-list {
width:100%;
justify-content: left;
margin-right: 0px;
}
.item-list .item-container {
flex-direction: column;
width:100%;
}
.item-list .item-content {
flex-wrap: nowrap;
flex-direction: row;
}
.item-list .item-link {
display:flex;
align-items: center;
}
.item-list img {
height:40px;
margin:0px;
}
.item-list .item-title {
text-align:left;
padding-left:10px;
}
.item-list h3{
font-size: 18px;
font-family: var(--fontbody);
text-transform: uppercase;
}
.item-list .item-subtitle{
display:none;
}
.item-list .item-action {
width:auto;
}
.item-list .item-description {
padding:10px 0px 5px 0px;
}
/* WIDGET */
.widget{
margin-bottom:30px;
}
.widget-bordered {
border:1px solid;
}
.widget-menu {
float: right;
color: #fff;
margin: 10px 5px 0px 0px;
display:none;
}
.widget-menu i {
cursor:pointer;
}
.widget-header {
padding:10px 10px 5px 10px;
font-family: var(--fonttitle);
font-size: 25px;
}
.widget-logo {
height:40px;
margin-right:5px;
margin-top:-5px;
cursor: pointer;
}
.widget-title {
cursor: pointer;
}
.widget-body {
padding: 5px 0px 0px 0px;
}
.widget-bordered .widget-body {
padding: 5px;
}
.widget-body .items-list {
margin-bottom: 5px;
}
.widget-body .item-list:first-child {
margin-top: 0px;
}
.widget-body .items-list:last-child {
margin-bottom: -5px;
}
.widget-body .item-description {
padding:10px 0px 0px 0px;
}
.widget-body .slick {
min-height: 200px;
}
.widget-body .slick-slide {
min-height: 200px;
}
.widget-body .slick-arrow {
display: none !important;
}
.widget-body .slick-dots {
bottom: 5px;
color: var(--colorftbodydark);
}
.widgetplaceholder {
background-color: var(--colorbgbodydark);
}
.cat-list {
color: var(--colorfttitledark);
background-color: var(--colorbgbodydark);
padding: 5px 10px;
display: inline-block;
cursor: pointer;
}

10
assets/styles/font.css Normal file → Executable file
View File

@ -178,4 +178,12 @@ font-family: 'Theboldfont';
src: url('../fonts/theboldfont.ttf') format('truetype');
font-weight: normal;
font-style: normal;
}
}
@font-face {
font-family: 'Futura-Condensed-Extra-Bold';
src: url('../fonts/Futura-Condensed-Extra-Bold.otf') format('opentype');
font-weight: normal;
font-style: normal;
}

0
bin/nineskeletor.cron Normal file → Executable file
View File

0
bin/nineskeletor.service Normal file → Executable file
View File

Some files were not shown because too many files have changed in this diff Show More