ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
class.ilObjLanguageFolderGUI.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
23
35{
41
45 public function __construct(?array $a_data, int $a_id, bool $a_call_by_reference)
46 {
47 $this->type = "lngf";
48 parent::__construct($a_data, $a_id, $a_call_by_reference, false);
49 $this->lng->loadLanguageModule("lng");
50 $this->df = new ILIAS\Data\Factory();
51
52 $here_uri = $this->df->uri($this->request->getUri()->__toString());
53 $url_builder = new URLBuilder($here_uri);
54 $query_params_namespace = ['language_folder'];
55 [$url_builder, $action_parameter_token, $row_id_token] =
57 $query_params_namespace,
58 "table_action", //this is the actions's parameter name
59 "obj_ids" //this is the parameter name to be used for row-ids
60 );
61
62 $this->url_builder = $url_builder;
63 $this->action_token = $action_parameter_token;
64 $this->id_token = $row_id_token;
65
67 $folder = $this->object;
68 $this->languageFolderTable = new ilLanguageFolderTable($folder, $url_builder, $action_parameter_token, $row_id_token);
69 }
70
74 public function viewObject(): void
75 {
76 global $DIC;
77
78 $table = $this->languageFolderTable->getTable();
79
80 if ($this->checkPermissionBool("write")) {
81 // refresh
82 $ids = $this->confirmRefreshObject();
83 $modal = $this->buildConfirmModal(
84 $ids,
85 'refresh_languages',
86 'confirmRefresh',
87 'lang_refresh_confirm_selected',
88 "lang_refresh_confirm_info"
89 );
90 $refresh = $this->ui_factory->button()->standard(
91 $this->lng->txt("refresh_languages"),
92 ''
93 )->withOnClick($modal->getShowSignal());
94
95 $this->toolbar->addComponent($modal);
96 $this->toolbar->addComponent($refresh);
97
98 // check languages
99 $check = $this->ui_factory->button()->standard(
100 $this->lng->txt("check_languages"),
101 $this->getUrl("checkLanguage")
102 );
103 $this->toolbar->addComponent($check);
104 }
105
106 $ilClientIniFile = $DIC["ilClientIniFile"];
107 if ($ilClientIniFile->variableExists("system", "LANGUAGE_LOG")) {
108 $download = $this->ui_factory->button()->standard(
109 $this->lng->txt("lng_download_deprecated"),
110 $this->ctrl->getLinkTarget($this, "listDeprecated")
111 );
112 $this->toolbar->addComponent($download);
113 }
114
115 if ($this->checkPermissionBool("write")) {
116 $modal_on = $this->ui_factory->modal()->interruptive(
117 'ON',
118 $this->lng->txt("lng_enable_language_detection"),
119 $this->ctrl->getFormActionByClass(self::class, "enableLanguageDetection")
120 )
121 ->withActionButtonLabel($this->lng->txt('ok'));
122 $modal_off = $this->ui_factory->modal()->interruptive(
123 'OFF',
124 $this->lng->txt("lng_disable_language_detection"),
125 $this->ctrl->getFormActionByClass(self::class, "disableLanguageDetection")
126 )
127 ->withActionButtonLabel($this->lng->txt('ok'));
128 $toggleButton = $this->ui_factory->button()->toggle(
129 $this->lng->txt("language_detection"),
130 $modal_on->getShowSignal(),
131 $modal_off->getShowSignal(),
132 (bool) ($this->settings->get("lang_detection"))
133 )
134 ->withAriaLabel($this->lng->txt("lng_switch_language_detection"));
135 $this->toolbar->addComponent($modal_on);
136 $this->toolbar->addComponent($modal_off);
137 $this->toolbar->addComponent($toggleButton);
138 }
139
140 $this->tpl->setContent($this->ui_renderer->render($table->withRequest($this->request)));
141 }
142
143 protected function buildConfirmModal(array $ids, string $title, string $action, string $text, string $add_text = ''): ILIAS\UI\Implementation\Component\Modal\Interruptive
144 {
146 $title = $this->lng->txt($title);
147 $items = [];
148
149 if (!empty($ids)) {
150 $message = $this->lng->txt($text);
151
152 $some_changed = false;
153 foreach ($ids as $id) {
154 $lang_key = ilObject::_lookupTitle((int) $id);
155 $lang_title = $this->lng->txt("meta_l_" . $lang_key);
156 $last_change = ilObjLanguage::_getLastLocalChange($lang_key);
157 if (!empty($last_change)) {
158 $some_changed = true;
159 $lang_title .= " (" . $this->lng->txt("last_change") . " "
161 $last_change,
163 'UTC'
164 )) . ")";
165 }
166 $items[] = $f->modal()->interruptiveItem()->standard($id, $lang_title);
167 }
168 $form_action = $this->getUrl($action, $ids);
169
170 if ($some_changed) {
171 $message .= "<br />" . $this->lng->txt($add_text);
172 }
173 } else {
174 $message = $this->lng->txt("no_checkbox");
175 $form_action = '';
176 }
177 $modal = $f->modal()->interruptive(
178 $title,
179 $message,
181 );
182 if (!empty($items)) {
183 $modal = $modal->withAffectedItems($items)
184 ->withActionButtonLabel($title);
185 } else {
186 $modal = $modal->withActionButtonLabel($this->lng->txt('ok'));
187 }
188 return $modal;
189 }
190
194 public function installObject(array $ids): void
195 {
196 $this->checkPermission("write");
197 $this->lng->loadLanguageModule("meta");
198
199 foreach ($ids as $obj_id) {
200 $langObj = new ilObjLanguage((int) $obj_id);
201 $key = $langObj->install();
202
203 if ($key !== "") {
204 $lang_installed[] = $key;
205 }
206
207 unset($langObj);
208 }
209
210 if (isset($lang_installed)) {
211 if (count($lang_installed) === 1) {
212 $this->data = $this->lng->txt("meta_l_" . $lang_installed[0]) . " " . strtolower($this->lng->txt("installed")) . ".";
213 } else {
214 $langnames = [];
215 foreach ($lang_installed as $lang_key) {
216 $langnames[] = $this->lng->txt("meta_l_" . $lang_key);
217 }
218 $this->data = implode(", ", $langnames) . " " . strtolower($this->lng->txt("installed")) . ".";
219 }
220 } else {
221 $this->data = $this->lng->txt("languages_already_installed");
222 }
223
224 $this->out();
225 }
226
227
231 public function installLocalObject(array $ids): void
232 {
233 $this->checkPermission("write");
234 $this->lng->loadLanguageModule("meta");
235
236 foreach ($ids as $obj_id) {
237 $langObj = new ilObjLanguage((int) $obj_id);
238 $key = $langObj->install();
239
240 if ($key !== "") {
241 $lang_installed[] = $key;
242 }
243
244 unset($langObj);
245
246 $langObj = new ilObjLanguage((int) $obj_id);
247 $key = $langObj->install("local");
248
249 if ($key !== "") {
250 $local_installed[] = $key;
251 }
252
253 unset($langObj);
254 }
255
256 if (isset($lang_installed)) {
257 if (count($lang_installed) === 1) {
258 $this->data = $this->lng->txt("meta_l_" . $lang_installed[0]) . " " . strtolower($this->lng->txt("installed")) . ".";
259 } else {
260 $langnames = [];
261 foreach ($lang_installed as $lang_key) {
262 $langnames[] = $this->lng->txt("meta_l_" . $lang_key);
263 }
264 $this->data = implode(", ", $langnames) . " " . strtolower($this->lng->txt("installed")) . ".";
265 }
266 }
267
268 if (isset($local_installed)) {
269 if (count($local_installed) === 1) {
270 $this->data .= " " . $this->lng->txt("meta_l_" . $local_installed[0]) . " " . $this->lng->txt("local_language_file") . " " . strtolower($this->lng->txt("installed")) . ".";
271 } else {
272 $langnames = [];
273 foreach ($local_installed as $lang_key) {
274 $langnames[] = $this->lng->txt("meta_l_" . $lang_key);
275 }
276 $this->data .= " " . implode(", ", $langnames) . " " . $this->lng->txt("local_language_files") . " " . strtolower($this->lng->txt("installed")) . ".";
277 }
278 } else {
279 $this->data .= " " . $this->lng->txt("local_languages_already_installed");
280 }
281
282 $this->out();
283 }
284
285
289 public function uninstallObject(array $ids): void
290 {
291 $this->checkPermission('write');
292 $this->lng->loadLanguageModule("meta");
293
294 $sys_lang = false;
295 $usr_lang = false;
296
297 // uninstall all selected languages
298 foreach ($ids as $obj_id) {
299 $langObj = new ilObjLanguage((int) $obj_id);
300 if (!($sys_lang = $langObj->isSystemLanguage()) && !($usr_lang = $langObj->isUserLanguage())) {
301 $key = $langObj->uninstall();
302 if ($key !== "") {
303 $lang_uninstalled[] = $key;
304 }
305 }
306 unset($langObj);
307 }
308
309 // generate output message
310 if (isset($lang_uninstalled)) {
311 if (count($lang_uninstalled) === 1) {
312 $this->data = $this->lng->txt("meta_l_" . $lang_uninstalled[0]) . " " . $this->lng->txt("uninstalled");
313 } else {
314 $langnames = [];
315 foreach ($lang_uninstalled as $lang_key) {
316 $langnames[] = $this->lng->txt("meta_l_" . $lang_key);
317 }
318
319 $this->data = implode(", ", $langnames) . " " . $this->lng->txt("uninstalled");
320 }
321 } elseif ($sys_lang) {
322 $this->data = $this->lng->txt("cannot_uninstall_systemlanguage");
323 } elseif ($usr_lang) {
324 $this->data = $this->lng->txt("cannot_uninstall_language_in_use");
325 } else {
326 $this->data = $this->lng->txt("languages_already_uninstalled");
327 }
328
329 $this->out();
330 }
331
332
336 public function uninstallChangesObject(array $ids): void
337 {
338 $this->checkPermission("write");
339
340 $this->data = $this->lng->txt("selected_languages_updated");
341 $this->lng->loadLanguageModule("meta");
342 $refreshed = [];
343
344 foreach ($ids as $id) {
345 $langObj = new ilObjLanguage((int) $id, false);
346
347 if ($langObj->isInstalled()) {
348 if ($langObj->check()) {
349 $langObj->flush("all");
350 $langObj->insert();
351 $langObj->setTitle($langObj->getKey());
352 $langObj->setDescription("installed");
353 $langObj->update();
354 $refreshed[] = $langObj->getKey();
355 }
356 $this->data .= "<br />" . $this->lng->txt("meta_l_" . $langObj->getKey());
357 }
358
359 unset($langObj);
360 }
362 $this->out();
363 }
364
368 public function refreshObject(): void
369 {
370 $this->checkPermission("write");
371
373 $this->data = $this->lng->txt("languages_updated");
374 $this->out();
375 }
376
380 public function refreshSelectedObject(array $ids): void
381 {
382 $this->checkPermission("write");
383 $this->data = $this->lng->txt("selected_languages_updated");
384 $this->lng->loadLanguageModule("meta");
385
386 $refreshed = [];
387 foreach ($ids as $id) {
388 $langObj = new ilObjLanguage((int) $id, false);
389 if ($langObj->refresh()) {
390 $refreshed[] = $langObj->getKey();
391 $this->data .= "<br />" . $this->lng->txt("meta_l_" . $langObj->getKey());
392 }
393 unset($langObj);
394 }
395
397 $this->out();
398 }
399
403 public function setUserLanguageObject(array $ids): void
404 {
405 global $DIC;
406 $ilUser = $DIC->user();
407
408 $this->checkPermission("write");
409 $this->lng->loadLanguageModule("meta");
410
411 #require_once "./Services/User/classes/class.ilObjUser.php";
412
413
414 if (count($ids) !== 1) {
415 $this->tpl->setOnScreenMessage('failure', $this->lng->txt("choose_only_one_language") . "<br/>" . $this->lng->txt("action_aborted"), true);
416 $this->ctrl->redirect($this, "view");
417 }
418
419 $obj_id = current($ids);
420
421 $newUserLangObj = new ilObjLanguage((int) $obj_id);
422
423 if ($newUserLangObj->isUserLanguage()) {
424 $this->tpl->setOnScreenMessage('failure', $this->lng->txt("meta_l_" . $newUserLangObj->getKey()) . " " . $this->lng->txt("is_already_your") . " " . $this->lng->txt("user_language") . "<br/>" . $this->lng->txt("action_aborted"), true);
425 $this->ctrl->redirect($this, "view");
426 }
427
428 if (!$newUserLangObj->isInstalled()) {
429 $this->tpl->setOnScreenMessage('failure', $this->lng->txt("meta_l_" . $newUserLangObj->getKey()) . " " . $this->lng->txt("language_not_installed") . "<br/>" . $this->lng->txt("action_aborted"), true);
430 $this->ctrl->redirect($this, "view");
431 }
432
433 $curUser = new ilObjUser($ilUser->getId());
434 $curUser->setLanguage($newUserLangObj->getKey());
435 $curUser->update();
436
437 $this->data = $this->lng->txt("user_language") . " " . $this->lng->txt("changed_to") . " " . $this->lng->txt("meta_l_" . $newUserLangObj->getKey()) . ".";
438
439 $this->out();
440 }
441
442
446 public function setSystemLanguageObject(array $ids): void
447 {
448 $this->checkPermission("write");
449 $this->lng->loadLanguageModule("meta");
450
451
452 if (count($ids) !== 1) {
453 $this->tpl->setOnScreenMessage('failure', $this->lng->txt("choose_only_one_language") . "<br/>" . $this->lng->txt("action_aborted"), true);
454 $this->ctrl->redirect($this, "view");
455 }
456
457 $obj_id = current($ids);
458
459 $newSysLangObj = new ilObjLanguage((int) $obj_id);
460
461 if ($newSysLangObj->isSystemLanguage()) {
462 $this->tpl->setOnScreenMessage('failure', $this->lng->txt("meta_l_" . $newSysLangObj->getKey()) . " " . $this->lng->txt("is_already_your") . " " . $this->lng->txt("system_language") . "<br/>" . $this->lng->txt("action_aborted"), true);
463 $this->ctrl->redirect($this, "view");
464 }
465
466 if (!$newSysLangObj->isInstalled()) {
467 $this->tpl->setOnScreenMessage('failure', $this->lng->txt("meta_l_" . $newSysLangObj->getKey()) . " " . $this->lng->txt("language_not_installed") . "<br/>" . $this->lng->txt("action_aborted"), true);
468 $this->ctrl->redirect($this, "view");
469 }
470
471 $this->ilias->setSetting("language", $newSysLangObj->getKey());
472
473 // update ini-file
474 $this->ilias->ini->setVariable("language", "default", $newSysLangObj->getKey());
475 $this->ilias->ini->write();
476
477 $this->data = $this->lng->txt("system_language") . " " . $this->lng->txt("changed_to") . " " . $this->lng->txt("meta_l_" . $newSysLangObj->getKey()) . ".";
478
479 $this->out();
480 }
481
485 public function checkLanguageObject(): void
486 {
487 $this->checkPermission("write");
488 $this->data = $this->object->checkAllLanguages();
489 $this->out();
490 }
491
492 public function out(): void
493 {
494 $this->tpl->setOnScreenMessage('info', $this->data, true);
495 $this->ctrl->redirect($this, "view");
496 }
497
498 public function getAdminTabs(): void
499 {
500 $this->getTabs();
501 }
502
506 protected function getTabs(): void
507 {
508 if ($this->checkPermissionBool("read")) {
509 $this->tabs_gui->addTab("settings", $this->lng->txt("settings"), $this->ctrl->getLinkTarget($this, "view"));
510 }
511
512 if ($this->checkPermissionBool("edit_permission")) {
513 $this->tabs_gui->addTab("perm_settings", $this->lng->txt("perm_settings"), $this->ctrl->getLinkTargetByClass(array(self::class,"ilpermissiongui"), "perm"));
514 }
515 }
516
517 public function executeCommand(): void
518 {
519 // always check read permission, needed write permissions are checked in the *Object functions
520 $this->checkPermission("read", "", $this->type, $this->ref_id);
521
522 $next_class = $this->ctrl->getNextClass($this);
523 $cmd = $this->ctrl->getCmd();
524 $this->prepareOutput();
525
526 switch ($next_class) {
527 case "ilpermissiongui":
528 include_once "Services/AccessControl/classes/class.ilPermissionGUI.php";
529 $perm_gui = new ilPermissionGUI($this);
530 $this->tabs_gui->activateTab("perm_settings");
531 $this->ctrl->forwardCommand($perm_gui);
532 break;
533
534 default:
535 $this->tabs_gui->activateTab("settings");
536
537 if ($action = $this->getCommandFromQueryToken($this->action_token->getName())) {
538 $this->checkPermission("write");
539 $this->lng->loadLanguageModule("meta");
542 switch ($action) {
543 case 'confirmRefresh':
544 $ids = $this->confirmRefreshObject();
545 $this->refreshSelectedObject($ids);
546 break;
547 case 'checkLanguage':
548 $this->checkLanguageObject();
549 break;
550 case 'refresh':
551 $ids = $this->getIdsFromQueryToken();
552 if (current($ids) === 'ALL_OBJECTS') {
553 array_shift($ids);
554 $languages = ilObject::_getObjectsByType("lng");
555 foreach ($languages as $lang) {
556 $langObj = new ilObjLanguage((int) $lang["obj_id"], false);
557 if ($langObj->isInstalled()) {
558 $ids[] = (string) $lang["obj_id"];
559 }
560 }
561 }
562 $modal = $this->buildConfirmModal(
563 $ids,
564 $action,
565 'refreshConfirmed',
566 'lang_refresh_confirm_selected',
567 "lang_refresh_confirm_info"
568 );
569 echo($r->renderAsync([$modal]));
570 exit();
571 case 'refreshConfirmed':
572 $ids = $this->getIdsFromQueryToken();
573 $this->refreshSelectedObject($ids);
574 break;
575 case 'uninstall':
576 $ids = $this->getIdsFromQueryToken();
577 if (current($ids) === 'ALL_OBJECTS') {
578 array_shift($ids);
579 $languages = ilObject::_getObjectsByType("lng");
580 foreach ($languages as $lang) {
581 $langObj = new ilObjLanguage((int) $lang["obj_id"], false);
582 if ($langObj->isInstalled()) {
583 $ids[] = (string) $lang["obj_id"];
584 }
585 }
586 }
587 $modal = $this->buildConfirmModal(
588 $ids,
589 $action,
590 'uninstallConfirmed',
591 'lang_uninstall_confirm'
592 );
593 echo($r->renderAsync([$modal]));
594 exit();
595 case 'uninstallConfirmed':
596 $ids = $this->getIdsFromQueryToken();
597 $this->uninstallObject($ids);
598 break;
599 case 'install':
600 $ids = $this->getIdsFromQueryToken();
601 if (current($ids) === 'ALL_OBJECTS') {
602 array_shift($ids);
603 $languages = ilObject::_getObjectsByType("lng");
604 foreach ($languages as $lang) {
605 $langObj = new ilObjLanguage((int) $lang["obj_id"], false);
606 if (!$langObj->isInstalled()) {
607 $ids[] = (string) $lang["obj_id"];
608 }
609 }
610 }
611 $this->installObject($ids);
612 break;
613 case 'install_local':
614 $ids = $this->getIdsFromQueryToken();
615 if (current($ids) === 'ALL_OBJECTS') {
616 array_shift($ids);
617 $languages = ilObject::_getObjectsByType("lng");
618 foreach ($languages as $lang) {
619 $ids[] = (string) $lang["obj_id"];
620 }
621 }
622 $this->installLocalObject($ids);
623 break;
624 case 'lang_uninstall_changes':
625 $ids = $this->getIdsFromQueryToken();
626 if (current($ids) === 'ALL_OBJECTS') {
627 array_shift($ids);
628 $languages = ilObject::_getObjectsByType("lng");
629 foreach ($languages as $lang) {
630 $langObj = new ilObjLanguage((int) $lang["obj_id"], false);
631 if ($langObj->isInstalled()) {
632 $ids[] = (string) $lang["obj_id"];
633 }
634 }
635 }
636 $modal = $this->buildConfirmModal(
637 $ids,
638 $action,
639 'uninstallChanges',
640 'lang_uninstall_changes_confirm'
641 );
642 echo($r->renderAsync([$modal]));
643 exit();
644 case 'uninstallChanges':
645 $ids = $this->getIdsFromQueryToken();
646 $this->uninstallChangesObject($ids);
647 break;
648 case 'setSystemLanguage':
649 $ids = $this->getIdsFromQueryToken();
650 $this->setSystemLanguageObject($ids);
651 break;
652 case 'setUserLanguage':
653 $ids = $this->getIdsFromQueryToken();
654 $this->setUserLanguageObject($ids);
655 break;
656 case 'edit':
657 $ids = $this->getIdsFromQueryToken();
658 $this->editFolderObject($ids);
659 break;
660 }
661 }
662 if (!$cmd) {
663 $cmd = "view";
664 }
665 $cmd .= "Object";
666 $this->$cmd();
667
668 break;
669 }
670 }
671
672 protected function getCommandFromQueryToken(string $param): ?string
673 {
674 if (!$this->request_wrapper->has($param)) {
675 return null;
676 }
677 $trafo = $this->refinery->byTrying([
678 $this->refinery->kindlyTo()->null(),
679 $this->refinery->kindlyTo()->string()
680 ]);
681 return $this->request_wrapper->retrieve($param, $trafo);
682 }
683
684 public function confirmRefreshObject(): array
685 {
686 $this->checkPermission("write");
687
688 $languages = ilObject::_getObjectsByType("lng");
689
690 $ids = [];
691 foreach ($languages as $lang) {
692 $langObj = new ilObjLanguage((int) $lang["obj_id"], false);
693 if ($langObj->isInstalled()) {
694 $ids[] = (string) $lang["obj_id"];
695 }
696 }
697 return $ids;
698 }
699
700 public function confirmRefreshSelectedObject(array $a_ids = []): void
701 {
702 $this->checkPermission("write");
703 $this->lng->loadLanguageModule("meta");
704
705 $header = '';
706 $ids = [];
707 if (!empty($a_ids)) {
708 $ids = $a_ids;
709 $header = $this->lng->txt("lang_refresh_confirm");
710 } elseif (!empty($post_id = $this->getIdsFromQueryToken())) {
711 $ids = $post_id;
712 $header = $this->lng->txt("lang_refresh_confirm_selected");
713 } else {
714 $this->tpl->setOnScreenMessage('failure', $this->lng->txt("no_checkbox"), true);
715 $this->ctrl->redirect($this, "view");
716 }
717
718 $conf_screen = new ilConfirmationGUI();
719 $some_changed = false;
720 foreach ($ids as $id) {
721 $lang_key = ilObject::_lookupTitle((int) $id);
722 $lang_title = $this->lng->txt("meta_l_" . $lang_key);
723 $last_change = ilObjLanguage::_getLastLocalChange($lang_key);
724 if (!empty($last_change)) {
725 $some_changed = true;
726 $lang_title .= " (" . $this->lng->txt("last_change") . " "
728 }
729 $conf_screen->addItem("id[]", (string) $id, $lang_title);
730 }
731
732 $conf_screen->setFormAction($this->ctrl->getFormAction($this));
733 if ($some_changed) {
734 $header .= "<br />" . $this->lng->txt("lang_refresh_confirm_info");
735 }
736 $conf_screen->setHeaderText($header);
737 $conf_screen->setCancel($this->lng->txt("cancel"), "view");
738 $conf_screen->setConfirm($this->lng->txt("ok"), "refreshSelected");
739 $this->tpl->setContent($conf_screen->getHTML());
740 }
741
742 public function confirmUninstallObject(): void
743 {
744 $this->checkPermission("write");
745
746 $this->lng->loadLanguageModule("meta");
747 $conf_screen = new ilConfirmationGUI();
748 $conf_screen->setFormAction($this->ctrl->getFormAction($this));
749 $conf_screen->setHeaderText($this->lng->txt("lang_uninstall_confirm"));
750 foreach ($this->getIdsFromQueryToken() as $id) {
751 $lang_title = ilObject::_lookupTitle((int) $id);
752 $conf_screen->addItem("id[]", $id, $this->lng->txt("meta_l_" . $lang_title));
753 }
754 $conf_screen->setCancel($this->lng->txt("cancel"), "view");
755 $conf_screen->setConfirm($this->lng->txt("ok"), "uninstall");
756 $this->tpl->setContent($conf_screen->getHTML());
757 }
758
759 public function confirmUninstallChangesObject(): void
760 {
761 $this->checkPermission('write');
762
763 $this->lng->loadLanguageModule("meta");
764 $conf_screen = new ilConfirmationGUI();
765 $conf_screen->setFormAction($this->ctrl->getFormAction($this));
766 $conf_screen->setHeaderText($this->lng->txt("lang_uninstall_changes_confirm"));
767 foreach ($this->getIdsFromQueryToken() as $id) {
768 $lang_title = ilObject::_lookupTitle($id);
769 $conf_screen->addItem("id[]", (string) $id, $this->lng->txt("meta_l_" . $lang_title));
770 }
771 $conf_screen->setCancel($this->lng->txt("cancel"), "view");
772 $conf_screen->setConfirm($this->lng->txt("ok"), "uninstallChanges");
773 $this->tpl->setContent($conf_screen->getHTML());
774 }
775
779 public function getActions(): array
780 {
782 return [
783 'confirmRefreshSelected' => $f->table()->action()->standard(
784 $this->lng->txt("refresh"),
785 $this->url_builder->withParameter($this->action_token, "confirmRefreshSelected"),
786 $this->id_token
787 )->withAsync(),
788 'install' => $f->table()->action()->standard(
789 $this->lng->txt("install"),
790 $this->url_builder->withParameter($this->action_token, "install"),
791 $this->id_token
792 ),
793 'installLocal' => $f->table()->action()->standard(
794 $this->lng->txt("install_local"),
795 $this->url_builder->withParameter($this->action_token, "installLocal"),
796 $this->id_token
797 ),
798 'confirmUninstall' => $f->table()->action()->standard(
799 $this->lng->txt("uninstall"),
800 $this->url_builder->withParameter($this->action_token, "confirmUninstall"),
801 $this->id_token
802 ),
803 'confirmUninstallChanges' => $f->table()->action()->standard(
804 $this->lng->txt("lang_uninstall_changes"),
805 $this->url_builder->withParameter($this->action_token, "confirmUninstallChanges"),
806 $this->id_token
807 ),
808 'setSystemLanguage' => $f->table()->action()->single(
809 $this->lng->txt("setSystemLanguage"),
810 $this->url_builder->withParameter($this->action_token, "setSystemLanguage"),
811 $this->id_token
812 ),
813 'setUserLanguage' => $f->table()->action()->single(
814 $this->lng->txt("setUserLanguage"),
815 $this->url_builder->withParameter($this->action_token, "setUserLanguage"),
816 $this->id_token
817 ),
818 'editFolder' => $f->table()->action()->single(
819 $this->lng->txt("edit"),
820 $this->url_builder->withParameter($this->action_token, "editFolder"),
821 $this->id_token
822 ),
823 ];
824 }
825
826 protected function editFolderObject(array $ids): void
827 {
828 $this->ctrl->setParameterByClass("ilobjlanguageextgui", "obj_id", current($ids));
829 $this->ctrl->redirectByClass("ilobjlanguageextgui");
830 }
831
835 protected function disableLanguageDetectionObject(): void
836 {
837 $this->settings->set("lang_detection", '0');
838 $this->tpl->setOnScreenMessage('success', $this->lng->txt("saved_successfully"));
839 $this->viewObject();
840 }
841
845 protected function enableLanguageDetectionObject(): void
846 {
847 $this->settings->set("lang_detection", '1');
848 $this->tpl->setOnScreenMessage('success', $this->lng->txt("saved_successfully"));
849 $this->viewObject();
850 }
851
855 public function listDeprecatedObject(): void
856 {
857 $button = $this->ui_factory->button()->standard(
858 $this->lng->txt("download"),
859 $this->ctrl->getLinkTarget($this, "downloadDeprecated")
860 );
861 $this->toolbar->addComponent($button);
862
863 include_once "./Services/Language/classes/class.ilLangDeprecated.php";
864
865 $d = new ilLangDeprecated();
866 $res = "";
867 foreach ($d->getDeprecatedLangVars() as $key => $mod) {
868 $res .= $mod . "," . $key . "\n";
869 }
870
871 $this->tpl->setContent("<pre>" . $res . "</pre>");
872 }
873
877 public function downloadDeprecatedObject(): void
878 {
879 include_once "./Services/Language/classes/class.ilLangDeprecated.php";
880 $d = new ilLangDeprecated();
881 $res = "";
882 foreach ($d->getDeprecatedLangVars() as $key => $mod) {
883 $res .= $mod . "," . $key . "\n";
884 }
885
886 ilUtil::deliverData($res, "lang_deprecated.csv");
887 }
888
889 protected function getUrl(string $action, ?array $lang_ids = null): string
890 {
891 $url_builder = $this->url_builder->withParameter($this->action_token, $action);
892 if($lang_ids) {
893 $url_builder = $url_builder->withParameter($this->id_token, $lang_ids);
894 }
895 return $url_builder->buildURI()->__toString();
896 }
897
898 private function getIdsFromQueryToken(): array
899 {
900 $ids = [];
901 if ($this->request_wrapper->has($this->id_token->getName())) {
902 $ids = $this->request_wrapper->retrieve(
903 $this->id_token->getName(),
904 $this->refinery->custom()->transformation(fn($v) => $v)
905 );
906 }
907 return $ids;
908 }
909} // END class.ilObjLanguageFolderGUI
$check
Definition: buildRTE.php:81
Builds data types.
Definition: Factory.php:36
acquireParameters(array $namespace, string ... $names)
Definition: URLBuilder.php:138
buildURI()
Get a URI representation of the full URL including query string and fragment/hash.
Definition: URLBuilder.php:214
withParameter(URLBuilderToken $token, string|array $value)
Change an acquired parameter's value if the supplied token is valid.
Definition: URLBuilder.php:166
const IL_CAL_DATETIME
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static formatDate(ilDateTime $date, bool $a_skip_day=false, bool $a_include_wd=false, bool $include_seconds=false, ?ilObjUser $user=null,)
@classDescription Date and time handling
Search for deprecated lang vars.
Class ilObjLanguageFolderGUI.
getUrl(string $action, ?array $lang_ids=null)
uninstallObject(array $ids)
uninstall language
checkLanguageObject()
check all languages
buildConfirmModal(array $ids, string $title, string $action, string $text, string $add_text='')
getTabs()
Retrieves and adds tabs based on user permissions.
disableLanguageDetectionObject()
Disable language detection.
installLocalObject(array $ids)
Install local language modifications.
ilLanguageFolderTable $languageFolderTable
setUserLanguageObject(array $ids)
set user language
enableLanguageDetectionObject()
Enable language detection.
uninstallChangesObject(array $ids)
Uninstall local changes in the database.
viewObject()
show installed languages
setSystemLanguageObject(array $ids)
set the system language
refreshObject()
update all installed languages
downloadDeprecatedObject()
Download deprecated lang entries.
listDeprecatedObject()
Download deprecated lang entries.
refreshSelectedObject(array $ids)
update selected languages
installObject(array $ids)
install languages
getAdminTabs()
administration tabs show only permissions and trash folder
Class ilObjLanguage.
static _getLastLocalChange(string $a_key)
get the date of the last local change $a_key language key Return change_date "yyyy-mm-dd hh:mm:ss"
static refreshAll()
Refresh all installed languages.
static refreshPlugins(?array $a_lang_keys=null)
Refresh languages of activated plugins $a_lang_keys keys of languages to be refreshed (not yet suppor...
User class.
Class ilObjectGUI Basic methods of all Output classes.
UIFactory $ui_factory
checkPermission(string $perm, string $cmd="", string $type="", ?int $ref_id=null)
checkPermissionBool(string $perm, string $cmd="", string $type="", ?int $ref_id=null)
UIRenderer $ui_renderer
prepareOutput(bool $show_sub_objects=true)
string $title
static _getObjectsByType(string $obj_type="", ?int $owner=null)
static _lookupTitle(int $obj_id)
static deliverData(string $a_data, string $a_filename, string $mime="application/octet-stream")
exit
$res
Definition: ltiservices.php:69
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc
Interface Observer \BackgroundTasks Contains several chained tasks and infos about them.
Class ilObjForumAdministration.
global $DIC
Definition: shib_login.php:26
$lang
Definition: xapiexit.php:25
$message
Definition: xapiexit.php:31
$param
Definition: xapitoken.php:46