From 52497ee6be4696b930c164872d8b5a5ec3a79513 Mon Sep 17 00:00:00 2001 From: Murtaza Sultani <sultani@data-quest.de> Date: Wed, 4 Sep 2024 14:54:54 +0000 Subject: [PATCH] =?UTF-8?q?Resolve=20"OER:=20Besser=20zur=C3=BCck=20Typ=20?= =?UTF-8?q?der=20Methode=20(oerModuleIntegrateMaterialToCourse())"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #4561 Merge request studip/studip!3373 --- app/controllers/oer/market.php | 16 +++++++++------- lib/modules/CoreDocuments.php | 31 +++++++++++++++++-------------- lib/modules/OERModule.php | 4 ++-- 3 files changed, 28 insertions(+), 23 deletions(-) diff --git a/app/controllers/oer/market.php b/app/controllers/oer/market.php index 3f9dc89646b..8c615f5eec1 100644 --- a/app/controllers/oer/market.php +++ b/app/controllers/oer/market.php @@ -423,18 +423,20 @@ class Oer_MarketController extends StudipController $semclass = $this->course->getSemClass(); if ($semclass->isModuleAllowed($class)) { //activate module in course ? - $newfile = $class::oerModuleIntegrateMaterialToCourse( + $response = $class::oerModuleIntegrateMaterialToCourse( $this->material, $this->course ); - if (is_array($newfile)) { - PageLayout::postError(_("Beim Kopieren ist ein Fehler aufgetaucht."), $newfile); + + if ($response['type'] === 'error') { + PageLayout::postError($response['message'], $response['message_detail']); } else { - PageLayout::postSuccess(_("Das Lernmaterial wurde kopiert.")); + PageLayout::postSuccess($response['message'], $response['message_detail']); } - $this->response->add_header("X-Location", URLHelper::getURL("dispatch.php/course/files", array('cid' => $this->course->id))); - $this->response->add_header("X-Dialog-Close", 1); - $this->redirect(URLHelper::getURL("dispatch.php/course/files", array('cid' => $this->course->id))); + + $this->response->add_header('X-Dialog-Close', 1); + $this->relocate($response['redirect_url']); + return; } } diff --git a/lib/modules/CoreDocuments.php b/lib/modules/CoreDocuments.php index 2acfeef2275..3f6de68151c 100644 --- a/lib/modules/CoreDocuments.php +++ b/lib/modules/CoreDocuments.php @@ -12,11 +12,8 @@ class CoreDocuments extends CorePlugin implements StudipModule, OERModule { - /** - * Determines if the StudipModule wants to handle the OERMaterial. Returns false if not. - * @param OERMaterial $material - * @return false|Icon + * {@inheritdoc} */ static public function oerModuleWantsToUseMaterial(OERMaterial $material) { @@ -24,9 +21,7 @@ class CoreDocuments extends CorePlugin implements StudipModule, OERModule } /** - * Returns an Icon class object with the given role. - * @param string $role - * @return null|Icon + * {@inheritdoc} */ public function oerGetIcon($role = Icon::ROLE_CLICKABLE) { @@ -34,11 +29,7 @@ class CoreDocuments extends CorePlugin implements StudipModule, OERModule } /** - * This function is triggered i a user chose to use this module as the target of the oermaterial. - * Now this module should put a copy of $material in its own area of the given course. - * @param OERMaterial $material - * @param Course $course - * @return array|FileType + * {@inheritdoc} */ static public function oerModuleIntegrateMaterialToCourse(OERMaterial $material, Course $course) { @@ -89,12 +80,24 @@ class CoreDocuments extends CorePlugin implements StudipModule, OERModule if (!$newfile) { return [_('Daten konnten nicht kopiert werden!')]; } - return $newfile; + + return [ + 'type' => 'success', + 'message' => _('Das Lernmaterial wurde kopiert.'), + 'message_detail' => [], + 'redirect_url' => URLHelper::getURL('dispatch.php/course/files', ['cid' => $course->id]) + ]; } else { if ($tmp_name) { @unlink($tmp_name); } - return [_('Daten konnten nicht kopiert werden!')]; + + return [ + 'type' => 'error', + 'message' => _('Beim Kopieren ist ein Fehler aufgetaucht.'), + 'message_detail' => [_('Daten konnten nicht kopiert werden!')], + 'redirect_url' => URLHelper::getURL('dispatch.php/oer/market/details/' . $material->id) + ]; } } diff --git a/lib/modules/OERModule.php b/lib/modules/OERModule.php index 6cc89096ab0..4e71ebe6c13 100644 --- a/lib/modules/OERModule.php +++ b/lib/modules/OERModule.php @@ -5,7 +5,7 @@ interface OERModule /** * Determines if the StudipModule wants to handle the OERMaterial. Returns false if not. * @param OERMaterial $material - * @return false|Icon + * @return false */ public static function oerModuleWantsToUseMaterial(OERMaterial $material); @@ -14,7 +14,7 @@ interface OERModule * Now this module should put a copy of $material in its own area of the given course. * @param OERMaterial $material * @param Course $course - * @return void + * @return array */ public static function oerModuleIntegrateMaterialToCourse(OERMaterial $material, Course $course); -- GitLab