Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • soluris/madis
  • matt.faure2/madis
  • enzo48/madis
  • sylsyl/madis
  • mvalois/madis
  • manududoubs/madis
6 results
Show changes
Commits on Source (503)
Showing
with 3718 additions and 2767 deletions
...@@ -36,21 +36,23 @@ APP_COOKIE_IDLE_TIMEOUT=5400 ...@@ -36,21 +36,23 @@ APP_COOKIE_IDLE_TIMEOUT=5400
# Cookie lifetime is 4 hours in seconds # Cookie lifetime is 4 hours in seconds
APP_COOKIE_LIFETIME=14400 APP_COOKIE_LIFETIME=14400
APP_DEFAULT_REFERENT="Référent RGPD" APP_DEFAULT_REFERENT="Référent RGPD"
APP_DPO_ADDRESS_CITY="Saintes" # Informations du DPD
APP_DPO_ADDRESS_STREET="2 rue des Rochers"
APP_DPO_ADDRESS_ZIP_CODE="17100"
APP_DPO_CIVILITY=m APP_DPO_CIVILITY=m
APP_DPO_FIRST_NAME=Michaël APP_DPO_FIRST_NAME="Prénom"
APP_DPO_LAST_NAME=Edlich APP_DPO_LAST_NAME="Nom"
APP_DPO_COMPANY=Soluris APP_DPO_JOB="Titre de poste"
APP_DPO_JOB="Chargé de mission Solutions Documentaires Electroniques" APP_DPO_MAIL=MonAdresseEmail@Domaine.fr
APP_DPO_MAIL=m.edlich@soluris.fr APP_DPO_PHONE_NUMBER=0123456789
APP_DPO_PHONE_NUMBER=0546923905 APP_DPO_COMPANY="Nom de la structure"
APP_DPO_ADDRESS_STREET="Rue"
APP_DPO_ADDRESS_CITY="Ville"
APP_DPO_ADDRESS_ZIP_CODE="11111"
APP_DPO_IMAGE_LOGO_COULEUR="images/logo_madis_2020_couleur.png"
APP_ENV=dev APP_ENV=dev
APP_FOOTER_PROVIDER_NAME=SOLURIS APP_FOOTER_PROVIDER_NAME="Nom de la structure"
APP_FOOTER_PROVIDER_URL="https://example.fr" APP_FOOTER_PROVIDER_URL="https://www.soluris.fr"
APP_IMAGE_FAVICON_PATH="images/logo_madis_2020_favicon.png" APP_IMAGE_FAVICON_PATH="images/logo_madis_2020_favicon.png"
APP_IMAGE_SIDEBAR_BOTTOM_TARGET_URL="htpps//example.fr" APP_IMAGE_SIDEBAR_BOTTOM_TARGET_URL="https://www.soluris.fr"
APP_IMAGE_SIDEBAR_BOTTOM_PATH="images/soluris-logo-white.png" APP_IMAGE_SIDEBAR_BOTTOM_PATH="images/soluris-logo-white.png"
APP_IMAGE_SIDEBAR_REDUCED_PATH="images/logo_madis_2020_favicon.png" APP_IMAGE_SIDEBAR_REDUCED_PATH="images/logo_madis_2020_favicon.png"
APP_IMAGE_LOGO_BLANC="images/logo_madis_2020_blanc.png" APP_IMAGE_LOGO_BLANC="images/logo_madis_2020_blanc.png"
...@@ -74,11 +76,11 @@ APP_DATATABLE_DEFAULT_PAGE_LENGTH=15 ...@@ -74,11 +76,11 @@ APP_DATATABLE_DEFAULT_PAGE_LENGTH=15
APP_PASSWORD_REQUIRE_MIN_LENGTH=14 APP_PASSWORD_REQUIRE_MIN_LENGTH=14
# if true, the password requires uppercase AND lowercase character # if true, the password requires uppercase AND lowercase character
APP_PASSWORD_REQUIRE_CASE_DIFF=true APP_PASSWORD_REQUIRE_CASE_DIFF=true
# if true, the password requires atleast 1 letter # if true, the password requires at least 1 letter
APP_PASSWORD_REQUIRE_LETTERS=true APP_PASSWORD_REQUIRE_LETTERS=true
# if true, the password requires atleast 1 number # if true, the password requires at least 1 number
APP_PASSWORD_REQUIRE_NUMBERS=true APP_PASSWORD_REQUIRE_NUMBERS=true
# if true, the password requires atleast 1 special character (&!?, etc) # if true, the password requires at least 1 special character (&!?, etc)
APP_PASSWORD_REQUIRE_SPECIAL_CHARACTERS=true APP_PASSWORD_REQUIRE_SPECIAL_CHARACTERS=true
# global maximum upload size for file uploads # global maximum upload size for file uploads
...@@ -96,7 +98,7 @@ APP_NOTIFICATION_DASHBOARD_SHOWN=true ...@@ -96,7 +98,7 @@ APP_NOTIFICATION_DASHBOARD_SHOWN=true
# Number of days before a inactive user notification is sent # Number of days before a inactive user notification is sent
APP_INACTIVE_USER_NOTIFICATION_DELAY_DAYS=365 APP_INACTIVE_USER_NOTIFICATION_DELAY_DAYS=365
# Number of days before a late request notification is sent # Number of days before a late request notification is sent
APP_REQUEST_NOTIFICATION_DELAY_DAYS=365 APP_REQUEST_NOTIFICATION_DELAY_DAYS=61
# Number of days before a late Survey (indice de maturité) notificaiton is sent # Number of days before a late Survey (indice de maturité) notificaiton is sent
APP_SURVEY_NOTIFICATION_DELAY_DAYS=365 APP_SURVEY_NOTIFICATION_DELAY_DAYS=365
...@@ -105,7 +107,6 @@ APP_NOTIFICATION_EMAIL_FIRST_LINE="Des modifications ont été apportées dans < ...@@ -105,7 +107,6 @@ APP_NOTIFICATION_EMAIL_FIRST_LINE="Des modifications ont été apportées dans <
# Activate notification module # Activate notification module
APP_ACTIVATE_NOTIFICATIONS=true APP_ACTIVATE_NOTIFICATIONS=true
#TRUSTED_PROXIES=127.0.0.1,127.0.0.2 #TRUSTED_PROXIES=127.0.0.1,127.0.0.2
#TRUSTED_HOSTS=localhost,example.com #TRUSTED_HOSTS=localhost,example.com
###< symfony/framework-bundle ### ###< symfony/framework-bundle ###
...@@ -113,11 +114,11 @@ APP_ACTIVATE_NOTIFICATIONS=true ...@@ -113,11 +114,11 @@ APP_ACTIVATE_NOTIFICATIONS=true
###> CONFORMITE ORGANISATION TOOLTIP ### ###> CONFORMITE ORGANISATION TOOLTIP ###
###> Value used to display in tooltip in the form for the evaluation of the Conformité Organisation ### ###> Value used to display in tooltip in the form for the evaluation of the Conformité Organisation ###
TOOLTIP_CONFORMITE_ORGANISATION_INEXISTANTE="Rien n'est fait" TOOLTIP_CONFORMITE_ORGANISATION_INEXISTANTE="Rien n'est fait"
TOOLTIP_CONFORMITE_ORGANISATION_TRES_ELOIGNEE="La ou les pratique(s) sont très éloignées de la définition (Pratique <20%)." TOOLTIP_CONFORMITE_ORGANISATION_TRES_ELOIGNEE="La ou les pratique(s) sont très éloignées de la définition (Pratique < 20%)."
TOOLTIP_CONFORMITE_ORGANISATION_PARTIELLE="La ou les pratique(s) sont partielles (20%<Pratique>80%) au regard de la définition.<br/>Elles ne sont pas documentées." TOOLTIP_CONFORMITE_ORGANISATION_PARTIELLE="La ou les pratique(s) sont partielles (20% < Pratique > 80%) au regard de la définition.<br/>Elles ne sont pas documentées."
TOOLTIP_CONFORMITE_ORGANISATION_QUASI_CONFORME="La ou les pratiques sont conformes ou quasiment conforme à la définition (80%<Pratique>100%)." TOOLTIP_CONFORMITE_ORGANISATION_QUASI_CONFORME="La ou les pratiques sont conformes ou quasiment conforme à la définition (80% < Pratique > 100%)."
TOOLTIP_CONFORMITE_ORGANISATION_MESURABLE="La ou les pratiques sont conforme à la définition.<br/>Elles sont documentées et contrôlables dans le cas d'un audit." TOOLTIP_CONFORMITE_ORGANISATION_MESURABLE="La ou les pratiques sont conforme à la définition.<br/>Elles sont documentées et contrôlables dans le cas d'un audit."
TOOLTIP_CONFORMITE_ORGANISATION_REVISEE="La ou les pratiques sont coordonnées et conforme à la définition.<br/>Des évaluations sont réalisées.<br/>Des améliorations sont systématiquement apportées à partir de l'analyse des évaluations effectuées. " TOOLTIP_CONFORMITE_ORGANISATION_REVISEE="La ou les pratiques sont coordonnées et conforme à la définition.<br/>Des évaluations sont réalisées.<br/>Des améliorations sont systématiquement apportées à partir de l'analyse des évaluations effectuées."
###> knplabs/knp-snappy-bundle ### ###> knplabs/knp-snappy-bundle ###
WKHTMLTOPDF_PATH=/usr/local/bin/wkhtmltopdf WKHTMLTOPDF_PATH=/usr/local/bin/wkhtmltopdf
WKHTMLTOIMAGE_PATH=/usr/local/bin/wkhtmltoimage WKHTMLTOIMAGE_PATH=/usr/local/bin/wkhtmltoimage
...@@ -148,7 +149,7 @@ SSO_KEY_FIELD="sub" ...@@ -148,7 +149,7 @@ SSO_KEY_FIELD="sub"
SSO_LOGOUT_URL= SSO_LOGOUT_URL=
###> Value used for oauth2 client config see config/packages/knpu_oauth2_client.yaml ### ###> Value used for oauth2 client config see config/packages/knpu_oauth2_client.yaml ###
# leave empty to disable SSO (available types: keycloak) # leave empty to disable SSO (available types: lemonLdap and keycloak)
OAUTH_TYPE= OAUTH_TYPE=
OAUTH_URL=https://xxxxxxxxxx/auth OAUTH_URL=https://xxxxxxxxxx/auth
OAUTH_REALM=REALM OAUTH_REALM=REALM
......
...@@ -30,21 +30,23 @@ APP_COOKIE_IDLE_TIMEOUT=5400 ...@@ -30,21 +30,23 @@ APP_COOKIE_IDLE_TIMEOUT=5400
# Cookie lifetime is 4 hours in seconds # Cookie lifetime is 4 hours in seconds
APP_COOKIE_LIFETIME=14400 APP_COOKIE_LIFETIME=14400
APP_DEFAULT_REFERENT="Référent RGPD" APP_DEFAULT_REFERENT="Référent RGPD"
APP_DPO_ADDRESS_CITY="Saintes" # Informations du DPD
APP_DPO_ADDRESS_STREET="2 rue des Rochers"
APP_DPO_ADDRESS_ZIP_CODE="17100"
APP_DPO_CIVILITY=m APP_DPO_CIVILITY=m
APP_DPO_FIRST_NAME=Michaël APP_DPO_FIRST_NAME="Prénom"
APP_DPO_LAST_NAME=Edlich APP_DPO_LAST_NAME="Nom"
APP_DPO_COMPANY=Soluris APP_DPO_JOB="Titre de poste"
APP_DPO_JOB="Chargé de mission Solutions Documentaires Electroniques" APP_DPO_MAIL=MonAdresseEmail@Domaine.fr
APP_DPO_MAIL=m.edlich@soluris.fr APP_DPO_PHONE_NUMBER=0123456789
APP_DPO_PHONE_NUMBER=0546923905 APP_DPO_COMPANY="Nom de la structure"
APP_DPO_ADDRESS_STREET="Rue"
APP_DPO_ADDRESS_CITY="Ville"
APP_DPO_ADDRESS_ZIP_CODE="11111"
APP_DPO_IMAGE_LOGO_COULEUR="images/logo_madis_2020_couleur.png"
APP_ENV=dev APP_ENV=dev
APP_FOOTER_PROVIDER_NAME=SOLURIS APP_FOOTER_PROVIDER_NAME="Nom de la structure"
APP_FOOTER_PROVIDER_URL="https://example.fr" APP_FOOTER_PROVIDER_URL="https://www.soluris.fr"
APP_IMAGE_FAVICON_PATH="images/logo_madis_2020_favicon.png" APP_IMAGE_FAVICON_PATH="images/logo_madis_2020_favicon.png"
APP_IMAGE_SIDEBAR_BOTTOM_TARGET_URL="htpps//example.fr" APP_IMAGE_SIDEBAR_BOTTOM_TARGET_URL="https://www.soluris.fr"
APP_IMAGE_SIDEBAR_BOTTOM_PATH="images/soluris-logo-white.png" APP_IMAGE_SIDEBAR_BOTTOM_PATH="images/soluris-logo-white.png"
APP_IMAGE_SIDEBAR_REDUCED_PATH="images/logo_madis_2020_favicon.png" APP_IMAGE_SIDEBAR_REDUCED_PATH="images/logo_madis_2020_favicon.png"
APP_IMAGE_LOGO_BLANC="images/logo_madis_2020_blanc.png" APP_IMAGE_LOGO_BLANC="images/logo_madis_2020_blanc.png"
...@@ -52,7 +54,7 @@ APP_IMAGE_LOGO_COULEUR="images/logo_madis_2020_couleur.png" ...@@ -52,7 +54,7 @@ APP_IMAGE_LOGO_COULEUR="images/logo_madis_2020_couleur.png"
APP_COMMUNE_SVG_REDUCED_PATH="images/commune.svg" APP_COMMUNE_SVG_REDUCED_PATH="images/commune.svg"
APP_IMPERSONATE_CREATOR_IS_ADMIN=0 APP_IMPERSONATE_CREATOR_IS_ADMIN=0
APP_MAIL_RECEIVER_DEV=~ APP_MAIL_RECEIVER_DEV=~
APP_MAIL_SENDER_EMAIL=ne-pas-repondre@awkan.fr APP_MAIL_SENDER_EMAIL=ne-pas-repondre@soluris.fr
APP_MAIL_SENDER_NAME="Madis" APP_MAIL_SENDER_NAME="Madis"
APP_SECRET=a98f56b9ea67f189df8ed6a39c548503 APP_SECRET=a98f56b9ea67f189df8ed6a39c548503
# global maximum upload size for file uploads # global maximum upload size for file uploads
...@@ -66,7 +68,7 @@ APP_NOTIFICATION_DASHBOARD_SHOWN=true ...@@ -66,7 +68,7 @@ APP_NOTIFICATION_DASHBOARD_SHOWN=true
APP_ACTIVATE_NOTIFICATIONS=true APP_ACTIVATE_NOTIFICATIONS=true
APP_INACTIVE_USER_NOTIFICATION_DELAY_DAYS=365 APP_INACTIVE_USER_NOTIFICATION_DELAY_DAYS=365
# Number of days before a late request notification is sent # Number of days before a late request notification is sent
APP_REQUEST_NOTIFICATION_DELAY_DAYS=365 APP_REQUEST_NOTIFICATION_DELAY_DAYS=61
APP_SURVEY_NOTIFICATION_DELAY_DAYS=365 APP_SURVEY_NOTIFICATION_DELAY_DAYS=365
APP_NOTIFICATION_EMAIL_FIRST_LINE="Des modifications ont été apportées dans <a href='https://madis.fr'>Madis</a>" APP_NOTIFICATION_EMAIL_FIRST_LINE="Des modifications ont été apportées dans <a href='https://madis.fr'>Madis</a>"
...@@ -80,11 +82,11 @@ APP_LOG_JOURNAL_DURATION=6months ...@@ -80,11 +82,11 @@ APP_LOG_JOURNAL_DURATION=6months
###> CONFORMITE ORGANISATION TOOLTIP ### ###> CONFORMITE ORGANISATION TOOLTIP ###
###> Value used to display in tooltip in the form for the evaluation of the Conformité Organisation ### ###> Value used to display in tooltip in the form for the evaluation of the Conformité Organisation ###
TOOLTIP_CONFORMITE_ORGANISATION_INEXISTANTE="Rien n'est fait" TOOLTIP_CONFORMITE_ORGANISATION_INEXISTANTE="Rien n'est fait"
TOOLTIP_CONFORMITE_ORGANISATION_TRES_ELOIGNEE="La ou les pratique(s) sont très éloignées de la définition (Pratique <20%)." TOOLTIP_CONFORMITE_ORGANISATION_TRES_ELOIGNEE="La ou les pratique(s) sont très éloignées de la définition (Pratique < 20%)."
TOOLTIP_CONFORMITE_ORGANISATION_PARTIELLE="La ou les pratique(s) sont partielles (20%<Pratique>80%) au regard de la définition.<br/>Elles ne sont pas documentées." TOOLTIP_CONFORMITE_ORGANISATION_PARTIELLE="La ou les pratique(s) sont partielles (20% < Pratique > 80%) au regard de la définition.<br/>Elles ne sont pas documentées."
TOOLTIP_CONFORMITE_ORGANISATION_QUASI_CONFORME="La ou les pratiques sont conformes ou quasiment conforme à la définition (80%<Pratique>100%)." TOOLTIP_CONFORMITE_ORGANISATION_QUASI_CONFORME="La ou les pratiques sont conformes ou quasiment conforme à la définition (80% < Pratique > 100%)."
TOOLTIP_CONFORMITE_ORGANISATION_MESURABLE="La ou les pratiques sont conforme à la définition.<br/>Elles sont documentées et contrôlables dans le cas d'un audit." TOOLTIP_CONFORMITE_ORGANISATION_MESURABLE="La ou les pratiques sont conforme à la définition.<br/>Elles sont documentées et contrôlables dans le cas d'un audit."
TOOLTIP_CONFORMITE_ORGANISATION_REVISEE="La ou les pratiques sont coordonnées et conforme à la définition.<br/>Des évaluations sont réalisées.<br/>Des améliorations sont systématiquement apportées à partir de l'analyse des évaluations effectuées. " TOOLTIP_CONFORMITE_ORGANISATION_REVISEE="La ou les pratiques sont coordonnées et conforme à la définition.<br/>Des évaluations sont réalisées.<br/>Des améliorations sont systématiquement apportées à partir de l'analyse des évaluations effectuées."
###> knplabs/knp-snappy-bundle ### ###> knplabs/knp-snappy-bundle ###
WKHTMLTOPDF_PATH=/usr/local/bin/wkhtmltopdf WKHTMLTOPDF_PATH=/usr/local/bin/wkhtmltopdf
WKHTMLTOIMAGE_PATH=/usr/local/bin/wkhtmltoimage WKHTMLTOIMAGE_PATH=/usr/local/bin/wkhtmltoimage
...@@ -95,7 +97,6 @@ WKHTMLTOIMAGE_PATH=/usr/local/bin/wkhtmltoimage ...@@ -95,7 +97,6 @@ WKHTMLTOIMAGE_PATH=/usr/local/bin/wkhtmltoimage
# For Gmail as a transport, use: "gmail://username:password@localhost" # For Gmail as a transport, use: "gmail://username:password@localhost"
# For a generic SMTP server, use: "smtp://localhost:25?encryption=&auth_mode=" # For a generic SMTP server, use: "smtp://localhost:25?encryption=&auth_mode="
# Delivery is disabled by default via "null://localhost" # Delivery is disabled by default via "null://localhost"
MAILER_URL=null://localhost
MAILER_DSN=null://localhost MAILER_DSN=null://localhost
###< symfony/swiftmailer-bundle ### ###< symfony/swiftmailer-bundle ###
...@@ -120,7 +121,7 @@ SSO_KEY_FIELD="sub" ...@@ -120,7 +121,7 @@ SSO_KEY_FIELD="sub"
SSO_LOGOUT_URL= SSO_LOGOUT_URL=
###> Value used for oauth2 client config see config/packages/knpu_oauth2_client.yaml ### ###> Value used for oauth2 client config see config/packages/knpu_oauth2_client.yaml ###
# leave empty to disable SSO (available types: keycloak) # leave empty to disable SSO (available types: lemonLdap and keycloak)
OAUTH_TYPE=keycloak OAUTH_TYPE=keycloak
OAUTH_URL=https://xxxxxxxxxx/auth OAUTH_URL=https://xxxxxxxxxx/auth
OAUTH_REALM=REALM OAUTH_REALM=REALM
......
...@@ -12,6 +12,8 @@ stages: ...@@ -12,6 +12,8 @@ stages:
before_script: before_script:
- curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer - curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
- ln -f -s .env.test .env - ln -f -s .env.test .env
- apt-get update && apt-get install -y libfreetype6-dev libjpeg62-turbo-dev libpng-dev
- docker-php-ext-install gd
# re-install vendors to prevent from ci cache failure # re-install vendors to prevent from ci cache failure
- composer --version && composer install -vv --prefer-dist --no-interaction --optimize-autoloader --no-scripts || echo "Composer install fail" - composer --version && composer install -vv --prefer-dist --no-interaction --optimize-autoloader --no-scripts || echo "Composer install fail"
...@@ -23,8 +25,10 @@ stages: ...@@ -23,8 +25,10 @@ stages:
policy: pull policy: pull
create_cache: create_cache:
image: jakzal/phpqa:php8.1-alpine image: jakzal/phpqa:php8.1
script: script:
- apt-get update && apt-get install -y libfreetype6-dev libjpeg62-turbo-dev libpng-dev
- docker-php-ext-install gd
- composer --version && composer install -vv --prefer-dist --no-interaction --optimize-autoloader --no-scripts || echo "Composer install fail" - composer --version && composer install -vv --prefer-dist --no-interaction --optimize-autoloader --no-scripts || echo "Composer install fail"
cache: cache:
key: "$CI_PROJECT_PATH-php" key: "$CI_PROJECT_PATH-php"
......
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="fr-FR">
<head> <head>
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.5/css/bulma.min.css"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.5/css/bulma.min.css">
......
This diff is collapsed.
Contribution Contribution
============ ============
Si vous souhaitez contribuer à MADIS, ## Contributeurs historiques
veuillez vous référer à la page de documentation correspondante :
[Cycle de vie d'une contribution](/doc/developpement/6-cycle-de-vie-contribution.md) * **BOURLARD Donovan** - Travail initial
* **ANODE Stratégie Digitale** - Maintenance et évolutions
Des contributions ont peut-être été faites sur le projet. Pour analyser la liste des contributeurs, référez-vous au dépôt de code sur GitLab.
Si vous souhaitez contribuer à Madis, veuillez vous référer à la documentation vous correspondant :
- [Signaler un problème ou une suggestion d'amélioration](#signaler-un-problème-ou-une-suggestion-damélioration)
- [Proposer un développement d'une fonctionnalité](#proposer-un-développement-dune-fonctionnalité)
1. [Création d'un ticket](#1-création-dun-ticket)
2. [Développements](#2-développements)
3. [Traitement de la demande de fusion par les mainteneurs](#3-traitement-de-la-demande-de-fusion-par-les-mainteneurs)
## Signaler un problème ou une suggestion d'amélioration
Avant toute contribution, merci de vérifier qu'une demande similaire n'est pas déjà en cours ou résolue. Pour cela, veuillez vérifier :
1. Que le problème soit bien présent dans la [dernière version](https://gitlab.adullact.net/soluris/madis/-/tags) (Consulter le [journal des modifications (Changelog)](CHANGELOG.md#changelog)) ;
2. Qu'un [ticket ouvert](https://gitlab.adullact.net/soluris/madis/-/issues) ne décrit pas déjà votre demande (dans ce cas, participez à la discussion de ce dernier).
Dans le cas où il n'y aurait pas de ticket déjà ouvert, il faudra alors en créer un. Il est recommandé de donner au ticket un titre concis et le plus explicite possible.
**Recommandation Madis** : Il est proposé que chaque ticket soit préfixé par le nom du module. Par exemple, un ticket pour le registre des traitements aura comme titre `[Traitements] Mon titre explicite et concis`.
La description du ticket détaille et précise le propos. Il est possible d'ajouter des images, voire des fichiers. Veuillez apporter un maximum d'informations pour permettre un traitement efficace de celui-ci.
## Proposer un développement d'une fonctionnalité
Il est possible de proposer un développement que ce soit pour le correctif d'un problème, pour l'amélioration de Madis, ou encore le développement de nouvelles fonctionnalités.
### 1. Création d'un ticket
En général, avant de réaliser des développements, il est préférable de commencer par [créer un ticket](#signaler-un-problème-ou-une-suggestion-damélioration) regroupant vos intentions de développement pour le partager au reste de la communauté et de la faire réagir. Cela permet par exemple, d'anticiper le fait qu'une fonctionnalité ou un correctif ne corresponde pas à Madis et à ses utilisateurs, ou soit incomplète.
La discussion se fait sous forme de commentaires du ticket. Pour les contributeurs ayant un peu d'expérience, il est suggéré de mettre à jour la description de l'issue au gré de la discussion.
### 2. Développements
Dans les recommandations de travail collaboratif, il est proposé de créer une nouvelle branche à partir de la `develop` pour chaque nouveau travail. Par convention, il est conseillé de préfixer le nom la branche nouvellement créée par l'id du ticket associé.
Avant tout développement, vous devez suivre et respecter l'[architecture et la qualité du code existant](doc/developpement/2-architecture-et-qualite.md#architecture-et-qualité), de plus il est important de respecter plusieurs éléments :
- Le projet Madis étant sous licence AGPLv3, tout ajout de librairie au projet Madis doit donc être conforme avec celle-ci ;
- Les conventions de codage ;
- La sécurité ;
- L'accessibilité selon les [critères et tests du RGAA](https://accessibilite.numerique.gouv.fr/methode/criteres-et-tests/).
Une fois le code développé et testé, vous devez pousser votre code vers le GitLab et faire un merge request de votre branche vers la branche `develop`. Gérer les éventuels conflits en les corrigeant. Lors du merge, vous devrez faire référence au ticket associé si ce n'est pas déjà le cas, et éventuellement apporter des informations détaillées de votre développement.
### 3. Traitement de la demande de fusion par les mainteneurs
Le lancement de la merge request génère une notification aux mainteneurs. Ces derniers traitent la merge request. Une phase de recettage est réalisée, et un nouvel espace de discussion est possible entre mainteneur et développeur.
Si tout est conforme, le mainteneur valide la merge request et le code est passé dans la branche develop. Celui-ci sera alors intégré directement dans une nouvelle version Madis, ou dans une version future.
This diff is collapsed.
# Madis # Madis
L'application Madis est une application pensée par [Soluris](https://www.soluris.fr) pour vous accompagner dans la gestion du Règlement Général à la Protection des Données (RGPD).
[![CI](https://gitlab.adullact.net/soluris/madis/badges/master/pipeline.svg?style=flat)](https://example.gitlab.adullact.net/soluris/madis/badges/commits/master)
[![coverage](https://gitlab.adullact.net/soluris/madis/badges/master/coverage.svg?style=flat)](https://gitlab.adullact.net/soluris/madis/) ## Table des matières
Accompagnement dans la gestion du Règlement Général à la Protection des Données (RGPD). - [Licence d'utilisation de Madis](LICENSE.md)
- [Installation de Madis](doc/installation#madis-installation)
# Table des matières - [Installer Madis par script](doc/installation/1-installation-script.md#installer-madis-par-script)
- [Installer Madis manuellement](doc/installation/2-installation-manuelle.md#installation-manuelle)
- [Installation de MADIS](doc/installation) - [Journal des modifications (Changelog)](CHANGELOG.md#changelog)
- [Pré-requis pour lancer l'installation de MADIS](doc/installation/1-pre-requis.md) - [Documentation utilisateur](https://documentation-madis.readthedocs.io/fr/latest/docutilisateur.html)
- [Configurer les services (NGINX, ...)](doc/installation/2-configurer-les-services.md) - [Maintenance et gestion applicative](doc/maintenance-et-gestion-application#maintenance-et-gestion-applicative)
- [Cloner le dépôt de code MADIS depuis GIT](doc/installation/3-cloner-le-depot-git-de-madis.md) - [Paramétrage complémentaire et .env](doc/maintenance-et-gestion-application/1-parametrages-complementaires-et-env.md#paramétrage-complémentaire-et-env)
- [Configurer MADIS et effectuer son premier lancement](doc/installation/4-premiere-configuration-de-madis.md) - [Mettre à jour Madis](doc/maintenance-et-gestion-application/2-mettre-a-jour-madis.md#mettre-à-jour-madis)
- [Paramétrage complémentaire](doc/installation/5-parametrages-complementaires.md) - [Requêtes SQL](doc/maintenance-et-gestion-application/3-requetes-sql.md#requêtes-sql)
- [Documentation technique développeurs](doc/developpement#madis-documentation-technique-développeurs)
- [Gestion de l'application](doc/gestion-application) - [Lancer la stack de développement](doc/developpement/1-lancer-stack-developpement.md#lancer-la-stack-de-développement)
- [Requêtes SQL](doc/gestion-application/1-requetes-sql.md) - [Architecture et qualité](doc/developpement/2-architecture-et-qualite.md#architecture-et-qualité)
- [Déployer une nouvelle version](doc/developpement/3-deployer-une-nouvelle-version.md#déployer-une-nouvelle-version)
- [Maintenance applicative & montées de versions](doc/maintenance-applicative) - [Contribuer au projet](CONTRIBUTING.md#contribution)
- [Pré-requis pour lancer l'installation de MADIS](doc/maintenance-applicative/1-pre-requis.md)
- [Réaliser une montée/descente de version de MADIS](doc/maintenance-applicative/2-realiser-une-montee-de-version.md)
- [Descriptif des variables d'environnement de Symfony](doc/maintenance-applicative/4-descriptif-variables-environement-symfony.md)
- [Problèmes possibles et connus lors de mises à jour](doc/maintenance-applicative/3-problemes-possible-lors-de-mises-a-jour.md)
- [[DEVELOPPEURS] Documentation technique](doc/developpement)
- [Pré-requis pour lancer l'installation de MADIS](doc/developpement/1-pre-requis.md)
- [Architecture applicative](doc/developpement/2-architecture-applicative.md)
- [Les bonnes pratiques de développement](doc/developpement/3-bonnes-pratiques-de-developpement.md)
- [Effectuer la maintenance et les montées de versions](doc/developpement/4-maintenance-et-montee-de-version.md)
- [Qualité du code](doc/developpement/5-qualite-de-code.md)
- [Cycle de vie d'une contribution](doc/developpement/6-cycle-de-vie-contribution.md)
## Stack technique
Le projet est construit avec :
* [Symfony 4.4](http://symfony.com/doc/current/index.html) - Comme framework backend
* [AdminLTE 2](https://adminlte.io/) - Comme support CSS
## Contributeurs historiques
* __BOURLARD Donovan__ - Travail initial
* __ANODE Stratégie Digitale__ - Maintenance et évolutions
Des contributions ont peut-être été faites sur le projet.
Pour analyser la liste des contributeurs, référez vous au dépôt de code sur Gitlab.
# Informations de mises à jour
Il est possible que vous deviez réaliser des actions manuelles lors
de vos montées de version de MADIS.
De ce fait, répertoriez-vous à ce qui est écrit ci-dessous.
**_Note: Si aucune trace n'est présente dans ce fichier pour la version
que vous souhaitez installer, c'est que vous n'avez rien à faire._**
De manière préventive, n'oubliez pas de faire un dump de votre base de
données avant d'effectuer une montée de version.
# Passage en v1.6.0
### Paramétrage de la subrogation d'un utilisateur
Dans le `.env` vous pouvez modifier les informations liées à la subrogation des utilisateurs.
Dans le cas où vous créez des données pour les structure,
vous pouvez choisir si vous souhaitez faire afficher le nom de la personne sur qui l'admin s'est connectée
ou le nom de l'admin lui même.
_Note : Vous pouvez aller regarder le fichier `.env.dist` en guise d'exemple._
Pour cela, ajoutez la variable suivante dans votre `.env` et configurez la.
- Mettre `1` si le nom de l'admin doit apparaitre
- Mettre `0` si le nom de la personne sur laquelle l'admin s'est connecté doit apparaitre
```text
APP_IMPERSONATE_CREATOR_IS_ADMIN=0
```
# Passage en v1.5.0
### Paramétrage des timeout Cookie
Dans le `.env` vous pouvez modifier les informations liées à la durée de vie
des cookies ainsi que la deconnexion au bout d'un certain temps d'inactivité
Pour cela, ajoutez les variables suivantes dans votre `.env`.
```text
# Déconnexion pour une inactivité au bout de 1h30 (en secondes)
APP_COOKIE_IDLE_TIMEOUT=5400
# Déxonnexion au bout de 4h (en secondes), même si j'utilise l'application
APP_COOKIE_LIFETIME=14400
```
Il vous faudra également vérifier que dans votre fichier `php.ini`
la variable `session.gc_maxlifetime` égale ou supérieure à votre durée d'inactivité.
Le cas échéant, la session pourrait être supprimée pour inactivité par PHP et non par
votre configuration de MADIS.
Pour prendre connaissance de l'emplacement de votre fichier `php.ini`,
utilisez la commande `php --ini`. Une fois modifié, il vous suffira de restarter votre PHP.
# Passage en v1.4.0
**Note d'attention :** Cette nouvelle version va modifier vos données présentes
en Base de Données. Pensez à créer une sauvegarde de votre BDD au cas où.
### Possibilité de configurer les logos & le fournisseur de service
Dans le `.env` vous pouvez modifier les informations des logos et
du fournisseur de service MADIS (si vous ne souhaitez modifier les
informations, copiez les variables comme affichées dans l'exemple)
Ajoutez les variables suivantes dans votre `.env`.
```text
APP_FOOTER_PROVIDER_NAME=SOLURIS
APP_FOOTER_PROVIDER_URL="https://soluris.fr"
APP_IMAGE_FAVICON_PATH="favicon.ico"
APP_IMAGE_SIDEBAR_BOTTOM_TARGET_URL="https://soluris.fr"
APP_IMAGE_SIDEBAR_BOTTOM_PATH="images/soluris-logo-white.png"
APP_IMAGE_SIDEBAR_REDUCED_PATH="images/icon-32x32.png"
```
_Note: Vous pourrez venir modifier ces variables plus tard._
Si vous souhaitez ajouter vos propres images, le dossier `public/custom`
n'est pas versionné dans GIT.
De ce fait, si vous souhaitez ajouter un favicon dans
`public/custom/images/favicon.ico` par exemple, il vous suffira de changer
`APP_IMAGE_FAVICON_PATH="favicon.ico"` par `APP_IMAGE_FAVICON_PATH="custom/images/favicon.ico"`
(le dossier `public` étant déjà ciblé par défaut).
Finissez par lancer la commande `bin/console cache:clear` pour que ces
données soient appliquées
# Passage en v1.3.1
### Ajout de l'adresse du DPD moral / par défaut
Modifier le fichier `.env` pour y ajouter les 3 champs suivants,
dans la section `symfony/framework-bundle` comme montré ci-dessous.
_Note: Vous pouvez vous aider du fichier `.env.dist`
qui est le fichier de référence, avec des valeurs par défaut._
```text
###> symfony/framework-bundle ###
APP_DPO_ADDRESS_CITY="Saintes"
APP_DPO_ADDRESS_STREET="2 rue des Rochers"
APP_DPO_ADDRESS_ZIP_CODE="17100"
###< symfony/framework-bundle ###
```
/* GLOBAL */ /* GLOBAL */
a:focus, button:focus { a:focus, button:focus, input[type=submit] {
outline: 1px dashed !important; outline: 1px dashed !important;
} }
.p-0 { table a:hover,
padding: 0!important; table a:focus {
text-decoration: underline;
} }
.nopadding { .float-left {
padding-left: 0 !important; float: left;
}
.mt-2 {
margin: 5px 0 0;
}
tbody th[scope] {
font-weight: initial;
}
/* Bootstrap v5.3 */
.p-0 {
padding: 0 !important;
} }
.p-2 { .p-2 {
padding: 2rem; padding: 2rem;
} }
.m-0 { .ps-0 {
margin : 0!important; padding-left: 0 !important;
} }
.float-left { .ps-1 {
float: left; padding-left: 1rem !important;
}
.m-0 {
margin : 0 !important;
} }
/* Bootstrap v5.3 */
.ms-2 { .ms-2 {
margin-left: 2rem; margin-left: 2rem !important;
}
.mb-1 {
margin-bottom: 1rem !important;
}
.mb-2 {
margin-bottom: 2rem !important;
} }
.d-flex { .d-flex {
display: flex; display: flex;
...@@ -31,6 +50,9 @@ a:focus, button:focus { ...@@ -31,6 +50,9 @@ a:focus, button:focus {
.justify-content-between { .justify-content-between {
justify-content: space-between; justify-content: space-between;
} }
.overflow-x-auto {
overflow-x: auto !important;
}
/* Impersonate */ /* Impersonate */
body > div.banner-impersonate { body > div.banner-impersonate {
...@@ -45,7 +67,7 @@ body > div.banner-impersonate { ...@@ -45,7 +67,7 @@ body > div.banner-impersonate {
margin-left: 1em; margin-left: 1em;
font-size: small; font-size: small;
} }
div { p {
line-height: 50px; line-height: 50px;
} }
} }
...@@ -70,6 +92,9 @@ a:not([href]).banner-impersonate { ...@@ -70,6 +92,9 @@ a:not([href]).banner-impersonate {
max-width: 2em; max-width: 2em;
max-height: 2em; max-height: 2em;
} }
.logo-lg img {
width: 65%;
}
.sidebar-toggle:before { .sidebar-toggle:before {
content: ""; content: "";
} }
...@@ -129,7 +154,7 @@ button.header-menu-active { ...@@ -129,7 +154,7 @@ button.header-menu-active {
.footer-public > footer { .footer-public > footer {
margin-left:0; margin-left:0;
} }
footer p a { footer a {
text-decoration: underline; text-decoration: underline;
} }
...@@ -158,6 +183,7 @@ footer p a { ...@@ -158,6 +183,7 @@ footer p a {
} }
li.header { li.header {
padding: 0 0 0 15px; padding: 0 0 0 15px;
color: #b8c7ce !important;
} }
} }
.sidebar-mini.sidebar-collapse .main-sidebar > .sidebar > .sidebar-menu li.header:hover { .sidebar-mini.sidebar-collapse .main-sidebar > .sidebar > .sidebar-menu li.header:hover {
...@@ -190,8 +216,36 @@ footer p a { ...@@ -190,8 +216,36 @@ footer p a {
margin-left: -15px !important; margin-left: -15px !important;
} }
/* Breadcrumb */
.content-header .breadcrumb a {
color:#444;
text-decoration:none;
display:inline-block;
&:hover,
&:focus {
text-decoration: underline;
}
}
.content-header .breadcrumb li {
padding: 0;
}
.content-header .breadcrumb a > .fa,
.content-header .breadcrumb a > .glyphicon,
.content-header .breadcrumb a >.ion {
margin-right:5px;
}
.content-header .breadcrumb li+li:before {
content:'>\00a0';
padding: 0 5px;
color: #ccc;
}
.breadcrumb li.active {
color: #726C6C;
}
/* Form */ /* Form */
.form-group>label.required:after { .form-group>label.required:after,
thead th.required:after {
content: " (Obligatoire)"; content: " (Obligatoire)";
font-size: 85%; font-size: 85%;
font-style: italic; font-style: italic;
...@@ -225,10 +279,19 @@ td div.bootstrap-select { ...@@ -225,10 +279,19 @@ td div.bootstrap-select {
} }
} }
} }
table .dropdown.bootstrap-select,
.select-width .dropdown.bootstrap-select {
width: 100% !important;
}
select[multiple] > option {
overflow: hidden;
text-overflow: ellipsis;
width: 100%;
}
.bootstrap-select > div.dropdown-menu { .bootstrap-select > div.dropdown-menu {
width: 100%; width: 100%;
min-width: 100% !important; min-width: 100% !important;
z-index: 812; z-index: 1030;
a { a {
padding-left: 8px; padding-left: 8px;
padding-right: 8px; padding-right: 8px;
...@@ -250,6 +313,10 @@ td div.bootstrap-select { ...@@ -250,6 +313,10 @@ td div.bootstrap-select {
textarea { textarea {
max-width: 100%; max-width: 100%;
min-width: 100%; min-width: 100%;
min-height: 34px;
}
textarea.textareaheight {
height: 34px;
} }
.js-collection-wrapper i.fa-times { .js-collection-wrapper i.fa-times {
color: #ff746d; color: #ff746d;
...@@ -259,8 +326,14 @@ textarea { ...@@ -259,8 +326,14 @@ textarea {
.content-wrapper.public{ .content-wrapper.public{
margin-left: 0; margin-left: 0;
} }
div.action-bar { #table_info {
margin-bottom: 1em; display: flex;
}
/* DatePicker */
.daterangepicker {
z-index: 5 !important;
font-family: inherit !important;
} }
/* Show */ /* Show */
...@@ -268,50 +341,38 @@ body.show .content ul { ...@@ -268,50 +341,38 @@ body.show .content ul {
-webkit-padding-start: 15px; -webkit-padding-start: 15px;
} }
/* LOADER */ /* Tooltip */
.lds-ellipsis { .stacked-bar-graph .tooltipchart {
display: inline-block; position: relative;
position: relative;
width: 14px;
height: 14px;
div {
position: absolute;
top: 6px;
width: 2px;
height: 2px;
border-radius: 50%;
background: #000000;
animation-timing-function: cubic-bezier(0, 1, 1, 0);
}
div:nth-child(1) {
left: 1.3px;
animation: lds-ellipsis1 0.6s infinite;
}
div:nth-child(2) {
left: 1.3px;
animation: lds-ellipsis2 0.6s infinite;
}
div:nth-child(3) {
left: 5.7px;
animation: lds-ellipsis2 0.6s infinite;
}
div:nth-child(4) {
left: 10px;
animation: lds-ellipsis3 0.6s infinite;
}
}
@keyframes lds-ellipsis1 {
0% { transform: scale(0); }
100% { transform: scale(1); }
} }
@keyframes lds-ellipsis3 { .tooltipchart .tooltipcharttext {
0% { transform: scale(1); } visibility: hidden;
100% { transform: scale(0); } background-color: black;
color: #fff;
text-align: center;
padding: 5px;
border-radius: 6px;
height: 30px;
display: block;
position: absolute;
z-index: 2;
top: 120%;
left: 50%;
transform: translateX(-50%);
white-space: nowrap;
&::after {
content: " ";
position: absolute;
bottom: 100%; /* At the top of the tooltip */
left: 50%;
margin-left: -5px;
border-width: 5px;
border-style: solid;
border-color: transparent transparent black transparent;
}
} }
@keyframes lds-ellipsis2 { .tooltipchart:hover .tooltipcharttext {
0% { transform: translate(0, 0); } visibility: visible;
100% { transform: translate(4px, 0); }
} }
#tooltip { #tooltip {
...@@ -409,6 +470,7 @@ div.mesurement-hide { ...@@ -409,6 +470,7 @@ div.mesurement-hide {
> div { > div {
display: none; display: none;
z-index: 1;
} }
> i:hover + div.primary { > i:hover + div.primary {
...@@ -509,6 +571,10 @@ td.action > a { ...@@ -509,6 +571,10 @@ td.action > a {
white-space: nowrap; white-space: nowrap;
} }
div.dt-buttons {
position: initial;
}
div.dt-button-background { div.dt-button-background {
position: fixed; position: fixed;
top: 0; top: 0;
...@@ -527,8 +593,8 @@ div.dt-button-background { ...@@ -527,8 +593,8 @@ div.dt-button-background {
div.dt-button-collection { div.dt-button-collection {
position: absolute; position: absolute;
top: 0; top: 43px !important;
left: 0; left: 10px !important;
width: 150px; width: 150px;
margin-top: 3px; margin-top: 3px;
padding: 8px 8px 4px 8px; padding: 8px 8px 4px 8px;
...@@ -552,7 +618,6 @@ div.dt-button-collection { ...@@ -552,7 +618,6 @@ div.dt-button-collection {
} }
} }
button.dt-button, div.dt-button, a.dt-button { button.dt-button, div.dt-button, a.dt-button {
position: relative; position: relative;
display: inline-block; display: inline-block;
...@@ -584,27 +649,30 @@ button.dt-button, div.dt-button, a.dt-button { ...@@ -584,27 +649,30 @@ button.dt-button, div.dt-button, a.dt-button {
text-overflow: ellipsis; text-overflow: ellipsis;
} }
/* ---------- NOTIFICATIONS ---------- */ /* ---------- NOTIFICATIONS ---------- */
#notifications i.fa-bell {
#notifications i.fa-bell { font-size: 16px;
font-size: 16px; }
} #notifications .badge {
#notifications .badge { position: relative;
position: relative; top: -10px;
top: -10px; left: -5px;
left: -5px; }
} #notifications .dropdown-large {
#notifications .dropdown-large{ min-width:550px;
min-width:550px; }
} #notifications .single-notification {
#notifications .dropdown-large a { background-color : #deedf6;
color: #3c8dbc!important; }
} .notification-link-underline a:hover,
#notifications .single-notification { .notification-link-underline a:focus {
background-color : #deedf6; text-decoration: underline;
} }
/* -------- LOGIN PAGE -------------- */ /* -------- LOGIN PAGE -------------- */
.login-logo img {
width: 80%;
}
#sso_login { #sso_login {
border-top: 1px solid #666; border-top: 1px solid #666;
margin-top: 20px; margin-top: 20px;
......
...@@ -2,7 +2,6 @@ $(document).ready(function() { ...@@ -2,7 +2,6 @@ $(document).ready(function() {
// Handle complex form on user page // Handle complex form on user page
$('input.select-frequency:not(:checked)').parents('tr').find('select').attr('disabled', 'disabled') $('input.select-frequency:not(:checked)').parents('tr').find('select').attr('disabled', 'disabled')
$('input.select-frequency').on('change', function(ev){ $('input.select-frequency').on('change', function(ev){
console.log('radio changed', ev)
$('input.select-frequency').parents('table').find('select').attr('disabled', 'disabled') $('input.select-frequency').parents('table').find('select').attr('disabled', 'disabled')
$(ev.currentTarget).parents('tr').find('select').removeAttr('disabled') $(ev.currentTarget).parents('tr').find('select').removeAttr('disabled')
}) })
...@@ -22,14 +21,18 @@ $(document).ready(function() { ...@@ -22,14 +21,18 @@ $(document).ready(function() {
$('.complex-choice-group').each(function(idx) { $('.complex-choice-group').each(function(idx) {
var check = $(this).find('.check input'); var check = $(this).find('.check input');
var comment = $(this).find('.comment input'); var comment = $(this).find('.comment input');
var commentarea = $(this).find('.comment textarea');
// Disable comment on unchecked line // Disable comment on unchecked line
comment.prop('disabled', !check.is(':checked')); comment.prop('disabled', !check.is(':checked'));
commentarea.prop('disabled', !check.is(':checked'));
// Check | Uncheck : Disable comment on unchecked line // Check | Uncheck : Disable comment on unchecked line
check.on('change', function() { check.on('change', function() {
var comment = $(this).closest('.complex-choice-group').find('.comment input'); var comment = $(this).closest('.complex-choice-group').find('.comment input');
comment.prop('disabled', !check.is(':checked')); comment.prop('disabled', !check.is(':checked'));
var commentarea = $(this).closest('.complex-choice-group').find('.comment textarea');
commentarea.prop('disabled', !check.is(':checked'));
}) })
}); });
...@@ -38,10 +41,6 @@ $(document).ready(function() { ...@@ -38,10 +41,6 @@ $(document).ready(function() {
var period = $(this).find('select[id$="period"]'); var period = $(this).find('select[id$="period"]');
var check = $(this).find('input[id$="otherDelay"]'); var check = $(this).find('input[id$="otherDelay"]');
var comment = $(this).find('textarea[id$="comment"]'); var comment = $(this).find('textarea[id$="comment"]');
console.log(number);
console.log(period);
console.log(check);
console.log(comment);
// Disable comment on unchecked line // Disable comment on unchecked line
number.prop('disabled', check.is(':checked')); number.prop('disabled', check.is(':checked'));
...@@ -280,9 +279,8 @@ window.modifyDatatable = function () { ...@@ -280,9 +279,8 @@ window.modifyDatatable = function () {
var el = $(this) var el = $(this)
var id = el.attr('id') var id = el.attr('id')
var cls = el.attr('class') var cls = el.attr('class')
el.wrap( "<nav></nav>" ); el.wrap( "<nav role='navigation' aria-label='Pagination'></nav>" );
}) })
} }
function traiterBoutons() { function traiterBoutons() {
...@@ -290,7 +288,6 @@ function traiterBoutons() { ...@@ -290,7 +288,6 @@ function traiterBoutons() {
const buttons = []; const buttons = [];
const selects = $('select.selectpicker') const selects = $('select.selectpicker')
selects.each(function() { selects.each(function() {
console.log($(this))
const btn = $(this).next('button') const btn = $(this).next('button')
if (btn.length) { if (btn.length) {
buttons.push(btn) buttons.push(btn)
......
(function ($) { (function ($) {
console.log('BLA')
$(document).ready(function() { $(document).ready(function() {
console.log('ready', $)
var $wrapper = $('.js-collection-wrapper'); var $wrapper = $('.js-collection-wrapper');
$wrapper.on('click', '.js-remove-item', function(e) { $wrapper.on('click', '.js-remove-item', function(e) {
...@@ -12,7 +10,6 @@ ...@@ -12,7 +10,6 @@
}); });
$wrapper.on('click', '.js-collection-add', function(e) { $wrapper.on('click', '.js-collection-add', function(e) {
console.log('adding')
e.preventDefault(); e.preventDefault();
// Get the data-prototype explained earlier // Get the data-prototype explained earlier
var prototype = $(this).parent().data('prototype'); var prototype = $(this).parent().data('prototype');
......
...@@ -186,7 +186,7 @@ $(document).ready(function() { ...@@ -186,7 +186,7 @@ $(document).ready(function() {
'contractor-sending-data-outside-eu', 'contractor-sending-data-outside-eu',
labelYesNo, labelYesNo,
contractorSendingDataOutsideEuData, contractorSendingDataOutsideEuData,
[colorRed, colorBlue] [colorGreen, colorRed]
); );
} }
......
...@@ -8,10 +8,11 @@ ...@@ -8,10 +8,11 @@
"homepage": "https://soluris.fr/" "homepage": "https://soluris.fr/"
} }
], ],
"require": { "require": {
"php": "^8.1", "php": "^8.1",
"ext-json": "*", "ext-json": "*",
"api-platform/core": "^2.6", "api-platform/core": "^2.7",
"beberlei/doctrineextensions": "^1.3", "beberlei/doctrineextensions": "^1.3",
"composer/package-versions-deprecated": "^1.8", "composer/package-versions-deprecated": "^1.8",
"craue/formflow-bundle": "^3.5", "craue/formflow-bundle": "^3.5",
...@@ -34,7 +35,7 @@ ...@@ -34,7 +35,7 @@
"nelmio/cors-bundle": "^2.1", "nelmio/cors-bundle": "^2.1",
"oro/doctrine-extensions": "^2.0", "oro/doctrine-extensions": "^2.0",
"phpdocumentor/reflection-docblock": "^5", "phpdocumentor/reflection-docblock": "^5",
"phpoffice/phpword": "^1.0", "phpoffice/phpword": "dev-master",
"phpspec/prophecy-phpunit": "^2.0", "phpspec/prophecy-phpunit": "^2.0",
"ramsey/uuid": "^4.6", "ramsey/uuid": "^4.6",
"ramsey/uuid-doctrine": "^1.8", "ramsey/uuid-doctrine": "^1.8",
...@@ -60,21 +61,23 @@ ...@@ -60,21 +61,23 @@
"twig/extra-bundle": "^3.4", "twig/extra-bundle": "^3.4",
"twig/string-extra": "^3.4", "twig/string-extra": "^3.4",
"twig/twig": "^v3.0", "twig/twig": "^v3.0",
"wmde/iterable-functions": "^0.2.0" "wmde/iterable-functions": "^0.2.0",
"ext-zip": "*"
}, },
"require-dev": { "require-dev": {
"roave/security-advisories": "dev-latest",
"dama/doctrine-test-bundle": "^6.7", "dama/doctrine-test-bundle": "^6.7",
"doctrine/data-fixtures": "^1.3", "doctrine/data-fixtures": "^1.3",
"friends-of-behat/symfony-extension": "^2.1", "friends-of-behat/symfony-extension": "^2.1",
"friendsofphp/php-cs-fixer": "^3.11", "friendsofphp/php-cs-fixer": "^3.11",
"hautelook/alice-bundle": "^2.0", "hautelook/alice-bundle": "^2.0",
"phpspec/prophecy": "1.16", "phpspec/prophecy": "1.18",
"phpstan/phpstan": "^1.8", "phpstan/phpstan": "^1.8",
"phpunit/phpunit": "^9.2", "phpunit/phpunit": "^9.2",
"roave/security-advisories": "dev-latest",
"symfony/browser-kit": "5.4.*", "symfony/browser-kit": "5.4.*",
"symfony/css-selector": "5.4.*", "symfony/css-selector": "5.4.*",
"symfony/debug-bundle": "5.4.*", "symfony/debug-bundle": "5.4.*",
"symfony/http-client": "5.4.*",
"symfony/maker-bundle": "^1.48", "symfony/maker-bundle": "^1.48",
"symfony/monolog-bundle": "^3.0", "symfony/monolog-bundle": "^3.0",
"symfony/phpunit-bridge": "^6.0", "symfony/phpunit-bridge": "^6.0",
...@@ -126,6 +129,10 @@ ...@@ -126,6 +129,10 @@
{ {
"type": "vcs", "type": "vcs",
"url": "https://github.com/theofidry/AliceBundle" "url": "https://github.com/theofidry/AliceBundle"
},
{
"type": "vcs",
"url": "https://github.com/jfoucher/PHPWord"
} }
] ]
} }
This diff is collapsed.
App\Domain\User\Model\Collectivity: App\Domain\User\Model\Collectivity:
attributes: denormalizationContext:
denormalization_context: groups: ['collectivity_write']
groups: ['collectivity_write'] normalizationContext:
normalization_context: groups: ['collectivity_read']
groups: ['collectivity_read']
collectionOperations: collectionOperations:
get: ~ get: ~
itemOperations: itemOperations:
get: get:
security: 'is_granted("ROLE_ADMIN") or object == user.getCollectivity()' security: 'is_granted("ROLE_ADMIN") or object == user.getCollectivity()'
\ No newline at end of file
App\Domain\Registry\Model\Request: App\Domain\Registry\Model\Request:
attributes: denormalizationContext:
groups: ['request_write']
normalizationContext:
groups: ['request_read']
denormalization_context: collectionOperations:
groups: ['request_write']
normalization_context:
groups: [ 'request_read' ]
collectionOperations: ~
itemOperations:
get: ~ get: ~
put: ~ itemOperations:
get:
security: 'is_granted("ROLE_ADMIN") or object.getCollectivity() == user.getCollectivity()'
App\Domain\Registry\Model\Treatment: App\Domain\Registry\Model\Treatment:
attributes: normalizationContext:
normalization_context: groups: ['treatment_read']
groups: ['treatment_read']
collectionOperations: collectionOperations:
get: ~ get: ~
itemOperations: itemOperations:
get: ~ get: ~
\ No newline at end of file
App\Domain\User\Model\User: App\Domain\User\Model\User:
attributes:
denormalization_context: denormalizationContext:
groups: ['user_write'] groups: ['user_write']
normalization_context: normalizationContext:
groups: ['user_read'] groups: ['user_read']
collectionOperations: collectionOperations:
get: get:
......
App\Domain\User\Model\Collectivity: App\Domain\User\Model\Collectivity:
attributes: attributes:
name: name:
groups: ['collectivity_read', 'request_read'] groups: ['collectivity_read', 'request_read', "collectivity_write"]
user: user:
groups: ['collectivity_read', 'request_read'] groups: ['collectivity_read', 'request_read', "collectivity_write"]
max_depth: 1 max_depth: 1
type:
groups: [ "collectivity_read", "collectivity_write", 'request_read' ]
siren:
groups: [ "collectivity_read", "collectivity_write", 'request_read' ]
active:
groups: [ "collectivity_read", "collectivity_write", 'request_read' ]
website:
groups: [ "collectivity_read", "collectivity_write" ]
informationsComplementaires:
groups: [ "collectivity_read", "collectivity_write" ]
finessGeo:
groups: [ "collectivity_read", "collectivity_write" ]
population:
groups: [ "collectivity_read", "collectivity_write" ]
nbrAgents:
groups: [ "collectivity_read", "collectivity_write" ]
nbrCnil:
groups: [ "collectivity_read", "collectivity_write" ]
address:
groups: [ "collectivity_read", "collectivity_write" ]
legalManager:
groups: [ "collectivity_read", "collectivity_write" ]
referent:
groups: [ "collectivity_read", "collectivity_write" ]
dpo:
groups: [ "collectivity_read", "collectivity_write" ]