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) { $new = 0; $course_elements = Courseware\StructuralElement::findBySQL( 'range_type = ? AND range_id = ?', ['course', $courseId] ); foreach($course_elements as $element) { $has_new_blocks = false; $containers = $element->containers->getArrayCopy(); foreach($containers as $container) { $blocks = $container->blocks->getArrayCopy(); foreach($blocks as $block) { if ( $block->editor_id !== $user_id && $block->chdate >= $last_visit && $block->payload !== '' ) { $has_new_blocks = true; } } } if($has_new_blocks) { $new++; } } $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')], ], ], ]; } /** * {@inheritdoc} */ public function exportUserData(StoredUserData $storage) { $db = DBManager::get(); $structuralElements = $db->fetchAll( 'SELECT * FROM cw_structural_elements WHERE owner_id = ? OR editor_id = ? OR range_id = ?', [$storage->user_id, $storage->user_id, $storage->user_id] ); $storage->addTabularData(_('Courseware-Strukturelemente-Ergebnisse'), 'cw_structural_elements', $structuralElements); $containers = $db->fetchAll( 'SELECT * FROM cw_containers WHERE owner_id = ? OR editor_id = ?', [$storage->user_id, $storage->user_id] ); $storage->addTabularData(_('Courseware-Container-Ergebnisse'), 'cw_containers', $containers); $blocks = $db->fetchAll( 'SELECT * FROM cw_blocks WHERE owner_id = ? OR editor_id = ?', [$storage->user_id, $storage->user_id] ); $storage->addTabularData(_('Courseware-Blöcke-Ergebnisse'), 'cw_blocks', $blocks); $comments = $db->fetchAll( 'SELECT * FROM cw_block_comments WHERE user_id = ?', [$storage->user_id] ); $storage->addTabularData(_('Courseware-Kommentare-Ergebnisse'), 'cw_block_comments', $comments); $userData = $db->fetchAll( 'SELECT * FROM cw_user_data_fields WHERE user_id = ?', [$storage->user_id] ); $storage->addTabularData(_('Courseware-Nutzer-Daten-Ergebnisse'), 'cw_user_data_fields', $userData); $userProgresses = $db->fetchAll( 'SELECT * FROM cw_user_progresses WHERE user_id = ?', [$storage->user_id] ); $storage->addTabularData(_('Courseware-Nutzer-Fortschritt-Ergebnisse'), 'cw_user_progresses', $userProgresses); $bookmarks = $db->fetchAll( 'SELECT * FROM cw_bookmarks WHERE user_id = ?', [$storage->user_id] ); $storage->addTabularData(_('Courseware-Lesezeichen-Ergebnisse'), 'cw_bookmarks', $bookmarks); } public function isActivatableForContext(Range $context) { return $context->getRangeType() === 'course'; } }