ILIAS  release_8 Revision v8.24
class.ilObjBadgeAdministrationGUI.php
Go to the documentation of this file.
1<?php
2
27{
30 protected ilTabsGUI $tabs;
31
32 public function __construct(
33 $a_data,
34 int $a_id,
35 bool $a_call_by_reference = true,
36 bool $a_prepare_output = true
37 ) {
38 global $DIC;
39
40 $this->rbacsystem = $DIC->rbac()->system();
41 $this->ctrl = $DIC->ctrl();
42 $this->access = $DIC->access();
43 $this->lng = $DIC->language();
44 $this->toolbar = $DIC->toolbar();
45 $this->tpl = $DIC["tpl"];
46 $this->tabs = $DIC->tabs();
47 $this->type = "bdga";
48 parent::__construct($a_data, $a_id, $a_call_by_reference, $a_prepare_output);
49
50 $this->badge_request = new ilBadgeGUIRequest(
51 $DIC->http(),
52 $DIC->refinery()
53 );
54
55 $this->lng->loadLanguageModule("badge");
56 }
57
58 public function executeCommand(): void
59 {
60 $next_class = $this->ctrl->getNextClass($this);
61 $cmd = $this->ctrl->getCmd();
62
63 $this->prepareOutput();
64
65 switch ($next_class) {
66 case 'ilpermissiongui':
67 $this->tabs_gui->setTabActive('perm_settings');
68 $perm_gui = new ilPermissionGUI($this);
69 $this->ctrl->forwardCommand($perm_gui);
70 break;
71
72 case 'ilbadgemanagementgui':
73 $this->assertActive();
74 $this->tabs_gui->setTabActive('activity');
75 $gui = new ilBadgeManagementGUI($this->ref_id, $this->obj_id, $this->type);
76 $this->ctrl->forwardCommand($gui);
77 break;
78
79 default:
80 if (!$cmd || $cmd === 'view') {
81 $cmd = "editSettings";
82 }
83
84 $this->$cmd();
85 break;
86 }
87 }
88
89 public function getAdminTabs(): void
90 {
92
93 if ($rbacsystem->checkAccess("visible,read", $this->object->getRefId())) {
94 $this->tabs_gui->addTab(
95 "settings",
96 $this->lng->txt("settings"),
97 $this->ctrl->getLinkTarget($this, "editSettings")
98 );
99
100 if (ilBadgeHandler::getInstance()->isActive()) {
101 $this->tabs_gui->addTab(
102 "types",
103 $this->lng->txt("badge_types"),
104 $this->ctrl->getLinkTarget($this, "listTypes")
105 );
106
107 $this->tabs_gui->addTab(
108 "imgtmpl",
109 $this->lng->txt("badge_image_templates"),
110 $this->ctrl->getLinkTarget($this, "listImageTemplates")
111 );
112
113 $this->tabs_gui->addTab(
114 "activity",
115 $this->lng->txt("badge_activity_badges"),
116 $this->ctrl->getLinkTargetByClass("ilbadgemanagementgui", "")
117 );
118
119 $this->tabs_gui->addTab(
120 "obj_badges",
121 $this->lng->txt("badge_object_badges"),
122 $this->ctrl->getLinkTarget($this, "listObjectBadges")
123 );
124 }
125 }
126
127 if ($rbacsystem->checkAccess('edit_permission', $this->object->getRefId())) {
128 $this->tabs_gui->addTab(
129 "perm_settings",
130 $this->lng->txt("perm_settings"),
131 $this->ctrl->getLinkTargetByClass('ilpermissiongui', "perm")
132 );
133 }
134 }
135
136 protected function assertActive(): void
137 {
138 if (!ilBadgeHandler::getInstance()->isActive()) {
139 $this->ctrl->redirect($this, "editSettings");
140 }
141 }
142
143
144 //
145 // settings
146 //
147
148 protected function editSettings(ilPropertyFormGUI $a_form = null): void
149 {
150 $this->tabs_gui->setTabActive("settings");
151
152 if (!$a_form) {
153 $a_form = $this->initFormSettings();
154 }
155
156 $this->tpl->setContent($a_form->getHTML());
157 }
158
159 protected function saveSettings(): void
160 {
161 $ilCtrl = $this->ctrl;
162
163 $this->checkPermission("write");
164
165 $form = $this->initFormSettings();
166 if ($form->checkInput()) {
167 $handler = ilBadgeHandler::getInstance();
168 $handler->setActive((bool) $form->getInput("act"));
169
170 $this->tpl->setOnScreenMessage('success', $this->lng->txt("settings_saved"), true);
171 $ilCtrl->redirect($this, "editSettings");
172 }
173
174 $form->setValuesByPost();
175 $this->editSettings($form);
176 }
177
179 {
180 $ilAccess = $this->access;
181
182 $form = new ilPropertyFormGUI();
183 $form->setFormAction($this->ctrl->getFormAction($this));
184 $form->setTitle($this->lng->txt("badge_settings"));
185
186 if ($ilAccess->checkAccess("write", "", $this->object->getRefId())) {
187 $form->addCommandButton("saveSettings", $this->lng->txt("save"));
188 $form->addCommandButton("editSettings", $this->lng->txt("cancel"));
189 }
190
191 $act = new ilCheckboxInputGUI($this->lng->txt("badge_service_activate"), "act");
192 $act->setInfo($this->lng->txt("badge_service_activate_info"));
193 $form->addItem($act);
194
195
196 $handler = ilBadgeHandler::getInstance();
197 $act->setChecked($handler->isActive());
198
199 return $form;
200 }
201
202
203 //
204 // types
205 //
206
207 protected function listTypes(): void
208 {
209 $ilAccess = $this->access;
210
211 $this->assertActive();
212 $this->tabs_gui->setTabActive("types");
213
214 $tbl = new ilBadgeTypesTableGUI(
215 $this,
216 "listTypes",
217 $ilAccess->checkAccess("write", "", $this->object->getRefId())
218 );
219 $this->tpl->setContent($tbl->getHTML());
220 }
221
222 protected function activateTypes(): void
223 {
225
226 $this->assertActive();
227
228 $ids = $this->badge_request->getIds();
229 if ($this->checkPermissionBool("write") && count($ids) > 0) {
230 $handler = ilBadgeHandler::getInstance();
231 $inactive = [];
232 foreach ($handler->getInactiveTypes() as $type) {
233 if (!in_array($type, $ids)) {
234 $inactive[] = $type;
235 }
236 }
237 $handler->setInactiveTypes($inactive);
238
239 $this->tpl->setOnScreenMessage('success', $lng->txt("settings_saved"), true);
240 }
241 $this->ctrl->redirect($this, "listTypes");
242 }
243
244 protected function deactivateTypes(): void
245 {
247
248 $this->assertActive();
249
250 $ids = $this->badge_request->getIds();
251 if ($this->checkPermissionBool("write") && count($ids) > 0) {
252 $handler = ilBadgeHandler::getInstance();
253 $inactive = array_merge($handler->getInactiveTypes(), $ids);
254 $handler->setInactiveTypes($inactive);
255
256 $this->tpl->setOnScreenMessage('success', $lng->txt("settings_saved"), true);
257 }
258 $this->ctrl->redirect($this, "listTypes");
259 }
260
261
262 //
263 // images templates
264 //
265
266 protected function listImageTemplates(): void
267 {
268 $ilAccess = $this->access;
270 $ilToolbar = $this->toolbar;
271 $ilCtrl = $this->ctrl;
272
273 $this->assertActive();
274 $this->tabs_gui->setTabActive("imgtmpl");
275
276 if ($this->checkPermissionBool("write")) {
277 $ilToolbar->addButton(
278 $lng->txt("badge_add_template"),
279 $ilCtrl->getLinkTarget($this, "addImageTemplate")
280 );
281 }
282
284 $this,
285 "listImageTemplates",
286 $ilAccess->checkAccess("write", "", $this->object->getRefId())
287 );
288 $this->tpl->setContent($tbl->getHTML());
289 }
290
291 protected function addImageTemplate(
292 ilPropertyFormGUI $a_form = null
293 ): void {
294 $tpl = $this->tpl;
295
296 $this->checkPermission("write");
297
298 $this->assertActive();
299 $this->tabs_gui->setTabActive("imgtmpl");
300
301 if (!$a_form) {
302 $a_form = $this->initImageTemplateForm("create");
303 }
304
305 $tpl->setContent($a_form->getHTML());
306 }
307
308 protected function initImageTemplateForm(
309 string $a_mode
311 $lng = $this->lng;
312 $ilCtrl = $this->ctrl;
313
314 $form = new ilPropertyFormGUI();
315 $form->setFormAction($ilCtrl->getFormAction($this, "saveBadge"));
316 $form->setTitle($lng->txt("badge_image_template_form"));
317
318 $title = new ilTextInputGUI($lng->txt("title"), "title");
319 $title->setRequired(true);
320 $form->addItem($title);
321
322 $img = new ilImageFileInputGUI($lng->txt("image"), "img");
323 $img->setSuffixes(array("png", "svg"));
324 if ($a_mode === "create") {
325 $img->setRequired(true);
326 }
327 $img->setUseCache(false);
328 $img->setAllowDeletion(false);
329 $form->addItem($img);
330
331 $types_mode = new ilRadioGroupInputGUI($lng->txt("badge_template_types"), "tmode");
332 $types_mode->setRequired(true);
333 $types_mode->setValue("all");
334 $form->addItem($types_mode);
335
336 $type_all = new ilRadioOption($lng->txt("badge_template_types_all"), "all");
337 $types_mode->addOption($type_all);
338
339 $type_spec = new ilRadioOption($lng->txt("badge_template_types_specific"), "spec");
340 $types_mode->addOption($type_spec);
341
342 $types = new ilCheckboxGroupInputGUI($lng->txt("badge_types"), "type");
343 $types->setRequired(true);
344 $type_spec->addSubItem($types);
345
346 foreach (ilBadgeHandler::getInstance()->getAvailableTypes(false) as $id => $type) {
347 $types->addOption(new ilCheckboxOption($type->getCaption(), $id));
348 }
349
350 if ($a_mode === "create") {
351 $form->addCommandButton("saveImageTemplate", $lng->txt("save"));
352 } else {
353 $form->addCommandButton("updateImageTemplate", $lng->txt("save"));
354 }
355 $form->addCommandButton("listImageTemplates", $lng->txt("cancel"));
356
357 return $form;
358 }
359
360 protected function saveImageTemplate(): void
361 {
362 $ilCtrl = $this->ctrl;
364
365 $this->checkPermission("write");
366
367 $form = $this->initImageTemplateForm("create");
368 if ($form->checkInput()) {
369 $tmpl = new ilBadgeImageTemplate();
370 $tmpl->setTitle($form->getInput("title"));
371 $tmpl->setTypes($form->getInput("type"));
372 $tmpl->create();
373
374 $tmpl->uploadImage($_FILES["img"]);
375
376 $this->tpl->setOnScreenMessage('success', $lng->txt("settings_saved"), true);
377 $ilCtrl->redirect($this, "listImageTemplates");
378 }
379
380 $form->setValuesByPost();
381 $this->addImageTemplate($form);
382 }
383
384 protected function editImageTemplate(
385 ilPropertyFormGUI $a_form = null
386 ): void {
387 $ilCtrl = $this->ctrl;
389
390 $this->checkPermission("write");
391
392 $this->assertActive();
393 $this->tabs_gui->setTabActive("imgtmpl");
394
395 $tmpl_id = $this->badge_request->getTemplateId();
396 if (!$tmpl_id) {
397 $ilCtrl->redirect($this, "listImageTemplates");
398 }
399
400 $ilCtrl->setParameter($this, "tid", $tmpl_id);
401
402 $tmpl = new ilBadgeImageTemplate($tmpl_id);
403
404 if (!$a_form) {
405 $a_form = $this->initImageTemplateForm("edit");
406 $this->setImageTemplateFormValues($a_form, $tmpl);
407 }
408
409 $tpl->setContent($a_form->getHTML());
410 }
411
412 protected function setImageTemplateFormValues(
413 ilPropertyFormGUI $a_form,
415 ): void {
416 $a_form->getItemByPostVar("title")->setValue($a_tmpl->getTitle());
417 $a_form->getItemByPostVar("img")->setImage($a_tmpl->getImagePath());
418 $a_form->getItemByPostVar("img")->setValue($a_tmpl->getImage());
419
420 if ($a_tmpl->getTypes()) {
421 $a_form->getItemByPostVar("tmode")->setValue("spec");
422 $a_form->getItemByPostVar("type")->setValue($a_tmpl->getTypes());
423 } else {
424 $a_form->getItemByPostVar("tmode")->setValue("all");
425 }
426 }
427
428 protected function updateImageTemplate(): void
429 {
430 $ilCtrl = $this->ctrl;
432
433 $this->checkPermission("write");
434
435 $tmpl_id = $this->badge_request->getTemplateId();
436 if (!$tmpl_id) {
437 $ilCtrl->redirect($this, "listImageTemplates");
438 }
439
440 $ilCtrl->setParameter($this, "tid", $tmpl_id);
441
442 $tmpl = new ilBadgeImageTemplate($tmpl_id);
443
444 $form = $this->initImageTemplateForm("update");
445 if ($form->checkInput()) {
446 $tmpl->setTitle($form->getInput("title"));
447
448 if ($form->getInput("tmode") !== "all") {
449 $tmpl->setTypes($form->getInput("type"));
450 } else {
451 $tmpl->setTypes(null);
452 }
453
454 $tmpl->update();
455
456 $tmpl->uploadImage($_FILES["img"]);
457
458 $this->tpl->setOnScreenMessage('success', $lng->txt("settings_saved"), true);
459 $ilCtrl->redirect($this, "listImageTemplates");
460 }
461
462 $this->setImageTemplateFormValues($form, $tmpl);
463 $form->setValuesByPost();
464 $this->editImageTemplate($form);
465 }
466
467 protected function confirmDeleteImageTemplates(): void
468 {
469 $ilCtrl = $this->ctrl;
472 $ilTabs = $this->tabs;
473
474 $this->checkPermission("write");
475
476 $tmpl_ids = $this->badge_request->getIds();
477 if (!$tmpl_ids) {
478 $ilCtrl->redirect($this, "listImageTemplates");
479 }
480
481 $ilTabs->clearTargets();
482 $ilTabs->setBackTarget(
483 $lng->txt("back"),
484 $ilCtrl->getLinkTarget($this, "listImageTemplates")
485 );
486
487 $confirmation_gui = new ilConfirmationGUI();
488 $confirmation_gui->setFormAction($ilCtrl->getFormAction($this));
489 $confirmation_gui->setHeaderText($lng->txt("badge_template_deletion_confirmation"));
490 $confirmation_gui->setCancel($lng->txt("cancel"), "listImageTemplates");
491 $confirmation_gui->setConfirm($lng->txt("delete"), "deleteImageTemplates");
492
493 foreach ($tmpl_ids as $tmpl_id) {
494 $tmpl = new ilBadgeImageTemplate($tmpl_id);
495 $confirmation_gui->addItem("id[]", $tmpl_id, $tmpl->getTitle());
496 }
497
498 $tpl->setContent($confirmation_gui->getHTML());
499 }
500
501 protected function deleteImageTemplates(): void
502 {
503 $ilCtrl = $this->ctrl;
505
506 $this->checkPermission("write");
507
508 $tmpl_ids = $this->badge_request->getIds();
509 if ($tmpl_ids) {
510 foreach ($tmpl_ids as $tmpl_id) {
511 $tmpl = new ilBadgeImageTemplate($tmpl_id);
512 $tmpl->delete();
513 }
514
515 $this->tpl->setOnScreenMessage('success', $lng->txt("settings_saved"), true);
516 }
517
518 $ilCtrl->redirect($this, "listImageTemplates");
519 }
520
521
522 //
523 // object badges
524 //
525
526 protected function listObjectBadges(): void
527 {
528 $ilAccess = $this->access;
530
531 $this->assertActive();
532 $this->tabs_gui->setTabActive("obj_badges");
533
534 $tbl = new ilObjectBadgeTableGUI(
535 $this,
536 "listObjectBadges",
537 $ilAccess->checkAccess("write", "", $this->object->getRefId())
538 );
539 $tpl->setContent($tbl->getHTML());
540 }
541
542 protected function applyObjectFilter(): void
543 {
544 $ilAccess = $this->access;
545
546 $tbl = new ilObjectBadgeTableGUI(
547 $this,
548 "listObjectBadges",
549 $ilAccess->checkAccess("write", "", $this->object->getRefId())
550 );
551 $tbl->resetOffset();
552 $tbl->writeFilterToSession();
553 $this->listObjectBadges();
554 }
555
556 protected function resetObjectFilter(): void
557 {
558 $ilAccess = $this->access;
559
560 $tbl = new ilObjectBadgeTableGUI(
561 $this,
562 "listObjectBadges",
563 $ilAccess->checkAccess("write", "", $this->object->getRefId())
564 );
565 $tbl->resetOffset();
566 $tbl->resetFilter();
567 $this->listObjectBadges();
568 }
569
570 protected function listObjectBadgeUsers(): void
571 {
572 $ilCtrl = $this->ctrl;
575
576 $parent_obj_id = $this->badge_request->getParentId();
577 if (!$parent_obj_id) {
578 $ilCtrl->redirect($this, "listObjectBadges");
579 }
580
581 $this->assertActive();
582
583 $this->tabs_gui->clearTargets();
584 $this->tabs_gui->setBackTarget(
585 $lng->txt("back"),
586 $ilCtrl->getLinkTarget($this, "listObjectBadges")
587 );
588
589 $ilCtrl->saveParameter($this, "pid");
590
591 $tbl = new ilBadgeUserTableGUI($this, "listObjectBadgeUsers", 0, null, $parent_obj_id, $this->badge_request->getBadgeId());
592 $tpl->setContent($tbl->getHTML());
593 }
594
595 protected function applylistObjectBadgeUsers(): void
596 {
597 $tbl = new ilBadgeUserTableGUI($this, "listObjectBadgeUsers", 0, null, 0, $this->badge_request->getBadgeId());
598 $tbl->resetOffset();
599 $tbl->writeFilterToSession();
600 $this->listObjectBadgeUsers();
601 }
602
603 protected function resetlistObjectBadgeUsers(): void
604 {
605 $tbl = new ilBadgeUserTableGUI($this, "listObjectBadgeUsers", 0, null, 0, $this->badge_request->getBadgeId());
606 $tbl->resetOffset();
607 $tbl->resetFilter();
608 $this->listObjectBadgeUsers();
609 }
610
611
612 //
613 // see ilBadgeManagementGUI
614 //
615
616 protected function getObjectBadgesFromMultiAction(): array
617 {
618 $ilAccess = $this->access;
619 $ilCtrl = $this->ctrl;
620
621 $badge_ids = $this->badge_request->getIds();
622 if (!$badge_ids ||
623 !$ilAccess->checkAccess("write", "", $this->object->getRefId())) {
624 $ilCtrl->redirect($this, "listObjectBadges");
625 }
626
627 return $badge_ids;
628 }
629
630 protected function toggleObjectBadges(bool $a_status): void
631 {
632 $ilCtrl = $this->ctrl;
634
635 $badge_ids = $this->getObjectBadgesFromMultiAction();
636
637 foreach ($badge_ids as $badge_id) {
638 $badge = new ilBadge($badge_id);
639 $badge->setActive($a_status);
640 $badge->update();
641 }
642
643 $this->tpl->setOnScreenMessage('success', $lng->txt("settings_saved"), true);
644 $ilCtrl->redirect($this, "listObjectBadges");
645 }
646
647 protected function activateObjectBadges(): void
648 {
649 $this->toggleObjectBadges(true);
650 }
651
652 protected function deactivateObjectBadges(): void
653 {
654 $this->toggleObjectBadges(false);
655 }
656
657 protected function confirmDeleteObjectBadges(): void
658 {
659 $ilCtrl = $this->ctrl;
662 $ilTabs = $this->tabs;
663
664 $badge_ids = $this->getObjectBadgesFromMultiAction();
665
666 $ilTabs->clearTargets();
667 $ilTabs->setBackTarget(
668 $lng->txt("back"),
669 $ilCtrl->getLinkTarget($this, "listObjectBadges")
670 );
671
672 $confirmation_gui = new ilConfirmationGUI();
673 $confirmation_gui->setFormAction($ilCtrl->getFormAction($this));
674 $confirmation_gui->setHeaderText($lng->txt("badge_deletion_confirmation"));
675 $confirmation_gui->setCancel($lng->txt("cancel"), "listObjectBadges");
676 $confirmation_gui->setConfirm($lng->txt("delete"), "deleteObjectBadges");
677
678 foreach ($badge_ids as $badge_id) {
679 $badge = new ilBadge($badge_id);
680 $parent = $badge->getParentMeta();
681
682 // :TODO: container presentation
683 $container = "(" . $parent["type"] . "/" .
684 $parent["id"] . ") " .
685 $parent["title"];
686 if ($parent["deleted"]) {
687 $container .= ' <span class="il_ItemAlertProperty">' . $lng->txt("deleted") . '</span>';
688 }
689
690 $confirmation_gui->addItem(
691 "id[]",
692 $badge_id,
693 $container . " - " .
694 $badge->getTitle() .
695 " (" . count(ilBadgeAssignment::getInstancesByBadgeId($badge_id)) . ")"
696 );
697 }
698
699 $tpl->setContent($confirmation_gui->getHTML());
700 }
701
702 protected function deleteObjectBadges(): void
703 {
704 $ilCtrl = $this->ctrl;
706
707 $badge_ids = $this->getObjectBadgesFromMultiAction();
708
709 foreach ($badge_ids as $badge_id) {
710 $badge = new ilBadge($badge_id);
711 $badge->delete();
712 }
713
714 $this->tpl->setOnScreenMessage('success', $lng->txt("settings_saved"), true);
715 $ilCtrl->redirect($this, "listObjectBadges");
716 }
717}
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
Definition: plugin.php:23
static getInstancesByBadgeId(int $a_badge_id)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Class ilBadgeManagementGUI.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This class represents a checkbox property in a property form.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
txt(string $a_topic, string $a_default_lang_fallback_mod="")
gets the text for a given topic if the topic is not in the list, the topic itself with "-" will be re...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
setImageTemplateFormValues(ilPropertyFormGUI $a_form, ilBadgeImageTemplate $a_tmpl)
editImageTemplate(ilPropertyFormGUI $a_form=null)
addImageTemplate(ilPropertyFormGUI $a_form=null)
getAdminTabs()
administration tabs show only permissions and trash folder
__construct( $a_data, int $a_id, bool $a_call_by_reference=true, bool $a_prepare_output=true)
editSettings(ilPropertyFormGUI $a_form=null)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Class ilObjectGUI Basic methods of all Output classes.
ilAccessHandler $access
ilGlobalTemplateInterface $tpl
checkPermission(string $perm, string $cmd="", string $type="", ?int $ref_id=null)
checkPermissionBool(string $perm, string $cmd="", string $type="", ?int $ref_id=null)
ilToolbarGUI $toolbar
prepareOutput(bool $show_sub_objects=true)
ilLanguage $lng
New PermissionGUI (extends from old ilPermission2GUI) RBAC related output.
This class represents a property form user interface.
getItemByPostVar(string $a_post_var)
This class represents a property in a property form.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
class ilRbacSystem system function like checkAccess, addActiveRole ... Supporting system functions ar...
checkAccess(string $a_operations, int $a_ref_id, string $a_type="")
checkAccess represents the main method of the RBAC-system in ILIAS3 developers want to use With this ...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This class represents a text property in a property form.
global $DIC
Definition: feed.php:28
$img
Definition: imgupload.php:83
setContent(string $a_html)
Sets content for standard template.
if($DIC->http() ->request() ->getMethod()=="GET" &&isset($DIC->http() ->request() ->getQueryParams()['tex'])) $tpl
Definition: latex.php:41
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc
$type
$lng
$container
@noRector
Definition: wac.php:14