Skip to content

Commit

Permalink
Merge branch 'feature/translations' into develop
Browse files Browse the repository at this point in the history
  • Loading branch information
pfilsx committed Oct 21, 2019
2 parents fd23bd6 + 0d605b9 commit a6b6ed2
Show file tree
Hide file tree
Showing 66 changed files with 997 additions and 648 deletions.
3 changes: 2 additions & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,8 @@
"require-dev": {
"phpunit/phpunit": "^8.0",
"phpunit/php-code-coverage": "^7.0",
"symfony/maker-bundle": "^1.0"
"symfony/maker-bundle": "^1.0",
"symfony/translation": "^4.0"
},
"autoload": {
"psr-4": {
Expand Down
5 changes: 2 additions & 3 deletions phpunit.xml.dist
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
<!-- https://phpunit.de/manual/current/en/appendixes.configuration.html -->
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/6.5/phpunit.xsd"
backupGlobals="false"
colors="true"
bootstrap="./tests/bootstrap.php"
>
Expand All @@ -12,12 +11,12 @@
<env name="APP_ENV" value="test"/>
<env name="SHELL_VERBOSITY" value="-1"/>
<server name="KERNEL_DIR" value="./tests/app/"/>
<server name="KERNEL_CLASS" value="Pfilsx\tests\AppKernel"/>
<server name="KERNEL_CLASS" value="Pfilsx\tests\app\AppKernel"/>
</php>

<testsuites>
<testsuite name="DataGridBundle Test Suite">
<directory suffix="Test.php">./tests</directory>
<directory>./tests</directory>
</testsuite>
</testsuites>

Expand Down
119 changes: 119 additions & 0 deletions src/Config/Configuration.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
<?php


namespace Pfilsx\DataGrid\Config;

/**
* Class DataGridConfiguration
* @package Pfilsx\DataGrid\Config
* @internal
*/
class Configuration implements ConfigurationInterface
{
protected $template;

protected $noDataMessage;

protected $paginationLimit;

protected $paginationEnabled;

protected $showTitles;

protected $translationDomain;

public function __construct(array $config = [])
{
foreach ($config as $key => $value) {
$key = str_replace('_', '', $key);
$setter = 'set' . $key;
if (method_exists($this, $setter)) {
$this->$setter($value);
}
}
}

public function getTemplate(): ?string
{
return $this->template;
}

public function setTemplate(string $template): void
{
$this->template = $template;
}

public function getNoDataMessage(): ?string
{
return $this->noDataMessage;
}

public function setNoDataMessage(string $message): void
{
$this->noDataMessage = $message;
}

public function setPaginationEnabled(bool $value): void
{
$this->paginationEnabled = $value;
}

public function setPaginationLimit(int $limit): void
{
$this->paginationLimit = $limit;
}

public function setShowTitles(bool $showTitles): void
{
$this->showTitles = $showTitles;
}

public function setTranslationDomain(?string $domain): void
{
$this->translationDomain = $domain;
}

public function getConfigsArray(): array
{
return [
'template' => $this->getTemplate(),
'paginationEnabled' => $this->getPaginationEnabled(),
'paginationLimit' => $this->getPaginationLimit(),
'noDataMessage' => $this->getNoDataMessage(),
'showTitles' => $this->getShowTitles(),
'translationDomain' => $this->getTranslationDomain()
];
}

public function merge(ConfigurationInterface $configuration): ConfigurationInterface
{
$result = clone $this;
foreach ($configuration->getConfigsArray() as $key => $value) {
if ($value !== null) {
$setter = 'set' . ucfirst($key);
$result->$setter($value);
}
}
return $result;
}

public function getPaginationLimit(): ?int
{
return $this->paginationLimit;
}

public function getPaginationEnabled(): ?bool
{
return $this->paginationEnabled;
}

public function getShowTitles(): ?bool
{
return $this->showTitles;
}

public function getTranslationDomain(): ?string
{
return $this->translationDomain;
}
}
35 changes: 35 additions & 0 deletions src/Config/ConfigurationContainer.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
<?php


namespace Pfilsx\DataGrid\Config;


class ConfigurationContainer implements ConfigurationContainerInterface
{
/**
* @var ConfigurationInterface[]
*/
private $instances = [];

public function __construct(array $config)
{
$this->instances['default'] = new Configuration([
'template' => '@DataGrid/grid.blocks.html.twig',
'no_data_message' => 'No data found',
'show_titles' => true,
'pagination_enabled' => true,
'pagination_limit' => 10,
'translation_domain' => null
]);
if (!empty($config['instances'])){
foreach ($config['instances'] as $key => $configuration) {
$this->instances[$key] = new Configuration($configuration);
}
}
}

public function getInstance(string $name): ConfigurationInterface
{
return array_key_exists($name, $this->instances) ? $this->instances[$name] : null;
}
}
13 changes: 13 additions & 0 deletions src/Config/ConfigurationContainerInterface.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?php


namespace Pfilsx\DataGrid\Config;


interface ConfigurationContainerInterface
{
public function __construct(array $config);

public function getInstance(string $name): ConfigurationInterface;

}
42 changes: 42 additions & 0 deletions src/Config/ConfigurationInterface.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
<?php


namespace Pfilsx\DataGrid\Config;

/**
* Interface DataGridConfigurationInterface
* @package Pfilsx\DataGrid\Config
* @internal
*/
interface ConfigurationInterface
{
public function __construct(array $config = []);

public function getTemplate(): ?string;

public function setTemplate(string $template): void;

public function getNoDataMessage(): ?string;

public function setNoDataMessage(string $message): void;

public function getPaginationLimit(): ?int;

public function setPaginationLimit(int $limit): void;

public function getPaginationEnabled(): ?bool;

public function setPaginationEnabled(bool $value): void;

public function getShowTitles(): ?bool;

public function setShowTitles(bool $showTitles): void;

public function getTranslationDomain(): ?string;

public function setTranslationDomain(string $domain): void;

public function getConfigsArray(): array;

public function merge(ConfigurationInterface $configuration): self;
}
63 changes: 0 additions & 63 deletions src/Config/DataGridConfiguration.php

This file was deleted.

10 changes: 0 additions & 10 deletions src/Config/DataGridConfigurationInterface.php

This file was deleted.

70 changes: 70 additions & 0 deletions src/DataGridServiceContainer.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
<?php


namespace Pfilsx\DataGrid;


use Symfony\Bridge\Doctrine\ManagerRegistry;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\Routing\RouterInterface;
use Symfony\Contracts\Translation\TranslatorInterface;
use Twig\Environment;

/**
* Class DataGridServiceContainer
* @package Pfilsx\DataGrid
* @internal
*/
class DataGridServiceContainer
{

private $container;

public function __construct(
ManagerRegistry $doctrine,
RouterInterface $router,
Environment $twig,
RequestStack $requestStack,
TranslatorInterface $translator = null
)
{
$this->container = [
'doctrine' => $doctrine,
'router' => $router,
'twig' => $twig,
'request' => $requestStack,
'translator' => $translator
];
}

public function get(string $service)
{
return array_key_exists($service, $this->container) ? $this->container[$service] : null;
}


public function getDoctrine(): ManagerRegistry
{
return $this->container['doctrine'];
}

public function getRouter(): RouterInterface
{
return $this->container['router'];
}

public function getTwig(): Environment
{
return $this->container['twig'];
}

public function getRequest(): RequestStack
{
return $this->container['request'];
}

public function getTranslator(): ?TranslatorInterface
{
return $this->container['translator'];
}
}
Loading

0 comments on commit a6b6ed2

Please sign in to comment.