From affa96f141556099874dfc3f6736c0fb62fc07b8 Mon Sep 17 00:00:00 2001 From: "chrsitof.buch" Date: Wed, 18 Mar 2026 11:18:26 +0100 Subject: [PATCH] Language variable lso#:#unparticipate modified. Modal added to unsubscripe process. --- .../Player/class.ilLSLaunchlinksBuilder.php | 4 +-- .../class.ilObjLearningSequenceLearnerGUI.php | 27 ++++++++++++++++--- lang/ilias_de.lang | 2 +- 3 files changed, 27 insertions(+), 6 deletions(-) diff --git a/components/ILIAS/LearningSequence/classes/Player/class.ilLSLaunchlinksBuilder.php b/components/ILIAS/LearningSequence/classes/Player/class.ilLSLaunchlinksBuilder.php index 73ea5370dadf..80b65fd879f4 100755 --- a/components/ILIAS/LearningSequence/classes/Player/class.ilLSLaunchlinksBuilder.php +++ b/components/ILIAS/LearningSequence/classes/Player/class.ilLSLaunchlinksBuilder.php @@ -32,7 +32,7 @@ class ilLSLaunchlinksBuilder public const CMD_EXTRO = ilObjLearningSequenceLearnerGUI::CMD_EXTRO; public const CMD_START = ilObjLearningSequenceLearnerGUI::CMD_START; public const CMD_VIEW = ilObjLearningSequenceLearnerGUI::CMD_VIEW; - public const CMD_UNSUBSCRIBE = ilObjLearningSequenceLearnerGUI::CMD_UNSUBSCRIBE; + public const CMD_UNSUBSCRIBE_CONFIRMATION = ilObjLearningSequenceLearnerGUI::CMD_UNSUBSCRIBE_CONFIRMATION; public function __construct( protected ilLanguage $lng, @@ -131,7 +131,7 @@ public function getLinks(): array if ($this->mayUnparticipate()) { $links[] = [ $this->lng->txt("unparticipate"), - $this->getLink(self::CMD_UNSUBSCRIBE), + $this->getLink(self::CMD_UNSUBSCRIBE_CONFIRMATION), false ]; } diff --git a/components/ILIAS/LearningSequence/classes/Player/class.ilObjLearningSequenceLearnerGUI.php b/components/ILIAS/LearningSequence/classes/Player/class.ilObjLearningSequenceLearnerGUI.php index d8b383e625f2..acf49194231e 100755 --- a/components/ILIAS/LearningSequence/classes/Player/class.ilObjLearningSequenceLearnerGUI.php +++ b/components/ILIAS/LearningSequence/classes/Player/class.ilObjLearningSequenceLearnerGUI.php @@ -19,11 +19,13 @@ declare(strict_types=1); use ILIAS\HTTP\Wrapper\RequestWrapper; +use ILIAS\UI\Component\Modal\Interruptive; class ilObjLearningSequenceLearnerGUI { public const CMD_STANDARD = 'learnerView'; public const CMD_EXTRO = 'learnerViewFinished'; + public const CMD_UNSUBSCRIBE_CONFIRMATION = 'unsubscribeConfirmation'; public const CMD_UNSUBSCRIBE = 'unsubscribe'; public const CMD_VIEW = 'view'; public const CMD_START = 'start'; @@ -63,6 +65,9 @@ public function executeCommand(): void $this->addMember($this->usr_id); $this->ctrl->redirect($this, self::CMD_VIEW); break; + case self::CMD_UNSUBSCRIBE_CONFIRMATION: + $this->unsubscribeConfirmationModal(); + break; case self::CMD_UNSUBSCRIBE: if ($this->launchlinks_builder->currentUserMayUnparticipate()) { $this->roles->leave($this->usr_id); @@ -81,17 +86,28 @@ public function executeCommand(): void } } + protected function unsubscribeConfirmationModal(): Interruptive + { + return $this->ui_factory->modal()->interruptive( + $this->lng->txt('obj_lso'), + $this->lng->txt("unparticipate"), + $this->ctrl->getLinkTarget($this, self::CMD_UNSUBSCRIBE), + ); + } + protected function view(string $cmd): void { $content = $this->getWrappedHTML( $this->getMainContent($cmd) ); - $this->tpl->setContent($content); + $modal = $this->unsubscribeConfirmationModal(); + + $this->tpl->setContent($content . $this->renderer->render($modal)); $element = '<' . ilPCLauncher::PCELEMENT . '>'; if (!str_contains($content, $element)) { - $this->initToolbar($cmd); + $this->initToolbar($cmd, $modal); } $element = '<' . ilPCCurriculum::PCELEMENT . '>'; @@ -111,7 +127,7 @@ protected function addMember(int $usr_id): void } } - protected function initToolbar(string $cmd) + protected function initToolbar(string $cmd, Interruptive $modal): void { foreach ($this->launchlinks_builder->getLinks() as $entry) { list($label, $link, $primary) = $entry; @@ -121,6 +137,11 @@ protected function initToolbar(string $cmd) } else { $btn = $this->ui_factory->button()->standard($label, $link); } + + if ($label === $this->lng->txt("unparticipate")) { + $btn = $this->ui_factory->button()->standard($label, $link)->withOnClick($modal->getShowSignal()); + } + $this->toolbar->addComponent($btn); } } diff --git a/lang/ilias_de.lang b/lang/ilias_de.lang index 514e3d4b3d78..3c9daaf3d58b 100644 --- a/lang/ilias_de.lang +++ b/lang/ilias_de.lang @@ -11218,7 +11218,7 @@ lso#:#table_online#:#Online lso#:#table_position#:#Position lso#:#table_sequence_content#:#Inhaltsverwaltung lso#:#table_title#:#Titel -lso#:#unparticipate#:#Lernsequenz verlassen +lso#:#unparticipate#:#Mitgliedschaft in der Lernsequenz beenden lti#:#act_lti_for_obj_type#:#LTI für diese Objekttypen aktivieren lti#:#activity_id#:#Activity-ID lti#:#activity_id_info#:#Diese Activity-ID wird vom LTI-Provider verwendet, um Statements zu identifizieren.