From 4cbbbf747bd9f45e31c608bc5f577e8528bdf990 Mon Sep 17 00:00:00 2001 From: Elmar Ludwig <elmar.ludwig@uni-osnabrueck.de> Date: Wed, 21 Aug 2024 18:02:36 +0200 Subject: [PATCH] switch assignment payload type to integer, fixes #265 --- controllers/api.php | 11 +++++------ js/test-block.js | 8 +++++--- lib/TestBlock.php | 15 +++++++++++++-- views/exercises/courseware_block.php | 2 +- views/sheets/show_exercise.php | 2 +- 5 files changed, 25 insertions(+), 13 deletions(-) diff --git a/controllers/api.php b/controllers/api.php index 5e79332..207dbb1 100644 --- a/controllers/api.php +++ b/controllers/api.php @@ -24,8 +24,7 @@ class ApiController extends StudipController foreach ($assignments as $assignment) { if ($assignment->type !== 'exam') { $data[] = [ - 'id' => $assignment->id, - 'link' => $this->url_for('api/assignment', $assignment->id), + 'id' => (int) $assignment->id, 'title' => $assignment->test->title, 'type' => $assignment->type, 'icon' => $assignment->getTypeIcon()->getShape(), @@ -63,7 +62,7 @@ class ApiController extends StudipController } $data = [ - 'id' => $assignment->id, + 'id' => (int) $assignment->id, 'title' => $assignment->test->title, 'type' => $assignment->type, 'icon' => $assignment->getTypeIcon()->getShape(), @@ -82,8 +81,7 @@ class ApiController extends StudipController $exercise = $exercise_ref->exercise; $data['exercises'][] = [ - 'id' => $exercise->id, - 'link' => $this->url_for('api/exercise', $assignment_id, $exercise->id), + 'id' => (int) $exercise->id, 'type' => $exercise->type, 'title' => $exercise->title, 'template' => $template->render(), @@ -122,7 +120,7 @@ class ApiController extends StudipController $exercise = $exercise_ref->exercise; $data = [ - 'id' => $exercise->id, + 'id' => (int) $exercise->id, 'type' => $exercise->type, 'title' => $exercise->title, 'template' => $template->render(), @@ -140,6 +138,7 @@ class ApiController extends StudipController $solution = $assignment->getSolution($user_id, $exercise->id); $max_tries = $assignment->getMaxTries(); $max_points = $exercise_ref->points; + $sample_solution = false; $show_solution = false; $tries_left = null; diff --git a/js/test-block.js b/js/test-block.js index 25efc11..c03bdae 100644 --- a/js/test-block.js +++ b/js/test-block.js @@ -84,7 +84,9 @@ const CoursewareTestBlock = { </template> <template #selected-option="{title, icon, start, end}"> <studip-icon :shape="icon" role="info"/> - {{title}} ({{start}} - {{end}}) + <template v-if="title"> + {{title}} ({{start}} - {{end}}) + </template> </template> <template #option="{title, icon, start, end, block}"> <studip-icon :shape="icon" role="info"/> @@ -115,7 +117,7 @@ const CoursewareTestBlock = { data() { return { assignments: [], - assignment_id: '', + assignment_id: 0, assignment: null, errorMessage: null, exercises: [], @@ -163,7 +165,7 @@ const CoursewareTestBlock = { }); }, loadSelectedAssignment() { - if (this.assignment_id === '') { + if (!this.assignment_id) { this.errorMessage = this.$gettext('Es wurde noch kein Aufgabenblatt ausgewählt.'); return; } diff --git a/lib/TestBlock.php b/lib/TestBlock.php index 031f5f1..290246a 100644 --- a/lib/TestBlock.php +++ b/lib/TestBlock.php @@ -64,7 +64,7 @@ class TestBlock extends BlockType */ public function initialPayload(): array { - return ['assignment' => '']; + return ['assignment' => 0]; } /** @@ -76,7 +76,7 @@ class TestBlock extends BlockType 'type' => 'object', 'properties' => [ 'assignment' => [ - 'type' => 'string' + 'type' => 'integer' ] ] ]; @@ -108,6 +108,17 @@ class TestBlock extends BlockType return []; } + /** + * Returns the decoded payload of the block associated with this instance. + */ + public function getPayload() + { + $payload = parent::getPayload(); + $payload['assignment'] = (int) $payload['assignment']; + + return $payload; + } + /** * Copy the payload of this block into the given range id. */ diff --git a/views/exercises/courseware_block.php b/views/exercises/courseware_block.php index 8212b78..3153455 100644 --- a/views/exercises/courseware_block.php +++ b/views/exercises/courseware_block.php @@ -56,7 +56,7 @@ <? else: ?> <?= $this->render_partial($exercise->getSolveTemplate($solution, $assignment, $user_id)) ?> - <? if ($exercise->options['comment']): ?> + <? if (!empty($exercise->options['comment'])): ?> <label> <?= _vips('Bemerkungen zur Lösung (optional)') ?> <textarea name="student_comment"><?= htmlReady($solution->student_comment) ?></textarea> diff --git a/views/sheets/show_exercise.php b/views/sheets/show_exercise.php index 3ee5fc9..8e7633a 100644 --- a/views/sheets/show_exercise.php +++ b/views/sheets/show_exercise.php @@ -96,7 +96,7 @@ <?= $this->render_partial($exercise->getSolveTemplate($solution, $assignment, $solver_id)) ?> - <? if (isset($exercise->options['comment']) && $exercise->options['comment']) : ?> + <? if (!empty($exercise->options['comment'])) : ?> <label> <?= _vips('Bemerkungen zur Lösung (optional)') ?> <textarea name="student_comment"><?= $solution ? htmlReady($solution->student_comment) : '' ?></textarea> -- GitLab