aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFinn Schneider <schneider@data-quest.de>2026-03-18 15:38:46 +0100
committerFinn Schneider <schneider@data-quest.de>2026-03-18 15:38:46 +0100
commit8fe767ad512fff8b876f4c8b59eaee072d542978 (patch)
treefe54b0749acd4a5b600800f87c03f4fb1cc5dea3
parenta6335d80ea376636578dc6d7ba930d7618fd241e (diff)
course admin eval assign init
-rw-r--r--app/controllers/admin/courses.php31
-rw-r--r--app/controllers/evaluation/assign.php51
-rw-r--r--app/views/admin/courses/evaluation.php9
3 files changed, 89 insertions, 2 deletions
diff --git a/app/controllers/admin/courses.php b/app/controllers/admin/courses.php
index 69d9ab3..8b629d5 100644
--- a/app/controllers/admin/courses.php
+++ b/app/controllers/admin/courses.php
@@ -495,6 +495,19 @@ class Admin_CoursesController extends AuthenticatedController
'data-dialog' => 'size=big'
]);
break;
+ case 24: //Assign evaluations
+ $data['buttons_top'] = '<label>' . _('Alle auswählen') .
+ '<input type="checkbox" data-proxyfor=".course-admin td:last-child :checkbox"></label>';
+ $data['buttons_bottom'] = (string) \Studip\Button::createAccept(
+ _('Evaluation zuweisen'), 'evaluation',
+ [
+ 'formaction' => URLHelper::getURL('dispatch.php/evaluation/assign'),
+ 'data-dialog' => 'size=big',
+ $this->semester ? '' : 'disabled' => '',
+ 'title' => $this->semester ? _('Evaluation zuweisen') : _('Bitte erst ein Semester auswählen.')
+ ]
+ );
+ break;
default:
foreach (PluginManager::getInstance()->getPlugins(AdminCourseAction::class) as $plugin) {
if ($GLOBALS['user']->cfg->MY_COURSES_ACTION_AREA === get_class($plugin)) {
@@ -845,16 +858,20 @@ class Admin_CoursesController extends AuthenticatedController
$template->course = $course;
$d['action'] = $template->render();
break;
- case 22: //Masssenexport Teilnehmendendaten
+ case 22: //Massenexport Teilnehmendendaten
$template = $tf->open('admin/courses/export_members');
$template->course = $course;
$d['action'] = $template->render();
break;
- case 23: //Masssenexport Teilnehmendendaten
+ case 23: //Massenmail
$template = $tf->open('admin/courses/massmail');
$template->course = $course;
$d['action'] = $template->render();
break;
+ case 24: //Evaluationen zuweisen
+ $template = $tf->open('admin/courses/evaluation');
+ $template->course = $course;
+ $d['action'] = $template->render();
default:
foreach (PluginManager::getInstance()->getPlugins(AdminCourseAction::class) as $plugin) {
if ($GLOBALS['user']->cfg->MY_COURSES_ACTION_AREA === get_class($plugin)) {
@@ -1525,6 +1542,13 @@ class Admin_CoursesController extends AuthenticatedController
'dialogform' => true,
'multimode' => true,
'partial' => 'massmail.php'
+ ],
+ 24 => [
+ 'name' => _('Evaluationen'),
+ 'title' => _('Evaluationen'),
+ 'url' => 'dispatch.php/evaluation/assign',
+ 'multimode' => true,
+ 'dialogform' => true,
]
];
@@ -1538,6 +1562,9 @@ class Admin_CoursesController extends AuthenticatedController
unset($actions[11]);
unset($actions[16]);
}
+ if (!EvaluationHelper::isPermittedEvaluationAccess()) {
+ unset($actions[24]);
+ }
ksort($actions);
diff --git a/app/controllers/evaluation/assign.php b/app/controllers/evaluation/assign.php
new file mode 100644
index 0000000..9988476
--- /dev/null
+++ b/app/controllers/evaluation/assign.php
@@ -0,0 +1,51 @@
+<?php
+
+class Evaluation_AssignController extends AuthenticatedController
+{
+ public function index_action()
+ {
+ if (!EvaluationHelper::isPermittedEvaluationAccess()) {
+ throw new AccessDeniedException();
+ }
+ $courseIds = Request::optionArray('evaluation_courses');
+ $courses = Course::findMany($courseIds);
+
+ $semester_id = $GLOBALS['user']->cfg->MY_COURSES_SELECTED_CYCLE;
+ $profile = QuestionnaireEvalCentralProfile::find($semester_id);
+ if (count($courses) === 0 || !$semester_id || !$profile) {
+ PageLayout::postWarning(
+ _('Es wurde keine Veranstaltung gewählt, oder es existiert kein Profil zu diesem Semester.'));
+ $this->relocate('admin/courses');
+ return;
+ }
+
+ $templates = [];
+ $templates[$profile->template_id] = $profile->template->title;
+ Questionnaire::findEachBySQL(
+ function ($row) use (&$templates) {
+ $templates[$row['questionnaire_id']] = $row['title'];
+ },
+ '`questionnaire_id` IN (?)',
+ [explode(',', $profile->optional_templates)]
+ );
+ $form = \Studip\Forms\Form::create();
+ $form->setURL($this->url_for('evaluation/assign/save'));
+ $part = new \Studip\Forms\Fieldset(_('Standardwerte aus zentralem Profil anpassen'));
+ $part->addInput(
+ new \Studip\Forms\SelectInput(
+ 'template',
+ _('Vorlage'),
+ $profile->template_id,
+ ['options' => $templates]
+ )
+ );
+ $form->addPart($part);
+ $this->render_form($form);
+ }
+
+ public function save_action()
+ {
+ //TODO
+ $this->relocate('admin/courses');
+ }
+}
diff --git a/app/views/admin/courses/evaluation.php b/app/views/admin/courses/evaluation.php
new file mode 100644
index 0000000..255024d
--- /dev/null
+++ b/app/views/admin/courses/evaluation.php
@@ -0,0 +1,9 @@
+<?php
+/**
+ * @var Course $course
+ */
+?>
+<label>
+ <input name="evaluation_courses[]" type="checkbox" value="<?= htmlReady($course->id) ?>"
+ aria-label="<?= htmlReady(_('Evaluation zuweisen')) ?>">
+</label>