1 | <?php |
||
38 | 1 | final class FlashMessagesExtension extends DI\CompilerExtension |
|
39 | { |
||
40 | public function getConfigSchema(): Schema |
||
50 | |||
51 | /** |
||
52 | * @return void |
||
53 | * |
||
54 | * @throws Utils\AssertionException |
||
55 | */ |
||
56 | public function loadConfiguration() : void |
||
57 | { |
||
58 | 1 | $config = $this->config; |
|
59 | 1 | $builder = $this->getContainerBuilder(); |
|
60 | |||
61 | |||
62 | // Notifier |
||
63 | 1 | $builder->addDefinition($this->prefix('notifier')) |
|
64 | 1 | ->setType(FlashMessages\FlashNotifier::class) |
|
65 | 1 | ->setArguments(['useTranslator' => $config->useTranslator]); |
|
66 | |||
67 | // Session storage |
||
68 | 1 | $builder->addDefinition($this->prefix('storage')) |
|
69 | 1 | ->setType(Storage\Session::class); |
|
70 | |||
71 | // Display components |
||
72 | |||
73 | |||
74 | 1 | $control = $builder->addFactoryDefinition($this->prefix('messages')) |
|
75 | 1 | ->setImplement(Components\IControl::class) |
|
76 | 1 | ->getResultDefinition()->setFactory(Components\Control::class) |
|
77 | 1 | ->setArguments([ |
|
78 | 1 | new Nette\PhpGenerator\PhpLiteral('$templateFile'), |
|
79 | 1 | ])->addTag(Nette\DI\Extensions\InjectExtension::TAG_INJECT); |
|
80 | |||
81 | 1 | foreach (['useTitle' => ['enableTitle', 'disableTitle'], 'useOverlay' => ['enableOverlay', 'disableOverlay']] as $parameter => $commands) { |
|
82 | 1 | if ($config->$parameter === TRUE) { |
|
83 | 1 | $control->addSetup('$service->' . $commands[0] . '(?)', [$config->$parameter]); |
|
84 | } else { |
||
85 | 1 | $control->addSetup('$service->' . $commands[1] . '(?)', [$config->$parameter]); |
|
86 | } |
||
87 | } |
||
88 | |||
89 | 1 | if ($config->templateFile) { |
|
90 | $control->addSetup('$service->setTemplateFile(?)', [$config->templateFile]); |
||
91 | } |
||
92 | |||
93 | // Extension events |
||
94 | 1 | $builder->addDefinition($this->prefix('onResponseHandler')) |
|
95 | 1 | ->setType(Events\OnResponseHandler::class); |
|
96 | |||
97 | 1 | $application = $builder->getDefinition('application'); |
|
98 | 1 | $application->addSetup('$service->onResponse[] = ?', ['@' . $this->prefix('onResponseHandler')]); |
|
99 | 1 | } |
|
100 | |||
101 | /** |
||
102 | * @param Nette\Configurator $config |
||
103 | * @param string $extensionName |
||
104 | * |
||
105 | * @return void |
||
106 | */ |
||
107 | public static function register(Nette\Configurator $config, string $extensionName = 'flashMessages') : void |
||
113 | } |
||
114 |