diff --git a/app/controllers/admin/courses.php b/app/controllers/admin/courses.php index 3a7812675a171fd63f27e0de49c8c6cb7a3b166b..b0bf9cd8cd493afcd0ab1a8ebb1041f4848aa772 100644 --- a/app/controllers/admin/courses.php +++ b/app/controllers/admin/courses.php @@ -544,6 +544,10 @@ class Admin_CoursesController extends AuthenticatedController $row['semester'] = $course->semester_text; } + if (in_array('institute', $filter_config)) { + $row['institute'] = $course->home_institut ? $course->home_institut['name'] : $course['institute']; + } + foreach (PluginManager::getInstance()->getPlugins('AdminCourseContents') as $plugin) { foreach ($plugin->adminAvailableContents() as $index => $label) { if (in_array($plugin->getPluginId() . "_" . $index, $filter_config)) { @@ -1097,6 +1101,7 @@ class Admin_CoursesController extends AuthenticatedController 'type' => _('Veranstaltungstyp'), 'room_time' => _('Raum/Zeit'), 'semester' => _('Semester'), + 'institute' => _('Einrichtung'), 'requests' => _('Raumanfragen'), 'teachers' => _('Lehrende'), 'members' => _('Teilnehmende'), @@ -1217,6 +1222,8 @@ class Admin_CoursesController extends AuthenticatedController } if ($params['sortby'] === "status") { $filter->orderBy(sprintf('sem_classes.name %s, sem_types.name %s, VeranstaltungsNummer', $params['sortFlag'], $params['sortFlag'], $params['sortFlag']), $params['sortFlag']); + } elseif ($params['sortby'] === 'institute') { + $filter->orderBy('Institute.Name', $params['sortFlag']); } elseif ($params['sortby']) { $filter->orderBy($params['sortby'], $params['sortFlag']); } diff --git a/app/views/admin/courses/_course.php b/app/views/admin/courses/_course.php index a0fab915688cb8c910dd50beff05bd67c78c00a8..9632aaa98fff7d61f32275f3d96776dbf0acd058 100644 --- a/app/views/admin/courses/_course.php +++ b/app/views/admin/courses/_course.php @@ -89,6 +89,11 @@ if (!$values['parent_course'] || !in_array($values['parent_course'], array_keys( <?= htmlReady($course->semester_text) ?> </td> <? endif?> + <? if (in_array('institute', $view_filter)) : ?> + <td> + <?= htmlReady($course->home_institut ? $course->home_institut['name'] : $course['institute']) ?> + </td> + <? endif?> <? if (in_array('requests', $view_filter)) : ?> <td style="text-align: center;"> <a title="<?=_('Raumanfragen')?>" href="<?= URLHelper::getLink('dispatch.php/course/room_requests', ['cid' => $semid])?>"> diff --git a/app/views/admin/courses/courses.php b/app/views/admin/courses/courses.php index ca851d0c2f5dfb6ee2402eead57656700927f7da..fab169db660c1441f76fa715352c5f398b8db961 100644 --- a/app/views/admin/courses/courses.php +++ b/app/views/admin/courses/courses.php @@ -22,11 +22,15 @@ <? $colspan++ ?> <col width="30%"> <? endif ?> - <? if (in_array('semester', $view_filter)) : ?> - <? $colspan++ ?> - <col width="10%"> - <? endif ?> - <? if (in_array('requests', $view_filter)) : ?> + <? if (in_array('semester', $view_filter)) : ?> + <? $colspan++ ?> + <col width="10%"> + <? endif ?> + <? if (in_array('institute', $view_filter)) : ?> + <? $colspan++ ?> + <col width="10%"> + <? endif ?> + <? if (in_array('requests', $view_filter)) : ?> <? $colspan++ ?> <col width="5%"> <? endif ?> @@ -125,6 +129,13 @@ </a> </th> <? endif ?> + <? if (in_array('institute', $view_filter)) : ?> + <th <?= ($sortby == 'institute') ? sprintf('class="sort%s"', mb_strtolower($sortFlag)) : '' ?>> + <a href="<?= URLHelper::getLink('', ['sortby' => 'institute', 'sortFlag' => mb_strtolower($sortFlag)]) ?>"> + <?= _('Einrichtung') ?> + </a> + </th> + <? endif ?> <? if (in_array('requests', $view_filter)) : ?> <th <?= ($sortby == 'requests') ? sprintf('class="sort%s"', mb_strtolower($sortFlag)) : '' ?>> <a href="<?= diff --git a/lib/classes/AdminCourseFilter.class.php b/lib/classes/AdminCourseFilter.class.php index 6fa47242e98fd72777c76ae1375f9046ab3b7f17..cd9bfacfe27d46884915ddd6e46a08b442cb8ba0 100644 --- a/lib/classes/AdminCourseFilter.class.php +++ b/lib/classes/AdminCourseFilter.class.php @@ -323,7 +323,7 @@ class AdminCourseFilter if (!in_array($flag, words('ASC DESC'))) { throw new Exception("Sortierreihenfolge undefiniert."); } - if (in_array($attribute, words('VeranstaltungsNummer Name status teilnehmer waiting prelim requests completion start_time'))) { + if (in_array($attribute, words('VeranstaltungsNummer Name status teilnehmer waiting prelim requests completion start_time Institute.Name'))) { $this->settings['query']['orderby'] = $attribute . ' ' . $flag; } return $this;