1 | <?php |
||
33 | 1 | final class Control extends BaseControl |
|
34 | { |
||
35 | /** |
||
36 | * Define class name |
||
37 | */ |
||
38 | const CLASS_NAME = __CLASS__; |
||
39 | |||
40 | /** |
||
41 | * @var IConfirmer |
||
42 | */ |
||
43 | private $confirmerFactory; |
||
44 | |||
45 | /** |
||
46 | * @var Confirmer |
||
47 | */ |
||
48 | private $confirmer; |
||
49 | |||
50 | /** |
||
51 | * @var bool |
||
52 | */ |
||
53 | private $useAjax = TRUE; |
||
54 | |||
55 | /** |
||
56 | * @param IConfirmer $confirmerFactory |
||
57 | */ |
||
58 | public function injectFactories(IConfirmer $confirmerFactory) |
||
59 | { |
||
60 | // Get confirmer component factory |
||
61 | 1 | $this->confirmerFactory = $confirmerFactory; |
|
62 | 1 | } |
|
63 | |||
64 | /** |
||
65 | * @param string|NULL $layoutFile |
||
66 | * @param string|NULL $templateFile |
||
67 | */ |
||
68 | public function __construct( |
||
69 | string $layoutFile = NULL, |
||
70 | string $templateFile = NULL |
||
71 | ) { |
||
72 | 1 | list(, , $parent, $name) = func_get_args() + [NULL, NULL, NULL, NULL]; |
|
73 | |||
74 | 1 | parent::__construct($parent, $name); |
|
75 | |||
76 | 1 | if ($layoutFile !== NULL) { |
|
77 | $this->setLayoutFile($layoutFile); |
||
78 | } |
||
79 | |||
80 | 1 | if ($templateFile !== NULL) { |
|
81 | $this->setTemplateFile($templateFile); |
||
82 | } |
||
83 | 1 | } |
|
84 | |||
85 | /** |
||
86 | * Change default dialog layout path |
||
87 | * |
||
88 | * @param string $layoutFile |
||
89 | * |
||
90 | * @return void |
||
91 | */ |
||
92 | public function setLayoutFile(string $layoutFile) |
||
93 | { |
||
94 | $this->setTemplateFilePath($layoutFile, self::TEMPLATE_LAYOUT); |
||
95 | } |
||
96 | |||
97 | /** |
||
98 | * Change default confirmer template path |
||
99 | * |
||
100 | * @param string $layoutFile |
||
101 | * |
||
102 | * @return void |
||
103 | */ |
||
104 | public function setTemplateFile(string $layoutFile) |
||
108 | |||
109 | /** |
||
110 | * @return string |
||
111 | */ |
||
112 | public function getTemplateFile() : string |
||
117 | |||
118 | /** |
||
119 | * Overrides signal method formatter |
||
120 | * This provide "dynamically named signals" |
||
121 | * |
||
122 | * @param string $signal |
||
123 | * |
||
124 | * @return string |
||
125 | */ |
||
126 | public static function formatSignalMethod($signal) : string |
||
134 | |||
135 | /** |
||
136 | * Add confirmation handler to "dynamicaly named signals" |
||
137 | * |
||
138 | * @param string $name Confirmation/signal name |
||
139 | * @param callback|Nette\Utils\Callback $handler Callback called when confirmation succeed |
||
140 | * @param callback|string $question Callback ($confirmer, $params) or string containing question text |
||
141 | * @param callback|string $heading Callback ($confirmer, $params) or string containing heading text |
||
142 | * |
||
143 | * @return void |
||
144 | * |
||
145 | * @throws Exceptions\InvalidArgumentException |
||
146 | */ |
||
147 | public function addConfirmer(string $name, $handler, $question, $heading) |
||
168 | |||
169 | /** |
||
170 | * @param string $name |
||
171 | * |
||
172 | * @return Confirmer |
||
173 | * |
||
174 | * @throws Exceptions\InvalidArgumentException |
||
175 | */ |
||
176 | public function getConfirmer(string $name) : Confirmer |
||
187 | |||
188 | /** |
||
189 | * @return void |
||
190 | */ |
||
191 | public function resetConfirmer() |
||
198 | |||
199 | /** |
||
200 | * @return Application\UI\Multiplier |
||
201 | * |
||
202 | * @throws Exceptions\InvalidArgumentException |
||
203 | */ |
||
204 | protected function createComponentConfirmer() : Application\UI\Multiplier |
||
224 | |||
225 | /** |
||
226 | * Show dialog for confirmation |
||
227 | * |
||
228 | * @param string $name |
||
229 | * @param array $params |
||
230 | * |
||
231 | * @return void |
||
232 | * |
||
233 | * @throws Exceptions\InvalidArgumentException |
||
234 | * @throws Exceptions\InvalidStateException |
||
235 | */ |
||
236 | public function showConfirm(string $name, array $params = []) |
||
249 | |||
250 | /** |
||
251 | * Dynamically named signal receiver |
||
252 | * |
||
253 | * @return void |
||
254 | * |
||
255 | * @throws Exceptions\InvalidArgumentException |
||
256 | * @throws Exceptions\InvalidStateException |
||
257 | */ |
||
258 | public function handleShowConfirmer() |
||
277 | |||
278 | /** |
||
279 | * @return void |
||
280 | */ |
||
281 | public function enableAjax() |
||
285 | |||
286 | /** |
||
287 | * @return void |
||
288 | */ |
||
289 | public function disableAjax() |
||
293 | |||
294 | /** |
||
295 | * Render control |
||
296 | * |
||
297 | * @return void |
||
298 | * |
||
299 | * @throws Exceptions\InvalidStateException |
||
300 | */ |
||
301 | public function render() |
||
325 | |||
326 | /** |
||
327 | * @param string $name |
||
328 | * |
||
329 | * @return Confirmer |
||
330 | * |
||
331 | * @throws Exceptions\InvalidArgumentException |
||
332 | */ |
||
333 | private function getConfirmerControl(string $name) : Confirmer |
||
343 | } |
||
344 |