Completed
Push — master ( b57c0a...d441ef )
by Adam
02:49 queued 14s
created

ConfirmationDialogExtension   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 66
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 6

Test Coverage

Coverage 89.29%

Importance

Changes 7
Bugs 0 Features 1
Metric Value
wmc 5
c 7
b 0
f 1
lcom 1
cbo 6
dl 0
loc 66
ccs 25
cts 28
cp 0.8929
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
B loadConfiguration() 0 32 3
A register() 0 6 1
A getTranslationResources() 0 6 1
1
<?php
2
/**
3
 * ConfirmationDialogExtension.php
4
 *
5
 * @copyright      More in license.md
6
 * @license        http://www.ipublikuj.eu
7
 * @author         Adam Kadlec http://www.ipublikuj.eu
8
 * @package        iPublikuj:ConfirmationDialog!
9
 * @subpackage     DI
10
 * @since          1.0.0
11
 *
12
 * @date           08.06.14
13
 */
14
15
declare(strict_types = 1);
16
17
namespace IPub\ConfirmationDialog\DI;
18
19
use Nette;
20
use Nette\DI;
21
use Nette\PhpGenerator as Code;
22
23
use IPub\ConfirmationDialog;
24
25
/**
26
 * Confirmation dialog extension container
27
 *
28
 * @package        iPublikuj:ConfirmationDialog!
29
 * @subpackage     DI
30
 *
31
 * @author         Adam Kadlec <[email protected]>
32
 */
33 1
class ConfirmationDialogExtension extends DI\CompilerExtension
34
{
35
	/**
36
	 * @var array
37
	 */
38
	protected $defaults = [
39
		'layoutFile'   => NULL,
40
		'templateFile' => NULL
41
	];
42
43
	public function loadConfiguration()
44
	{
45 1
		$config = $this->getConfig($this->defaults);
46 1
		$builder = $this->getContainerBuilder();
47
48
		// Session storage
49 1
		$builder->addDefinition($this->prefix('storage'))
50 1
			->setClass(ConfirmationDialog\Storage\Session::CLASS_NAME);
51
52
		// Define components factories
53 1
		$dialog = $builder->addDefinition($this->prefix('dialog'))
54 1
			->setClass(ConfirmationDialog\Components\Control::CLASS_NAME)
55 1
			->setImplement(ConfirmationDialog\Components\IControl::INTERFACE_NAME)
56 1
			->setArguments([new Nette\PhpGenerator\PhpLiteral('$layoutFile'), new Nette\PhpGenerator\PhpLiteral('$templateFile')])
57 1
			->setInject(TRUE)
58 1
			->addTag('cms.components');
59
60 1
		$builder->addDefinition($this->prefix('confirmer'))
61 1
			->setClass(ConfirmationDialog\Components\Confirmer::CLASS_NAME)
62 1
			->setImplement(ConfirmationDialog\Components\IConfirmer::INTERFACE_NAME)
63 1
			->setArguments([new Nette\PhpGenerator\PhpLiteral('$templateFile')])
64 1
			->setInject(TRUE)
65 1
			->addTag('cms.components');
66
67 1
		if ($config['layoutFile']) {
68
			$dialog->addSetup('$service->setLayoutFile(?)', [$config['layoutFile']]);
69
		}
70
71 1
		if ($config['templateFile']) {
72
			$dialog->addSetup('$service->setTemplateFile(?)', [$config['templateFile']]);
73
		}
74 1
	}
75
76
	/**
77
	 * @param Nette\Configurator $config
78
	 * @param string $extensionName
79
	 */
80
	public static function register(Nette\Configurator $config, $extensionName = 'confirmationDialog')
81
	{
82 1
		$config->onCompile[] = function (Nette\Configurator $config, Nette\DI\Compiler $compiler) use ($extensionName) {
83 1
			$compiler->addExtension($extensionName, new ConfirmationDialogExtension());
84 1
		};
85 1
	}
86
87
	/**
88
	 * Return array of directories, that contain resources for translator.
89
	 *
90
	 * @return string[]
91
	 */
92
	function getTranslationResources()
0 ignored issues
show
Best Practice introduced by
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
93
	{
94
		return [
95
			__DIR__ . '/../Translations'
96
		];
97
	}
98
}
99