diff options
| author | Finn Schneider <schneider@data-quest.de> | 2026-03-18 15:38:46 +0100 |
|---|---|---|
| committer | Finn Schneider <schneider@data-quest.de> | 2026-03-18 15:38:46 +0100 |
| commit | 8fe767ad512fff8b876f4c8b59eaee072d542978 (patch) | |
| tree | fe54b0749acd4a5b600800f87c03f4fb1cc5dea3 | |
| parent | a6335d80ea376636578dc6d7ba930d7618fd241e (diff) | |
course admin eval assign init
| -rw-r--r-- | app/controllers/admin/courses.php | 31 | ||||
| -rw-r--r-- | app/controllers/evaluation/assign.php | 51 | ||||
| -rw-r--r-- | app/views/admin/courses/evaluation.php | 9 |
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> |
