Skip to content
Snippets Groups Projects
Commit 5fc2484f authored by Till Glöggler's avatar Till Glöggler Committed by Till Glöggler
Browse files

fixes #278

parent df37f9c7
No related branches found
No related tags found
No related merge requests found
...@@ -188,8 +188,10 @@ class Contents_CoursewareController extends AuthenticatedController ...@@ -188,8 +188,10 @@ class Contents_CoursewareController extends AuthenticatedController
if ($sem_key === '0' || $sem_key === null) { if ($sem_key === '0' || $sem_key === null) {
$sem_key = 'all'; $sem_key = 'all';
$this->all_semesters = true; $this->all_semesters = true;
$this->semesters = Semester::getAll();
} else { } else {
$this->all_semesters = false; $this->all_semesters = false;
$this->semesters = [Semester::find($sem_key)];
} }
$params = [ $params = [
'order_by' => null, 'order_by' => null,
...@@ -198,36 +200,109 @@ class Contents_CoursewareController extends AuthenticatedController ...@@ -198,36 +200,109 @@ class Contents_CoursewareController extends AuthenticatedController
'deputies_enabled' => Config::get()->DEPUTIES_ENABLE, 'deputies_enabled' => Config::get()->DEPUTIES_ENABLE,
]; ];
$sem_courses = MyRealmModel::getPreparedCourses($sem_key, $params); $this->sem_courses = $this->getCoursewareCourses($sem_key);
}
/**
* Return list of coursewares grouped by semester_id
*
* @param string $sem_key currently selected semester or all (for all semesters)
*
* @return array
*/
private function getCoursewareCourses($sem_key)
{
$this->current_semester = Semester::findCurrent();
$courses = Course::findThru($this->user_id, [
'thru_table' => 'seminar_user',
'thru_key' => 'user_id',
'thru_assoc_key' => 'seminar_id',
'assoc_foreign_key' => 'seminar_id'
]);
if (Config::get()->DEPUTIES_ENABLE) {
$deputy_courses = Deputy::findDeputyCourses($GLOBALS['user']->id)->pluck('course');
if (!empty($deputy_courses)) {
$courses = array_merge($courses, $deputy_courses);
}
}
$this->semesters = []; $courses = new SimpleCollection($courses);
if ($sem_courses) { if (!Config::get()->MY_COURSES_ENABLE_STUDYGROUPS) {
$i = 0; $courses = $courses->filter(function ($a) {
foreach ($sem_courses as $sem) { return !$a->isStudygroup();
$this->semesters[$i]['semester_name'] = array_values($sem)[0]['start_semester']; });
$this->semesters[$i]['coursewares'] = []; }
$this->semesters[$i]['empty_courses'] = [];
if ($sem_key != 'all') {
$semester = Semester::find($sem_key);
$courses = $courses->filter(function ($a) use ($semester) {
if ($a->isInSemester($semester)) {
return true;
}
return false;
});
$coursewares = [];
foreach ($courses as $course) {
$element = StructuralElement::getCoursewareCourse($course->id);
if (!empty($element) && $this->isCoursewareEnabled($course->id)) {
$element['payload'] = json_decode($element['payload'], true);
$coursewares[] = $element;
}
}
foreach ($sem as $cid => $course) { if (empty($coursewares)) {
$element = StructuralElement::getCoursewareCourse($cid); return [];
if($element) { }
$element['payload'] = json_decode($element['payload'], true);
array_push($this->semesters[$i]['coursewares'], $element); return [$semester->id => [
'semester_name' => $semester->name,
'coursewares' => $coursewares
]];
} else {
$all_semesters = Semester::getAll();
$sem_courses = [];
foreach ($courses as $course) {
$element = StructuralElement::getCoursewareCourse($course->id);
if (!empty($element) && $this->isCoursewareEnabled($course->id)) {
$element['payload'] = json_decode($element['payload'], true);
if ($course->duration_time == -1) {
$sem_courses[$this->current_semester->id]['coursewares'][] = $element;
} else { } else {
array_push($this->semesters[$i]['empty_courses'], $course); $end_semester = $course->getEndSemester();
$sem_courses[$end_semester->id]['coursewares'][] = $element;
} }
} }
$i++;
} }
} else {
$semester = Semester::find($sem_key); return $sem_courses;
$this->semesters[0]['semester_name'] = $semester->name;
$this->semesters[0]['coursewares'] = [];
$this->semesters[0]['empty_courses'] = [];
} }
} }
/**
* Returns true if the courseware module is enabled for the passed course
*
* @param string $course_id the course to check
* @return boolean true if courseware is enabled, false otherwise
*/
private function isCoursewareEnabled($course_id)
{
$studip_module = PluginManager::getInstance()->getPlugin('CoursewareModule');
if (!$studip_module || !$studip_module->isActivated($course_id)) {
return false;
}
return true;
}
private function getProjects($purpose) private function getProjects($purpose)
{ {
......
<div class="cw-content-projects"> <div class="cw-content-projects">
<? if (empty($sem_courses)) : ?>
<? if (!$all_semesters) : ?>
<h2>
<?= htmlReady($semesters[0]->name) ?>
<? if ($current_semester->id == $semesters[0]->id) : ?>
(<?= _('Aktuelles Semester') ?> )
<? endif ?>
</h2>
<? endif ?>
<?= MessageBox::info(_('Keine der Veranstaltungen auf die sie Zugriff '
. 'haben hat eine Courseware mit Inhalten.')); ?>
<? else : ?>
<? foreach($semesters as $semester) :?> <? foreach($semesters as $semester) :?>
<h2><?= htmlReady($semester['semester_name']) ?></h2> <? if (!empty($sem_courses[$semester->id]['coursewares'])): ?>
<? if (!empty($semester['coursewares'])): ?> <h2>
<?= htmlReady($semester->name) ?>
<? if ($current_semester->id == $semester->id) : ?>
(<?= _('Aktuelles Semester') ?> )
<? endif ?>
</h2>
<ul class="cw-tiles"> <ul class="cw-tiles">
<? foreach($semester['coursewares'] as $element) :?> <? foreach($sem_courses[$semester->id]['coursewares'] as $element) :?>
<li class="tile <?= htmlReady($element['payload']['color'])?>"> <li class="tile <?= htmlReady($element['payload']['color'])?>">
<a href="<?= URLHelper::getLink('dispatch.php/course/courseware/?cid='.$element['range_id'].'#/structural_element/'.$element['id']) ?>"> <a href="<?= URLHelper::getLink('dispatch.php/course/courseware/?cid='.$element['range_id'].'#/structural_element/'.$element['id']) ?>">
<div class="preview-image" style="background-image: url(<?= htmlReady($element->getImageUrl()) ?>)" ></div> <div class="preview-image" style="background-image: url(<?= htmlReady($element->getImageUrl()) ?>)" ></div>
...@@ -23,11 +41,6 @@ ...@@ -23,11 +41,6 @@
<? endforeach; ?> <? endforeach; ?>
</ul> </ul>
<? endif; ?> <? endif; ?>
<? if (empty($semester['coursewares']) && !empty($empty_courses)): ?>
<?= MessageBox::info(_('Es wurden noch keine Lernunterlagen angelegt.')); ?>
<? endif; ?>
<? if (empty($semester['coursewares']) && empty($empty_courses)): ?>
<?= MessageBox::info(_('Es wurden keine Veranstaltungen gefunden.')); ?>
<? endif; ?>
<? endforeach; ?> <? endforeach; ?>
<? endif; ?>
</div> </div>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment