diff --git a/ExcalidrawPlugin.php b/ExcalidrawPlugin.php index 34b60350ffa3644d691a5dcdc624323d88e20c8c..d3999951551099d3943f89d6278e84f3acb3b9d2 100644 --- a/ExcalidrawPlugin.php +++ b/ExcalidrawPlugin.php @@ -1,6 +1,26 @@ <?php -class ExcalidrawPlugin extends StudIPPlugin implements StandardPlugin, SystemPlugin +if ( + interface_exists(StudipModuleExtended::class) + && trait_exists(IconNavigationTrait::class) +) { + abstract class ExcalidrawBasePlugin extends StudIPPlugin implements StudipModuleExtended + { + use IconNavigationTrait; + } +} else { + abstract class ExcalidrawBasePlugin extends StudIPPlugin + { + abstract public function getManyIconNavigation(array $course_ids, ?string $user_id = null): array; + + public function getIconNavigation($course_id, $last_visit, $user_id) + { + return $this->getManyIconNavigation([$course_id], $user_id)[$course_id] ?? null; + } + } +} + +class ExcalidrawPlugin extends ExcalidrawBasePlugin implements StandardPlugin, SystemPlugin { public function __construct() { @@ -37,14 +57,14 @@ class ExcalidrawPlugin extends StudIPPlugin implements StandardPlugin, SystemPlu return array('excalidraw' => $tab); } - public function getIconNavigation($course_id, $last_visit, $user_id) + public function getManyIconNavigation(array $course_ids, ?string $user_id = null): array { $navigation = new Navigation( $this->_('Whiteboard (Beta)'), PluginEngine::getURL($this, [], "excalidraw/overview") ); $navigation->setImage(Icon::create('block-canvas', Icon::ROLE_CLICKABLE)); - return $navigation; + return array_fill_keys($course_ids, $navigation); } public function getNotificationObjects($course_id, $since, $user_id)