From 04b5e6ec7ca39031f0c50289fb2892d2dc0934c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Noack?= <noack@data-quest.de> Date: Wed, 11 May 2022 08:15:39 +0000 Subject: [PATCH] Resolve #962 Checkboxen funktionieren nicht richtig in Profil->Einstellungen->Benachrichtigung Closes #962 Merge request studip/studip!585 --- app/controllers/settings/notification.php | 21 +++------------------ app/views/settings/notification.php | 13 +++++++------ 2 files changed, 10 insertions(+), 24 deletions(-) diff --git a/app/controllers/settings/notification.php b/app/controllers/settings/notification.php index cf87f016be9..b36b0dd10f9 100644 --- a/app/controllers/settings/notification.php +++ b/app/controllers/settings/notification.php @@ -53,28 +53,17 @@ class Settings_NotificationController extends Settings_SettingsController { $group_field = 'sem_number'; - $add_fields = $add_query = ''; - if ($group_field == 'sem_tree_id') { - $add_fields = ',sem_tree_id'; - $add_query = "LEFT JOIN seminar_sem_tree sst ON (sst.seminar_id=seminare.Seminar_id)"; - } else if ($group_field == 'dozent_id') { - $add_fields = ', su1.user_id as dozent_id'; - $add_query = "LEFT JOIN seminar_user as su1 ON (su1.seminar_id=seminare.Seminar_id AND su1.status='dozent')"; - } - $dbv = DbView::getView('sem_tree'); $query = "SELECT seminare.VeranstaltungsNummer AS sem_nr, seminare.Name, seminare.Seminar_id, seminare.status AS sem_status, seminar_user.gruppe, seminare.visible, {$dbv->sem_number_sql} AS sem_number, {$dbv->sem_number_end_sql} AS sem_number_end - {$add_fields} FROM seminar_user LEFT JOIN seminare USING (Seminar_id) - {$add_query} WHERE seminar_user.user_id = ?"; if (Config::get()->DEPUTIES_ENABLE) { $query .= " UNION " . Deputy::getMySeminarsQuery( - 'notification', $dbv->sem_number_sql, $dbv->sem_number_end_sql, $add_fields, $add_query + 'notification', $dbv->sem_number_sql, $dbv->sem_number_end_sql, '', '' ); } $query .= " ORDER BY sem_nr ASC"; @@ -116,11 +105,7 @@ class Settings_NotificationController extends Settings_SettingsController } } - if ($group_field == 'sem_number') { - correct_group_sem_number($groups, $my_sem); - } else { - add_sem_name($my_sem); - } + correct_group_sem_number($groups, $my_sem); sort_groups($group_field, $groups); @@ -129,7 +114,7 @@ class Settings_NotificationController extends Settings_SettingsController $open = UserConfig::get($this->user->user_id)->MY_COURSES_OPEN_GROUPS; $checked = []; foreach ($groups as $group_id => $group_members) { - if ($group_id !== 'not_grouped' && !isset($open[$group_id])) { + if (!in_array($group_id, $open)) { continue; } foreach ($group_members as $member) { diff --git a/app/views/settings/notification.php b/app/views/settings/notification.php index 8d845796a2c..b46ea454195 100644 --- a/app/views/settings/notification.php +++ b/app/views/settings/notification.php @@ -26,12 +26,13 @@ <td colspan="2"> <?= _('Benachrichtigung fĆ¼r unten aufgefĆ¼hrte Veranstaltungen:') ?> </td> - <? for ($i = 0; $i < count($modules); $i += 1): ?> + <? $i = 0; ?> + <? foreach ($modules as $index => $data): ?> <td> - <input type="checkbox" name="all[columns][]" value="<?= $i ?>" - <? if (!empty($checked) && count(array_filter($checked, function ($item) use ($i) { return $item[$i]; })) == count($checked)) echo 'checked'; ?>> + <input type="checkbox" name="all[columns][]" value="<?= $i++ ?>" + <? if (!empty($checked) && count(array_filter($checked, function ($item) use ($index) { return $item[$index]; })) == count($checked)) echo 'checked'; ?>> </td> - <? endfor; ?> + <? endforeach; ?> <td> <input type="checkbox" name="all[all]" value="all" <? if (!empty($checked) && count(array_filter($checked, function ($item) { return $item['all']; })) == count($checked)) echo 'checked'; ?>> @@ -44,7 +45,7 @@ <? if ($group_field !== 'not_grouped'): ?> <tr> <th colspan="<?= 3 + count($modules) ?>"> - <? if (isset($open[$id])): ?> + <? if (in_array($id, $open)): ?> <a class="tree" style="font-weight:bold" name="<?= $id ?>" href="<?= $controller->url_for('settings/notification/close', $id) ?>#<?= $id ?>" <?= tooltip(_('Gruppierung schlieĆen'), true) ?>> @@ -60,7 +61,7 @@ </th> </tr> <? endif; ?> - <? if ($id === 'not_grouped' || isset($open[$id])): ?> + <? if ($id === 'not_grouped' || in_array($id, $open)): ?> <? foreach ($members as $member): ?> <tr> <td class="gruppe<?= $seminars[$member['seminar_id']]['gruppe'] ?>"> </td> -- GitLab