diff options
Diffstat (limited to 'app/controllers/evaluation/profiles.php')
| -rw-r--r-- | app/controllers/evaluation/profiles.php | 52 |
1 files changed, 35 insertions, 17 deletions
diff --git a/app/controllers/evaluation/profiles.php b/app/controllers/evaluation/profiles.php index acf602f..7c89c09 100644 --- a/app/controllers/evaluation/profiles.php +++ b/app/controllers/evaluation/profiles.php @@ -11,22 +11,24 @@ class Evaluation_ProfilesController extends AuthenticatedController ); } + public function preedit_action() + { + $this->semesters = $this->getAvailableSemesters(true); + $this->render_template('evaluation/profiles/preedit'); + } + public function edit_action(string $id = null): void { + $sem_preselect = Request::get('sem_select'); if ($id) { $profile = QuestionnaireEvalCentralProfile::find($id); $semesters = [$profile->semester_id => $profile->semester->name]; } else { - $profile = new QuestionnaireEvalCentralProfile(); - $semesters = []; - Semester::findEachBySQL( - function($row) use (&$semesters) { - $semesters[$row['semester_id']] = $row['name']; - }, - "`semester_id` NOT IN (SELECT `semester_id` FROM `questionnaire_eval_central_profiles`) - ORDER BY `beginn` desc" - ); + $profile_preselect = QuestionnaireEvalCentralProfile::find($sem_preselect); + $profile = QuestionnaireEvalCentralProfile::build($profile_preselect); + $semesters = $this->getAvailableSemesters(); } + $is_fill = $sem_preselect || $id; $template_array = []; Questionnaire::findEachBySQL( @@ -60,7 +62,7 @@ class Evaluation_ProfilesController extends AuthenticatedController 'mapper' => function($value) { return implode(',', $value); }, - 'value' => $id && $profile->optional_templates ? + 'value' => $is_fill && $profile->optional_templates ? explode(',', $profile->optional_templates) : null ], 'startdate' => [ @@ -68,41 +70,41 @@ class Evaluation_ProfilesController extends AuthenticatedController 'name' => 'startdate', 'required' => true, 'type' => 'datetimepicker', - 'value' => $id ? $profile->startdate : time() //TODO sem + 'value' => $is_fill ? $profile->startdate : time() //TODO sem ], 'stopdate' => [ 'label' => _('Ende'), 'required' => true, 'type' => 'datetimepicker', - 'value' => $id ? $profile->stopdate : time(), //TODO sem + 'value' => $is_fill ? $profile->stopdate : time(), //TODO sem 'mindate' => 'startdate' ], 'anonymous' => [ 'label' => _('Anonyme Teilnahme'), 'type' => 'checkbox', - 'value' => $id ? $profile->anonymous : true + 'value' => $is_fill ? $profile->anonymous : true ], 'editanswers' => [ 'label' => _('Antworten revidierbar'), 'type' => 'checkbox', - 'value' => $id ? $profile->editanswers : false + 'value' => $is_fill ? $profile->editanswers : false ], 'resultvisibility' => [ 'label' => _('Zeitpunkt der Ergebnis-Einsicht'), 'type' => 'select', 'options' => QuestionnaireEvalCentralProfile::getTranslatedVisibilityOptions(), - 'value' => $id ? $profile->resultvisibility : 'never' + 'value' => $is_fill ? $profile->resultvisibility : 'never' ], 'result_visible_for' => [ 'label' => _('Ergebnis-Einsicht für (Evaluations-Admins immer)'), 'type' => 'select', 'options' => QuestionnaireEvalCentralProfile::getTranslatedVisibilityOptions(true), - 'value' => $id ? $profile->result_visible_for : null + 'value' => $is_fill ? $profile->result_visible_for : null ], 'minimum_responses' => [ 'label' => _('Mindestrücklauf'), 'type' => 'number', - 'value' => $id ? $profile->minimum_responses : 8, + 'value' => $is_fill ? $profile->minimum_responses : 8, 'min' => 0 ] ] @@ -114,6 +116,22 @@ class Evaluation_ProfilesController extends AuthenticatedController $this->render_form($form); } + public function getAvailableSemesters(bool $reverse = false): array + { + $semesters = []; + Semester::findEachBySQL( + function($row) use (&$semesters) { + $semesters[$row['semester_id']] = $row['name']; + }, + $reverse ? + "`semester_id` IN (SELECT `semester_id` FROM `questionnaire_eval_central_profiles`) + ORDER BY `beginn` desc" : + "`semester_id` NOT IN (SELECT `semester_id` FROM `questionnaire_eval_central_profiles`) + ORDER BY `beginn` desc" + ); + return $semesters; + } + public function bulkdelete_action(): void { CSRFProtection::verifyUnsafeRequest(); |
