aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFinn Schneider <schneider@data-quest.de>2026-03-12 16:16:25 +0100
committerFinn Schneider <schneider@data-quest.de>2026-03-13 17:25:01 +0000
commitff2ecd2d090402a5a30eb675c1d3165d44fbf912 (patch)
tree3978ec0f94b01acda25b737eebaa4fa91b36cd29
parent0b5a0d2805bb0af6adb1fb454642fc80e291d52e (diff)
answer & evaluate in course
-rw-r--r--app/views/course/evaluation/index.php18
-rw-r--r--lib/models/Questionnaire.php18
-rw-r--r--lib/models/QuestionnaireEvalAssignment.php2
3 files changed, 35 insertions, 3 deletions
diff --git a/app/views/course/evaluation/index.php b/app/views/course/evaluation/index.php
index a7268d0..193ecf7 100644
--- a/app/views/course/evaluation/index.php
+++ b/app/views/course/evaluation/index.php
@@ -4,8 +4,24 @@
*/
?>
-<?php foreach ($controller->evaluations as $evaluation) : ?>
+<?php foreach ($controller->evaluations as $key => $evaluation) : ?>
+ <article class="studip toggle <?= $key == 0 ? 'open' : '' ?>">
+ <header>
+ <h1>
+ <a href="#">
+ <?= htmlReady((Semester::find($evaluation->eval_assignment->semester_id))->name . ' - ' . $evaluation->title) ?>
+ </a>
+ </h1>
+ </header>
+ <?php if ($evaluation->isStopped()) : ?>
+ <?= $this->render_partial('questionnaire/evaluate.php', ['questionnaire' => $evaluation, 'range_type' => 'course', 'range_id' => Context::getId()]) ?>
+ <?php elseif ($evaluation->isAnswerable()) : ?>
+ <?= $this->render_partial('questionnaire/answer.php', ['questionnaire' => $evaluation, 'range_type' => 'course', 'range_id' => Context::getId()]) ?>
+ <?php else : ?>
+ <p><?= _('Die Evaluation ist noch nicht abgeschlossen.') ?></p>
+ <?php endif ?>
+ </article>
<?php endforeach ?>
<?php
diff --git a/lib/models/Questionnaire.php b/lib/models/Questionnaire.php
index 083ddeb..62f7b82 100644
--- a/lib/models/Questionnaire.php
+++ b/lib/models/Questionnaire.php
@@ -141,6 +141,12 @@ class Questionnaire extends SimpleORMap implements PrivacyObject
}
}
}
+
+ if ($this->eval_assignment) {
+ return User::findCurrent()
+ ->hasPermissionLevel('autor', Course::find($this->eval_assignment->course_id));
+ }
+
return false;
}
@@ -234,12 +240,20 @@ class Questionnaire extends SimpleORMap implements PrivacyObject
public function isStarted()
{
- return $this['startdate'] && ($this['startdate'] <= time());
+ if ($this->eval_assignment) {
+ return $this->eval_assignment->startdate && $this->eval_assignment->startdate <= time();
+ } else {
+ return $this['startdate'] && ($this['startdate'] <= time());
+ }
}
public function isStopped()
{
- return $this['stopdate'] && ($this['stopdate'] <= time());
+ if ($this->eval_assignment) {
+ return $this->eval_assignment->stopdate && $this->eval_assignment->stopdate <= time();
+ } else {
+ return $this['stopdate'] && ($this['stopdate'] <= time());
+ }
}
public function isRunning()
diff --git a/lib/models/QuestionnaireEvalAssignment.php b/lib/models/QuestionnaireEvalAssignment.php
index 830df50..7731c81 100644
--- a/lib/models/QuestionnaireEvalAssignment.php
+++ b/lib/models/QuestionnaireEvalAssignment.php
@@ -1,6 +1,8 @@
<?php
/**
+ * @property string semester_id database column
+ * @property string course_id database column
* @property JSONArrayObject course_metadata database column
* @property null|int $startdate database column
* @property null|int $stopdate database column