Merge branch 'master' into features/activity-form

This commit is contained in:
Jean-Francois Monfort 2021-05-06 13:52:03 +02:00
commit 115a14fcba
226 changed files with 4452 additions and 757 deletions

1
.gitignore vendored
View File

@ -2,6 +2,7 @@
composer.phar composer.phar
composer.lock composer.lock
docs/build/
###> symfony/framework-bundle ### ###> symfony/framework-bundle ###
/.env.local /.env.local

View File

@ -30,6 +30,10 @@ variables:
POSTGRES_PASSWORD: postgres POSTGRES_PASSWORD: postgres
# fetch the chill-app using git submodules # fetch the chill-app using git submodules
GIT_SUBMODULE_STRATEGY: recursive GIT_SUBMODULE_STRATEGY: recursive
REDIS_HOST: redis
REDIS_PORT: 6379
REDIS_URL: redis://redis:6379
# Run our tests # Run our tests
test: test:

9
README.md Normal file
View File

@ -0,0 +1,9 @@
# Chill framework
Documentation of the Chill software.
The online documentation can be found at http://docs.chill.social
See the [`docs`][1] directory for more.
[1]: docs/README.md

View File

@ -42,6 +42,7 @@
"symfony/validator": "4.*", "symfony/validator": "4.*",
"sensio/framework-extra-bundle": "^5.5", "sensio/framework-extra-bundle": "^5.5",
"symfony/yaml": "4.*", "symfony/yaml": "4.*",
"symfony/webpack-encore-bundle": "^1.11",
"knplabs/knp-menu": "^3.1", "knplabs/knp-menu": "^3.1",
"knplabs/knp-menu-bundle": "^3.0", "knplabs/knp-menu-bundle": "^3.0",
"symfony/templating": "4.*", "symfony/templating": "4.*",
@ -56,7 +57,8 @@
"symfony/browser-kit": "^5.2", "symfony/browser-kit": "^5.2",
"symfony/css-selector": "^5.2", "symfony/css-selector": "^5.2",
"twig/markdown-extra": "^3.3", "twig/markdown-extra": "^3.3",
"erusev/parsedown": "^1.7" "erusev/parsedown": "^1.7",
"symfony/serializer": "^5.2"
}, },
"conflict": { "conflict": {
"symfony/symfony": "*" "symfony/symfony": "*"

View File

@ -10,10 +10,19 @@ Compilation into HTML
To compile this documentation : To compile this documentation :
1. Install [sphinx-doc](http://sphinx-doc.org) (eg. pip install sphinx & pip install sphinx_rtd_theme) 1. Install [sphinx-doc](http://sphinx-doc.org)
``` bash
$ virtualenv .venv # creation of the virtual env (only the first time)
$ source .venv/bin/activate # activate the virtual env
(.venv) $ pip install -r requirements.txt
```
2. Install submodules : $ git submodule update --init; 2. Install submodules : $ git submodule update --init;
3. run `make html` from the root directory 3. run `make html` from the root directory
4. The base file is located on build/html/index.html 4. The base file is located on build/html/index.html
``` bash
$ cd build/html
$ python -m http.server 8888 # will serve the site on the port 8888
```
Contribute Contribute
=========== ===========

View File

@ -18,11 +18,11 @@
<testsuite name="MainBundle"> <testsuite name="MainBundle">
<directory suffix="Test.php">src/Bundle/ChillMainBundle/Tests/</directory> <directory suffix="Test.php">src/Bundle/ChillMainBundle/Tests/</directory>
</testsuite> </testsuite>
<!--
<testsuite name="PersonBundle"> <testsuite name="PersonBundle">
<directory suffix="Test.php">src/Bundle/ChillPersonBundle/Tests/</directory> <directory suffix="Test.php">src/Bundle/ChillPersonBundle/Tests/</directory>
</testsuite> </testsuite>
-->
</testsuites> </testsuites>
<listeners> <listeners>

View File

@ -47,11 +47,11 @@ class ChillMainExtension extends Extension implements PrependExtensionInterface,
{ {
/** /**
* widget factory * widget factory
* *
* @var WidgetFactoryInterface[] * @var WidgetFactoryInterface[]
*/ */
protected $widgetFactories = array(); protected $widgetFactories = array();
/** /**
* @param WidgetFactoryInterface $factory * @param WidgetFactoryInterface $factory
*/ */
@ -59,7 +59,7 @@ class ChillMainExtension extends Extension implements PrependExtensionInterface,
{ {
$this->widgetFactories[] = $factory; $this->widgetFactories[] = $factory;
} }
/** /**
* @return WidgetFactoryInterface[] * @return WidgetFactoryInterface[]
*/ */
@ -67,7 +67,7 @@ class ChillMainExtension extends Extension implements PrependExtensionInterface,
{ {
return $this->widgetFactories; return $this->widgetFactories;
} }
/** /**
* {@inheritDoc} * {@inheritDoc}
* @param array $configs * @param array $configs
@ -79,31 +79,31 @@ class ChillMainExtension extends Extension implements PrependExtensionInterface,
// configuration for main bundle // configuration for main bundle
$configuration = $this->getConfiguration($configs, $container); $configuration = $this->getConfiguration($configs, $container);
$config = $this->processConfiguration($configuration, $configs); $config = $this->processConfiguration($configuration, $configs);
$container->setParameter('chill_main.installation_name', $container->setParameter('chill_main.installation_name',
$config['installation_name']); $config['installation_name']);
$container->setParameter('chill_main.available_languages', $container->setParameter('chill_main.available_languages',
$config['available_languages']); $config['available_languages']);
$container->setParameter('chill_main.routing.resources', $container->setParameter('chill_main.routing.resources',
$config['routing']['resources']); $config['routing']['resources']);
$container->setParameter('chill_main.pagination.item_per_page', $container->setParameter('chill_main.pagination.item_per_page',
$config['pagination']['item_per_page']); $config['pagination']['item_per_page']);
$container->setParameter('chill_main.notifications', $container->setParameter('chill_main.notifications',
$config['notifications']); $config['notifications']);
$container->setParameter('chill_main.redis', $container->setParameter('chill_main.redis',
$config['redis']); $config['redis']);
$container->setParameter('chill_main.phone_helper', $container->setParameter('chill_main.phone_helper',
$config['phone_helper'] ?? []); $config['phone_helper'] ?? []);
// add the key 'widget' without the key 'enable' // add the key 'widget' without the key 'enable'
$container->setParameter('chill_main.widgets', $container->setParameter('chill_main.widgets',
isset($config['widgets']['homepage']) ? isset($config['widgets']['homepage']) ?
array('homepage' => $config['widgets']['homepage']): array('homepage' => $config['widgets']['homepage']):
array() array()
); );
@ -131,10 +131,11 @@ class ChillMainExtension extends Extension implements PrependExtensionInterface,
$loader->load('services/templating.yaml'); $loader->load('services/templating.yaml');
$loader->load('services/timeline.yaml'); $loader->load('services/timeline.yaml');
$loader->load('services/search.yaml'); $loader->load('services/search.yaml');
$loader->load('services/serializer.yaml');
$this->configureCruds($container, $config['cruds'], $loader); $this->configureCruds($container, $config['cruds'], $loader);
} }
/** /**
* @param array $config * @param array $config
* @param ContainerBuilder $container * @param ContainerBuilder $container
@ -144,11 +145,11 @@ class ChillMainExtension extends Extension implements PrependExtensionInterface,
{ {
return new Configuration($this->widgetFactories, $container); return new Configuration($this->widgetFactories, $container);
} }
/** /**
* @param ContainerBuilder $container * @param ContainerBuilder $container
*/ */
public function prepend(ContainerBuilder $container) public function prepend(ContainerBuilder $container)
{ {
//add installation_name and date_format to globals //add installation_name and date_format to globals
$chillMainConfig = $container->getExtensionConfig($this->getAlias()); $chillMainConfig = $container->getExtensionConfig($this->getAlias());
@ -163,7 +164,7 @@ class ChillMainExtension extends Extension implements PrependExtensionInterface,
'form_themes' => array('@ChillMain/Form/fields.html.twig') 'form_themes' => array('@ChillMain/Form/fields.html.twig')
); );
$container->prependExtensionConfig('twig', $twigConfig); $container->prependExtensionConfig('twig', $twigConfig);
//add DQL function to ORM (default entity_manager) //add DQL function to ORM (default entity_manager)
$container->prependExtensionConfig('doctrine', array( $container->prependExtensionConfig('doctrine', array(
'orm' => array( 'orm' => array(
@ -182,7 +183,7 @@ class ChillMainExtension extends Extension implements PrependExtensionInterface,
) )
) )
)); ));
//add dbal types (default entity_manager) //add dbal types (default entity_manager)
$container->prependExtensionConfig('doctrine', array( $container->prependExtensionConfig('doctrine', array(
'dbal' => [ 'dbal' => [
@ -191,23 +192,23 @@ class ChillMainExtension extends Extension implements PrependExtensionInterface,
] ]
] ]
)); ));
//add current route to chill main //add current route to chill main
$container->prependExtensionConfig('chill_main', array( $container->prependExtensionConfig('chill_main', array(
'routing' => array( 'routing' => array(
'resources' => array( 'resources' => array(
'@ChillMainBundle/config/routes.yaml' '@ChillMainBundle/config/routes.yaml'
) )
) )
)); ));
//add a channel to log app events //add a channel to log app events
$container->prependExtensionConfig('monolog', array( $container->prependExtensionConfig('monolog', array(
'channels' => array('chill') 'channels' => array('chill')
)); ));
} }
/** /**
* @param ContainerBuilder $container * @param ContainerBuilder $container
* @param array $config the config under 'cruds' key * @param array $config the config under 'cruds' key
@ -218,31 +219,31 @@ class ChillMainExtension extends Extension implements PrependExtensionInterface,
if (count($config) === 0) { if (count($config) === 0) {
return; return;
} }
$loader->load('services/crud.yaml'); $loader->load('services/crud.yaml');
$container->setParameter('chill_main_crud_route_loader_config', $config); $container->setParameter('chill_main_crud_route_loader_config', $config);
$definition = new Definition(); $definition = new Definition();
$definition $definition
->setClass(\Chill\MainBundle\CRUD\Routing\CRUDRoutesLoader::class) ->setClass(\Chill\MainBundle\CRUD\Routing\CRUDRoutesLoader::class)
->addArgument('%chill_main_crud_route_loader_config%') ->addArgument('%chill_main_crud_route_loader_config%')
; ;
$container->setDefinition('chill_main_crud_route_loader', $definition); $container->setDefinition('chill_main_crud_route_loader', $definition);
$alreadyExistingNames = []; $alreadyExistingNames = [];
foreach ($config as $crudEntry) { foreach ($config as $crudEntry) {
$controller = $crudEntry['controller']; $controller = $crudEntry['controller'];
$controllerServiceName = 'cscrud_'.$crudEntry['name'].'_controller'; $controllerServiceName = 'cscrud_'.$crudEntry['name'].'_controller';
$name = $crudEntry['name']; $name = $crudEntry['name'];
// check for existing crud names // check for existing crud names
if (\in_array($name, $alreadyExistingNames)) { if (\in_array($name, $alreadyExistingNames)) {
throw new LogicException(sprintf("the name %s is defined twice in CRUD", $name)); throw new LogicException(sprintf("the name %s is defined twice in CRUD", $name));
} }
if (!$container->has($controllerServiceName)) { if (!$container->has($controllerServiceName)) {
$controllerDefinition = new Definition($controller); $controllerDefinition = new Definition($controller);
$controllerDefinition->addTag('controller.service_arguments'); $controllerDefinition->addTag('controller.service_arguments');
@ -250,7 +251,7 @@ class ChillMainExtension extends Extension implements PrependExtensionInterface,
$controllerDefinition->setClass($crudEntry['controller']); $controllerDefinition->setClass($crudEntry['controller']);
$container->setDefinition($controllerServiceName, $controllerDefinition); $container->setDefinition($controllerServiceName, $controllerDefinition);
} }
$container->setParameter('chill_main_crud_config_'.$name, $crudEntry); $container->setParameter('chill_main_crud_config_'.$name, $crudEntry);
$container->getDefinition($controllerServiceName) $container->getDefinition($controllerServiceName)
->addMethodCall('setCrudConfig', ['%chill_main_crud_config_'.$name.'%']); ->addMethodCall('setCrudConfig', ['%chill_main_crud_config_'.$name.'%']);

View File

@ -104,7 +104,7 @@ class Mailer
* @param \User $to * @param \User $to
* @param array $subject Subject of the message [ 0 => $message (required), 1 => $parameters (optional), 3 => $domain (optional) ] * @param array $subject Subject of the message [ 0 => $message (required), 1 => $parameters (optional), 3 => $domain (optional) ]
* @param array $bodies The bodies. An array where keys are the contentType and values the bodies * @param array $bodies The bodies. An array where keys are the contentType and values the bodies
* @param \callable $callback a callback to customize the message (add attachment, etc.) * @param callable $callback a callback to customize the message (add attachment, etc.)
*/ */
public function sendNotification( public function sendNotification(
$recipient, $recipient,

View File

@ -21,9 +21,7 @@ global.chill = chill;
/* /*
* load requirements in chill entrypoint * load requirements in chill entrypoint
*/ */
require('./scss/chillmain.scss');
require('./sass/scratch.scss');
require('./css/chillmain.css'); require('./css/chillmain.css');
require('./css/pikaday.css'); require('./css/pikaday.css');
@ -37,10 +35,11 @@ require('./modules/download-report/index.js');
require('./modules/select_interactive_loading/index.js'); require('./modules/select_interactive_loading/index.js');
require('./modules/export-list/export-list.scss'); require('./modules/export-list/export-list.scss');
require('./modules/entity/index.js'); require('./modules/entity/index.js');
//require('./modules/tabs/index.js');
/* /*
* load img * load img
*/ */
require('./img/favicon.ico'); require('./img/favicon.ico');
require('./img/logo-chill-sans-slogan_white.png'); require('./img/logo-chill-sans-slogan_white.png');
require('./img/logo-chill-outil-accompagnement_white.png'); require('./img/logo-chill-outil-accompagnement_white.png');

View File

@ -0,0 +1,4 @@
/*
* These custom styles will override bootstrap enabled stylesheets
*/

View File

@ -0,0 +1,47 @@
/*
* Enable / disable bootstrap assets
*/
@import "bootstrap/scss/functions";
/* replace variables */
// @import "bootstrap/scss/variables";
@import "custom/_variables";
@import "bootstrap/scss/mixins";
// @import "bootstrap/scss/root";
// @import "bootstrap/scss/reboot";
// @import "bootstrap/scss/type";
// @import "bootstrap/scss/images";
// @import "bootstrap/scss/code";
// @import "bootstrap/scss/grid";
// @import "bootstrap/scss/tables";
// @import "bootstrap/scss/forms";
// @import "bootstrap/scss/buttons";
// @import "bootstrap/scss/transitions";
// @import "bootstrap/scss/dropdown";
// @import "bootstrap/scss/button-group";
// @import "bootstrap/scss/input-group";
// @import "bootstrap/scss/custom-forms";
// @import "bootstrap/scss/nav";
// @import "bootstrap/scss/navbar";
// @import "bootstrap/scss/card";
// @import "bootstrap/scss/breadcrumb";
// @import "bootstrap/scss/pagination";
// @import "bootstrap/scss/badge";
// @import "bootstrap/scss/jumbotron";
// @import "bootstrap/scss/alert";
// @import "bootstrap/scss/progress";
// @import "bootstrap/scss/media";
// @import "bootstrap/scss/list-group";
// @import "bootstrap/scss/close";
// @import "bootstrap/scss/toasts";
@import "bootstrap/scss/modal";
// @import "bootstrap/scss/tooltip";
// @import "bootstrap/scss/popover";
// @import "bootstrap/scss/carousel";
// @import "bootstrap/scss/spinners";
// @import "bootstrap/scss/utilities";
// @import "bootstrap/scss/print";
@import "custom";

View File

@ -1,42 +0,0 @@
/*
* when bootstrap.css comes after chill.css
* we have to disable conflict classes
*/
@import "bootstrap/scss/functions";
@import "bootstrap/scss/variables";
@import "bootstrap/scss/mixins";
@import "bootstrap/scss/root";
//@import "bootstrap/scss/reboot"; // h1, h2, h3, ...
//@import "bootstrap/scss/type"; // h1, h2, h3, ...
@import "bootstrap/scss/images";
@import "bootstrap/scss/code";
//@import "bootstrap/scss/grid"; // container
@import "bootstrap/scss/tables";
@import "bootstrap/scss/forms";
@import "bootstrap/scss/buttons";
@import "bootstrap/scss/transitions";
@import "bootstrap/scss/dropdown";
@import "bootstrap/scss/button-group";
@import "bootstrap/scss/input-group";
@import "bootstrap/scss/custom-forms";
@import "bootstrap/scss/nav";
@import "bootstrap/scss/navbar";
@import "bootstrap/scss/card";
@import "bootstrap/scss/breadcrumb";
@import "bootstrap/scss/pagination";
@import "bootstrap/scss/badge";
@import "bootstrap/scss/jumbotron";
@import "bootstrap/scss/alert";
@import "bootstrap/scss/progress";
@import "bootstrap/scss/media";
@import "bootstrap/scss/list-group";
@import "bootstrap/scss/close";
@import "bootstrap/scss/toasts";
@import "bootstrap/scss/modal";
@import "bootstrap/scss/tooltip";
@import "bootstrap/scss/popover";
@import "bootstrap/scss/carousel";
@import "bootstrap/scss/spinners";
@import "bootstrap/scss/utilities";
@import "bootstrap/scss/print";

View File

@ -1,9 +1,9 @@
// Compile all bootstrap assets from nodes-modules // Compile all bootstrap assets from nodes-modules
//require('bootstrap/scss/bootstrap.scss') //require('bootstrap/scss/bootstrap.scss')
// Compile custom styles to adapt bootstrap in chill context // Or compile bootstrap only enabled assets
require('./custom.scss') require('./bootstrap.scss');
// You can specify which plugins you need // You can specify which plugins you need
//import { Tooltip, Toast, Popover } from 'bootstrap'; //import { Tooltip, Toast, Popover } from 'bootstrap';
//import Alert from 'bootstrap/js/dist/alert'; import Modal from 'bootstrap/js/dist/modal';

View File

@ -1,3 +1,9 @@
/*
* NOTE 2021.04
* scss/chill.scss is the main sass file for the new chill.2
* scratch will be replaced by bootstrap, please avoid to edit in modules/scratch/_custom.scss
*/
// YOUR CUSTOM SCSS // YOUR CUSTOM SCSS
@import 'custom/config/colors'; @import 'custom/config/colors';
@import 'custom/config/variables'; @import 'custom/config/variables';
@ -156,7 +162,6 @@ dl.chill_view_data {
} }
blockquote.chill-user-quote, blockquote.chill-user-quote,
div.chill-user-quote { div.chill-user-quote {
border-left: 10px solid $chill-yellow; border-left: 10px solid $chill-yellow;
@ -164,12 +169,12 @@ div.chill-user-quote {
padding: 0.5em 10px; padding: 0.5em 10px;
quotes: "\201C""\201D""\2018""\2019"; quotes: "\201C""\201D""\2018""\2019";
background-color: $chill-llight-gray; background-color: $chill-llight-gray;
blockquote { blockquote {
margin: 1.5em 10px; margin: 1.5em 10px;
padding: 0.5em 10px; padding: 0.5em 10px;
} }
blockquote:before { blockquote:before {
color: #ccc; color: #ccc;
content: open-quote; content: open-quote;
@ -182,5 +187,4 @@ div.chill-user-quote {
.chill-no-data-statement { .chill-no-data-statement {
font-style: italic; font-style: italic;
} }

View File

@ -1,42 +1,42 @@
@charset "UTF-8"; @charset "UTF-8";
/// Outputs the spec and prefixed versions of the `::selection` pseudo-element. /// Outputs the spec and prefixed versions of the `::selection` pseudo-element.
/// ///
/// @param {Bool} $current-selector [false] /// @param {Bool} $current-selector [false]
/// If set to `true`, it takes the current element into consideration. /// If set to `true`, it takes the current element into consideration.
/// ///
/// @example scss - Usage /// @example scss - Usage
/// .element { /// .element {
/// @include selection(true) { /// @include selection(true) {
/// background-color: #ffbb52; /// background-color: #ffbb52;
/// } /// }
/// } /// }
/// ///
/// @example css - CSS Output /// @example css - CSS Output
/// .element::-moz-selection { /// .element::-moz-selection {
/// background-color: #ffbb52; /// background-color: #ffbb52;
/// } /// }
/// ///
/// .element::selection { /// .element::selection {
/// background-color: #ffbb52; /// background-color: #ffbb52;
/// } /// }
@mixin selection($current-selector: false) { @mixin selection($current-selector: false) {
@if $current-selector { @if $current-selector {
&::-moz-selection { &::-moz-selection {
@content; @content;
} }
&::selection { &::selection {
@content; @content;
} }
} @else { } @else {
::-moz-selection { ::-moz-selection {
@content; @content;
} }
::selection { ::selection {
@content; @content;
} }
} }
} }

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