id === 'nobody') { return []; } $navigation = new Navigation( _('Courseware'), URLHelper::getURL('dispatch.php/course/courseware/?cid='.$courseId) ); $navigation->addSubNavigation( 'content', new Navigation(_('Inhalt'), 'dispatch.php/course/courseware/?cid='.$courseId) ); $navigation->addSubNavigation( 'dashboard', new Navigation(_('Übersicht'), 'dispatch.php/course/courseware/dashboard?cid='.$courseId) ); if ($GLOBALS['perm']->have_studip_perm('dozent', $courseId)) { $navigation->addSubNavigation( 'manager', new Navigation(_('Verwaltung'), 'dispatch.php/course/courseware/manager?cid='.$courseId) ); } else { $element = StructuralElement::getCoursewareCourse($courseId); if ($element !== null) { $instance = new Instance($element); if ($GLOBALS['perm']->have_studip_perm($instance->getEditingPermissionLevel(), $courseId)) { $navigation->addSubNavigation( 'manager', new Navigation(_('Verwaltung'), 'dispatch.php/course/courseware/manager?cid='.$courseId) ); } } } return ['courseware' => $navigation]; } /** * {@inheritdoc} */ public function getIconNavigation($courseId, $last_visit, $user_id) { if ($user_id === 'nobody') { return null; } $statement = DBManager::get()->prepare(" SELECT COUNT(DISTINCT elem.id) FROM `cw_structural_elements` AS elem INNER JOIN `cw_containers` as container ON (elem.id = container.structural_element_id) INNER JOIN `cw_blocks` as blocks ON (container.id = blocks.container_id) WHERE elem.range_type = 'course' AND elem.range_id = :range_id AND blocks.payload != '' AND blocks.chdate > :last_visit AND blocks.editor_id != :user_id "); $statement->execute([ 'range_id' => $courseId, 'last_visit' => $last_visit, 'user_id' => $user_id ]); $new = $statement->fetchColumn(); $nav = new Navigation(_('Courseware'), 'dispatch.php/course/courseware'); $nav->setImage(Icon::create('courseware', Icon::ROLE_CLICKABLE), [ 'title' => _('Courseware'), ]); if ($new > 0) { if ($new === 1) { $text = _('neue Seite'); } else { $text = _('neue Seiten'); } $nav->setImage(Icon::create('courseware', Icon::ROLE_ATTENTION), [ 'title' => $new . ' ' . $text, ]); $nav->setBadgeNumber("$new"); } return $nav; } /** * {@inheritdoc} */ public function getMetadata() { return [ 'summary' => _('Lerninhalte erstellen, verteilen und erleben'), 'description' => _('Mit Courseware können Sie interaktive multimediale Lerninhalte erstellen und nutzen. ' . 'Die Lerninhalte lassen sich hierarchisch unterteilen und können aus Texten, ' . 'Videosequenzen, Aufgaben, Kommunikationselementen und einer Vielzahl weiterer ' . 'Elementen bestehen. Fertige Lerninhalte können exportiert und in andere Kurse oder ' . 'andere Installationen importiert werden. Courseware ist nicht nur für digitale ' . 'Formate geeignet, sondern kann auch genutzt werden, um klassische ' . 'Präsenzveranstaltungen mit Online-Anteilen zu ergänzen. Formate wie integriertes ' . 'Lernen (Blended Learning) lassen sich mit Courseware ideal umsetzen. Kollaboratives ' . 'Lernen kann dank Schreibrechtevergabe und dem Einsatz von Courseware in ' . 'Studiengruppen realisiert werden.'), 'displayname' => _('Courseware'), 'category' => _('Lehr- und Lernorganisation'), 'icon' => Icon::create('courseware', 'info'), 'screenshots' => [ 'path' => 'assets/images/plus/screenshots/Courseware', 'pictures' => [ 0 => ['source' => 'preview.png', 'title' => _('Überssichtsseite der Courseware')], ], ], ]; } public function isActivatableForContext(Range $context) { return $context->getRangeType() === 'course'; } }