ILIAS  trunk Revision v12.0_alpha-1540-g00f839d5fa1
UI.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
21namespace ILIAS;
22
23class UI implements Component\Component
24{
25 public function init(
26 array | \ArrayAccess &$define,
27 array | \ArrayAccess &$implement,
28 array | \ArrayAccess &$use,
29 array | \ArrayAccess &$contribute,
30 array | \ArrayAccess &$seek,
31 array | \ArrayAccess &$provide,
32 array | \ArrayAccess &$pull,
33 array | \ArrayAccess &$internal,
34 ): void {
35 $define[] = UI\Factory::class;
36 $define[] = UI\Renderer::class;
37 $define[] = UI\HelpTextRetriever::class;
38 $define[] = UI\Storage::class;
39 $define[] = UI\Component\Progress\AsyncRefreshInterval::class;
40 $define[] = UI\Component\Input\Field\PhpUploadLimit::class;
41 $define[] = UI\Component\Input\Field\GlobalUploadLimit::class;
42 $define[] = UI\Implementation\FactoryInternal::class;
43 $define[] = UI\Implementation\Render\ImagePathResolver::class;
44
45 $implement[UI\Factory::class] = static fn() =>
46 $use[UI\Implementation\FactoryInternal::class];
47 $implement[UI\Implementation\FactoryInternal::class] = static fn() =>
48 $internal[UI\Implementation\Factory::class];
49 $implement[UI\Renderer::class] = static fn() =>
50 $internal[UI\Implementation\DefaultRenderer::class];
51 $implement[UI\Component\Progress\AsyncRefreshInterval::class] = static fn() =>
52 $internal[UI\Implementation\Component\Progress\DefaultAsyncRefreshInterval::class];
53
54 // =================================================================================
55 // ATTENTION: these factories are only populated inside $provide in order to
56 // keep plugin renderer- and factory-exchanges possible. These factories will
57 // only be internal again, once this functionality is improved for ILIAS 11.
58 $provide[UI\Implementation\Component\Counter\Factory::class] = static fn() =>
59 $internal[UI\Implementation\Component\Counter\Factory::class];
60 $provide[UI\Implementation\Component\Button\Factory::class] = static fn() =>
61 $internal[UI\Implementation\Component\Button\Factory::class];
62 $provide[UI\Implementation\Component\Listing\Factory::class] = static fn() =>
63 $internal[UI\Implementation\Component\Listing\Factory::class];
64 $provide[UI\Implementation\Component\Listing\Workflow\Factory::class] = static fn() =>
65 $internal[UI\Implementation\Component\Listing\Workflow\Factory::class];
66 $provide[UI\Implementation\Component\Listing\CharacteristicValue\Factory::class] = static fn() =>
67 $internal[UI\Implementation\Component\Listing\CharacteristicValue\Factory::class];
68 $provide[UI\Implementation\Component\Listing\Entity\Factory::class] = static fn() =>
69 $internal[UI\Implementation\Component\Listing\Entity\Factory::class];
70 $provide[UI\Implementation\Component\Image\Factory::class] = static fn() =>
71 $internal[UI\Implementation\Component\Image\Factory::class];
72 $provide[UI\Implementation\Component\Player\Factory::class] = static fn() =>
73 $internal[UI\Implementation\Component\Player\Factory::class];
74 $provide[UI\Implementation\Component\Panel\Factory::class] = static fn() =>
75 $internal[UI\Implementation\Component\Panel\Factory::class];
76 $provide[UI\Implementation\Component\Modal\Factory::class] = static fn() =>
77 $internal[UI\Implementation\Component\Modal\Factory::class];
78 $provide[UI\Implementation\Component\Progress\Factory::class] = static fn() =>
79 $internal[UI\Implementation\Component\Progress\Factory::class];
80 $provide[UI\Implementation\Component\Progress\State\Factory::class] = static fn() =>
81 $internal[UI\Implementation\Component\Progress\State\Factory::class];
82 $provide[UI\Implementation\Component\Progress\State\Bar\Factory::class] = static fn() =>
83 $internal[UI\Implementation\Component\Progress\State\Bar\Factory::class];
84 $provide[UI\Implementation\Component\Dropzone\Factory::class] = static fn() =>
85 $internal[UI\Implementation\Component\Dropzone\Factory::class];
86 $provide[UI\Implementation\Component\Popover\Factory::class] = static fn() =>
87 $internal[UI\Implementation\Component\Popover\Factory::class];
88 $provide[UI\Implementation\Component\Divider\Factory::class] = static fn() =>
89 $internal[UI\Implementation\Component\Divider\Factory::class];
90 $provide[UI\Implementation\Component\Link\Factory::class] = static fn() =>
91 $internal[UI\Implementation\Component\Link\Factory::class];
92 $provide[UI\Implementation\Component\Dropdown\Factory::class] = static fn() =>
93 $internal[UI\Implementation\Component\Dropdown\Factory::class];
94 $provide[UI\Implementation\Component\Item\Factory::class] = static fn() =>
95 $internal[UI\Implementation\Component\Item\Factory::class];
96 $provide[UI\Implementation\Component\ViewControl\Factory::class] = static fn() =>
97 $internal[UI\Implementation\Component\ViewControl\Factory::class];
98 $provide[UI\Implementation\Component\Chart\Factory::class] = static fn() =>
99 $internal[UI\Implementation\Component\Chart\Factory::class];
100 $provide[UI\Implementation\Component\Input\Factory::class] = static fn() =>
101 $internal[UI\Implementation\Component\Input\Factory::class];
102 $provide[UI\Implementation\Component\Table\Factory::class] = static fn() =>
103 $internal[UI\Implementation\Component\Table\Factory::class];
104 $provide[UI\Implementation\Component\MessageBox\Factory::class] = static fn() =>
105 $internal[UI\Implementation\Component\MessageBox\Factory::class];
106 $provide[UI\Implementation\Component\Card\Factory::class] = static fn() =>
107 $internal[UI\Implementation\Component\Card\Factory::class];
108 $provide[UI\Implementation\Component\Layout\Factory::class] = static fn() =>
109 $internal[UI\Implementation\Component\Layout\Factory::class];
110 $provide[UI\Implementation\Component\Layout\Page\Factory::class] = static fn() =>
111 $internal[UI\Implementation\Component\Layout\Page\Factory::class];
112 $provide[UI\Implementation\Component\Layout\Alignment\Factory::class] = static fn() =>
113 $internal[UI\Implementation\Component\Layout\Alignment\Factory::class];
114 $provide[UI\Implementation\Component\MainControls\Factory::class] = static fn() =>
115 $internal[UI\Implementation\Component\MainControls\Factory::class];
116 $provide[UI\Implementation\Component\Tree\Factory::class] = static fn() =>
117 $internal[UI\Implementation\Component\Tree\Factory::class];
118 $provide[UI\Implementation\Component\Tree\Node\Factory::class] = static fn() =>
119 $internal[UI\Implementation\Component\Tree\Node\Factory::class];
120 $provide[UI\Implementation\Component\Menu\Factory::class] = static fn() =>
121 $internal[UI\Implementation\Component\Menu\Factory::class];
122 $provide[UI\Implementation\Component\Symbol\Factory::class] = static fn() =>
123 $internal[UI\Implementation\Component\Symbol\Factory::class];
124 $provide[UI\Implementation\Component\Toast\Factory::class] = static fn() =>
125 $internal[UI\Implementation\Component\Toast\Factory::class];
126 $provide[UI\Implementation\Component\Legacy\Factory::class] = static fn() =>
127 $internal[UI\Implementation\Component\Legacy\Factory::class];
128 $provide[UI\Implementation\Component\Launcher\Factory::class] = static fn() =>
129 $internal[UI\Implementation\Component\Launcher\Factory::class];
130 $provide[UI\Implementation\Component\Entity\Factory::class] = static fn() =>
131 $internal[UI\Implementation\Component\Entity\Factory::class];
132 $provide[UI\Implementation\Component\Panel\Secondary\Factory::class] = static fn() =>
133 $internal[UI\Implementation\Component\Panel\Secondary\Factory::class];
134 $provide[UI\Implementation\Component\Panel\Listing\Factory::class] = static fn() =>
135 $internal[UI\Implementation\Component\Panel\Listing\Factory::class];
136 $provide[UI\Implementation\Component\Modal\InterruptiveItem\Factory::class] = static fn() =>
137 $internal[UI\Implementation\Component\Modal\InterruptiveItem\Factory::class];
138 $provide[UI\Implementation\Component\Chart\ProgressMeter\Factory::class] = static fn() =>
139 $internal[UI\Implementation\Component\Chart\ProgressMeter\Factory::class];
140 $provide[UI\Implementation\Component\Chart\Bar\Factory::class] = static fn() =>
141 $internal[UI\Implementation\Component\Chart\Bar\Factory::class];
142 $provide[UI\Implementation\Component\Input\ViewControl\Factory::class] = static fn() =>
143 $internal[UI\Implementation\Component\Input\ViewControl\Factory::class];
144 $provide[UI\Implementation\Component\Input\Container\ViewControl\Factory::class] = static fn() =>
145 $internal[UI\Implementation\Component\Input\Container\ViewControl\Factory::class];
146 $provide[UI\Implementation\Component\Table\Column\Factory::class] = static fn() =>
147 $internal[UI\Implementation\Component\Table\Column\Factory::class];
148 $provide[UI\Implementation\Component\Table\Factory::class] = static fn() =>
149 $internal[UI\Implementation\Component\Table\Factory::class];
150 $provide[UI\Implementation\Component\MainControls\Slate\Factory::class] = static fn() =>
151 $internal[UI\Implementation\Component\MainControls\Slate\Factory::class];
152 $provide[UI\Implementation\Component\Symbol\Icon\Factory::class] = static fn() =>
153 $internal[UI\Implementation\Component\Symbol\Icon\Factory::class];
154 $provide[UI\Implementation\Component\Symbol\Glyph\Factory::class] = static fn() =>
155 $internal[UI\Implementation\Component\Symbol\Glyph\Factory::class];
156 $provide[UI\Implementation\Component\Symbol\Avatar\Factory::class] = static fn() =>
157 $internal[UI\Implementation\Component\Symbol\Avatar\Factory::class];
158 $provide[UI\Implementation\Component\Input\Container\Form\Factory::class] = static fn() =>
159 $internal[UI\Implementation\Component\Input\Container\Form\Factory::class];
160 $provide[UI\Implementation\Component\Input\Container\Filter\Factory::class] = static fn() =>
161 $internal[UI\Implementation\Component\Input\Container\Filter\Factory::class];
162 $provide[UI\Implementation\Component\Input\Field\Factory::class] = static fn() =>
163 $internal[UI\Implementation\Component\Input\Field\Factory::class];
164 $provide[UI\Implementation\Component\Input\Field\Node\Factory::class] = static fn() =>
165 $internal[UI\Implementation\Component\Input\Field\Node\Factory::class];
166 $provide[UI\Implementation\Component\Prompt\Factory::class] = static fn() =>
167 $internal[UI\Implementation\Component\Prompt\Factory::class];
168 $provide[UI\Implementation\Component\Prompt\State\Factory::class] = static fn() =>
169 $internal[UI\Implementation\Component\Prompt\State\Factory::class];
170 $provide[UI\Implementation\Component\Input\UploadLimitResolver::class] = static fn() =>
171 $internal[UI\Implementation\Component\Input\UploadLimitResolver::class];
172 $provide[UI\Implementation\Component\Navigation\Factory::class] = static fn() =>
173 $internal[UI\Implementation\Component\Navigation\Factory::class];
174 $provide[UI\Implementation\Render\JavaScriptBinding::class] = static fn() =>
175 $internal[UI\Implementation\Render\JavaScriptBinding::class];
176 $provide[UI\Implementation\Component\SignalGeneratorInterface::class] = static fn() =>
177 $internal[UI\Implementation\Component\SignalGeneratorInterface::class];
178 $provide[UI\Implementation\Render\TemplateFactory::class] = static fn() =>
179 $internal[UI\Implementation\Render\TemplateFactory::class];
180
181
182 // =================================================================================
183
184 $internal[UI\Implementation\Factory::class] = static fn() =>
186 $internal[UI\Implementation\Component\Counter\Factory::class],
187 $internal[UI\Implementation\Component\Button\Factory::class],
188 $internal[UI\Implementation\Component\Listing\Factory::class],
189 $internal[UI\Implementation\Component\Image\Factory::class],
190 $internal[UI\Implementation\Component\Player\Factory::class],
191 $internal[UI\Implementation\Component\Panel\Factory::class],
192 $internal[UI\Implementation\Component\Modal\Factory::class],
193 $internal[UI\Implementation\Component\Progress\Factory::class],
194 $internal[UI\Implementation\Component\Dropzone\Factory::class],
195 $internal[UI\Implementation\Component\Popover\Factory::class],
196 $internal[UI\Implementation\Component\Divider\Factory::class],
197 $internal[UI\Implementation\Component\Link\Factory::class],
198 $internal[UI\Implementation\Component\Dropdown\Factory::class],
199 $internal[UI\Implementation\Component\Item\Factory::class],
200 $internal[UI\Implementation\Component\ViewControl\Factory::class],
201 $internal[UI\Implementation\Component\Chart\Factory::class],
202 $internal[UI\Implementation\Component\Input\Factory::class],
203 $internal[UI\Implementation\Component\Table\Factory::class],
204 $internal[UI\Implementation\Component\MessageBox\Factory::class],
205 $internal[UI\Implementation\Component\Card\Factory::class],
206 $internal[UI\Implementation\Component\Layout\Factory::class],
207 $internal[UI\Implementation\Component\MainControls\Factory::class],
208 $internal[UI\Implementation\Component\Tree\Factory::class],
209 $internal[UI\Implementation\Component\Menu\Factory::class],
210 $internal[UI\Implementation\Component\Symbol\Factory::class],
211 $internal[UI\Implementation\Component\Toast\Factory::class],
212 $internal[UI\Implementation\Component\Legacy\Factory::class],
213 $internal[UI\Implementation\Component\Launcher\Factory::class],
214 $internal[UI\Implementation\Component\Entity\Factory::class],
215 $internal[UI\Implementation\Component\Prompt\Factory::class],
216 $internal[UI\Implementation\Component\Navigation\Factory::class],
217 );
218
219 $internal[UI\Implementation\Component\Counter\Factory::class] = static fn() =>
221
222 $internal[UI\Implementation\Component\Button\Factory::class] = static fn() =>
224
225 $internal[UI\Implementation\Component\Listing\Factory::class] = static fn() =>
227 $internal[UI\Implementation\Component\Listing\Workflow\Factory::class],
228 $internal[UI\Implementation\Component\Listing\CharacteristicValue\Factory::class],
229 $internal[UI\Implementation\Component\Listing\Entity\Factory::class],
230 );
231 $internal[UI\Implementation\Component\Listing\Workflow\Factory::class] = static fn() =>
233 $internal[UI\Implementation\Component\Listing\CharacteristicValue\Factory::class] = static fn() =>
235 $internal[UI\Implementation\Component\Listing\Entity\Factory::class] = static fn() =>
237
238 $internal[UI\Implementation\Component\Image\Factory::class] = static fn() =>
240
241 $internal[UI\Implementation\Component\Player\Factory::class] = static fn() =>
243
244 $internal[UI\Implementation\Component\Panel\Factory::class] = static fn() =>
246 $internal[UI\Implementation\Component\Panel\Listing\Factory::class],
247 $internal[UI\Implementation\Component\Panel\Secondary\Factory::class],
248 );
249 $internal[UI\Implementation\Component\Panel\Listing\Factory::class] = static fn() =>
251 $internal[UI\Implementation\Component\Panel\Secondary\Factory::class] = static fn() =>
253
254 $internal[UI\Implementation\Component\Modal\Factory::class] = static fn() =>
256 $internal[UI\Implementation\Component\SignalGeneratorInterface::class],
257 $internal[UI\Implementation\Component\Modal\InterruptiveItem\Factory::class],
258 $internal[UI\Implementation\Component\Input\Field\Factory::class],
259 );
260 $internal[UI\Implementation\Component\SignalGeneratorInterface::class] = static fn() =>
262 $internal[UI\Implementation\Component\Modal\InterruptiveItem\Factory::class] = static fn() =>
264
265 $internal[UI\Implementation\Component\Progress\Factory::class] = static fn() =>
267 $use[UI\Component\Progress\AsyncRefreshInterval::class],
268 $internal[UI\Implementation\Component\SignalGeneratorInterface::class],
269 $internal[UI\Implementation\Component\Progress\State\Factory::class],
270 );
271 $internal[UI\Implementation\Component\Progress\State\Factory::class] = static fn() =>
273 $internal[UI\Implementation\Component\Progress\State\Bar\Factory::class],
274 );
275 $internal[UI\Implementation\Component\Progress\State\Bar\Factory::class] = static fn() =>
277 $internal[UI\Implementation\Component\Progress\DefaultAsyncRefreshInterval::class] = static fn() =>
279
280 $internal[UI\Implementation\Component\Dropzone\Factory::class] = static fn() =>
282 $internal[UI\Implementation\Component\Dropzone\File\Factory::class],
283 );
284 $internal[UI\Implementation\Component\Dropzone\File\Factory::class] = static fn() =>
286 $internal[UI\Implementation\Component\SignalGeneratorInterface::class],
287 $internal[UI\Implementation\Component\Input\Field\Factory::class],
288 );
289
290 $internal[UI\Implementation\Component\Popover\Factory::class] = static fn() =>
292 $internal[UI\Implementation\Component\SignalGeneratorInterface::class],
293 );
294
295 $internal[UI\Implementation\Component\Divider\Factory::class] = static fn() =>
297
298 $internal[UI\Implementation\Component\Link\Factory::class] = static fn() =>
300
301 $internal[UI\Implementation\Component\Dropdown\Factory::class] = static fn() =>
303
304 $internal[UI\Implementation\Component\Item\Factory::class] = static fn() =>
306
307 $internal[UI\Implementation\Component\ViewControl\Factory::class] = static fn() =>
309 $internal[UI\Implementation\Component\SignalGeneratorInterface::class],
310 );
311
312 $internal[UI\Implementation\Component\Chart\Factory::class] = static fn() =>
314 $internal[UI\Implementation\Component\Chart\ProgressMeter\Factory::class],
315 $internal[UI\Implementation\Component\Chart\Bar\Factory::class],
316 );
317 $internal[UI\Implementation\Component\Chart\ProgressMeter\Factory::class] = static fn() =>
319 $internal[UI\Implementation\Component\Chart\Bar\Factory::class] = static fn() =>
321
322 $internal[UI\Implementation\Component\Input\Factory::class] = static fn() =>
324 $internal[UI\Implementation\Component\SignalGeneratorInterface::class],
325 $internal[UI\Implementation\Component\Input\Field\Factory::class],
326 $internal[UI\Implementation\Component\Input\Container\Factory::class],
327 $internal[UI\Implementation\Component\Input\ViewControl\Factory::class],
328 );
329 $internal[UI\Implementation\Component\Input\Field\Factory::class] = static fn() =>
331 $internal[UI\Implementation\Component\Input\Field\Node\Factory::class],
332 $internal[UI\Implementation\Component\Input\UploadLimitResolver::class],
333 $internal[UI\Implementation\Component\SignalGeneratorInterface::class],
334 $pull[Data\Factory::class],
335 $pull[Refinery\Factory::class],
336 $use[Language\Language::class]
337 );
338 $internal[UI\Implementation\Component\Input\Field\Node\Factory::class] = static fn() =>
340 $internal[UI\Implementation\Component\Input\UploadLimitResolver::class] = static fn() =>
342 $use[UI\Component\Input\Field\PhpUploadLimit::class],
343 $use[UI\Component\Input\Field\GlobalUploadLimit::class],
344 );
345 $internal[UI\Implementation\Component\Input\Container\Factory::class] = static fn() =>
347 $internal[UI\Implementation\Component\Input\Container\Form\Factory::class],
348 $internal[UI\Implementation\Component\Input\Container\Filter\Factory::class],
349 $internal[UI\Implementation\Component\Input\Container\ViewControl\Factory::class],
350 );
351 $internal[UI\Implementation\Component\Input\Container\Form\Factory::class] = static fn() =>
353 $internal[UI\Implementation\Component\Input\Field\Factory::class],
354 $internal[UI\Implementation\Component\SignalGeneratorInterface::class],
355 );
356 $internal[UI\Implementation\Component\Input\Container\Filter\Factory::class] = static fn() =>
358 $internal[UI\Implementation\Component\SignalGeneratorInterface::class],
359 $internal[UI\Implementation\Component\Input\Field\Factory::class],
360 );
361 $internal[UI\Implementation\Component\Input\Container\ViewControl\Factory::class] = static fn() =>
363 $internal[UI\Implementation\Component\SignalGeneratorInterface::class],
364 $internal[UI\Implementation\Component\Input\ViewControl\Factory::class],
365 );
366 $internal[UI\Implementation\Component\Input\ViewControl\Factory::class] = static fn() =>
368 $internal[UI\Implementation\Component\Input\Field\Factory::class],
369 $pull[Data\Factory::class],
370 $pull[Refinery\Factory::class],
371 $internal[UI\Implementation\Component\SignalGeneratorInterface::class],
372 $use[Language\Language::class],
373 );
374
375 $internal[UI\Implementation\Component\Table\Factory::class] = static fn() =>
377 $internal[UI\Implementation\Component\SignalGeneratorInterface::class],
378 $internal[UI\Implementation\Component\Input\ViewControl\Factory::class],
379 $internal[UI\Implementation\Component\Input\Container\ViewControl\Factory::class],
380 $pull[Data\Factory::class],
381 $internal[UI\Implementation\Component\Table\Column\Factory::class],
382 $internal[UI\Implementation\Component\Table\Action\Factory::class],
383 $use[UI\Storage::class],
384 $internal[UI\Implementation\Component\Table\DataRowBuilder::class],
385 $internal[UI\Implementation\Component\Table\OrderingRowBuilder::class],
386 );
387 $internal[UI\Implementation\Component\Table\Column\Factory::class] = static fn() =>
389 $use[\ILIAS\Language\Language::class],
390 );
391 $internal[UI\Implementation\Component\Table\Action\Factory::class] = static fn() =>
393 $internal[UI\Implementation\Component\Table\DataRowBuilder::class] = static fn() =>
395 $internal[UI\Implementation\Component\Table\OrderingRowBuilder::class] = static fn() =>
397
398 $internal[UI\Implementation\Component\MessageBox\Factory::class] = static fn() =>
400
401 $internal[UI\Implementation\Component\Card\Factory::class] = static fn() =>
403
404 $internal[UI\Implementation\Component\Layout\Factory::class] = static fn() =>
406 $internal[UI\Implementation\Component\Layout\Page\Factory::class],
407 $internal[UI\Implementation\Component\Layout\Alignment\Factory::class],
408 );
409 $internal[UI\Implementation\Component\Layout\Page\Factory::class] = static fn() =>
411 $internal[UI\Implementation\Component\Layout\Alignment\Factory::class] = static fn() =>
413
414 $internal[UI\Implementation\Component\MainControls\Factory::class] = static fn() =>
416 $internal[UI\Implementation\Component\SignalGeneratorInterface::class],
417 $internal[UI\Implementation\Component\MainControls\Slate\Factory::class],
418 );
419 $internal[UI\Implementation\Component\MainControls\Slate\Factory::class] = static fn() =>
421 $internal[UI\Implementation\Component\SignalGeneratorInterface::class],
422 $internal[UI\Implementation\Component\Counter\Factory::class],
423 $internal[UI\Implementation\Component\Symbol\Factory::class],
424 );
425
426 $internal[UI\Implementation\Component\Tree\Factory::class] = static fn() =>
428 $internal[UI\Implementation\Component\Tree\Node\Factory::class],
429 );
430 $internal[UI\Implementation\Component\Tree\Node\Factory::class] = static fn() =>
432
433 $internal[UI\Implementation\Component\Menu\Factory::class] = static fn() =>
435 $internal[UI\Implementation\Component\SignalGeneratorInterface::class],
436 );
437
438 $internal[UI\Implementation\Component\Symbol\Factory::class] = static fn() =>
440 $internal[UI\Implementation\Component\Symbol\Icon\Factory::class],
441 $internal[UI\Implementation\Component\Symbol\Glyph\Factory::class],
442 $internal[UI\Implementation\Component\Symbol\Avatar\Factory::class],
443 );
444 $internal[UI\Implementation\Component\Symbol\Icon\Factory::class] = static fn() =>
446 $internal[UI\Implementation\Component\Symbol\Glyph\Factory::class] = static fn() =>
448 $internal[UI\Implementation\Component\Symbol\Avatar\Factory::class] = static fn() =>
450
451 $internal[UI\Implementation\Component\Toast\Factory::class] = static fn() =>
453 $internal[UI\Implementation\Component\SignalGeneratorInterface::class],
454 );
455
456 $internal[UI\Implementation\Component\Legacy\Factory::class] = static fn() =>
458 $internal[UI\Implementation\Component\SignalGeneratorInterface::class],
459 );
460
461 $internal[UI\Implementation\Component\Launcher\Factory::class] = static fn() =>
463 $internal[UI\Implementation\Component\Modal\Factory::class],
464 );
465
466 $internal[UI\Implementation\Component\Entity\Factory::class] = static fn() =>
468
469 $internal[UI\Implementation\Component\Prompt\Factory::class] = static fn() =>
471 $internal[UI\Implementation\Component\SignalGeneratorInterface::class],
472 );
473 $internal[UI\Implementation\Component\Prompt\State\Factory::class] = static fn() =>
475
476 $internal[UI\Implementation\Component\Navigation\Factory::class] = static fn() =>
478 $pull[Data\Factory::class],
479 $pull[Refinery\Factory::class],
480 $use[UI\Storage::class],
481 );
482
483 $internal[UI\Implementation\DefaultRenderer::class] = static fn() =>
485 $internal[UI\Implementation\Render\Loader::class],
486 $internal[UI\Implementation\Render\JavaScriptBinding::class],
487 $use[Language\Language::class],
488 );
489 $internal[UI\Implementation\Render\Loader::class] = static fn() =>
491 new UI\Implementation\Render\LoaderResourceRegistryWrapper(
492 $internal[UI\Implementation\Render\ResourceRegistry::class],
493 new UI\Implementation\Render\FSLoader(
494 new UI\Implementation\Render\DefaultRendererFactory(
495 $use[UI\Implementation\FactoryInternal::class],
496 $internal[UI\Implementation\Render\TemplateFactory::class],
497 $use[Language\Language::class],
498 $internal[UI\Implementation\Render\JavaScriptBinding::class],
499 $use[UI\Implementation\Render\ImagePathResolver::class],
500 $pull[Data\Factory::class],
501 $use[UI\HelpTextRetriever::class],
502 $internal[UI\Implementation\Component\Input\UploadLimitResolver::class],
503 ),
504 new UI\Implementation\Component\Button\ButtonRendererFactory(
505 $use[UI\Implementation\FactoryInternal::class],
506 $internal[UI\Implementation\Render\TemplateFactory::class],
507 $use[Language\Language::class],
508 $internal[UI\Implementation\Render\JavaScriptBinding::class],
509 $use[UI\Implementation\Render\ImagePathResolver::class],
510 $pull[Data\Factory::class],
511 $use[UI\HelpTextRetriever::class],
512 $internal[UI\Implementation\Component\Input\UploadLimitResolver::class],
513 ),
514 new UI\Implementation\Component\Input\Field\FieldRendererFactory(
515 $use[UI\Implementation\FactoryInternal::class],
516 $internal[UI\Implementation\Render\TemplateFactory::class],
517 $use[Language\Language::class],
518 $internal[UI\Implementation\Render\JavaScriptBinding::class],
519 $use[UI\Implementation\Render\ImagePathResolver::class],
520 $pull[Data\Factory::class],
521 $use[UI\HelpTextRetriever::class],
522 $internal[UI\Implementation\Component\Input\UploadLimitResolver::class],
523 ),
524 new UI\Implementation\Component\MessageBox\MessageBoxRendererFactory(
525 $use[UI\Implementation\FactoryInternal::class],
526 $internal[UI\Implementation\Render\TemplateFactory::class],
527 $use[Language\Language::class],
528 $internal[UI\Implementation\Render\JavaScriptBinding::class],
529 $use[UI\Implementation\Render\ImagePathResolver::class],
530 $pull[Data\Factory::class],
531 $use[UI\HelpTextRetriever::class],
532 $internal[UI\Implementation\Component\Input\UploadLimitResolver::class],
533 ),
534 new UI\Implementation\Component\Input\Container\Form\FormRendererFactory(
535 $use[UI\Implementation\FactoryInternal::class],
536 $internal[UI\Implementation\Render\TemplateFactory::class],
537 $use[Language\Language::class],
538 $internal[UI\Implementation\Render\JavaScriptBinding::class],
539 $use[UI\Implementation\Render\ImagePathResolver::class],
540 $pull[Data\Factory::class],
541 $use[UI\HelpTextRetriever::class],
542 $internal[UI\Implementation\Component\Input\UploadLimitResolver::class],
543 ),
544 new UI\Implementation\Component\Menu\MenuRendererFactory(
545 $use[UI\Implementation\FactoryInternal::class],
546 $internal[UI\Implementation\Render\TemplateFactory::class],
547 $use[Language\Language::class],
548 $internal[UI\Implementation\Render\JavaScriptBinding::class],
549 $use[UI\Implementation\Render\ImagePathResolver::class],
550 $pull[Data\Factory::class],
551 $use[UI\HelpTextRetriever::class],
552 $internal[UI\Implementation\Component\Input\UploadLimitResolver::class],
553 ),
554 )
555 )
556 );
557 $internal[UI\Implementation\Render\JavaScriptBinding::class] = static fn() =>
559 $use[UICore\GlobalTemplate::class],
560 );
561 $internal[UI\Implementation\Render\ResourceRegistry::class] = static fn() =>
563 $use[UICore\GlobalTemplate::class],
564 );
565 $internal[UI\Implementation\Render\TemplateFactory::class] = static fn() =>
567
568 $contribute[Component\Resource\PublicAsset::class] = fn() =>
569 new Component\Resource\ComponentJS($this, "js/Button/button.js");
570 $contribute[Component\Resource\PublicAsset::class] = fn() =>
571 new Component\Resource\ComponentJS($this, "js/Chart/Bar/dist/bar.js");
572 $contribute[Component\Resource\PublicAsset::class] = fn() =>
573 new Component\Resource\ComponentJS($this, "js/Core/dist/core.js");
574 $contribute[Component\Resource\PublicAsset::class] = fn() =>
575 new Component\Resource\ComponentJS($this, "js/Counter/dist/counter.js");
576 $contribute[Component\Resource\PublicAsset::class] = fn() =>
577 new Component\Resource\ComponentJS($this, "js/Dropdown/dist/dropdown.js");
578
579 $contribute[Component\Resource\PublicAsset::class] = static fn() =>
580 new Component\Resource\NodeModule("dropzone/dist/dropzone-min.js");
581 $contribute[Component\Resource\PublicAsset::class] = fn() =>
582 new Component\Resource\ComponentJS($this, "js/Dropzone/File/dropzone.js");
583
584 $contribute[Component\Resource\PublicAsset::class] = fn() =>
585 new Component\Resource\ComponentJS($this, "js/Image/dist/image.min.js");
586 $contribute[Component\Resource\PublicAsset::class] = fn() =>
587 new Component\Resource\ComponentJS($this, "js/Input/Container/dist/filter.js");
588 $contribute[Component\Resource\PublicAsset::class] = fn() =>
589 new Component\Resource\ComponentJS($this, "js/Input/Field/dist/input.factory.min.js");
590 $contribute[Component\Resource\PublicAsset::class] = fn() =>
591 new Component\Resource\ComponentJS($this, "js/Input/Field/file.js");
592 $contribute[Component\Resource\PublicAsset::class] = fn() =>
593 new Component\Resource\ComponentJS($this, "js/Input/Field/input.js");
594 $contribute[Component\Resource\PublicAsset::class] = fn() =>
595 new Component\Resource\ComponentJS($this, "js/Item/dist/notification.js");
596 $contribute[Component\Resource\PublicAsset::class] = fn() =>
597 new Component\Resource\ComponentJS($this, "js/MainControls/dist/mainbar.js");
598 $contribute[Component\Resource\PublicAsset::class] = fn() =>
599 new Component\Resource\ComponentJS($this, "js/MainControls/dist/maincontrols.min.js");
600 $contribute[Component\Resource\PublicAsset::class] = fn() =>
601 new Component\Resource\ComponentJS($this, "js/MainControls/system_info.js");
602 $contribute[Component\Resource\PublicAsset::class] = fn() =>
603 new Component\Resource\ComponentJS($this, "js/Menu/dist/drilldown.min.js");
604 $contribute[Component\Resource\PublicAsset::class] = fn() =>
605 new Component\Resource\ComponentJS($this, "js/Modal/dist/modal.min.js");
606 $contribute[Component\Resource\PublicAsset::class] = fn() =>
607 new Component\Resource\ComponentJS($this, "js/Prompt/dist/prompt.min.js");
608 $contribute[Component\Resource\PublicAsset::class] = fn() =>
609 new Component\Resource\ComponentJS($this, "js/Page/stdpage.js");
610 $contribute[Component\Resource\PublicAsset::class] = fn() =>
611 new Component\Resource\ComponentJS($this, "js/Popover/popover.js");
612 $contribute[Component\Resource\PublicAsset::class] = fn() =>
613 new Component\Resource\ComponentJS($this, "js/Table/dist/table.min.js");
614 $contribute[Component\Resource\PublicAsset::class] = fn() =>
615 new Component\Resource\ComponentJS($this, "js/Toast/toast.js");
616 $contribute[Component\Resource\PublicAsset::class] = fn() =>
617 new Component\Resource\ComponentJS($this, "js/Tree/tree.js");
618 $contribute[Component\Resource\PublicAsset::class] = fn() =>
619 new Component\Resource\ComponentJS($this, "js/ViewControl/dist/viewcontrols.min.js");
620 $contribute[Component\Resource\PublicAsset::class] = fn() =>
621 new Component\Resource\OfComponent($this, "images", "assets");
622 $contribute[Component\Resource\PublicAsset::class] = fn() =>
623 new Component\Resource\OfComponent($this, "fonts", "assets");
624 $contribute[Component\Resource\PublicAsset::class] = fn() =>
625 new Component\Resource\OfComponent($this, "ui-examples", "assets");
626 $contribute[Component\Resource\PublicAsset::class] = static fn() =>
627 new Component\Resource\NodeModule("@yaireo/tagify/dist/tagify.js");
628 $contribute[Component\Resource\PublicAsset::class] = static fn() =>
629 new Component\Resource\NodeModule("@yaireo/tagify/dist/tagify.css");
630 $contribute[Component\Resource\PublicAsset::class] = static fn() =>
631 new Component\Resource\NodeModule("chart.js/dist/chart.umd.js");
632 $contribute[Component\Resource\PublicAsset::class] = fn() =>
633 new Component\Resource\ComponentJS($this, "js/Progress/dist/progress.min.js");
634 $contribute[Component\Resource\PublicAsset::class] = fn() =>
635 new Component\Resource\ComponentJS($this, "js/MainControls/dist/footer.min.js");
636 $contribute[Component\Resource\PublicAsset::class] = fn() =>
637 new Component\Resource\ComponentJS($this, "js/Input/ViewControl/dist/input.viewcontrols.min.js");
638 $contribute[Component\Resource\PublicAsset::class] = fn() =>
639 new Component\Resource\ComponentJS($this, "js/MathJax/mathjax_config.js");
640
641 /*
642 those are contributed by MediaObjects
643 $contribute[Component\Resource\PublicAsset::class] = fn() =>
644 new Component\Resource\NodeModule("mediaelement/build/mediaelement-and-player.min.js");
645 $contribute[Component\Resource\PublicAsset::class] = fn() =>
646 new Component\Resource\NodeModule("./node_modules/mediaelement/build/mediaelementplayer.min.css");
647 */
648 /* This library was missing after discussing dependencies for ILIAS 10
649 $contribute[Component\Resource\PublicAsset::class] = fn() =>
650 new Component\Resource\NodeModule("mediaelement/build/renderers/vimeo.min.js");
651 */
652 /* This library was missing after discussing dependencies for ILIAS 10 */
653 $contribute[Component\Resource\PublicAsset::class] = fn() =>
654 new Component\Resource\NodeModule("webui-popover/dist/jquery.webui-popover.min.js");
655
656 // This is included via anonymous classes
657 // because MathJax resources are taken from node_modules and they may be directories
658 foreach (['tex-chtml-full.js', 'a11y', 'adaptors', 'input', 'output', 'sre', 'ui'] as $asset) {
659 $contribute[Component\Resource\PublicAsset::class] = static fn(
660 ) => new readonly class ($asset) implements Component\Resource\PublicAsset {
661 public function __construct(private string $asset)
662 {
663 }
664
665 public function getSource(): string
666 {
667 return 'node_modules/mathjax/es5/' . $this->asset;
668 }
669
670 public function getTarget(): string
671 {
672 return 'node_modules/mathjax/es5/' . $this->asset;
673 }
674 };
675 };
676
677 // This is included via anonymous classes as a testament to the fact, that
678 // the templates-folder should probably be moved to some component.
679 $contribute[Component\Resource\PublicAsset::class] = static fn() => new class () implements Component\Resource\PublicAsset {
680 public function getSource(): string
681 {
682 return "templates/default/delos.css";
683 }
684 public function getTarget(): string
685 {
686 return "assets/css/delos.css";
687 }
688 };
689 $contribute[Component\Resource\PublicAsset::class] = static fn() => new class () implements Component\Resource\PublicAsset {
690 public function getSource(): string
691 {
692 return "templates/default/delos_cont.css";
693 }
694 public function getTarget(): string
695 {
696 return "assets/css/delos_cont.css";
697 }
698 };
699 }
700}
This is a js file provided by some component.
Definition: ComponentJS.php:27
Some distributable file created by npm.
Definition: NodeModule.php:27
An public asset that is a resource of some component.
Definition: OfComponent.php:27
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.
Definition: UI.php:24
init(array|\ArrayAccess &$define, array|\ArrayAccess &$implement, array|\ArrayAccess &$use, array|\ArrayAccess &$contribute, array|\ArrayAccess &$seek, array|\ArrayAccess &$provide, array|\ArrayAccess &$pull, array|\ArrayAccess &$internal,)
Definition: UI.php:25
An public asset is a file or folder that should be served via the web.
Definition: PublicAsset.php:27
A component is the most general form of an entity in the UI.
Definition: Component.php:28
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
This describes a symbol.
Definition: Symbol.php:30
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Definition: Bulky.php:21
Interface Observer \BackgroundTasks Contains several chained tasks and infos about them.