diff --git a/controllers/pool.php b/controllers/pool.php index 2747204094ea5632622b1fba43a17ae261a9dae5..008ff507cb7fe1c74bea65c1963ed371a15ef120 100644 --- a/controllers/pool.php +++ b/controllers/pool.php @@ -169,7 +169,7 @@ class PoolController extends StudipController } // set up the sql query for the quicksearch - $sql = "SELECT vips_test.id, vips_test.title FROM vips_test + $sql = "SELECT vips_assignment.id, vips_test.title FROM vips_test JOIN vips_assignment ON vips_test.id = vips_assignment.test_id WHERE vips_assignment.course_id IN ('" . implode("','", $course_ids) . "') AND (vips_test.title LIKE :input OR vips_test.description LIKE :input) @@ -260,15 +260,11 @@ class PoolController extends StudipController $search_string = $search_filter['search_string']; $assignment_type = $search_filter['assignment_type']; - $sql = "SELECT vips_test.*, + $sql = "SELECT vips_assignment.*, + vips_test.title AS test_title, + vips_test.created, auth_user_md5.Nachname, auth_user_md5.Vorname, - vips_assignment.type, - vips_assignment.start, - vips_assignment.end, - vips_assignment.id AS assignment_id, - vips_assignment.course_id, - vips_assignment.context, seminare.Name, semester_data.name AS sem_name FROM vips_test diff --git a/controllers/sheets.php b/controllers/sheets.php index 2e70d0d591efb8918aefe3d18e44c74483c8845c..6e81c8c316b43f8540943e2b34ca44c3aaa7667c 100644 --- a/controllers/sheets.php +++ b/controllers/sheets.php @@ -983,7 +983,7 @@ class SheetsController extends StudipController PageLayout::postSuccess(_vips('Die Klausur wurde zurückgesetzt und alle abgegebenen Lösungen archiviert.')); } - $this->redirect('sheets'); + $this->redirect(Context::getId() ? 'sheets' : 'pool/assignments'); } diff --git a/lib/vips_common.inc.php b/lib/vips_common.inc.php index 1cf92668e9d553b6abfebee680495b47be90721a..8703ed0d412f1341b7ade82e12699a4c87ae51cf 100644 --- a/lib/vips_common.inc.php +++ b/lib/vips_common.inc.php @@ -237,17 +237,6 @@ function vips_contents_nav_path() } } -/** - * Get a (clickable) icon for a test with the given type. - */ -function vips_test_icon($type, $role = 'clickable') -{ - $assignment_types = VipsAssignment::getAssignmentTypes(); - - return Icon::create($assignment_types[$type]['icon'], $role, - ['title' => $assignment_types[$type]['name']]); -} - /** * UTF-8 compatible version of standard PHP levenshtein function. */ diff --git a/views/pool/list_assignments.php b/views/pool/list_assignments.php index 45f5886d5b08d065211eaf9825e9ba34870bb521..3ace918702386402e9bb10fd00028281801026da 100644 --- a/views/pool/list_assignments.php +++ b/views/pool/list_assignments.php @@ -58,16 +58,17 @@ <tbody> <? foreach ($assignments as $assignment): ?> + <? $assignment_obj = VipsAssignment::buildExisting($assignment) ?> <? $course_id = $assignment['context'] === 'course' ? $assignment['course_id'] : null ?> <tr> <td> - <input class="batch_select" type="checkbox" name="assignment_ids[]" value="<?= $assignment['assignment_id'] ?>" aria-label="<?= _vips('Zeile auswählen') ?>"> + <input class="batch_select" type="checkbox" name="assignment_ids[]" value="<?= $assignment['id'] ?>" aria-label="<?= _vips('Zeile auswählen') ?>"> </td> <td> - <a href="<?= $controller->link_for('sheets/edit_assignment', ['cid' => $course_id, 'assignment_id' => $assignment['assignment_id']]) ?>"> - <?= vips_test_icon($assignment['type']) ?> - <?= htmlReady($assignment['title']) ?> + <a href="<?= $controller->link_for('sheets/edit_assignment', ['cid' => $course_id, 'assignment_id' => $assignment['id']]) ?>"> + <?= $assignment_obj->getTypeIcon() ?> + <?= htmlReady($assignment['test_title']) ?> </a> </td> @@ -97,22 +98,29 @@ <td class="actions"> <? $menu = ActionMenu::get(); ?> - <? $menu->addLink($controller->url_for('sheets/show_assignment', ['cid' => $course_id, 'assignment_id' => $assignment['assignment_id']]), + <? $menu->addLink($controller->url_for('sheets/show_assignment', ['cid' => $course_id, 'assignment_id' => $assignment['id']]), _vips('Studierendensicht anzeigen'), Icon::create('community') ) ?> - <? $menu->addLink($controller->url_for('sheets/print_assignments', ['assignment_id' => $assignment['assignment_id']]), + <? $menu->addLink($controller->url_for('sheets/print_assignments', ['assignment_id' => $assignment['id']]), _vips('Aufgabenblatt drucken'), Icon::create('print'), ['target' => '_blank'] ) ?> - <? $menu->addLink($controller->url_for('sheets/copy_assignments_dialog', ['assignment_ids[]' => $assignment['assignment_id']]), + <? $menu->addLink($controller->url_for('sheets/copy_assignments_dialog', ['assignment_ids[]' => $assignment['id']]), _vips('Aufgabenblatt kopieren'), Icon::create(vips_image_url('copy.svg')), ['data-dialog' => 'size=auto'] ) ?> - <? $menu->addButton('delete', _vips('Aufgabenblatt löschen'), Icon::create('trash'), [ - 'formaction' => $controller->url_for('sheets/delete_assignments', ['assignment_ids[]' => $assignment['assignment_id']]), - 'data-confirm' => sprintf(_vips('Wollen Sie wirklich das Aufgabenblatt "%s" löschen?'), $assignment['title']) - ]) ?> + <? if ($assignment_obj->isLocked()): ?> + <? $menu->addButton('reset', _vips('Alle Lösungen zurücksetzen'), Icon::create('refresh'), [ + 'formaction' => $controller->url_for('sheets/reset_assignment', ['assignment_id' => $assignment['id']]), + 'data-confirm' => _vips('Achtung: Wenn Sie die Lösungen zurücksetzen, werden die Lösungen aller Teilnehmer archiviert!') + ]) ?> + <? else: ?> + <? $menu->addButton('delete', _vips('Aufgabenblatt löschen'), Icon::create('trash'), [ + 'formaction' => $controller->url_for('sheets/delete_assignments', ['assignment_ids[]' => $assignment['id']]), + 'data-confirm' => sprintf(_vips('Wollen Sie wirklich das Aufgabenblatt "%s" löschen?'), $assignment['test_title']) + ]) ?> + <? endif ?> <?= $menu->render() ?> </td> </tr>