ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
InitUIFramework.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
30{
31 public function init(\ILIAS\DI\Container $c): void
32 {
33 $c["ui.factory"] = function ($c) {
35 $c["ui.factory.counter"],
36 $c["ui.factory.button"],
37 $c["ui.factory.listing"],
38 $c["ui.factory.image"],
39 new \ILIAS\UI\Implementation\Component\Player\Factory(),
40 $c["ui.factory.panel"],
41 $c["ui.factory.modal"],
42 $c["ui.factory.progress"],
43 $c["ui.factory.dropzone"],
44 $c["ui.factory.popover"],
45 $c["ui.factory.divider"],
46 $c["ui.factory.link"],
47 $c["ui.factory.dropdown"],
48 $c["ui.factory.item"],
49 $c["ui.factory.viewcontrol"],
50 $c["ui.factory.chart"],
51 $c["ui.factory.input"],
52 $c["ui.factory.table"],
53 $c["ui.factory.messagebox"],
54 $c["ui.factory.card"],
55 $c["ui.factory.layout"],
56 $c["ui.factory.maincontrols"],
57 $c["ui.factory.tree"],
58 $c["ui.factory.menu"],
59 $c["ui.factory.symbol"],
60 $c["ui.factory.toast"],
61 $c["ui.factory.legacy"],
62 $c["ui.factory.launcher"],
63 $c["ui.factory.entity"],
64 $c["ui.factory.prompt"],
65 $c["ui.factory.navigation"],
66 );
67 };
68 $c["ui.upload_limit_resolver"] = function ($c) {
69 return new \ILIAS\UI\Implementation\Component\Input\UploadLimitResolver(
70 new class () implements ILIAS\UI\Component\Input\Field\PhpUploadLimit {
71 public function getPhpUploadLimitInBytes(): int
72 {
73 return 0;
74 }
75 },
76 new class () implements ILIAS\UI\Component\Input\Field\GlobalUploadLimit {
77 public function getGlobalUploadLimitInBytes(): ?int
78 {
79 return null;
80 }
81 },
82 );
83 };
84 $c["ui.data_factory"] = function ($c) {
85 return new ILIAS\Data\Factory();
86 };
87 $c["ui.signal_generator"] = function ($c) {
89 };
90 $c["ui.factory.counter"] = function ($c) {
92 };
93 $c["ui.factory.button"] = function ($c) {
95 };
96 $c["ui.factory.listing"] = function ($c) {
98 new ILIAS\UI\Implementation\Component\Listing\Workflow\Factory(),
99 new ILIAS\UI\Implementation\Component\Listing\CharacteristicValue\Factory(),
100 new ILIAS\UI\Implementation\Component\Listing\Entity\Factory(),
101 );
102 };
103 $c["ui.factory.image"] = function ($c) {
105 };
106 $c["ui.factory.panel"] = function ($c) {
108 $c["ui.factory.panel.listing"],
109 new ILIAS\UI\Implementation\Component\Panel\Secondary\Factory(),
110 );
111 };
112 $c["ui.factory.interruptive_item"] = function ($c) {
114 };
115 $c["ui.factory.modal"] = function ($c) {
117 $c["ui.signal_generator"],
118 $c["ui.factory.interruptive_item"],
119 $c["ui.factory.input.field"],
120 );
121 };
122 $c["ui.factory.progress.refresh_interval"] = static fn(\ILIAS\DI\Container $c) =>
123 new class () implements \ILIAS\UI\Component\Progress\AsyncRefreshInterval {
124 public function getRefreshIntervalInMs(): int
125 {
126 return 1_000;
127 }
128 };
129 $c["ui.factory.progress"] = static fn(\ILIAS\DI\Container $c) =>
130 new \ILIAS\UI\Implementation\Component\Progress\Factory(
131 $c["ui.factory.progress.refresh_interval"],
132 $c["ui.signal_generator"],
133 $c["ui.factory.progress.state"],
134 );
135 $c["ui.factory.progress.state"] = static fn(\ILIAS\DI\Container $c) =>
136 new \ILIAS\UI\Implementation\Component\Progress\State\Factory(
137 new \ILIAS\UI\Implementation\Component\Progress\State\Bar\Factory(),
138 );
139 $c["ui.factory.dropzone"] = function ($c) {
140 return new ILIAS\UI\Implementation\Component\Dropzone\Factory($c["ui.factory.dropzone.file"]);
141 };
142 $c["ui.factory.popover"] = function ($c) {
143 return new ILIAS\UI\Implementation\Component\Popover\Factory($c["ui.signal_generator"]);
144 };
145 $c["ui.factory.divider"] = function ($c) {
147 };
148 $c["ui.factory.link"] = function ($c) {
150 };
151 $c["ui.factory.dropdown"] = function ($c) {
153 };
154 $c["ui.factory.item"] = function ($c) {
156 };
157 $c["ui.factory.toast"] = function ($c) {
158 return new ILIAS\UI\Implementation\Component\Toast\Factory($c["ui.signal_generator"]);
159 };
160 $c["ui.factory.viewcontrol"] = function ($c) {
162 $c["ui.signal_generator"]
163 );
164 };
165 $c["ui.factory.chart"] = function ($c) {
167 $c["ui.factory.progressmeter"],
168 $c["ui.factory.bar"]
169 );
170 };
171 $c["ui.factory.input"] = function ($c) {
173 $c["ui.signal_generator"],
174 $c["ui.factory.input.field"],
175 $c["ui.factory.input.container"],
176 $c["ui.factory.input.viewcontrol"]
177 );
178 };
179 $c["ui.factory.table"] = function ($c) {
183 $c["ui.signal_generator"],
184 $c['ui.factory.input.viewcontrol'],
185 $c['ui.factory.input.container.viewcontrol'],
186 $c["ui.data_factory"],
187 $c["ui.factory.table.column"],
188 $c["ui.factory.table.action"],
189 $c["ui.storage"],
190 $data_row_builder,
191 $ordering_row_builder
192 );
193 };
194 $c["ui.factory.table.column"] = function ($c) {
196 $c["lng"]
197 );
198 };
199 $c["ui.factory.table.action"] = function ($c) {
201 };
202 $c["ui.factory.messagebox"] = function ($c) {
204 };
205 $c["ui.factory.card"] = function ($c) {
207 };
208 $c["ui.factory.layout"] = function ($c) {
210 new ILIAS\UI\Implementation\Component\Layout\Page\Factory(),
211 new ILIAS\UI\Implementation\Component\Layout\Alignment\Factory(),
212 );
213 };
214 $c["ui.factory.maincontrols.slate"] = function ($c) {
216 $c['ui.signal_generator'],
217 $c['ui.factory.counter'],
218 $c["ui.factory.symbol"]
219 );
220 };
221 $c["ui.factory.maincontrols"] = function ($c) {
223 $c['ui.signal_generator'],
224 $c['ui.factory.maincontrols.slate']
225 );
226 };
227 $c["ui.factory.menu"] = function ($c) {
229 $c['ui.signal_generator']
230 );
231 };
232 $c["ui.factory.symbol.glyph"] = function ($c) {
234 };
235 $c["ui.factory.symbol.icon"] = function ($c) {
237 };
238 $c["ui.factory.symbol.avatar"] = function ($c) {
240 };
241 $c["ui.factory.symbol"] = function ($c) {
243 $c["ui.factory.symbol.icon"],
244 $c["ui.factory.symbol.glyph"],
245 $c["ui.factory.symbol.avatar"]
246 );
247 };
248 $c["ui.factory.progressmeter"] = function ($c) {
250 };
251 $c["ui.factory.bar"] = function ($c) {
253 };
254 $c["ui.factory.input.field"] = function ($c) {
256 $c["ui.factory.input.field.node"],
257 $c["ui.upload_limit_resolver"],
258 $c["ui.signal_generator"],
259 $c["ui.data_factory"],
260 $c["refinery"],
261 $c["lng"]
262 );
263 };
264 $c["ui.factory.input.field.node"] = function ($c) {
266 };
267 $c["ui.factory.input.container"] = function ($c) {
269 $c["ui.factory.input.container.form"],
270 $c["ui.factory.input.container.filter"],
271 $c["ui.factory.input.container.viewcontrol"]
272 );
273 };
274 $c["ui.factory.input.container.form"] = function ($c) {
276 $c["ui.factory.input.field"],
277 $c["ui.signal_generator"]
278 );
279 };
280 $c["ui.factory.input.container.filter"] = function ($c) {
282 $c["ui.signal_generator"],
283 $c["ui.factory.input.field"]
284 );
285 };
286 $c["ui.factory.input.container.viewcontrol"] = function ($c) {
288 $c["ui.signal_generator"],
289 $c["ui.factory.input.viewcontrol"],
290 );
291 };
292 $c["ui.factory.input.viewcontrol"] = function ($c) {
294 $c["ui.factory.input.field"],
295 $c["ui.data_factory"],
296 $c["refinery"],
297 $c["ui.signal_generator"],
298 $c["lng"],
299 );
300 };
301 $c["ui.factory.dropzone.file"] = function ($c) {
303 $c["ui.signal_generator"],
304 $c["ui.factory.input.field"],
305 );
306 };
307 $c["ui.factory.panel.listing"] = function ($c) {
309 };
310 $c["ui.renderer"] = function ($c) {
312 $c["ui.component_renderer_loader"],
313 $c["ui.javascript_binding"],
314 $c["lng"],
315 );
316 };
317 $c["ui.component_renderer_loader"] = function ($c) {
319 new ILIAS\UI\Implementation\Render\LoaderResourceRegistryWrapper(
320 $c["ui.resource_registry"],
321 new ILIAS\UI\Implementation\Render\FSLoader(
322 new ILIAS\UI\Implementation\Render\DefaultRendererFactory(
323 $c["ui.factory"],
324 $c["ui.template_factory"],
325 $c["lng"],
326 $c["ui.javascript_binding"],
327 $c["ui.pathresolver"],
328 $c["ui.data_factory"],
329 $c["help.text_retriever"],
330 $c["ui.upload_limit_resolver"]
331 ),
332 new ILIAS\UI\Implementation\Component\Symbol\Glyph\GlyphRendererFactory(
333 $c["ui.factory"],
334 $c["ui.template_factory"],
335 $c["lng"],
336 $c["ui.javascript_binding"],
337 $c["ui.pathresolver"],
338 $c["ui.data_factory"],
339 $c["help.text_retriever"],
340 $c["ui.upload_limit_resolver"]
341 ),
342 new ILIAS\UI\Implementation\Component\Input\Field\FieldRendererFactory(
343 $c["ui.factory"],
344 $c["ui.template_factory"],
345 $c["lng"],
346 $c["ui.javascript_binding"],
347 $c["ui.pathresolver"],
348 $c["ui.data_factory"],
349 $c["help.text_retriever"],
350 $c["ui.upload_limit_resolver"]
351 ),
352 new ILIAS\UI\Implementation\Component\MessageBox\MessageBoxRendererFactory(
353 $c["ui.factory"],
354 $c["ui.template_factory"],
355 $c["lng"],
356 $c["ui.javascript_binding"],
357 $c["ui.pathresolver"],
358 $c["ui.data_factory"],
359 $c["help.text_retriever"],
360 $c["ui.upload_limit_resolver"]
361 ),
362 new ILIAS\UI\Implementation\Component\Input\Container\Form\FormRendererFactory(
363 $c["ui.factory"],
364 $c["ui.template_factory"],
365 $c["lng"],
366 $c["ui.javascript_binding"],
367 $c["ui.pathresolver"],
368 $c["ui.data_factory"],
369 $c["help.text_retriever"],
370 $c["ui.upload_limit_resolver"]
371 ),
372 new ILIAS\UI\Implementation\Component\Menu\MenuRendererFactory(
373 $c["ui.factory"],
374 $c["ui.template_factory"],
375 $c["lng"],
376 $c["ui.javascript_binding"],
377 $c["ui.pathresolver"],
378 $c["ui.data_factory"],
379 $c["help.text_retriever"],
380 $c["ui.upload_limit_resolver"]
381 ),
382 )
383 )
384 );
385 };
386 $c["ui.template_factory"] = function ($c) {
388 };
389 $c["ui.resource_registry"] = function ($c) {
391 };
392 $c["ui.javascript_binding"] = function ($c) {
394 };
395
396 $c["ui.factory.tree"] = function ($c) {
398 new ILIAS\UI\Implementation\Component\Tree\Node\Factory(),
399 );
400 };
401
402 $c["ui.factory.legacy"] = function ($c) {
403 return new ILIAS\UI\Implementation\Component\Legacy\Factory($c["ui.signal_generator"]);
404 };
405
406 $c["ui.pathresolver"] = function ($c): ILIAS\UI\Implementation\Render\ImagePathResolver {
407 return new ilImagePathResolver();
408 };
409
410 $c["ui.factory.launcher"] = function ($c): ILIAS\UI\Implementation\Component\Launcher\Factory {
412 $c["ui.factory.modal"]
413 );
414 };
415
416 $c["ui.factory.entity"] = function ($c) {
418 };
419
420 $c["ui.factory.prompt"] = function ($c) {
421 return new ILIAS\UI\Implementation\Component\Prompt\Factory($c["ui.signal_generator"]);
422 };
423
424 $c["ui.factory.navigation"] = function ($c) {
426 $c["ui.data_factory"],
427 $c["refinery"],
428 $c["ui.storage"],
429 );
430 };
431
432 // currently this is will be a session storage because we cannot store
433 // data on the client, see https://mantis.ilias.de/view.php?id=38503.
434 $c["ui.storage"] = function ($c): ILIAS\UI\Storage {
435 return new class () implements ILIAS\UI\Storage {
436 public function offsetExists(mixed $offset): bool
437 {
438 return ilSession::has($offset);
439 }
440 public function offsetGet(mixed $offset): mixed
441 {
442 return ilSession::get($offset);
443 }
444 public function offsetSet(mixed $offset, mixed $value): void
445 {
446 if (!is_string($offset)) {
447 throw new InvalidArgumentException('Offset needs to be of type string.');
448 }
449 ilSession::set($offset, $value);
450 }
451 public function offsetUnset(mixed $offset): void
452 {
453 ilSession::clear($offset);
454 }
455 };
456 };
457 }
458}
Builds a Color from either hex- or rgb values.
Definition: Factory.php:31
Factory for Date Formats.
Definition: Factory.php:27
Builds data types.
Definition: Factory.php:36
Renderer that dispatches rendering of UI components to a Renderer found in the same namespace as the ...
Caches renderers loaded by another loader.
Wraps global ilTemplate to provide JavaScriptBinding.
This is more or less a copy of the removed InitUIFramework file inside the Init component.
init(\ILIAS\DI\Container $c)
static get(string $a_var)
static clear(string $a_var)
static set(string $a_var, $a_val)
Set a value.
static has($a_var)
$c
Definition: deliver.php:25
This is what a factory for input fields looks like.
Definition: Factory.php:31
This is what a factory for layouts looks like.
Definition: Factory.php:27
Class HTTPServicesTest.
Interface Observer \BackgroundTasks Contains several chained tasks and infos about them.