diff options
| author | Jan-Hendrik Willms <tleilax+github@gmail.com> | 2021-07-22 16:07:19 +0200 |
|---|---|---|
| committer | Jan-Hendrik Willms <tleilax+github@gmail.com> | 2021-07-22 16:19:12 +0200 |
| commit | a3da1483a9e689846179159355badfec8073dbec (patch) | |
| tree | 770dcca6bdf5f6f2a11b0e7fcbbeda6919a3fc52 /lib/classes/coursewizardsteps/AdvancedBasicDataWizardStep.php | |
current code from svn, revision 62608
Diffstat (limited to 'lib/classes/coursewizardsteps/AdvancedBasicDataWizardStep.php')
| -rw-r--r-- | lib/classes/coursewizardsteps/AdvancedBasicDataWizardStep.php | 144 |
1 files changed, 144 insertions, 0 deletions
diff --git a/lib/classes/coursewizardsteps/AdvancedBasicDataWizardStep.php b/lib/classes/coursewizardsteps/AdvancedBasicDataWizardStep.php new file mode 100644 index 0000000..1843084 --- /dev/null +++ b/lib/classes/coursewizardsteps/AdvancedBasicDataWizardStep.php @@ -0,0 +1,144 @@ +<?php +/** + * AdvancedBasicDataWizardStep.php + * Course wizard step for getting the basic course data. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * @author Thomas Hackl <thomas.hackl@uni-passau.de> + * @author Stefan Osterloh <s.osterloh@uni-oldenburg.de> + * @copyright 2015 Stud.IP Core-Group + * @license http://www.gnu.org/licenses/gpl-2.0.html GPL version 2 + * @category Stud.IP + */ + +class AdvancedBasicDataWizardStep extends BasicDataWizardStep +{ + /** + * Returns the Flexi template for entering the necessary values + * for this step. + * + * @param Array $values Pre-set values + * @param int $stepnumber which number has the current step in the wizard? + * @param String $temp_id temporary ID for wizard workflow + * @return String a Flexi template for getting needed data. + */ + public function getStepTemplate($values, $stepnumber, $temp_id) + { + $values = $this->adjustValues($values); + + // We only need our own stored values here. + if ($values[__CLASS__]['studygroup']) { + return parent::getStepTemplate($values, $stepnumber, $temp_id); + } + + // Load template from step template directory. + $factory = new Flexi_TemplateFactory($GLOBALS['STUDIP_BASE_PATH'].'/app/views/course/wizard/steps'); + $template = $factory->open('advancedbasicdata/index'); + + if ($template = $this->setupTemplateAttributes($template, $values, $stepnumber, $temp_id)) { + $values = $this->makeI18N($values[__CLASS__], ['name', 'description', 'subtitle', 'kind']); + + $template->set_attribute('values', array_merge($template->values, $values)); + + return $template->render(); + } + } + + /** + * Validates if given values are sufficient for completing the current + * course wizard step and switch to another one. If not, all errors are + * collected and shown via PageLayout::postMessage. + * + * @param mixed $values Array of stored values + * @return bool Everything ok? + */ + public function validate($values) + { + $values = $this->adjustValues($values); + return parent::validate($values); + } + + /** + * Stores the given values to the given course. + * + * @param Course $course the course to store values for + * @param Array $values values to set + * @return Course The course object with updated values. + */ + public function storeValues($course, $values) + { + $values = $this->adjustValues($values); + $course = parent::storeValues($course, $values); + + // There probably was an error upon storing + if (!$course) { + return false; + } + + // Studygroup? -> nothing to do here + if ($values[__CLASS__]['studygroup']) { + return $course; + } + + // Add advanced data + $course->untertitel = new I18NString($values[__CLASS__]['subtitle'], $values[__CLASS__]['subtitle_i18n']); + $course->art = new I18NString($values[__CLASS__]['kind'], $values[__CLASS__]['kind_i18n']); + $course->ects = $values[__CLASS__]['ects']; + $course->admission_turnout = $values[__CLASS__]['maxmembers']; + if ($course->store() === false) { + PageLayout::postError(sprintf(_('Es ist ein Fehler beim Speichern der erweiterten Einstellungen für %s aufgetreten. Kontrollieren Sie bitte:') + , htmlReady($course->name)), + [_('Untertitel der Veranstalung'), + _('Art der Veranstaltung'), + _('ECTS-Punkte der Veranstaltung'), + _('Max. Teilnehmendenzahl der Veranstaltung')]); + } + return $course; + } + + /** + * This method will adjust the given values from parent class + * or use previously set values from this class. + * + * @param array $values Array of values + * @return array of adjusted values + */ + private function adjustValues($values) + { + $parent_class = get_parent_class($this); + + if (!isset($values[__CLASS__]) && isset($values[$parent_class])) { + $values[__CLASS__] = $values[$parent_class]; + } else { + $values[$parent_class] = $values[__CLASS__]; + } + + return $values; + } + + /** + * Copy values for basic data wizard step from given course. + * @param Course $course + * @param Array $values + */ + public function copy($course, $values) + { + $values = parent::copy($course, $values); + $values = $this->adjustValues($values); + + $values[__CLASS__] = array_merge($values[__CLASS__], [ + 'subtitle' => $course->untertitel, + 'subtitle_i18n' => $course->untertitel->toArray(), + 'kind' => $course->art, + 'kind_i18n' => $course->art->toArray(), + 'ects' => $course->ects, + 'maxmembers' => $course->admission_turnout, + ]); + + return $values; + } +} |
