mirror of
				https://gitlab.com/Chill-Projet/chill-bundles.git
				synced 2025-10-31 01:08:26 +00:00 
			
		
		
		
	Compare commits
	
		
			7 Commits
		
	
	
		
			3-remove-p
			...
			bootstrap-
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 695aa45b90 | |||
| 58b04783f2 | |||
| 88edb905a7 | |||
| b884eee626 | |||
| 167158db72 | |||
| 3c6b21be3b | |||
| e7772f0967 | 
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -2,7 +2,6 @@ | ||||
| composer.phar | ||||
| composer.lock | ||||
|  | ||||
| docs/build/ | ||||
|  | ||||
| ###> symfony/framework-bundle ### | ||||
| /.env.local | ||||
|   | ||||
| @@ -30,10 +30,6 @@ variables: | ||||
|   POSTGRES_PASSWORD: postgres | ||||
|   # fetch the chill-app using git submodules | ||||
|   GIT_SUBMODULE_STRATEGY: recursive | ||||
|   REDIS_HOST: redis | ||||
|   REDIS_PORT: 6379 | ||||
|   REDIS_URL: redis://redis:6379 | ||||
|  | ||||
|  | ||||
| # Run our tests | ||||
| test: | ||||
|   | ||||
| @@ -1,9 +0,0 @@ | ||||
| # 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 | ||||
| @@ -42,7 +42,6 @@ | ||||
|         "symfony/validator": "4.*", | ||||
|         "sensio/framework-extra-bundle": "^5.5", | ||||
|         "symfony/yaml": "4.*", | ||||
|         "symfony/webpack-encore-bundle": "^1.11", | ||||
|         "knplabs/knp-menu": "^3.1", | ||||
|         "knplabs/knp-menu-bundle": "^3.0", | ||||
|         "symfony/templating": "4.*", | ||||
| @@ -57,8 +56,7 @@ | ||||
|         "symfony/browser-kit": "^5.2", | ||||
|         "symfony/css-selector": "^5.2", | ||||
|         "twig/markdown-extra": "^3.3", | ||||
|         "erusev/parsedown": "^1.7", | ||||
|         "symfony/serializer": "^5.2" | ||||
|         "erusev/parsedown": "^1.7" | ||||
|     }, | ||||
|     "conflict": { | ||||
|         "symfony/symfony": "*" | ||||
|   | ||||
| @@ -10,19 +10,10 @@ Compilation into HTML | ||||
|  | ||||
| To compile this documentation : | ||||
|  | ||||
| 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 | ||||
|     ``` | ||||
| 1. Install [sphinx-doc](http://sphinx-doc.org) (eg. pip install sphinx &  pip install sphinx_rtd_theme) | ||||
| 2. Install submodules : $ git submodule update --init; | ||||
| 3. run `make html` from the root directory | ||||
| 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 | ||||
| =========== | ||||
|   | ||||
| @@ -29,7 +29,7 @@ As Chill rely on the `symfony <http://symfony.com>`_ framework, reading the fram | ||||
|     Timelines <timelines.rst> | ||||
|     Exports <exports.rst> | ||||
|     Embeddable comments <embeddable-comments.rst> | ||||
|     Run tests <run-tests.rst> | ||||
|     Testing <make-test-working.rst> | ||||
|     Useful snippets <useful-snippets.rst> | ||||
|     manual/index.rst | ||||
|     Assets <assets.rst> | ||||
|   | ||||
							
								
								
									
										231
									
								
								docs/source/development/make-test-working.rst
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										231
									
								
								docs/source/development/make-test-working.rst
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,231 @@ | ||||
| .. Copyright (C)  2014 Champs Libres Cooperative SCRLFS | ||||
|    Permission is granted to copy, distribute and/or modify this document | ||||
|    under the terms of the GNU Free Documentation License, Version 1.3 | ||||
|    or any later version published by the Free Software Foundation; | ||||
|    with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. | ||||
|    A copy of the license is included in the section entitled "GNU | ||||
|    Free Documentation License". | ||||
|  | ||||
| Make tests working | ||||
| ****************** | ||||
|  | ||||
| Unit and functional tests are important to ensure that bundle may be deployed securely. | ||||
|  | ||||
| In reason of the Chill architecture, test should be runnable from the bundle's directory and works correctly: this will allow continuous integration tools to run tests automatically.  | ||||
|  | ||||
| .. note:: | ||||
|  | ||||
|     Integration tools (i.e. `travis-ci <https://travis-ci.org>`_) works like this :  | ||||
|  | ||||
|     * they clone the bundle repository in a virtual machine, using git | ||||
|     * they optionnaly run `composer` to download and install depedencies | ||||
|     * they optionnaly run other command to prepare a database, insert fixtures, ... | ||||
|     * they run test | ||||
|  | ||||
| On the developer's machine test should be runnable with two or three commands **runned from the bundle directory** :  | ||||
|  | ||||
| .. code-block:: bash | ||||
|  | ||||
|    $ composer install --dev | ||||
|    $ // command to insert fixtures, ... | ||||
|    $ phpunit | ||||
|  | ||||
| This chapter has been inspired by `this useful blog post <http://blog.kevingomez.fr/2013/01/09/functional-testing-standalone-symfony2-bundles/>`_. | ||||
|  | ||||
| Bootstrap phpunit for a standalone bundle | ||||
| ========================================== | ||||
|  | ||||
| Unit tests should run after achieving this step. | ||||
|  | ||||
|  | ||||
| phpunit.xml | ||||
| ----------- | ||||
|  | ||||
| A `phpunit.xml.dist` file should be present at the bundle root. | ||||
|  | ||||
| .. code-block:: xml | ||||
|  | ||||
|    <?xml version="1.0" encoding="UTF-8"?> | ||||
|  | ||||
|    <phpunit bootstrap="./Tests/bootstrap.php" colors="true"> | ||||
|         <!-- the file "./Tests/boostrap.php" will be created on the next step --> | ||||
|        <testsuites> | ||||
|            <testsuite name="ChillMain test suite"> | ||||
|                <directory suffix="Test.php">./Tests</directory> | ||||
|            </testsuite> | ||||
|        </testsuites> | ||||
|        <filter> | ||||
|            <whitelist> | ||||
|                <directory>./</directory> | ||||
|                <exclude> | ||||
|                    <directory>./Resources</directory> | ||||
|                    <directory>./Tests</directory> | ||||
|                    <directory>./vendor</directory> | ||||
|                </exclude> | ||||
|           </whitelist> | ||||
|       </filter> | ||||
|    </phpunit> | ||||
|  | ||||
|  | ||||
| bootstrap.php | ||||
| -------------- | ||||
|  | ||||
| A file `boostrap.php`, located in the `Tests` directory, will allow phpunit to resolve class autoloading : | ||||
|  | ||||
| .. code-block:: php | ||||
|  | ||||
|    <?php | ||||
|  | ||||
|    if (!is_file($autoloadFile = __DIR__.'/../vendor/autoload.php')) { | ||||
|        throw new \LogicException('Could not find autoload.php in vendor/. Did you run "composer install --dev"?'); | ||||
|    } | ||||
|  | ||||
|    require $autoloadFile; | ||||
|  | ||||
|  | ||||
| composer.json | ||||
| ------------- | ||||
|  | ||||
| The `composer.json` file **located at the bundle's root** should contains all depencies needed to run test (and to execute bundle functions). | ||||
|  | ||||
| Ensure that all dependencies are included in the `require` and `require-dev` sections. | ||||
|  | ||||
|  | ||||
| Functional tests | ||||
| ================ | ||||
|  | ||||
| If you want to access services, database, and run functional tests, you will have to bootstrap a symfony app, with the minimal configuration. Three files are required :  | ||||
|  | ||||
| * a `config_test.yml` file (eventually with a `config.yml`); | ||||
| * a `routing.yml` file | ||||
| * an `AppKernel.php` file | ||||
|  | ||||
| Adapt phpunit.xml | ||||
| ----------------- | ||||
|  | ||||
| You should add reference to the new application within `phpunit.xml.dist`. The directive `<php>` should be added like this, if your `AppKernel.php` file is located in `Tests/Fixtures/App` directory: | ||||
|  | ||||
| .. code-block:: xml | ||||
|  | ||||
|     <?xml version="1.0" encoding="UTF-8"?> | ||||
|  | ||||
|     <phpunit bootstrap="./Tests/bootstrap.php" colors="true"> | ||||
|         <testsuites> | ||||
|             <testsuite name="ChillMain test suite"> | ||||
|                 <directory suffix="Test.php">./Tests</directory> | ||||
|             </testsuite> | ||||
|         </testsuites> | ||||
|         <filter> | ||||
|             <whitelist> | ||||
|                 <directory>./</directory> | ||||
|                 <exclude> | ||||
|                     <directory>./Resources</directory> | ||||
|                     <directory>./Tests</directory> | ||||
|                     <directory>./vendor</directory> | ||||
|                 </exclude> | ||||
|             </whitelist> | ||||
|         </filter> | ||||
|         <!-- the lines we added -->  | ||||
|        <php> | ||||
|             <server name="KERNEL_DIR" value="./Tests/Fixtures/App/" /> | ||||
|         </php> | ||||
|     </phpunit> | ||||
|  | ||||
| AppKernel.php | ||||
| ------------- | ||||
|  | ||||
| This file boostrap the app. It contains three functions. This is the file used in the ChillMain bundle : | ||||
|  | ||||
| .. code-block:: php | ||||
|                                                                                                                                                                                                                   | ||||
|     <?php | ||||
|  | ||||
|     use Symfony\Component\HttpKernel\Kernel; | ||||
|     use Symfony\Component\Config\Loader\LoaderInterface; | ||||
|  | ||||
|     class AppKernel extends Kernel | ||||
|     { | ||||
|         public function registerBundles() | ||||
|         {    | ||||
|             return array( | ||||
|                 new Symfony\Bundle\FrameworkBundle\FrameworkBundle(), | ||||
|                 new Chill\MainBundle\ChillMainBundle(), | ||||
|                 new Symfony\Bundle\SecurityBundle\SecurityBundle(), | ||||
|                 new Symfony\Bundle\TwigBundle\TwigBundle(), | ||||
|                 new \Symfony\Bundle\AsseticBundle\AsseticBundle(), | ||||
|                 #add here all the required bundle (some bundle are not required) | ||||
|             ); | ||||
|         }    | ||||
|  | ||||
|         public function registerContainerConfiguration(LoaderInterface $loader) | ||||
|         {    | ||||
|             $loader->load(__DIR__.'/config/config_'.$this->getEnvironment().'.yml'); | ||||
|         }    | ||||
|  | ||||
|         /**  | ||||
|          * @return string | ||||
|          */ | ||||
|         public function getCacheDir() | ||||
|         {    | ||||
|             return sys_get_temp_dir().'/ChillMainBundle/cache'; | ||||
|         }    | ||||
|  | ||||
|         /**  | ||||
|          * @return string | ||||
|          */ | ||||
|         public function getLogDir() | ||||
|         {    | ||||
|             return sys_get_temp_dir().'/ChillMainBundle/logs'; | ||||
|         }    | ||||
|     } | ||||
|  | ||||
| config_test.yml | ||||
| --------------- | ||||
|  | ||||
| There are only few parameters required for the config file. This is a basic version for ChillMain : | ||||
|  | ||||
| .. code-block:: yaml | ||||
|  | ||||
|     # config/config_test.yml | ||||
|     imports: | ||||
|         - { resource: config.yml } #here we import a config.yml file, this is not required | ||||
|  | ||||
|     framework: | ||||
|         test: ~ | ||||
|         session: | ||||
|             storage_id: session.storage.filesystem | ||||
|  | ||||
| .. code-block:: yaml | ||||
|  | ||||
|    # config/config.yml | ||||
|    framework:  | ||||
|     secret:          Not very secret | ||||
|     router:          { resource: "%kernel.root_dir%/config/routing.yml" } | ||||
|     form:            true | ||||
|     csrf_protection: true | ||||
|     session:         ~ | ||||
|     default_locale:  fr   | ||||
|     translator:      { fallback: fr } | ||||
|     profiler:        { only_exceptions: false } | ||||
|     templating: #required for assetic. Remove if not needed | ||||
|         engines: ['twig'] | ||||
|  | ||||
| .. note::  | ||||
|  | ||||
|     You must adapt config.yml file according to your required bundle. Some options will be missing, other may be removed... | ||||
|  | ||||
| .. note:: | ||||
|  | ||||
|     If you would like to tests different environments, with differents configuration, you could create differents config_XXX.yml files. | ||||
|  | ||||
| routing.yml | ||||
| ------------ | ||||
|  | ||||
| You should add there all routing information needed for your bundle.  | ||||
|  | ||||
| .. code-block: yaml | ||||
|  | ||||
|     chill_main_bundle: | ||||
|       resource: "@CLChillMainBundle/Resources/config/routing.yml" | ||||
|  | ||||
| That's it. Tests should pass. | ||||
| @@ -1,68 +0,0 @@ | ||||
| .. Copyright (C)  2014 Champs Libres Cooperative SCRLFS | ||||
|    Permission is granted to copy, distribute and/or modify this document | ||||
|    under the terms of the GNU Free Documentation License, Version 1.3 | ||||
|    or any later version published by the Free Software Foundation; | ||||
|    with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. | ||||
|    A copy of the license is included in the section entitled "GNU | ||||
|    Free Documentation License". | ||||
|  | ||||
| Run tests | ||||
| ********* | ||||
|  | ||||
| In reason of the Chill architecture, test should be runnable from the bundle's directory and works correctly: this will allow continuous integration tools to run tests automatically.  | ||||
|  | ||||
| From chill app | ||||
| ============== | ||||
|  | ||||
| This is the most convenient method for developer: run test for chill bundle from the main app. | ||||
|  | ||||
| .. code-block:: bash | ||||
|  | ||||
|    # run into a container | ||||
|    docker-compose exec --user $(id -u) php bash | ||||
|    # execute all tests suites | ||||
|    bin/phpunit | ||||
|    # .. or execute a single test | ||||
|    bin/phpunit vendor/chill-project/chill-bundles/src/Bundle/ChillMainBundle/Tests/path/to/FileTest.php | ||||
|  | ||||
| You can also run tests in a single command: | ||||
|  | ||||
| .. code-block:: bash | ||||
|  | ||||
|    docker-compose exec --user $(id -u) php bin/phpunit | ||||
|  | ||||
|  | ||||
| Tests from a bundle (chill-bundles) | ||||
| ----------------------------------- | ||||
|  | ||||
| Those tests needs the whole symfony app to execute Application Tests (which test html page). | ||||
|  | ||||
| For ease, the app is cloned using a :code:`git submodule`, which clone the main app into :code:`tests/app`, and tests are bootstrapped to this app. The dependencies are also installed into `tests/app/vendor` to ensure compliance with relative path from this symfony application. | ||||
|  | ||||
| You may boostrap the tests fro the chill bundle this way: | ||||
|  | ||||
| .. code-block:: bash | ||||
|  | ||||
|    # ensure to be located into the environement (provided by docker suits well) | ||||
|    docker-compose exec --user $(id -u) php bash | ||||
|    # go to chill subdirectory | ||||
|    cd vendor/chill-project/chill-bundles | ||||
|    # install submodule | ||||
|    git submodule init | ||||
|    git submodule update | ||||
|    # install composer and dependencies | ||||
|    curl -sS https://getcomposer.org/installer | php | ||||
|    # run tests | ||||
|    bin/phpunit | ||||
|  | ||||
| .. note:: | ||||
|  | ||||
|    If you are on a fresh install, you will need to migrate database schema.  | ||||
|  | ||||
|    The path to console tool must be adapted to the app. To load migration and add fixtures, one can execute the following commands: | ||||
|  | ||||
|    .. code-block:: bash | ||||
|        | ||||
|       tests/app/bin/console doctrine:migrations:migrate | ||||
|       tests/app/bin/console doctrine:fixtures:load | ||||
|  | ||||
| @@ -18,11 +18,11 @@ | ||||
|        <testsuite name="MainBundle"> | ||||
|          <directory suffix="Test.php">src/Bundle/ChillMainBundle/Tests/</directory> | ||||
|        </testsuite> | ||||
|        <!-- | ||||
|  | ||||
|        <testsuite name="PersonBundle"> | ||||
|          <directory suffix="Test.php">src/Bundle/ChillPersonBundle/Tests/</directory> | ||||
|         </testsuite> | ||||
|       --> | ||||
|  | ||||
|       </testsuites> | ||||
|  | ||||
|     <listeners> | ||||
|   | ||||
| @@ -47,11 +47,11 @@ class ChillMainExtension extends Extension implements PrependExtensionInterface, | ||||
| { | ||||
|     /** | ||||
|      * widget factory | ||||
|      * | ||||
|      *  | ||||
|      * @var WidgetFactoryInterface[] | ||||
|      */ | ||||
|     protected $widgetFactories = array(); | ||||
|  | ||||
|      | ||||
|     /** | ||||
|      * @param WidgetFactoryInterface $factory | ||||
|      */ | ||||
| @@ -59,7 +59,7 @@ class ChillMainExtension extends Extension implements PrependExtensionInterface, | ||||
|     { | ||||
|         $this->widgetFactories[] = $factory; | ||||
|     } | ||||
|  | ||||
|      | ||||
|     /** | ||||
|      * @return WidgetFactoryInterface[] | ||||
|      */ | ||||
| @@ -67,7 +67,7 @@ class ChillMainExtension extends Extension implements PrependExtensionInterface, | ||||
|     { | ||||
|         return $this->widgetFactories; | ||||
|     } | ||||
|  | ||||
|      | ||||
|     /** | ||||
|      * {@inheritDoc} | ||||
|      * @param array $configs | ||||
| @@ -79,31 +79,31 @@ class ChillMainExtension extends Extension implements PrependExtensionInterface, | ||||
|         // configuration for main bundle | ||||
|         $configuration = $this->getConfiguration($configs, $container); | ||||
|         $config = $this->processConfiguration($configuration, $configs); | ||||
|  | ||||
|          | ||||
|         $container->setParameter('chill_main.installation_name', | ||||
|             $config['installation_name']); | ||||
|  | ||||
|         $container->setParameter('chill_main.available_languages', | ||||
|             $config['available_languages']); | ||||
|  | ||||
|         $container->setParameter('chill_main.routing.resources', | ||||
|             $config['routing']['resources']); | ||||
|  | ||||
|          | ||||
|         $container->setParameter('chill_main.routing.resources',  | ||||
|             $config['routing']['resources']);  | ||||
|          | ||||
|         $container->setParameter('chill_main.pagination.item_per_page', | ||||
|             $config['pagination']['item_per_page']); | ||||
|  | ||||
|         $container->setParameter('chill_main.notifications', | ||||
|          | ||||
|         $container->setParameter('chill_main.notifications',  | ||||
|             $config['notifications']); | ||||
|  | ||||
|         $container->setParameter('chill_main.redis', | ||||
|          | ||||
|         $container->setParameter('chill_main.redis',  | ||||
|             $config['redis']); | ||||
|  | ||||
|         $container->setParameter('chill_main.phone_helper', | ||||
|          | ||||
|         $container->setParameter('chill_main.phone_helper',  | ||||
|             $config['phone_helper'] ?? []); | ||||
|  | ||||
|          | ||||
|         // add the key 'widget' without the key 'enable' | ||||
|         $container->setParameter('chill_main.widgets', | ||||
|             isset($config['widgets']['homepage']) ? | ||||
|         $container->setParameter('chill_main.widgets',  | ||||
|             isset($config['widgets']['homepage']) ?  | ||||
|                 array('homepage' => $config['widgets']['homepage']): | ||||
|                 array() | ||||
|                 ); | ||||
| @@ -131,11 +131,10 @@ class ChillMainExtension extends Extension implements PrependExtensionInterface, | ||||
|         $loader->load('services/templating.yaml'); | ||||
|         $loader->load('services/timeline.yaml'); | ||||
|         $loader->load('services/search.yaml'); | ||||
|         $loader->load('services/serializer.yaml'); | ||||
|  | ||||
|          | ||||
|         $this->configureCruds($container, $config['cruds'], $loader); | ||||
|     } | ||||
|  | ||||
|      | ||||
|     /** | ||||
|      * @param array $config | ||||
|      * @param ContainerBuilder $container | ||||
| @@ -145,11 +144,11 @@ class ChillMainExtension extends Extension implements PrependExtensionInterface, | ||||
|     { | ||||
|         return new Configuration($this->widgetFactories, $container); | ||||
|     } | ||||
|  | ||||
|      | ||||
|     /** | ||||
|      * @param ContainerBuilder $container | ||||
|      */ | ||||
|     public function prepend(ContainerBuilder $container) | ||||
|     public function prepend(ContainerBuilder $container)  | ||||
|     { | ||||
|         //add installation_name and date_format to globals | ||||
|         $chillMainConfig = $container->getExtensionConfig($this->getAlias()); | ||||
| @@ -164,7 +163,7 @@ class ChillMainExtension extends Extension implements PrependExtensionInterface, | ||||
|             'form_themes' => array('@ChillMain/Form/fields.html.twig') | ||||
|         ); | ||||
|         $container->prependExtensionConfig('twig', $twigConfig); | ||||
|  | ||||
|          | ||||
|         //add DQL function to ORM (default entity_manager) | ||||
|         $container->prependExtensionConfig('doctrine', array( | ||||
|            'orm' => array( | ||||
| @@ -183,7 +182,7 @@ class ChillMainExtension extends Extension implements PrependExtensionInterface, | ||||
|               ) | ||||
|            ) | ||||
|         )); | ||||
|  | ||||
|          | ||||
|         //add dbal types (default entity_manager) | ||||
|         $container->prependExtensionConfig('doctrine', array( | ||||
|            'dbal' => [ | ||||
| @@ -192,23 +191,23 @@ class ChillMainExtension extends Extension implements PrependExtensionInterface, | ||||
|                ] | ||||
|            ] | ||||
|         )); | ||||
|  | ||||
|          | ||||
|         //add current route to chill main | ||||
|         $container->prependExtensionConfig('chill_main', array( | ||||
|            'routing' => array( | ||||
|               'resources' => array( | ||||
|                  '@ChillMainBundle/config/routes.yaml' | ||||
|               ) | ||||
|  | ||||
|                | ||||
|            ) | ||||
|         )); | ||||
|  | ||||
|          | ||||
|         //add a channel to log app events | ||||
|         $container->prependExtensionConfig('monolog', array( | ||||
|             'channels' => array('chill') | ||||
|         )); | ||||
|     } | ||||
|  | ||||
|      | ||||
|     /** | ||||
|      * @param ContainerBuilder $container | ||||
|      * @param array $config the config under 'cruds' key | ||||
| @@ -219,31 +218,31 @@ class ChillMainExtension extends Extension implements PrependExtensionInterface, | ||||
|         if (count($config) === 0) { | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|          | ||||
|         $loader->load('services/crud.yaml'); | ||||
|  | ||||
|          | ||||
|         $container->setParameter('chill_main_crud_route_loader_config', $config); | ||||
|  | ||||
|          | ||||
|         $definition = new Definition(); | ||||
|         $definition | ||||
|             ->setClass(\Chill\MainBundle\CRUD\Routing\CRUDRoutesLoader::class) | ||||
|             ->addArgument('%chill_main_crud_route_loader_config%') | ||||
|             ; | ||||
|  | ||||
|          | ||||
|         $container->setDefinition('chill_main_crud_route_loader', $definition); | ||||
|  | ||||
|          | ||||
|         $alreadyExistingNames = []; | ||||
|  | ||||
|          | ||||
|         foreach ($config as $crudEntry) { | ||||
|             $controller = $crudEntry['controller']; | ||||
|             $controllerServiceName = 'cscrud_'.$crudEntry['name'].'_controller'; | ||||
|             $name = $crudEntry['name']; | ||||
|  | ||||
|              | ||||
|             // check for existing crud names | ||||
|             if (\in_array($name, $alreadyExistingNames)) { | ||||
|                 throw new LogicException(sprintf("the name %s is defined twice in CRUD", $name)); | ||||
|             } | ||||
|  | ||||
|              | ||||
|             if (!$container->has($controllerServiceName)) { | ||||
|                 $controllerDefinition = new Definition($controller); | ||||
|                 $controllerDefinition->addTag('controller.service_arguments'); | ||||
| @@ -251,7 +250,7 @@ class ChillMainExtension extends Extension implements PrependExtensionInterface, | ||||
|                 $controllerDefinition->setClass($crudEntry['controller']); | ||||
|                 $container->setDefinition($controllerServiceName, $controllerDefinition); | ||||
|             } | ||||
|  | ||||
|              | ||||
|             $container->setParameter('chill_main_crud_config_'.$name, $crudEntry); | ||||
|             $container->getDefinition($controllerServiceName) | ||||
|                 ->addMethodCall('setCrudConfig', ['%chill_main_crud_config_'.$name.'%']); | ||||
|   | ||||
| @@ -104,7 +104,7 @@ class Mailer | ||||
|      * @param \User $to | ||||
|      * @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 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( | ||||
|         $recipient, | ||||
|   | ||||
| @@ -21,7 +21,9 @@ global.chill = chill; | ||||
| /* | ||||
|  * load requirements in chill entrypoint | ||||
|  */ | ||||
| require('./scss/chillmain.scss'); | ||||
|  | ||||
| require('./sass/scratch.scss'); | ||||
|  | ||||
| require('./css/chillmain.css'); | ||||
| require('./css/pikaday.css'); | ||||
|  | ||||
| @@ -35,11 +37,10 @@ require('./modules/download-report/index.js'); | ||||
| require('./modules/select_interactive_loading/index.js'); | ||||
| require('./modules/export-list/export-list.scss'); | ||||
| require('./modules/entity/index.js'); | ||||
| //require('./modules/tabs/index.js'); | ||||
|  | ||||
| /* | ||||
|  * load img | ||||
|  */ | ||||
| require('./img/favicon.ico'); | ||||
| require('./img/logo-chill-sans-slogan_white.png'); | ||||
| require('./img/logo-chill-outil-accompagnement_white.png'); | ||||
| require('./img/logo-chill-outil-accompagnement_white.png'); | ||||
| @@ -1,4 +0,0 @@ | ||||
| /* | ||||
|  *  These custom styles will override bootstrap enabled stylesheets | ||||
|  */ | ||||
|  | ||||
| @@ -1,47 +0,0 @@ | ||||
| /* | ||||
|  *  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"; | ||||
| @@ -0,0 +1,42 @@ | ||||
| /* | ||||
| *   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"; | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -1,9 +1,9 @@ | ||||
| // Compile all bootstrap assets from nodes-modules | ||||
| //require('bootstrap/scss/bootstrap.scss') | ||||
|  | ||||
| // Or compile bootstrap only enabled assets | ||||
| require('./bootstrap.scss'); | ||||
| // Compile custom styles to adapt bootstrap in chill context | ||||
| require('./custom.scss') | ||||
|  | ||||
| // You can specify which plugins you need | ||||
| //import { Tooltip, Toast, Popover } from 'bootstrap'; | ||||
| import Modal from 'bootstrap/js/dist/modal'; | ||||
| //import Alert from 'bootstrap/js/dist/alert'; | ||||
| @@ -1,2 +0,0 @@ | ||||
|  | ||||
| @import '../../../fonts/OpenSans/OpenSans'; | ||||
| @@ -1 +0,0 @@ | ||||
| require('./scratch.scss'); | ||||
| @@ -1,9 +1,3 @@ | ||||
| /* | ||||
|  * 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 | ||||
| @import 'custom/config/colors'; | ||||
| @import 'custom/config/variables'; | ||||
| @@ -162,6 +156,7 @@ dl.chill_view_data { | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| blockquote.chill-user-quote, | ||||
| div.chill-user-quote { | ||||
|     border-left: 10px solid $chill-yellow; | ||||
| @@ -169,12 +164,12 @@ div.chill-user-quote { | ||||
|     padding: 0.5em 10px; | ||||
|     quotes: "\201C""\201D""\2018""\2019"; | ||||
|     background-color: $chill-llight-gray; | ||||
| 
 | ||||
|      | ||||
|     blockquote { | ||||
|         margin: 1.5em 10px; | ||||
|         padding: 0.5em 10px; | ||||
|     } | ||||
| 
 | ||||
|      | ||||
|     blockquote:before { | ||||
|         color: #ccc; | ||||
|         content: open-quote; | ||||
| @@ -187,4 +182,5 @@ div.chill-user-quote { | ||||
| 
 | ||||
| .chill-no-data-statement { | ||||
|     font-style: italic; | ||||
| 
 | ||||
| } | ||||
| @@ -1,42 +1,42 @@ | ||||
| @charset "UTF-8"; | ||||
| 
 | ||||
| /// Outputs the spec and prefixed versions of the `::selection` pseudo-element. | ||||
| /// | ||||
| /// @param {Bool} $current-selector [false] | ||||
| ///   If set to `true`, it takes the current element into consideration. | ||||
| /// | ||||
| /// @example scss - Usage | ||||
| ///   .element { | ||||
| ///     @include selection(true) { | ||||
| ///       background-color: #ffbb52; | ||||
| ///     } | ||||
| ///   } | ||||
| /// | ||||
| /// @example css - CSS Output | ||||
| ///   .element::-moz-selection { | ||||
| ///     background-color: #ffbb52; | ||||
| ///   } | ||||
| /// | ||||
| ///   .element::selection { | ||||
| ///     background-color: #ffbb52; | ||||
| ///   } | ||||
| 
 | ||||
| @mixin selection($current-selector: false) { | ||||
|   @if $current-selector { | ||||
|     &::-moz-selection { | ||||
|       @content; | ||||
|     } | ||||
| 
 | ||||
|     &::selection { | ||||
|       @content; | ||||
|     } | ||||
|   } @else { | ||||
|     ::-moz-selection { | ||||
|       @content; | ||||
|     } | ||||
| 
 | ||||
|     ::selection { | ||||
|       @content; | ||||
|     } | ||||
|   } | ||||
| } | ||||
| @charset "UTF-8"; | ||||
| 
 | ||||
| /// Outputs the spec and prefixed versions of the `::selection` pseudo-element. | ||||
| /// | ||||
| /// @param {Bool} $current-selector [false] | ||||
| ///   If set to `true`, it takes the current element into consideration. | ||||
| /// | ||||
| /// @example scss - Usage | ||||
| ///   .element { | ||||
| ///     @include selection(true) { | ||||
| ///       background-color: #ffbb52; | ||||
| ///     } | ||||
| ///   } | ||||
| /// | ||||
| /// @example css - CSS Output | ||||
| ///   .element::-moz-selection { | ||||
| ///     background-color: #ffbb52; | ||||
| ///   } | ||||
| /// | ||||
| ///   .element::selection { | ||||
| ///     background-color: #ffbb52; | ||||
| ///   } | ||||
| 
 | ||||
| @mixin selection($current-selector: false) { | ||||
|   @if $current-selector { | ||||
|     &::-moz-selection { | ||||
|       @content; | ||||
|     } | ||||
| 
 | ||||
|     &::selection { | ||||
|       @content; | ||||
|     } | ||||
|   } @else { | ||||
|     ::-moz-selection { | ||||
|       @content; | ||||
|     } | ||||
| 
 | ||||
|     ::selection { | ||||
|       @content; | ||||
|     } | ||||
|   } | ||||
| } | ||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user